From 3fe4faa0fa7a37d8d948fa04cb3db2ff65806ddb Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 18 Sep 2020 15:32:22 +0100 Subject: [PATCH 001/207] add stuff --- QSB/ConversationSync/ConversationPatches.cs | 24 +++++++++++++++++++ .../QSBCharacterAnimController.cs | 13 ++++++++++ 2 files changed, 37 insertions(+) create mode 100644 QSB/ConversationSync/ConversationPatches.cs create mode 100644 QSB/ConversationSync/QSBCharacterAnimController.cs diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs new file mode 100644 index 000000000..a73d8fb41 --- /dev/null +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.ConversationSync +{ + public static class ConversationPatches + { + public static class OrbPatches + { + public static void ZoneExit(CharacterAnimController __instance) + { + + } + + public static void AddPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); + QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); + } + } + } +} diff --git a/QSB/ConversationSync/QSBCharacterAnimController.cs b/QSB/ConversationSync/QSBCharacterAnimController.cs new file mode 100644 index 000000000..4c3d819da --- /dev/null +++ b/QSB/ConversationSync/QSBCharacterAnimController.cs @@ -0,0 +1,13 @@ +using QSB.WorldSync; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.ConversationSync +{ + public class QSBCharacterAnimController : WorldObject + { + public CharacterAnimController AnimController { get; private set; } + } +} From 37323f6f588f8ebbeb71b0992b381d96e29d2eb4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 22 Sep 2020 21:11:29 +0100 Subject: [PATCH 002/207] stuff --- QSB/ConversationSync/ConversationEvent.cs | 28 +++++++++++++++ QSB/ConversationSync/ConversationManager.cs | 28 +++++++++++++++ QSB/ConversationSync/ConversationMessage.cs | 28 +++++++++++++++ QSB/ConversationSync/ConversationPatches.cs | 40 ++++++++++++++++----- QSB/ConversationSync/ConversationType.cs | 5 +++ QSB/Events/EventList.cs | 4 ++- QSB/Events/EventNames.cs | 1 + QSB/Messaging/EventType.cs | 4 ++- QSB/PlayerInfo.cs | 4 +++ QSB/QSB.cs | 2 ++ QSB/QSB.csproj | 6 ++++ QSB/QSB.csproj.user | 3 +- QSB/QSBNetworkManager.cs | 23 +++++------- QSB/WorldSync/WorldRegistry.cs | 14 ++++++++ QSB/default-config.json | 2 +- 15 files changed, 164 insertions(+), 28 deletions(-) create mode 100644 QSB/ConversationSync/ConversationEvent.cs create mode 100644 QSB/ConversationSync/ConversationManager.cs create mode 100644 QSB/ConversationSync/ConversationMessage.cs create mode 100644 QSB/ConversationSync/ConversationType.cs diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs new file mode 100644 index 000000000..f546c1e2d --- /dev/null +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -0,0 +1,28 @@ +using QSB.Events; +using QSB.Messaging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.ConversationSync +{ + class ConversationEvent : QSBEvent + { + public override EventType Type => EventType.Conversation; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); + + private void Handler(int id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); + + private ConversationMessage CreateMessage(int id, string message, ConversationType type) => new ConversationMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + Type = type, + Message = message + }; + } +} diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs new file mode 100644 index 000000000..f649c24d8 --- /dev/null +++ b/QSB/ConversationSync/ConversationManager.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB.ConversationSync +{ + public class ConversationManager : MonoBehaviour + { + public static ConversationManager Instance { get; private set; } + + void Start() + { + Instance = this; + } + + public void SendPlayerOption(string text) + { + + } + + public void SendCharacterDialogue(string text) + { + + } + } +} diff --git a/QSB/ConversationSync/ConversationMessage.cs b/QSB/ConversationSync/ConversationMessage.cs new file mode 100644 index 000000000..30b2a9ca6 --- /dev/null +++ b/QSB/ConversationSync/ConversationMessage.cs @@ -0,0 +1,28 @@ +using QSB.Messaging; +using UnityEngine.Networking; + +namespace QSB.ConversationSync +{ + public class ConversationMessage : PlayerMessage + { + public ConversationType Type { get; set; } + public int ObjectId { get; set; } + public string Message { get; set; } + + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + Type = (ConversationType)reader.ReadInt32(); + Message = reader.ReadString(); + } + + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + writer.Write((int)Type); + writer.Write(Message); + } + } +} diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index a73d8fb41..1103f763d 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -1,5 +1,9 @@ -using System; +using OWML.ModHelper.Events; +using QSB.Utility; +using QSB.WorldSync; +using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; @@ -7,18 +11,36 @@ namespace QSB.ConversationSync { public static class ConversationPatches { - public static class OrbPatches + public static void StartConversation(CharacterDialogueTree __instance) { - public static void ZoneExit(CharacterAnimController __instance) - { - - } + var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); + DebugLog.DebugWrite("START CONVO " + index); + } - public static void AddPatches() + public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) + { + if (optionIndex >= 0) { - QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); - QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); + var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); + ConversationManager.Instance.SendPlayerOption(selectedOption.Text); } + return true; + } + + public static void GetNextPage(DialogueNode __instance, string ____name, List ____listPagesToDisplay, int ____currentPage) + { + DebugLog.DebugWrite("Name is : " + __instance.Name); + DebugLog.DebugWrite("Target Name is : " + __instance.TargetName); + var key = ____name + ____listPagesToDisplay[____currentPage]; + var mainText = TextTranslation.Translate(key).Trim(); + ConversationManager.Instance.SendCharacterDialogue(mainText); + } + + public static void AddPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); + QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); + QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); } } } diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs new file mode 100644 index 000000000..606389b5b --- /dev/null +++ b/QSB/ConversationSync/ConversationType.cs @@ -0,0 +1,5 @@ +public enum ConversationType +{ + CHARACTER, + PLAYER +} diff --git a/QSB/Events/EventList.cs b/QSB/Events/EventList.cs index 34deedc92..ac4ebba68 100644 --- a/QSB/Events/EventList.cs +++ b/QSB/Events/EventList.cs @@ -1,4 +1,5 @@ using QSB.Animation; +using QSB.ConversationSync; using QSB.DeathSync; using QSB.ElevatorSync; using QSB.GeyserSync; @@ -40,7 +41,8 @@ public static void Init() new ServerTimeEvent(), new AnimTriggerEvent(), new OrbSlotEvent(), - new OrbUserEvent() + new OrbUserEvent(), + new ConversationEvent() }; _eventList.ForEach(ev => ev.SetupListener()); diff --git a/QSB/Events/EventNames.cs b/QSB/Events/EventNames.cs index 8a0d735f1..db6991bbf 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -32,5 +32,6 @@ public static class EventNames public static string QSBAnimTrigger = "QSBAnimTrigger"; public static string QSBOrbSlot = "QSBOrbSlot"; public static string QSBOrbUser = "QSBOrbUser"; + public static string QSBConversation = "QSBConversation"; } } diff --git a/QSB/Messaging/EventType.cs b/QSB/Messaging/EventType.cs index 7dd98e8b1..6c1753960 100644 --- a/QSB/Messaging/EventType.cs +++ b/QSB/Messaging/EventType.cs @@ -21,6 +21,8 @@ public enum EventType Elevator, Geyser, OrbSlot, - OrbUser + OrbUser, + Conversation, + ConversationStatus } } diff --git a/QSB/PlayerInfo.cs b/QSB/PlayerInfo.cs index 72708cd1e..7e587f9dd 100644 --- a/QSB/PlayerInfo.cs +++ b/QSB/PlayerInfo.cs @@ -11,15 +11,19 @@ public class PlayerInfo { public uint PlayerId { get; } public GameObject Camera { get; set; } + + // Tools public GameObject ProbeBody { get; set; } public QSBProbe Probe { get; set; } public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); public QSBTool Translator => GetToolByType(ToolType.Translator); public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); + public PlayerHUDMarker HudMarker { get; set; } public string Name { get; set; } public bool IsReady { get; set; } + public int ConversationId { get; set; } public State State { get; set; } public PlayerInfo(uint id) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index fb2359caa..f7e816b79 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -1,5 +1,6 @@ using OWML.Common; using OWML.ModHelper; +using QSB.ConversationSync; using QSB.DeathSync; using QSB.ElevatorSync; using QSB.GeyserSync; @@ -47,6 +48,7 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); + gameObject.AddComponent(); } public override void Configure(IModConfig config) diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 8042842f1..8f0cceeea 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -126,6 +126,12 @@ + + + + + + diff --git a/QSB/QSB.csproj.user b/QSB/QSB.csproj.user index 85eea9410..c8a11e84d 100644 --- a/QSB/QSB.csproj.user +++ b/QSB/QSB.csproj.user @@ -3,5 +3,6 @@ D:\EpicGames\OuterWilds C:\Users\Henry\AppData\Roaming\OuterWildsModManager\OWML + ShowAllFiles - + \ No newline at end of file diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 34ff414f9..4952ea0dd 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -1,6 +1,7 @@ using OWML.Common; using OWML.ModHelper.Events; using QSB.Animation; +using QSB.ConversationSync; using QSB.DeathSync; using QSB.ElevatorSync; using QSB.Events; @@ -32,7 +33,7 @@ public class QSBNetworkManager : NetworkManager private GameObject _shipPrefab; private GameObject _cameraPrefab; private GameObject _probePrefab; - private GameObject _orbPrefab; + public GameObject OrbPrefab { get; private set; } private void Awake() { @@ -62,22 +63,13 @@ private void Awake() spawnPrefabs.Add(_probePrefab); DebugLog.LogState("ProbePrefab", _probePrefab); - _orbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - _orbPrefab.AddComponent(); - spawnPrefabs.Add(_orbPrefab); - DebugLog.LogState("OrbPrefab", _orbPrefab); + OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); + OrbPrefab.AddComponent(); + spawnPrefabs.Add(OrbPrefab); + DebugLog.LogState("OrbPrefab", OrbPrefab); ConfigureNetworkManager(); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - private void OnSceneLoaded(OWScene scene, bool inUniverse) - { - WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); - if (NetworkServer.active) - { - WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(_orbPrefab))); - } + QSBSceneManager.OnSceneLoaded += WorldRegistry.InitOnSceneLoaded; } private void ConfigureNetworkManager() @@ -121,6 +113,7 @@ public override void OnClientConnect(NetworkConnection connection) // Called on } OrbPatches.AddPatches(); + ConversationPatches.AddPatches(); _lobby.CanEditName = false; diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index c82d24ec8..4839381ba 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -4,6 +4,8 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using UnityEngine; +using UnityEngine.Networking; namespace QSB.WorldSync { @@ -12,6 +14,18 @@ public static class WorldRegistry private static readonly List WorldObjects = new List(); public static List OrbSyncList = new List(); public static List OldOrbList = new List(); + public static List OldDialogueTrees = new List(); + + public static void InitOnSceneLoaded(OWScene scene, bool inUniverse) + { + OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); + if (NetworkServer.active) + { + OldOrbList.ForEach(x => NetworkServer.Spawn(UnityEngine.Object.Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + } + + OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } public static void AddObject(WorldObject worldObject) { diff --git a/QSB/default-config.json b/QSB/default-config.json index 74eaa332e..1d394b367 100644 --- a/QSB/default-config.json +++ b/QSB/default-config.json @@ -3,6 +3,6 @@ "settings": { "defaultServerIP": "localhost", "port": 7777, - "debugMode": false + "debugMode": true } } From c85f30b1985691c1e9eb4a1cf06a37ef1e24d260 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 22 Sep 2020 21:39:53 +0100 Subject: [PATCH 003/207] more stuff --- QSB/ConversationSync/ConversationEvent.cs | 6 ++++++ QSB/ConversationSync/ConversationManager.cs | 9 +++++---- QSB/ConversationSync/ConversationPatches.cs | 2 +- QSB/Messaging/MessageHandler.cs | 5 +++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index f546c1e2d..070957f71 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Utility; using System; using System.Collections.Generic; using System.Linq; @@ -24,5 +25,10 @@ class ConversationEvent : QSBEvent Type = type, Message = message }; + + public override void OnReceiveRemote(ConversationMessage message) + { + DebugLog.DebugWrite($"Got conversation event for type [{message.Type}] id [{message.ObjectId}] text [{message.Message}]"); + } } } diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index f649c24d8..76f1effe8 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Events; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -17,12 +18,12 @@ void Start() public void SendPlayerOption(string text) { - + GlobalMessenger.FireEvent(EventNames.QSBConversation, -1, text, ConversationType.PLAYER); } - public void SendCharacterDialogue(string text) + public void SendCharacterDialogue(int id, string text) { - + GlobalMessenger.FireEvent(EventNames.QSBConversation, id, text, ConversationType.CHARACTER); } } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 1103f763d..0f72c8ced 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -33,7 +33,7 @@ public static void GetNextPage(DialogueNode __instance, string ____name, List Date: Tue, 22 Sep 2020 22:26:31 +0100 Subject: [PATCH 004/207] cleanup --- QSB/ConversationSync/ConversationEvent.cs | 4 ---- QSB/ConversationSync/ConversationManager.cs | 4 ---- QSB/ConversationSync/ConversationPatches.cs | 7 +------ QSB/ConversationSync/QSBCharacterAnimController.cs | 4 ---- 4 files changed, 1 insertion(+), 18 deletions(-) diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index 070957f71..f75cfca9b 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -1,10 +1,6 @@ using QSB.Events; using QSB.Messaging; using QSB.Utility; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace QSB.ConversationSync { diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 76f1effe8..1e9bf09e5 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,8 +1,4 @@ using QSB.Events; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; namespace QSB.ConversationSync diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 0f72c8ced..2160de728 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -1,11 +1,6 @@ -using OWML.ModHelper.Events; -using QSB.Utility; +using QSB.Utility; using QSB.WorldSync; -using System; using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; namespace QSB.ConversationSync { diff --git a/QSB/ConversationSync/QSBCharacterAnimController.cs b/QSB/ConversationSync/QSBCharacterAnimController.cs index 4c3d819da..d0b181bd7 100644 --- a/QSB/ConversationSync/QSBCharacterAnimController.cs +++ b/QSB/ConversationSync/QSBCharacterAnimController.cs @@ -1,8 +1,4 @@ using QSB.WorldSync; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace QSB.ConversationSync { From d736d0fdf7a93be4b9784bfa28fa76820de307c7 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 22 Sep 2020 22:28:45 +0100 Subject: [PATCH 005/207] cleanup --- QSB/ConversationSync/ConversationType.cs | 9 ++++--- QSB/TransformSync/QuaternionHelper.cs | 33 ------------------------ 2 files changed, 6 insertions(+), 36 deletions(-) delete mode 100644 QSB/TransformSync/QuaternionHelper.cs diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 606389b5b..7eca78273 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -1,5 +1,8 @@ -public enum ConversationType +namespace QSB.ConversationSync { - CHARACTER, - PLAYER + public enum ConversationType + { + CHARACTER, + PLAYER + } } diff --git a/QSB/TransformSync/QuaternionHelper.cs b/QSB/TransformSync/QuaternionHelper.cs deleted file mode 100644 index dfd87d5cd..000000000 --- a/QSB/TransformSync/QuaternionHelper.cs +++ /dev/null @@ -1,33 +0,0 @@ -using UnityEngine; - -namespace QSB.TransformSync -{ - public static class QuaternionHelper - { - // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b - public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) - { - // account for double-cover - var dot = Quaternion.Dot(rot, target); - var multi = dot > 0f ? 1f : -1f; - target.x *= multi; - target.y *= multi; - target.z *= multi; - target.w *= multi; - // smooth damp (nlerp approx) - var result = new Vector4( - Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), - Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), - Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), - Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) - ).normalized; - // compute deriv - var dtInv = 1f / Time.deltaTime; - deriv.x = (result.x - rot.x) * dtInv; - deriv.y = (result.y - rot.y) * dtInv; - deriv.z = (result.z - rot.z) * dtInv; - deriv.w = (result.w - rot.w) * dtInv; - return new Quaternion(result.x, result.y, result.z, result.w); - } - } -} From c435ca407410216e15a89508d5a9b93db2810cc0 Mon Sep 17 00:00:00 2001 From: Aleksander Waage Date: Tue, 29 Sep 2020 20:42:45 +0200 Subject: [PATCH 006/207] cleanup --- QSB/ConversationSync/ConversationEvent.cs | 2 +- QSB/ConversationSync/ConversationManager.cs | 6 +++--- QSB/ConversationSync/ConversationPatches.cs | 8 +++++--- QSB/ConversationSync/ConversationType.cs | 4 ++-- QSB/QSBNetworkManager.cs | 12 ++++++------ QSB/WorldSync/WorldRegistry.cs | 4 ++-- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index f75cfca9b..6970618a5 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -4,7 +4,7 @@ namespace QSB.ConversationSync { - class ConversationEvent : QSBEvent + public class ConversationEvent : QSBEvent { public override EventType Type => EventType.Conversation; diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 1e9bf09e5..f8996e0ed 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -7,19 +7,19 @@ public class ConversationManager : MonoBehaviour { public static ConversationManager Instance { get; private set; } - void Start() + private void Start() { Instance = this; } public void SendPlayerOption(string text) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, -1, text, ConversationType.PLAYER); + GlobalMessenger.FireEvent(EventNames.QSBConversation, -1, text, ConversationType.Player); } public void SendCharacterDialogue(int id, string text) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, id, text, ConversationType.CHARACTER); + GlobalMessenger.FireEvent(EventNames.QSBConversation, id, text, ConversationType.Character); } } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 2160de728..bccefb149 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -14,11 +14,13 @@ public static void StartConversation(CharacterDialogueTree __instance) public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) { - if (optionIndex >= 0) + if (optionIndex < 0) { - var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); - ConversationManager.Instance.SendPlayerOption(selectedOption.Text); + return true; } + + var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); + ConversationManager.Instance.SendPlayerOption(selectedOption.Text); return true; } diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 7eca78273..9a17d13d6 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -2,7 +2,7 @@ { public enum ConversationType { - CHARACTER, - PLAYER + Character, + Player } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 4952ea0dd..8e331b904 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -33,7 +33,7 @@ public class QSBNetworkManager : NetworkManager private GameObject _shipPrefab; private GameObject _cameraPrefab; private GameObject _probePrefab; - public GameObject OrbPrefab { get; private set; } + private GameObject _orbPrefab; private void Awake() { @@ -63,13 +63,13 @@ private void Awake() spawnPrefabs.Add(_probePrefab); DebugLog.LogState("ProbePrefab", _probePrefab); - OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - OrbPrefab.AddComponent(); - spawnPrefabs.Add(OrbPrefab); - DebugLog.LogState("OrbPrefab", OrbPrefab); + _orbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); + _orbPrefab.AddComponent(); + spawnPrefabs.Add(_orbPrefab); + DebugLog.LogState("OrbPrefab", _orbPrefab); ConfigureNetworkManager(); - QSBSceneManager.OnSceneLoaded += WorldRegistry.InitOnSceneLoaded; + QSBSceneManager.OnSceneLoaded += (scene, b) => WorldRegistry.InitOnSceneLoaded(_orbPrefab); } private void ConfigureNetworkManager() diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 4839381ba..b14f69704 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -16,12 +16,12 @@ public static class WorldRegistry public static List OldOrbList = new List(); public static List OldDialogueTrees = new List(); - public static void InitOnSceneLoaded(OWScene scene, bool inUniverse) + public static void InitOnSceneLoaded(GameObject orbPrefab) { OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); if (NetworkServer.active) { - OldOrbList.ForEach(x => NetworkServer.Spawn(UnityEngine.Object.Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + OldOrbList.ForEach(x => NetworkServer.Spawn(UnityEngine.Object.Instantiate(orbPrefab))); } OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); From 11defe81e91f4ff2aa7c29fdff12b346eaa390da Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 23 Oct 2020 10:36:13 +0100 Subject: [PATCH 007/207] Update QSBNetworkManager.cs --- QSB/QSBNetworkManager.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 8e331b904..2feb14882 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -87,6 +87,15 @@ private void ConfigureNetworkManager() gameObject.AddComponent(); } + public override void OnStartServer() + { + DebugLog.DebugWrite("~~ ON START SERVER ~~", MessageType.Info); + if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) + { + //OrbManager.Instance.QueueBuildOrbs(); + } + } + public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins { DebugLog.DebugWrite("[S] Add player"); From 8c185c4cdbcf4d145bcd418cb31d1ac5085d02d9 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 23 Oct 2020 19:06:11 +0100 Subject: [PATCH 008/207] whoops i worked on this all day and didn't commit --- AssetBundles/conversation | Bin 0 -> 185833 bytes AssetBundles/conversation.manifest | 40 + AssetBundles/debug.manifest | 2 +- AssetBundles/network.manifest | 2 +- QSB/ConversationSync/ConversationEvent.cs | 21 +- QSB/ConversationSync/ConversationManager.cs | 40 +- QSB/ConversationSync/ConversationPatches.cs | 19 +- QSB/OrbSync/OrbManager.cs | 5 +- QSB/PlayerInfo.cs | 5 +- QSB/QSB.cs | 17 + QSB/QSBNetworkManager.cs | 8 +- QSB/TimeSync/ServerTimeEvent.cs | 10 +- QSB/TimeSync/ServerTimeMessage.cs | 1 - QSB/Tools/QSBFlashlight.cs | 1 + QSB/TransformSync/PlayerTransformSync.cs | 4 + QSB/Utility/DebugLog.cs | 7 +- QSB/Utility/GOExtensions.cs | 1 - QSB/WorldSync/WorldRegistry.cs | 13 - QSB/manifest.json | 2 +- UnityProject/Assets/DialogueBubble.prefab | 227 + .../Assets/DialogueBubble.prefab.meta | 8 + UnityProject/Assets/SpaceMono-Bold.asset | 9825 +++++++++++++++++ UnityProject/Assets/SpaceMono-Bold.asset.meta | 8 + UnityProject/Assets/spacemono-bold.mat | 27 + UnityProject/Assets/spacemono-bold.mat.meta | 8 + UnityProject/Assets/spacemono-bold.png | Bin 0 -> 219335 bytes UnityProject/Assets/spacemono-bold.png.meta | 86 + 27 files changed, 10338 insertions(+), 49 deletions(-) create mode 100644 AssetBundles/conversation create mode 100644 AssetBundles/conversation.manifest create mode 100644 UnityProject/Assets/DialogueBubble.prefab create mode 100644 UnityProject/Assets/DialogueBubble.prefab.meta create mode 100644 UnityProject/Assets/SpaceMono-Bold.asset create mode 100644 UnityProject/Assets/SpaceMono-Bold.asset.meta create mode 100644 UnityProject/Assets/spacemono-bold.mat create mode 100644 UnityProject/Assets/spacemono-bold.mat.meta create mode 100644 UnityProject/Assets/spacemono-bold.png create mode 100644 UnityProject/Assets/spacemono-bold.png.meta diff --git a/AssetBundles/conversation b/AssetBundles/conversation new file mode 100644 index 0000000000000000000000000000000000000000..96988cd9bcd15d79a1de43ec27d7c73853007d79 GIT binary patch literal 185833 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�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 { public override EventType Type => EventType.Conversation; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); - private void Handler(int id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); + private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); - private ConversationMessage CreateMessage(int id, string message, ConversationType type) => new ConversationMessage + private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage { AboutId = LocalPlayerId, - ObjectId = id, + ObjectId = (int)id, Type = type, Message = message }; public override void OnReceiveRemote(ConversationMessage message) { - DebugLog.DebugWrite($"Got conversation event for type [{message.Type}] id [{message.ObjectId}] text [{message.Message}]"); + switch (message.Type) + { + case ConversationType.Character: + var translated = TextTranslation.Translate(message.Message).Trim(); + DebugLog.DebugWrite($"CHARACTER id [{message.ObjectId}] text [{translated}]"); + break; + case ConversationType.Player: + ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); + break; + } } } } diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index f8996e0ed..34d57b977 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,25 +1,59 @@ -using QSB.Events; +using OWML.Common; +using QSB.Events; +using QSB.Utility; using UnityEngine; +using UnityEngine.UI; namespace QSB.ConversationSync { public class ConversationManager : MonoBehaviour { public static ConversationManager Instance { get; private set; } + public AssetBundle ConversationAssetBundle { get; private set; } + private GameObject BoxPrefab; private void Start() { Instance = this; + + ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); + DebugLog.LogState("ConversationBundle", ConversationAssetBundle); + + BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + var font = (Font)Resources.Load(@"fonts\english - latin\SpaceMono-Bold"); + if (font == null) + { + DebugLog.ToConsole("Error - Font is null!", MessageType.Error); + } + BoxPrefab.GetComponent().font = font; + DebugLog.LogState("BoxPrefab", BoxPrefab); } public void SendPlayerOption(string text) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, -1, text, ConversationType.Player); + GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); } public void SendCharacterDialogue(int id, string text) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, id, text, ConversationType.Character); + GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + } + + public void DisplayPlayerConversationBox(uint playerId, string text) + { + Destroy(PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox); + if (playerId == PlayerRegistry.LocalPlayerId) + { + DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); + return; + } + var newBox = Instantiate(BoxPrefab); + newBox.transform.parent = PlayerRegistry.GetPlayer(playerId).Body.transform; + newBox.transform.localPosition = Vector3.zero; + newBox.transform.LookAt(PlayerRegistry.LocalPlayer.Camera.transform); + newBox.GetComponent().text = text; + + PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox = newBox; } } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index bccefb149..33eaa346b 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -9,13 +9,20 @@ public static class ConversationPatches public static void StartConversation(CharacterDialogueTree __instance) { var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); - DebugLog.DebugWrite("START CONVO " + index); + PlayerRegistry.LocalPlayer.CurrentDialogueID = index; + DebugLog.DebugWrite($"Start converstation id {index}"); + } + + public static void EndConversation() + { + PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; } public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) { if (optionIndex < 0) { + // in a page where there is no selectable options return true; } @@ -24,13 +31,12 @@ public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____curr return true; } - public static void GetNextPage(DialogueNode __instance, string ____name, List ____listPagesToDisplay, int ____currentPage) + public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) { - DebugLog.DebugWrite("Name is : " + __instance.Name); - DebugLog.DebugWrite("Target Name is : " + __instance.TargetName); var key = ____name + ____listPagesToDisplay[____currentPage]; - var mainText = TextTranslation.Translate(key).Trim(); - ConversationManager.Instance.SendCharacterDialogue(0, mainText); + // Sending key so translation can be done on client side - should make different language-d clients compatible + QSB.Helper.Events.Unity.RunWhen(() => PlayerRegistry.LocalPlayer.CurrentDialogueID != -1, + () => ConversationManager.Instance.SendCharacterDialogue(PlayerRegistry.LocalPlayer.CurrentDialogueID, key)); } public static void AddPatches() @@ -38,6 +44,7 @@ public static void AddPatches() QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); + QSB.Helper.HarmonyHelper.AddPostfix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); } } } diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 0c957fe4b..cbdc1ad9b 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -1,4 +1,5 @@ -using QSB.Utility; +using OWML.Common; +using QSB.Utility; using QSB.WorldSync; using System.Linq; using UnityEngine; @@ -26,7 +27,7 @@ private void BuildOrbSlots() qsbOrbSlot.Init(orbSlots[id], id); } - DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs."); + DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs.", MessageType.Success); } public void BuildOrbs() diff --git a/QSB/PlayerInfo.cs b/QSB/PlayerInfo.cs index 96e3c3cf4..e469facc0 100644 --- a/QSB/PlayerInfo.cs +++ b/QSB/PlayerInfo.cs @@ -11,6 +11,7 @@ public class PlayerInfo { public uint PlayerId { get; } public GameObject Camera { get; set; } + public GameObject Body { get; set; } // Tools public GameObject ProbeBody { get; set; } @@ -23,13 +24,15 @@ public class PlayerInfo public PlayerHUDMarker HudMarker { get; set; } public string Name { get; set; } public bool IsReady { get; set; } - public int ConversationId { get; set; } + public int CurrentDialogueID { get; set; } + public GameObject CurrentDialogueBox { get; set; } public State State { get; set; } public PlayerInfo(uint id) { DebugLog.DebugWrite($"Creating PlayerInfo with id {id}"); PlayerId = id; + CurrentDialogueID = -1; } public void UpdateState(State state, bool value) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 1de513950..4b6b0bf27 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -49,6 +49,23 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); + + Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave); + } + + private void RebuildSettingsSave() + { + if (PlayerData.GetFreezeTimeWhileReadingConversations() + || PlayerData.GetFreezeTimeWhileReadingTranslator() + || PlayerData.GetFreezeTimeWhileReadingShipLog()) + { + DebugLog.DebugWrite("Rebuilding SettingsSave..."); + var clonedData = PlayerData.CloneSettingsData(); + clonedData.freezeTimeWhileReading = false; + clonedData.freezeTimeWhileReadingConversations = false; + clonedData.freezeTimeWhileReadingShipLog = false; + PlayerData.SetSettingsData(clonedData); + } } public override void Configure(IModConfig config) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index bf7fb745c..cdaaefbd7 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -77,6 +77,8 @@ private void OnSceneLoaded(OWScene scene, bool inUniverse) if (inUniverse) { OrbManager.Instance.BuildOrbs(); + WorldRegistry.OldDialogueTrees.Clear(); + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } } @@ -102,6 +104,10 @@ public override void OnStartServer() { OrbManager.Instance.QueueBuildOrbs(); } + if (WorldRegistry.OldDialogueTrees.Count == 0) + { + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } } public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins @@ -168,8 +174,8 @@ public override void OnStopClient() // Called on the client when closing connect WorldRegistry.RemoveObjects(); WorldRegistry.RemoveObjects(); WorldRegistry.RemoveObjects(); - DebugLog.DebugWrite("Clearing OrbSyncList...", MessageType.Info); WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldDialogueTrees.Clear(); _lobby.CanEditName = true; } diff --git a/QSB/TimeSync/ServerTimeEvent.cs b/QSB/TimeSync/ServerTimeEvent.cs index 8eb7ff6ba..dbf08dea5 100644 --- a/QSB/TimeSync/ServerTimeEvent.cs +++ b/QSB/TimeSync/ServerTimeEvent.cs @@ -7,15 +7,9 @@ public class ServerTimeEvent : QSBEvent { public override EventType Type => EventType.ServerTime; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); - } + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); - } + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); diff --git a/QSB/TimeSync/ServerTimeMessage.cs b/QSB/TimeSync/ServerTimeMessage.cs index b8550a281..4f1e925c4 100644 --- a/QSB/TimeSync/ServerTimeMessage.cs +++ b/QSB/TimeSync/ServerTimeMessage.cs @@ -21,6 +21,5 @@ public override void Serialize(NetworkWriter writer) writer.Write(ServerTime); writer.Write(LoopCount); } - } } \ No newline at end of file diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index c240f1fd1..bf9a32d55 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -72,6 +72,7 @@ private void TurnOff() private void FixedUpdate() { + // This really isn't needed... but it makes it look that extra bit nicer. var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); var b = lhs * _baseRotation; _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index 9094d4066..b680c5937 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -28,6 +28,8 @@ protected override Transform InitLocalTransform() GetComponent().InitLocal(body); + Player.Body = body.gameObject; + return body; } @@ -40,6 +42,8 @@ protected override Transform InitRemoteTransform() var marker = body.gameObject.AddComponent(); marker.Init(Player); + Player.Body = body.gameObject; + return body; } diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index 15b251f55..244eae385 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -9,6 +9,8 @@ public static class DebugLog { public static void ToConsole(string message, MessageType type = MessageType.Message) { + // hack to make custom method name in owml log. + // i wrote the owml code for this so this is fine?? shut up i dont want to change owml var console = (ModSocketOutput)QSB.Helper.Console; var method = console.GetType() .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) @@ -45,10 +47,7 @@ public static void LogState(string name, bool state) { var status = state ? "OK" : "FAIL"; var messageType = state ? MessageType.Success : MessageType.Error; - if (!state) // to stop "OK" spam - { - DebugWrite($"* {name} {status}", messageType); - } + DebugWrite($"* {name} {status}", messageType); } private static string GetCallingType(StackTrace frame) diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index 190167698..9d1e53e54 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -29,6 +29,5 @@ public static Transform InstantiateInactive(this Transform original) { return original.gameObject.InstantiateInactive().transform; } - } } diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 4cc94ab0c..81f9f0a71 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -6,8 +6,6 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using UnityEngine; -using UnityEngine.Networking; namespace QSB.WorldSync { @@ -18,17 +16,6 @@ public static class WorldRegistry public static List OldOrbList = new List(); public static List OldDialogueTrees = new List(); - public static void InitOnSceneLoaded(GameObject orbPrefab) - { - OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); - if (NetworkServer.active) - { - OldOrbList.ForEach(x => NetworkServer.Spawn(UnityEngine.Object.Instantiate(orbPrefab))); - } - - OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - public static void AddObject(WorldObject worldObject) { if (WorldObjects.Contains(worldObject)) diff --git a/QSB/manifest.json b/QSB/manifest.json index ec5ccdac2..3121b217f 100644 --- a/QSB/manifest.json +++ b/QSB/manifest.json @@ -4,6 +4,6 @@ "name": "Quantum Space Buddies", "description": "Adds online multiplayer to the game.", "uniqueName": "Raicuparta.QuantumSpaceBuddies", - "version": "0.6.0", + "version": "0.7.0", "owmlVersion": "0.7.3" } diff --git a/UnityProject/Assets/DialogueBubble.prefab b/UnityProject/Assets/DialogueBubble.prefab new file mode 100644 index 000000000..78b5d43ba --- /dev/null +++ b/UnityProject/Assets/DialogueBubble.prefab @@ -0,0 +1,227 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1531056750600734} + m_IsPrefabParent: 1 +--- !u!1 &1143829915878388 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224902966460615240} + - component: {fileID: 222785523450871998} + - component: {fileID: 114075889546086968} + - component: {fileID: 223100826173633414} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1531056750600734 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224161822944405660} + - component: {fileID: 222075293424074192} + - component: {fileID: 114008001535486946} + - component: {fileID: 223470330008512890} + - component: {fileID: 114167403308441852} + - component: {fileID: 114670735829080676} + m_Layer: 0 + m_Name: DialogueBubble + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114008001535486946 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1531056750600734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: fff59d5e06ad5b74497d7cc1dddc5e28, type: 2} + m_Color: {r: 1, g: 0.68275857, b: 0, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 58199d5bdd1dec045bcdd0a15a8dc780, type: 2} + m_FontSize: 1 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 150 + m_Alignment: 4 + m_AlignByGeometry: 1 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!114 &114075889546086968 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1143829915878388} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.841} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114167403308441852 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1531056750600734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 +--- !u!114 &114670735829080676 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1531056750600734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: -0.04, y: -0.04} + m_UseGraphicAlpha: 1 +--- !u!222 &222075293424074192 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1531056750600734} +--- !u!222 &222785523450871998 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1143829915878388} +--- !u!223 &223100826173633414 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1143829915878388} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 1 + m_OverridePixelPerfect: 1 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: -9999 + m_TargetDisplay: 0 +--- !u!223 &223470330008512890 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1531056750600734} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &224161822944405660 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1531056750600734} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.13, y: 0.13, z: 1} + m_Children: + - {fileID: 224902966460615240} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224902966460615240 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1143829915878388} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224161822944405660} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -1, y: -1} + m_SizeDelta: {x: 2, y: 2} + m_Pivot: {x: 0, y: 0} diff --git a/UnityProject/Assets/DialogueBubble.prefab.meta b/UnityProject/Assets/DialogueBubble.prefab.meta new file mode 100644 index 000000000..c88198875 --- /dev/null +++ b/UnityProject/Assets/DialogueBubble.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a96f886e4fad144f8fb9a5e3c2712df +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: conversation + assetBundleVariant: diff --git a/UnityProject/Assets/SpaceMono-Bold.asset b/UnityProject/Assets/SpaceMono-Bold.asset new file mode 100644 index 000000000..fa8fd8f28 --- /dev/null +++ b/UnityProject/Assets/SpaceMono-Bold.asset @@ -0,0 +1,9825 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!128 &12800000 +Font: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SpaceMono-Bold + serializedVersion: 5 + m_LineSpacing: 71.088 + m_DefaultMaterial: {fileID: 2100000, guid: fff59d5e06ad5b74497d7cc1dddc5e28, type: 2} + m_FontSize: 48 + m_Texture: {fileID: 2800000, guid: bbf5e75f9b2cad841bf915d2b17aebf1, type: 3} + m_AsciiStartOffset: 0 + m_Tracking: 1 + m_CharacterSpacing: 0 + m_CharacterPadding: 1 + m_ConvertCase: -1 + m_CharacterRects: + - serializedVersion: 2 + index: 32 + uv: + serializedVersion: 2 + x: 0 + y: 0.001953125 + width: 0.001953125 + height: -0.001953125 + vert: + serializedVersion: 2 + x: -1 + y: 1 + width: 2 + height: -2 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 33 + uv: + serializedVersion: 2 + x: 0 + y: 0.03808594 + width: 0.01171875 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 9 + y: 35 + width: 12 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 34 + uv: + serializedVersion: 2 + x: 0.01171875 + y: 0.02246094 + width: 0.01757813 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 36 + width: 23 + height: -18 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 35 + uv: + serializedVersion: 2 + x: 0 + y: 0.06542969 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 31 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 36 + uv: + serializedVersion: 2 + x: 0.02929688 + y: 0.03320313 + width: 0.02246094 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 3 + y: 34 + width: 23 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 37 + uv: + serializedVersion: 2 + x: 0.05175781 + y: 0.03710938 + width: 0.02832031 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 0 + y: 36 + width: 29 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 38 + uv: + serializedVersion: 2 + x: 0.02636719 + y: 0.07226563 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 39 + uv: + serializedVersion: 2 + x: 0 + y: 0.08300781 + width: 0.01171875 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 9 + y: 36 + width: 12 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 40 + uv: + serializedVersion: 2 + x: 0.08007813 + y: 0.05078125 + width: 0.02246094 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 6 + y: 43 + width: 23 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 41 + uv: + serializedVersion: 2 + x: 0 + y: 0.1337891 + width: 0.02148438 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 1 + y: 43 + width: 22 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 42 + uv: + serializedVersion: 2 + x: 0.02148438 + y: 0.09863281 + width: 0.02636719 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 30 + width: 27 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 43 + uv: + serializedVersion: 2 + x: 0.1025391 + y: 0.02246094 + width: 0.02246094 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 28 + width: 23 + height: -23 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 44 + uv: + serializedVersion: 2 + x: 0.02148438 + y: 0.1162109 + width: 0.01171875 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 9 + y: 10 + width: 12 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 45 + uv: + serializedVersion: 2 + x: 0.04785156 + y: 0.08984375 + width: 0.0078125 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 6 + y: 17 + width: 18 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 46 + uv: + serializedVersion: 2 + x: 0.1025391 + y: 0.03417969 + width: 0.01171875 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: 10 + width: 12 + height: -12 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 47 + uv: + serializedVersion: 2 + x: 0.125 + y: 0.046875 + width: 0.02246094 + height: -0.046875 + vert: + serializedVersion: 2 + x: 3 + y: 41 + width: 23 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 48 + uv: + serializedVersion: 2 + x: 0.05566406 + y: 0.08789063 + width: 0.02734375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 49 + uv: + serializedVersion: 2 + x: 0.03320313 + y: 0.1337891 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 50 + uv: + serializedVersion: 2 + x: 0 + y: 0.1699219 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 51 + uv: + serializedVersion: 2 + x: 0.08300781 + y: 0.08691406 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 52 + uv: + serializedVersion: 2 + x: 0.1474609 + y: 0.03515625 + width: 0.02929688 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 30 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 53 + uv: + serializedVersion: 2 + x: 0.06054688 + y: 0.1240234 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 54 + uv: + serializedVersion: 2 + x: 0.109375 + y: 0.08398438 + width: 0.02636719 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 27 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 55 + uv: + serializedVersion: 2 + x: 0.02734375 + y: 0.1689453 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 56 + uv: + serializedVersion: 2 + x: 0 + y: 0.2070313 + width: 0.02636719 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 27 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 57 + uv: + serializedVersion: 2 + x: 0.08789063 + y: 0.1240234 + width: 0.02636719 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 27 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 58 + uv: + serializedVersion: 2 + x: 0.1767578 + y: 0.02734375 + width: 0.01171875 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 9 + y: 26 + width: 12 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 59 + uv: + serializedVersion: 2 + x: 0.1357422 + y: 0.08007813 + width: 0.01171875 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 9 + y: 26 + width: 12 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 60 + uv: + serializedVersion: 2 + x: 0.1474609 + y: 0.05859375 + width: 0.02246094 + height: -0.0234375 + vert: + serializedVersion: 2 + x: 3 + y: 29 + width: 23 + height: -24 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 61 + uv: + serializedVersion: 2 + x: 0.06054688 + y: 0.1464844 + width: 0.01660156 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 25 + width: 23 + height: -17 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 62 + uv: + serializedVersion: 2 + x: 0.1884766 + y: 0.0234375 + width: 0.02246094 + height: -0.0234375 + vert: + serializedVersion: 2 + x: 3 + y: 29 + width: 23 + height: -24 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 63 + uv: + serializedVersion: 2 + x: 0.02636719 + y: 0.2070313 + width: 0.02539063 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 36 + width: 26 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 64 + uv: + serializedVersion: 2 + x: 0.07714844 + y: 0.1572266 + width: 0.03027344 + height: -0.03320313 + vert: + serializedVersion: 2 + x: -1 + y: 32 + width: 31 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 65 + uv: + serializedVersion: 2 + x: 0.1142578 + y: 0.1191406 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 66 + uv: + serializedVersion: 2 + x: 0.1767578 + y: 0.0625 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 67 + uv: + serializedVersion: 2 + x: 0.1474609 + y: 0.09570313 + width: 0.02734375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 68 + uv: + serializedVersion: 2 + x: 0 + y: 0.2421875 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 69 + uv: + serializedVersion: 2 + x: 0.2109375 + y: 0.03515625 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 70 + uv: + serializedVersion: 2 + x: 0.05175781 + y: 0.2041016 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 71 + uv: + serializedVersion: 2 + x: 0.1074219 + y: 0.1611328 + width: 0.02636719 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 27 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 72 + uv: + serializedVersion: 2 + x: 0.02636719 + y: 0.2421875 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 73 + uv: + serializedVersion: 2 + x: 0.07519531 + y: 0.1923828 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 74 + uv: + serializedVersion: 2 + x: 0.2353516 + y: 0.03613281 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 75 + uv: + serializedVersion: 2 + x: 0.1748047 + y: 0.09765625 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 76 + uv: + serializedVersion: 2 + x: 0 + y: 0.2773438 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 77 + uv: + serializedVersion: 2 + x: 0.1337891 + y: 0.1542969 + width: 0.02929688 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 30 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 78 + uv: + serializedVersion: 2 + x: 0.05273438 + y: 0.2392578 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 79 + uv: + serializedVersion: 2 + x: 0.2626953 + y: 0.03710938 + width: 0.02734375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 80 + uv: + serializedVersion: 2 + x: 0.2021484 + y: 0.09765625 + width: 0.02539063 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 81 + uv: + serializedVersion: 2 + x: 0.02441406 + y: 0.2871094 + width: 0.02734375 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 82 + uv: + serializedVersion: 2 + x: 0.09960938 + y: 0.1962891 + width: 0.02539063 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 83 + uv: + serializedVersion: 2 + x: 0.1630859 + y: 0.1347656 + width: 0.02832031 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 0 + y: 36 + width: 29 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 84 + uv: + serializedVersion: 2 + x: 0.07910156 + y: 0.2314453 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 85 + uv: + serializedVersion: 2 + x: 0.125 + y: 0.1972656 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 86 + uv: + serializedVersion: 2 + x: 0.1914063 + y: 0.1328125 + width: 0.02929688 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 30 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 87 + uv: + serializedVersion: 2 + x: 0.2275391 + y: 0.07128906 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 88 + uv: + serializedVersion: 2 + x: 0.2900391 + y: 0.03515625 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 89 + uv: + serializedVersion: 2 + x: 0.05273438 + y: 0.2744141 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 90 + uv: + serializedVersion: 2 + x: 0.1630859 + y: 0.1699219 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 91 + uv: + serializedVersion: 2 + x: 0.2275391 + y: 0.1220703 + width: 0.01367188 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 10 + y: 43 + width: 14 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 92 + uv: + serializedVersion: 2 + x: 0.2578125 + y: 0.08398438 + width: 0.02246094 + height: -0.046875 + vert: + serializedVersion: 2 + x: 3 + y: 41 + width: 23 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 93 + uv: + serializedVersion: 2 + x: 0.1054688 + y: 0.2470703 + width: 0.01464844 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 5 + y: 43 + width: 15 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 94 + uv: + serializedVersion: 2 + x: 0 + y: 0.3027344 + width: 0.015625 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -16 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 95 + uv: + serializedVersion: 2 + x: 0.1513672 + y: 0.1806641 + width: 0.0078125 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: -1 + width: 27 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 96 + uv: + serializedVersion: 2 + x: 0.2412109 + y: 0.08300781 + width: 0.008789063 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: 35 + width: 12 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 97 + uv: + serializedVersion: 2 + x: 0.2802734 + y: 0.06542969 + width: 0.02734375 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 98 + uv: + serializedVersion: 2 + x: 0.3183594 + y: 0.03613281 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 99 + uv: + serializedVersion: 2 + x: 0.1201172 + y: 0.2246094 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 100 + uv: + serializedVersion: 2 + x: 0.1914063 + y: 0.1689453 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 101 + uv: + serializedVersion: 2 + x: 0.05175781 + y: 0.3017578 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 102 + uv: + serializedVersion: 2 + x: 0.1513672 + y: 0.2158203 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 103 + uv: + serializedVersion: 2 + x: 0.2412109 + y: 0.1201172 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 104 + uv: + serializedVersion: 2 + x: 0.1201172 + y: 0.2597656 + width: 0.02539063 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 105 + uv: + serializedVersion: 2 + x: 0.3076172 + y: 0.07324219 + width: 0.0234375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 24 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 106 + uv: + serializedVersion: 2 + x: 0.2802734 + y: 0.1123047 + width: 0.01953125 + height: -0.046875 + vert: + serializedVersion: 2 + x: 4 + y: 37 + width: 20 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 107 + uv: + serializedVersion: 2 + x: 0.3457031 + y: 0.03515625 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 4 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 108 + uv: + serializedVersion: 2 + x: 0.2207031 + y: 0.1572266 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 109 + uv: + serializedVersion: 2 + x: 0.078125 + y: 0.3027344 + width: 0.02636719 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -27 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 110 + uv: + serializedVersion: 2 + x: 0.015625 + y: 0.3134766 + width: 0.02441406 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 25 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 111 + uv: + serializedVersion: 2 + x: 0.1757813 + y: 0.1972656 + width: 0.02734375 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 112 + uv: + serializedVersion: 2 + x: 0.1464844 + y: 0.2519531 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 113 + uv: + serializedVersion: 2 + x: 0.2451172 + y: 0.15625 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 114 + uv: + serializedVersion: 2 + x: 0.3310547 + y: 0.06347656 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -27 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 115 + uv: + serializedVersion: 2 + x: 0.3691406 + y: 0.02734375 + width: 0.0234375 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 3 + y: 26 + width: 24 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 116 + uv: + serializedVersion: 2 + x: 0.1757813 + y: 0.2324219 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 117 + uv: + serializedVersion: 2 + x: 0.203125 + y: 0.1953125 + width: 0.02441406 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 25 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 118 + uv: + serializedVersion: 2 + x: 0.1044922 + y: 0.2871094 + width: 0.02539063 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 28 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 119 + uv: + serializedVersion: 2 + x: 0.04003906 + y: 0.3320313 + width: 0.02539063 + height: -0.03027344 + vert: + serializedVersion: 2 + x: -1 + y: 25 + width: 31 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 120 + uv: + serializedVersion: 2 + x: 0.2998047 + y: 0.09960938 + width: 0.02539063 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 27 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 121 + uv: + serializedVersion: 2 + x: 0.1298828 + y: 0.2949219 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 122 + uv: + serializedVersion: 2 + x: 0.1044922 + y: 0.3125 + width: 0.0234375 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 3 + y: 25 + width: 24 + height: -26 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 123 + uv: + serializedVersion: 2 + x: 0.2714844 + y: 0.1630859 + width: 0.01855469 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 6 + y: 43 + width: 19 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 124 + uv: + serializedVersion: 2 + x: 0.3925781 + y: 0.05078125 + width: 0.008789063 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 10 + y: 43 + width: 9 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 125 + uv: + serializedVersion: 2 + x: 0.3574219 + y: 0.0859375 + width: 0.01855469 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 4 + y: 43 + width: 19 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 126 + uv: + serializedVersion: 2 + x: 0.3310547 + y: 0.09179688 + width: 0.01367188 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 22 + width: 29 + height: -14 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 160 + uv: + serializedVersion: 2 + x: 0.1992188 + y: 0.1992188 + width: 0.001953125 + height: -0.001953125 + vert: + serializedVersion: 2 + x: -1 + y: 1 + width: 2 + height: -2 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 161 + uv: + serializedVersion: 2 + x: 0.2275391 + y: 0.1933594 + width: 0.01171875 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 9 + y: 26 + width: 12 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 162 + uv: + serializedVersion: 2 + x: 0.1992188 + y: 0.2324219 + width: 0.02636719 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 1 + y: 34 + width: 27 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 163 + uv: + serializedVersion: 2 + x: 0.2998047 + y: 0.1269531 + width: 0.02246094 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 3 + y: 31 + width: 23 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 164 + uv: + serializedVersion: 2 + x: 0.4013672 + y: 0.02832031 + width: 0.02832031 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 31 + width: 29 + height: -29 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 165 + uv: + serializedVersion: 2 + x: 0.1738281 + y: 0.2587891 + width: 0.0234375 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 3 + y: 30 + width: 24 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 166 + uv: + serializedVersion: 2 + x: 0.3447266 + y: 0.1142578 + width: 0.008789063 + height: -0.05078125 + vert: + serializedVersion: 2 + x: 10 + y: 43 + width: 9 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 167 + uv: + serializedVersion: 2 + x: 0.3759766 + y: 0.05371094 + width: 0.015625 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 7 + y: 36 + width: 16 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 168 + uv: + serializedVersion: 2 + x: 0.1542969 + y: 0.2744141 + width: 0.01171875 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 23 + height: -12 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 169 + uv: + serializedVersion: 2 + x: 0.06542969 + y: 0.3320313 + width: 0.02929688 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 0 + y: 42 + width: 30 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 170 + uv: + serializedVersion: 2 + x: 0.2275391 + y: 0.2119141 + width: 0.01660156 + height: -0.01855469 + vert: + serializedVersion: 2 + x: 5 + y: 35 + width: 19 + height: -17 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 171 + uv: + serializedVersion: 2 + x: 0.1279297 + y: 0.3222656 + width: 0.02539063 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 28 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 172 + uv: + serializedVersion: 2 + x: 0.2900391 + y: 0.1494141 + width: 0.01464844 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 21 + width: 23 + height: -15 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 174 + uv: + serializedVersion: 2 + x: 0.1542969 + y: 0.3037109 + width: 0.02929688 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 0 + y: 42 + width: 30 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 175 + uv: + serializedVersion: 2 + x: 0.1972656 + y: 0.2490234 + width: 0.0078125 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 6 + y: 34 + width: 17 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 176 + uv: + serializedVersion: 2 + x: 0.3759766 + y: 0.07128906 + width: 0.01757813 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 6 + y: 36 + width: 18 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 177 + uv: + serializedVersion: 2 + x: 0.4013672 + y: 0.05664063 + width: 0.02246094 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 3 + y: 28 + width: 23 + height: -29 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 178 + uv: + serializedVersion: 2 + x: 0.4296875 + y: 0.01660156 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 179 + uv: + serializedVersion: 2 + x: 0.3046875 + y: 0.1435547 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 180 + uv: + serializedVersion: 2 + x: 0.1660156 + y: 0.2705078 + width: 0.008789063 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: 35 + width: 12 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 181 + uv: + serializedVersion: 2 + x: 0.2441406 + y: 0.1923828 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 182 + uv: + serializedVersion: 2 + x: 0.2441406 + y: 0.21875 + width: 0.02148438 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 4 + y: 36 + width: 22 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 183 + uv: + serializedVersion: 2 + x: 0.2050781 + y: 0.2441406 + width: 0.01171875 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: 23 + width: 12 + height: -12 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 184 + uv: + serializedVersion: 2 + x: 0.2255859 + y: 0.2246094 + width: 0.01269531 + height: -0.01269531 + vert: + serializedVersion: 2 + x: 9 + y: 1 + width: 13 + height: -13 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 185 + uv: + serializedVersion: 2 + x: 0.2900391 + y: 0.1660156 + width: 0.01367188 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 14 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 186 + uv: + serializedVersion: 2 + x: 0.4423828 + y: 0.01660156 + width: 0.01660156 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 6 + y: 35 + width: 17 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 187 + uv: + serializedVersion: 2 + x: 0.3535156 + y: 0.1142578 + width: 0.02539063 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 25 + width: 29 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 188 + uv: + serializedVersion: 2 + x: 0.3173828 + y: 0.1630859 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 189 + uv: + serializedVersion: 2 + x: 0.1972656 + y: 0.2851563 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 190 + uv: + serializedVersion: 2 + x: 0.4296875 + y: 0.05273438 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 191 + uv: + serializedVersion: 2 + x: 0.09472656 + y: 0.3496094 + width: 0.02539063 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 26 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 192 + uv: + serializedVersion: 2 + x: 0.2255859 + y: 0.2695313 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 193 + uv: + serializedVersion: 2 + x: 0.2685547 + y: 0.2109375 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 194 + uv: + serializedVersion: 2 + x: 0.1533203 + y: 0.3486328 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 195 + uv: + serializedVersion: 2 + x: 0.3935547 + y: 0.1035156 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 47 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 196 + uv: + serializedVersion: 2 + x: 0.4589844 + y: 0.046875 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 47 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 197 + uv: + serializedVersion: 2 + x: 0.2988281 + y: 0.2148438 + width: 0.03027344 + height: -0.04882813 + vert: + serializedVersion: 2 + x: -1 + y: 49 + width: 31 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 198 + uv: + serializedVersion: 2 + x: 0.3457031 + y: 0.1494141 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 199 + uv: + serializedVersion: 2 + x: 0.265625 + y: 0.2578125 + width: 0.02734375 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 200 + uv: + serializedVersion: 2 + x: 0.4238281 + y: 0.09765625 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 201 + uv: + serializedVersion: 2 + x: 0.1835938 + y: 0.3300781 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 202 + uv: + serializedVersion: 2 + x: 0.3759766 + y: 0.1591797 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 203 + uv: + serializedVersion: 2 + x: 0.2080078 + y: 0.3320313 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 47 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 204 + uv: + serializedVersion: 2 + x: 0.3291016 + y: 0.2080078 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 205 + uv: + serializedVersion: 2 + x: 0.4482422 + y: 0.09765625 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 206 + uv: + serializedVersion: 2 + x: 0.1201172 + y: 0.3671875 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 207 + uv: + serializedVersion: 2 + x: 0.1835938 + y: 0.3769531 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 47 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 208 + uv: + serializedVersion: 2 + x: 0.2929688 + y: 0.25 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 209 + uv: + serializedVersion: 2 + x: 0.4003906 + y: 0.1494141 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 46 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 210 + uv: + serializedVersion: 2 + x: 0.3535156 + y: 0.2050781 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 211 + uv: + serializedVersion: 2 + x: 0.2324219 + y: 0.3154297 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 212 + uv: + serializedVersion: 2 + x: 0.2597656 + y: 0.3037109 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 213 + uv: + serializedVersion: 2 + x: 0.4726563 + y: 0.09472656 + width: 0.02734375 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 47 + width: 28 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 214 + uv: + serializedVersion: 2 + x: 0.4267578 + y: 0.1455078 + width: 0.02734375 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 47 + width: 28 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 215 + uv: + serializedVersion: 2 + x: 0.3193359 + y: 0.2373047 + width: 0.02246094 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 28 + width: 23 + height: -23 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 216 + uv: + serializedVersion: 2 + x: 0.2080078 + y: 0.3759766 + width: 0.02734375 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 1 + y: 39 + width: 28 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 217 + uv: + serializedVersion: 2 + x: 0.3808594 + y: 0.2050781 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 218 + uv: + serializedVersion: 2 + x: 0.2929688 + y: 0.2958984 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 219 + uv: + serializedVersion: 2 + x: 0.4541016 + y: 0.1435547 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 220 + uv: + serializedVersion: 2 + x: 0.3193359 + y: 0.2851563 + width: 0.02636719 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 47 + width: 27 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 221 + uv: + serializedVersion: 2 + x: 0.3535156 + y: 0.25 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 222 + uv: + serializedVersion: 2 + x: 0 + y: 0.3486328 + width: 0.02539063 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 223 + uv: + serializedVersion: 2 + x: 0.2597656 + y: 0.3408203 + width: 0.02929688 + height: -0.03710938 + vert: + serializedVersion: 2 + x: -1 + y: 36 + width: 30 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 224 + uv: + serializedVersion: 2 + x: 0.4072266 + y: 0.1855469 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 225 + uv: + serializedVersion: 2 + x: 0.2080078 + y: 0.4121094 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 226 + uv: + serializedVersion: 2 + x: 0.4355469 + y: 0.1816406 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 227 + uv: + serializedVersion: 2 + x: 0.2890625 + y: 0.3339844 + width: 0.02832031 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 0 + y: 37 + width: 29 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 228 + uv: + serializedVersion: 2 + x: 0.3837891 + y: 0.2431641 + width: 0.02832031 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 0 + y: 37 + width: 29 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 229 + uv: + serializedVersion: 2 + x: 0.2363281 + y: 0.3808594 + width: 0.02832031 + height: -0.04003906 + vert: + serializedVersion: 2 + x: 0 + y: 39 + width: 29 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 230 + uv: + serializedVersion: 2 + x: 0.3457031 + y: 0.2773438 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 231 + uv: + serializedVersion: 2 + x: 0.3193359 + y: 0.3222656 + width: 0.02636719 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 232 + uv: + serializedVersion: 2 + x: 0.2646484 + y: 0.3769531 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 233 + uv: + serializedVersion: 2 + x: 0.4638672 + y: 0.1796875 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 234 + uv: + serializedVersion: 2 + x: 0.2363281 + y: 0.4169922 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 235 + uv: + serializedVersion: 2 + x: 0.4121094 + y: 0.2236328 + width: 0.02636719 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 27 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 236 + uv: + serializedVersion: 2 + x: 0 + y: 0.3837891 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 237 + uv: + serializedVersion: 2 + x: 0.3720703 + y: 0.2851563 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 238 + uv: + serializedVersion: 2 + x: 0.3457031 + y: 0.3125 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 239 + uv: + serializedVersion: 2 + x: 0.4384766 + y: 0.21875 + width: 0.0234375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 24 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 240 + uv: + serializedVersion: 2 + x: 0.2910156 + y: 0.3730469 + width: 0.02734375 + height: -0.0390625 + vert: + serializedVersion: 2 + x: 1 + y: 38 + width: 28 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 241 + uv: + serializedVersion: 2 + x: 0.4121094 + y: 0.2607422 + width: 0.02441406 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 242 + uv: + serializedVersion: 2 + x: 0.2646484 + y: 0.4130859 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 243 + uv: + serializedVersion: 2 + x: 0.3183594 + y: 0.3583984 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 244 + uv: + serializedVersion: 2 + x: 0.4619141 + y: 0.2177734 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 245 + uv: + serializedVersion: 2 + x: 0 + y: 0.421875 + width: 0.02734375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 28 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 246 + uv: + serializedVersion: 2 + x: 0.3691406 + y: 0.3232422 + width: 0.02734375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 28 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 247 + uv: + serializedVersion: 2 + x: 0.4384766 + y: 0.2480469 + width: 0.02246094 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 3 + y: 32 + width: 23 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 248 + uv: + serializedVersion: 2 + x: 0.2919922 + y: 0.40625 + width: 0.02734375 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 1 + y: 29 + width: 28 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 249 + uv: + serializedVersion: 2 + x: 0.3964844 + y: 0.296875 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 250 + uv: + serializedVersion: 2 + x: 0.2626953 + y: 0.4492188 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 251 + uv: + serializedVersion: 2 + x: 0.4609375 + y: 0.2548828 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 252 + uv: + serializedVersion: 2 + x: 0.4208984 + y: 0.2988281 + width: 0.02441406 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 253 + uv: + serializedVersion: 2 + x: 0.3193359 + y: 0.4033203 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 254 + uv: + serializedVersion: 2 + x: 0.3457031 + y: 0.3691406 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 255 + uv: + serializedVersion: 2 + x: 0.3964844 + y: 0.34375 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 256 + uv: + serializedVersion: 2 + x: 0.2919922 + y: 0.4501953 + width: 0.03027344 + height: -0.04394531 + vert: + serializedVersion: 2 + x: -1 + y: 44 + width: 31 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 257 + uv: + serializedVersion: 2 + x: 0.4453125 + y: 0.2900391 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 34 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 258 + uv: + serializedVersion: 2 + x: 0.34375 + y: 0.4140625 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 259 + uv: + serializedVersion: 2 + x: 0.4208984 + y: 0.3349609 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 260 + uv: + serializedVersion: 2 + x: 0.3740234 + y: 0.3876953 + width: 0.03027344 + height: -0.04394531 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 261 + uv: + serializedVersion: 2 + x: 0 + y: 0.4570313 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 262 + uv: + serializedVersion: 2 + x: 0.4042969 + y: 0.3896484 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 263 + uv: + serializedVersion: 2 + x: 0.4492188 + y: 0.3261719 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 264 + uv: + serializedVersion: 2 + x: 0.3222656 + y: 0.4599609 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 265 + uv: + serializedVersion: 2 + x: 0.3740234 + y: 0.4238281 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 266 + uv: + serializedVersion: 2 + x: 0.4316406 + y: 0.3837891 + width: 0.02734375 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 1 + y: 48 + width: 28 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 267 + uv: + serializedVersion: 2 + x: 0 + y: 0.4951172 + width: 0.02636719 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 27 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 268 + uv: + serializedVersion: 2 + x: 0.4003906 + y: 0.4355469 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 269 + uv: + serializedVersion: 2 + x: 0.4589844 + y: 0.3623047 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 270 + uv: + serializedVersion: 2 + x: 0.3496094 + y: 0.46875 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 271 + uv: + serializedVersion: 2 + x: 0.4316406 + y: 0.4199219 + width: 0.03027344 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 272 + uv: + serializedVersion: 2 + x: 0.3759766 + y: 0.4707031 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 273 + uv: + serializedVersion: 2 + x: 0.4619141 + y: 0.3984375 + width: 0.03027344 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 31 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 274 + uv: + serializedVersion: 2 + x: 0.4277344 + y: 0.4638672 + width: 0.02441406 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 2 + y: 44 + width: 25 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 275 + uv: + serializedVersion: 2 + x: 0.4619141 + y: 0.4335938 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 34 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 276 + uv: + serializedVersion: 2 + x: 0.4521484 + y: 0.4785156 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 277 + uv: + serializedVersion: 2 + x: 0.02539063 + y: 0.3681641 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 278 + uv: + serializedVersion: 2 + x: 0.05175781 + y: 0.3798828 + width: 0.02441406 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 2 + y: 48 + width: 25 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 279 + uv: + serializedVersion: 2 + x: 0.02734375 + y: 0.4179688 + width: 0.02636719 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 27 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 280 + uv: + serializedVersion: 2 + x: 0.05371094 + y: 0.4238281 + width: 0.02734375 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 28 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 281 + uv: + serializedVersion: 2 + x: 0.08105469 + y: 0.3847656 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 282 + uv: + serializedVersion: 2 + x: 0.08105469 + y: 0.4296875 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 283 + uv: + serializedVersion: 2 + x: 0.02832031 + y: 0.4599609 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 284 + uv: + serializedVersion: 2 + x: 0.1074219 + y: 0.4130859 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 285 + uv: + serializedVersion: 2 + x: 0.1337891 + y: 0.4121094 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 286 + uv: + serializedVersion: 2 + x: 0.0546875 + y: 0.4697266 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 287 + uv: + serializedVersion: 2 + x: 0.1054688 + y: 0.4580078 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 288 + uv: + serializedVersion: 2 + x: 0.1318359 + y: 0.4619141 + width: 0.02636719 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 1 + y: 48 + width: 27 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 289 + uv: + serializedVersion: 2 + x: 0.1582031 + y: 0.4589844 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 290 + uv: + serializedVersion: 2 + x: 0.1845703 + y: 0.4648438 + width: 0.02636719 + height: -0.05273438 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 27 + height: -54 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 291 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.05273438 + width: 0.02636719 + height: -0.05273438 + vert: + serializedVersion: 2 + x: 1 + y: 43 + width: 27 + height: -54 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 292 + uv: + serializedVersion: 2 + x: 0.5263672 + y: 0.04492188 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 293 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.09765625 + width: 0.02539063 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 26 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 294 + uv: + serializedVersion: 2 + x: 0.5527344 + y: 0.03515625 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 295 + uv: + serializedVersion: 2 + x: 0.5263672 + y: 0.08007813 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 296 + uv: + serializedVersion: 2 + x: 0.5830078 + y: 0.04589844 + width: 0.02441406 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 2 + y: 46 + width: 25 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 297 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.1347656 + width: 0.02441406 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 298 + uv: + serializedVersion: 2 + x: 0.5546875 + y: 0.07910156 + width: 0.02441406 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 2 + y: 44 + width: 25 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 299 + uv: + serializedVersion: 2 + x: 0.5253906 + y: 0.1142578 + width: 0.0234375 + height: -0.03417969 + vert: + serializedVersion: 2 + x: 3 + y: 34 + width: 24 + height: -35 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 300 + uv: + serializedVersion: 2 + x: 0.6074219 + y: 0.04492188 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 301 + uv: + serializedVersion: 2 + x: 0.5488281 + y: 0.1152344 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 302 + uv: + serializedVersion: 2 + x: 0.5791016 + y: 0.08984375 + width: 0.02734375 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 28 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 303 + uv: + serializedVersion: 2 + x: 0.6318359 + y: 0.04589844 + width: 0.02539063 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 26 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 304 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.1826172 + width: 0.02441406 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 2 + y: 48 + width: 25 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 305 + uv: + serializedVersion: 2 + x: 0.5244141 + y: 0.1396484 + width: 0.0234375 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 3 + y: 25 + width: 24 + height: -26 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 306 + uv: + serializedVersion: 2 + x: 0.6064453 + y: 0.08203125 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 307 + uv: + serializedVersion: 2 + x: 0.6572266 + y: 0.046875 + width: 0.02734375 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 28 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 308 + uv: + serializedVersion: 2 + x: 0.5244141 + y: 0.1855469 + width: 0.02929688 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 30 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 309 + uv: + serializedVersion: 2 + x: 0.5722656 + y: 0.1347656 + width: 0.01953125 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 4 + y: 35 + width: 20 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 310 + uv: + serializedVersion: 2 + x: 0.5917969 + y: 0.1416016 + width: 0.02734375 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 28 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 311 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.234375 + width: 0.0234375 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 4 + y: 35 + width: 24 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 312 + uv: + serializedVersion: 2 + x: 0.6845703 + y: 0.02539063 + width: 0.0234375 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 4 + y: 25 + width: 24 + height: -26 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 313 + uv: + serializedVersion: 2 + x: 0.5537109 + y: 0.1796875 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 314 + uv: + serializedVersion: 2 + x: 0.6337891 + y: 0.09179688 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 315 + uv: + serializedVersion: 2 + x: 0.7080078 + y: 0.05175781 + width: 0.02441406 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 316 + uv: + serializedVersion: 2 + x: 0.5234375 + y: 0.2373047 + width: 0.02441406 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 317 + uv: + serializedVersion: 2 + x: 0.6191406 + y: 0.1269531 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 318 + uv: + serializedVersion: 2 + x: 0.7324219 + y: 0.03515625 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 319 + uv: + serializedVersion: 2 + x: 0.5478516 + y: 0.2207031 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 320 + uv: + serializedVersion: 2 + x: 0.578125 + y: 0.1767578 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 321 + uv: + serializedVersion: 2 + x: 0.6435547 + y: 0.1269531 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 322 + uv: + serializedVersion: 2 + x: 0.6191406 + y: 0.1621094 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 323 + uv: + serializedVersion: 2 + x: 0.578125 + y: 0.2216797 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 324 + uv: + serializedVersion: 2 + x: 0.7587891 + y: 0.03515625 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 325 + uv: + serializedVersion: 2 + x: 0.671875 + y: 0.09863281 + width: 0.02636719 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 326 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.2802734 + width: 0.02441406 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 25 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 327 + uv: + serializedVersion: 2 + x: 0.7324219 + y: 0.08007813 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 328 + uv: + serializedVersion: 2 + x: 0.5478516 + y: 0.2558594 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 329 + uv: + serializedVersion: 2 + x: 0.6435547 + y: 0.1679688 + width: 0.02539063 + height: -0.04101563 + vert: + serializedVersion: 2 + x: 1 + y: 41 + width: 26 + height: -42 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 330 + uv: + serializedVersion: 2 + x: 0.671875 + y: 0.1435547 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 331 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.3164063 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 332 + uv: + serializedVersion: 2 + x: 0.6044922 + y: 0.2216797 + width: 0.02734375 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 44 + width: 28 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 333 + uv: + serializedVersion: 2 + x: 0.7832031 + y: 0.03515625 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 34 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 334 + uv: + serializedVersion: 2 + x: 0.7587891 + y: 0.08105469 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 335 + uv: + serializedVersion: 2 + x: 0.6982422 + y: 0.08789063 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 336 + uv: + serializedVersion: 2 + x: 0.5722656 + y: 0.2675781 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 337 + uv: + serializedVersion: 2 + x: 0.5244141 + y: 0.2919922 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 338 + uv: + serializedVersion: 2 + x: 0.6318359 + y: 0.203125 + width: 0.02929688 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 30 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 339 + uv: + serializedVersion: 2 + x: 0.8105469 + y: 0.02734375 + width: 0.02734375 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 340 + uv: + serializedVersion: 2 + x: 0.7255859 + y: 0.125 + width: 0.02539063 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 26 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 341 + uv: + serializedVersion: 2 + x: 0.6689453 + y: 0.1787109 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 342 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.3681641 + width: 0.02539063 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 343 + uv: + serializedVersion: 2 + x: 0.5996094 + y: 0.2646484 + width: 0.02734375 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 344 + uv: + serializedVersion: 2 + x: 0.7861328 + y: 0.08007813 + width: 0.02539063 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 26 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 345 + uv: + serializedVersion: 2 + x: 0.6318359 + y: 0.2382813 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 346 + uv: + serializedVersion: 2 + x: 0.8378906 + y: 0.04589844 + width: 0.02832031 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 0 + y: 45 + width: 29 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 347 + uv: + serializedVersion: 2 + x: 0.5517578 + y: 0.3037109 + width: 0.0234375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 348 + uv: + serializedVersion: 2 + x: 0.6962891 + y: 0.1894531 + width: 0.02832031 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 0 + y: 45 + width: 29 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 349 + uv: + serializedVersion: 2 + x: 0.7509766 + y: 0.1171875 + width: 0.0234375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 350 + uv: + serializedVersion: 2 + x: 0.5253906 + y: 0.3505859 + width: 0.02832031 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 36 + width: 29 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 351 + uv: + serializedVersion: 2 + x: 0.5751953 + y: 0.3046875 + width: 0.0234375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 3 + y: 26 + width: 24 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 352 + uv: + serializedVersion: 2 + x: 0.7246094 + y: 0.1708984 + width: 0.02832031 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 0 + y: 45 + width: 29 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 353 + uv: + serializedVersion: 2 + x: 0.7744141 + y: 0.1171875 + width: 0.0234375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 354 + uv: + serializedVersion: 2 + x: 0.6591797 + y: 0.2490234 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 355 + uv: + serializedVersion: 2 + x: 0.5996094 + y: 0.3105469 + width: 0.0234375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 24 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 356 + uv: + serializedVersion: 2 + x: 0.8662109 + y: 0.04492188 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 357 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.4033203 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 358 + uv: + serializedVersion: 2 + x: 0.6269531 + y: 0.2734375 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 359 + uv: + serializedVersion: 2 + x: 0.7529297 + y: 0.1523438 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 360 + uv: + serializedVersion: 2 + x: 0.7978516 + y: 0.1279297 + width: 0.02636719 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 47 + width: 27 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 361 + uv: + serializedVersion: 2 + x: 0.5537109 + y: 0.3417969 + width: 0.02441406 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 36 + width: 25 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 362 + uv: + serializedVersion: 2 + x: 0.8242188 + y: 0.09082031 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 44 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 363 + uv: + serializedVersion: 2 + x: 0.6855469 + y: 0.2246094 + width: 0.02441406 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 34 + width: 25 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 364 + uv: + serializedVersion: 2 + x: 0.8925781 + y: 0.04589844 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 365 + uv: + serializedVersion: 2 + x: 0.5263672 + y: 0.3867188 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 366 + uv: + serializedVersion: 2 + x: 0.5537109 + y: 0.3916016 + width: 0.02636719 + height: -0.04980469 + vert: + serializedVersion: 2 + x: 1 + y: 49 + width: 27 + height: -51 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 367 + uv: + serializedVersion: 2 + x: 0.7246094 + y: 0.2109375 + width: 0.02441406 + height: -0.04003906 + vert: + serializedVersion: 2 + x: 2 + y: 39 + width: 25 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 368 + uv: + serializedVersion: 2 + x: 0.8505859 + y: 0.09179688 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 369 + uv: + serializedVersion: 2 + x: 0.6230469 + y: 0.3095703 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 370 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.4472656 + width: 0.02636719 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 371 + uv: + serializedVersion: 2 + x: 0.7529297 + y: 0.1865234 + width: 0.02441406 + height: -0.03417969 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 25 + height: -35 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 372 + uv: + serializedVersion: 2 + x: 0.6533203 + y: 0.2939453 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 373 + uv: + serializedVersion: 2 + x: 0.5800781 + y: 0.3457031 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 374 + uv: + serializedVersion: 2 + x: 0.6855469 + y: 0.2695313 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 375 + uv: + serializedVersion: 2 + x: 0.5263672 + y: 0.4316406 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 376 + uv: + serializedVersion: 2 + x: 0.9189453 + y: 0.046875 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 47 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 377 + uv: + serializedVersion: 2 + x: 0.6103516 + y: 0.3554688 + width: 0.02734375 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 378 + uv: + serializedVersion: 2 + x: 0.8769531 + y: 0.08105469 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 379 + uv: + serializedVersion: 2 + x: 0.5800781 + y: 0.3935547 + width: 0.02734375 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 48 + width: 28 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 380 + uv: + serializedVersion: 2 + x: 0.7773438 + y: 0.1650391 + width: 0.0234375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 24 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 381 + uv: + serializedVersion: 2 + x: 0.7158203 + y: 0.2558594 + width: 0.02734375 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 382 + uv: + serializedVersion: 2 + x: 0.7490234 + y: 0.2216797 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 383 + uv: + serializedVersion: 2 + x: 0.7773438 + y: 0.2001953 + width: 0.01953125 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 7 + y: 35 + width: 20 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 384 + uv: + serializedVersion: 2 + x: 0.8242188 + y: 0.1279297 + width: 0.03027344 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -2 + y: 35 + width: 31 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 399 + uv: + serializedVersion: 2 + x: 0.8544922 + y: 0.1289063 + width: 0.02734375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 402 + uv: + serializedVersion: 2 + x: 0.5 + y: 0.4736328 + width: 0.02050781 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 4 + y: 30 + width: 21 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 416 + uv: + serializedVersion: 2 + x: 0.6474609 + y: 0.3310547 + width: 0.03125 + height: -0.03710938 + vert: + serializedVersion: 2 + x: -1 + y: 36 + width: 32 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 417 + uv: + serializedVersion: 2 + x: 0.9492188 + y: 0.03027344 + width: 0.02734375 + height: -0.03027344 + vert: + serializedVersion: 2 + x: -1 + y: 26 + width: 31 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 431 + uv: + serializedVersion: 2 + x: 0.6835938 + y: 0.3056641 + width: 0.03125 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 32 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 432 + uv: + serializedVersion: 2 + x: 0.5263672 + y: 0.4628906 + width: 0.02636719 + height: -0.03125 + vert: + serializedVersion: 2 + x: -1 + y: 25 + width: 32 + height: -27 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 461 + uv: + serializedVersion: 2 + x: 0.796875 + y: 0.2099609 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 462 + uv: + serializedVersion: 2 + x: 0.6074219 + y: 0.3916016 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 463 + uv: + serializedVersion: 2 + x: 0.9003906 + y: 0.09179688 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 464 + uv: + serializedVersion: 2 + x: 0.7431641 + y: 0.2568359 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 35 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 465 + uv: + serializedVersion: 2 + x: 0.7158203 + y: 0.3017578 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 466 + uv: + serializedVersion: 2 + x: 0.9248047 + y: 0.08300781 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 467 + uv: + serializedVersion: 2 + x: 0.5527344 + y: 0.4375 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 468 + uv: + serializedVersion: 2 + x: 0.8818359 + y: 0.1279297 + width: 0.02441406 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 469 + uv: + serializedVersion: 2 + x: 0.6376953 + y: 0.3837891 + width: 0.02636719 + height: -0.05273438 + vert: + serializedVersion: 2 + x: 1 + y: 52 + width: 27 + height: -54 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 470 + uv: + serializedVersion: 2 + x: 0.8271484 + y: 0.1708984 + width: 0.02441406 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 2 + y: 42 + width: 25 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 471 + uv: + serializedVersion: 2 + x: 0.7666016 + y: 0.2753906 + width: 0.02636719 + height: -0.05371094 + vert: + serializedVersion: 2 + x: 1 + y: 53 + width: 27 + height: -55 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 472 + uv: + serializedVersion: 2 + x: 0.6787109 + y: 0.3496094 + width: 0.02441406 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 2 + y: 43 + width: 25 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 473 + uv: + serializedVersion: 2 + x: 0.5527344 + y: 0.4921875 + width: 0.02636719 + height: -0.0546875 + vert: + serializedVersion: 2 + x: 1 + y: 54 + width: 27 + height: -56 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 474 + uv: + serializedVersion: 2 + x: 0.8271484 + y: 0.2158203 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 44 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 475 + uv: + serializedVersion: 2 + x: 0.90625 + y: 0.1455078 + width: 0.02636719 + height: -0.05371094 + vert: + serializedVersion: 2 + x: 1 + y: 53 + width: 27 + height: -55 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 476 + uv: + serializedVersion: 2 + x: 0.6074219 + y: 0.4355469 + width: 0.02441406 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 2 + y: 43 + width: 25 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 486 + uv: + serializedVersion: 2 + x: 0.9521484 + y: 0.07617188 + width: 0.02636719 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 27 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 487 + uv: + serializedVersion: 2 + x: 0.7929688 + y: 0.2548828 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 490 + uv: + serializedVersion: 2 + x: 0.703125 + y: 0.3505859 + width: 0.02734375 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 491 + uv: + serializedVersion: 2 + x: 0.5791016 + y: 0.4287109 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 536 + uv: + serializedVersion: 2 + x: 0.6357422 + y: 0.4365234 + width: 0.02832031 + height: -0.05273438 + vert: + serializedVersion: 2 + x: 0 + y: 36 + width: 29 + height: -54 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 537 + uv: + serializedVersion: 2 + x: 0.8515625 + y: 0.171875 + width: 0.0234375 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 3 + y: 26 + width: 24 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 538 + uv: + serializedVersion: 2 + x: 0.8515625 + y: 0.2236328 + width: 0.02636719 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 539 + uv: + serializedVersion: 2 + x: 0.9326172 + y: 0.1347656 + width: 0.0234375 + height: -0.05175781 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 24 + height: -53 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 567 + uv: + serializedVersion: 2 + x: 0.6640625 + y: 0.3847656 + width: 0.01855469 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 4 + y: 25 + width: 19 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 579 + uv: + serializedVersion: 2 + x: 0.7304688 + y: 0.3369141 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 592 + uv: + serializedVersion: 2 + x: 0.9560547 + y: 0.1035156 + width: 0.02539063 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 26 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 593 + uv: + serializedVersion: 2 + x: 0.7568359 + y: 0.3037109 + width: 0.02734375 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 594 + uv: + serializedVersion: 2 + x: 0.5791016 + y: 0.4570313 + width: 0.02734375 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 29 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 596 + uv: + serializedVersion: 2 + x: 0.7929688 + y: 0.2822266 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 600 + uv: + serializedVersion: 2 + x: 0.6640625 + y: 0.4121094 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 601 + uv: + serializedVersion: 2 + x: 0.8779297 + y: 0.15625 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 609 + uv: + serializedVersion: 2 + x: 0.9042969 + y: 0.1816406 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 613 + uv: + serializedVersion: 2 + x: 0.6904297 + y: 0.3857422 + width: 0.02539063 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 26 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 623 + uv: + serializedVersion: 2 + x: 0.9560547 + y: 0.1318359 + width: 0.02636719 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 25 + width: 29 + height: -27 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 633 + uv: + serializedVersion: 2 + x: 0.7568359 + y: 0.3310547 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 28 + height: -27 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 647 + uv: + serializedVersion: 2 + x: 0.7158203 + y: 0.3857422 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 3 + y: 25 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 652 + uv: + serializedVersion: 2 + x: 0.9326172 + y: 0.1621094 + width: 0.02539063 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 28 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 653 + uv: + serializedVersion: 2 + x: 0.6064453 + y: 0.4658203 + width: 0.02539063 + height: -0.03027344 + vert: + serializedVersion: 2 + x: -1 + y: 25 + width: 31 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 654 + uv: + serializedVersion: 2 + x: 0.8193359 + y: 0.2509766 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 670 + uv: + serializedVersion: 2 + x: 0.7841797 + y: 0.3173828 + width: 0.0234375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 24 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 710 + uv: + serializedVersion: 2 + x: 0.8476563 + y: 0.2421875 + width: 0.008789063 + height: -0.01855469 + vert: + serializedVersion: 2 + x: 5 + y: 35 + width: 19 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 711 + uv: + serializedVersion: 2 + x: 0.6640625 + y: 0.4306641 + width: 0.008789063 + height: -0.01855469 + vert: + serializedVersion: 2 + x: 5 + y: 35 + width: 19 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 713 + uv: + serializedVersion: 2 + x: 0.6904297 + y: 0.4023438 + width: 0.0078125 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 6 + y: 34 + width: 17 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 728 + uv: + serializedVersion: 2 + x: 0.8564453 + y: 0.2392578 + width: 0.008789063 + height: -0.015625 + vert: + serializedVersion: 2 + x: 7 + y: 35 + width: 16 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 729 + uv: + serializedVersion: 2 + x: 0.6982422 + y: 0.3974609 + width: 0.01171875 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: 37 + width: 12 + height: -12 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 730 + uv: + serializedVersion: 2 + x: 0.6728516 + y: 0.4248047 + width: 0.01269531 + height: -0.01269531 + vert: + serializedVersion: 2 + x: 8 + y: 39 + width: 13 + height: -13 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 731 + uv: + serializedVersion: 2 + x: 0.8779297 + y: 0.1689453 + width: 0.01074219 + height: -0.01269531 + vert: + serializedVersion: 2 + x: 9 + y: 3 + width: 11 + height: -13 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 732 + uv: + serializedVersion: 2 + x: 0.9824219 + y: 0.02148438 + width: 0.01171875 + height: -0.02148438 + vert: + serializedVersion: 2 + x: 4 + y: 37 + width: 22 + height: -12 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 733 + uv: + serializedVersion: 2 + x: 0.7568359 + y: 0.3505859 + width: 0.008789063 + height: -0.01953125 + vert: + serializedVersion: 2 + x: 5 + y: 35 + width: 20 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 769 + uv: + serializedVersion: 2 + x: 0.8652344 + y: 0.2353516 + width: 0.009765625 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: 42 + width: 12 + height: -10 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 777 + uv: + serializedVersion: 2 + x: 0.7392578 + y: 0.3496094 + width: 0.01269531 + height: -0.01269531 + vert: + serializedVersion: 2 + x: 8 + y: 38 + width: 13 + height: -13 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 795 + uv: + serializedVersion: 2 + x: 0.8076172 + y: 0.2988281 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 803 + uv: + serializedVersion: 2 + x: 0.8476563 + y: 0.2539063 + width: 0.01171875 + height: -0.01171875 + vert: + serializedVersion: 2 + x: 9 + y: -1 + width: 12 + height: -12 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 814 + uv: + serializedVersion: 2 + x: 0.6904297 + y: 0.4179688 + width: 0.008789063 + height: -0.015625 + vert: + serializedVersion: 2 + x: 7 + y: -2 + width: 16 + height: -9 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 817 + uv: + serializedVersion: 2 + x: 0.9580078 + y: 0.1484375 + width: 0.006835938 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 6 + y: -2 + width: 17 + height: -7 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 960 + uv: + serializedVersion: 2 + x: 0.6640625 + y: 0.4580078 + width: 0.02539063 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 28 + height: -26 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 7692 + uv: + serializedVersion: 2 + x: 0.9306641 + y: 0.2089844 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7693 + uv: + serializedVersion: 2 + x: 0.7099609 + y: 0.4326172 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7694 + uv: + serializedVersion: 2 + x: 0.765625 + y: 0.3740234 + width: 0.02636719 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7695 + uv: + serializedVersion: 2 + x: 0.9648438 + y: 0.1748047 + width: 0.02636719 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7712 + uv: + serializedVersion: 2 + x: 0.875 + y: 0.2685547 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 44 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7713 + uv: + serializedVersion: 2 + x: 0.8203125 + y: 0.2949219 + width: 0.02636719 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 1 + y: 34 + width: 27 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7716 + uv: + serializedVersion: 2 + x: 0.8076172 + y: 0.3457031 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7717 + uv: + serializedVersion: 2 + x: 0.7363281 + y: 0.4326172 + width: 0.02539063 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7722 + uv: + serializedVersion: 2 + x: 0.9013672 + y: 0.2265625 + width: 0.02636719 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7723 + uv: + serializedVersion: 2 + x: 0.8339844 + y: 0.3398438 + width: 0.02539063 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7734 + uv: + serializedVersion: 2 + x: 0.7617188 + y: 0.4208984 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7735 + uv: + serializedVersion: 2 + x: 0.9277344 + y: 0.2558594 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7736 + uv: + serializedVersion: 2 + x: 0.9570313 + y: 0.2304688 + width: 0.02441406 + height: -0.05566406 + vert: + serializedVersion: 2 + x: 2 + y: 44 + width: 25 + height: -57 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7737 + uv: + serializedVersion: 2 + x: 0.6894531 + y: 0.4882813 + width: 0.02441406 + height: -0.05566406 + vert: + serializedVersion: 2 + x: 2 + y: 44 + width: 25 + height: -57 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7738 + uv: + serializedVersion: 2 + x: 0.859375 + y: 0.3115234 + width: 0.02441406 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7739 + uv: + serializedVersion: 2 + x: 0.7138672 + y: 0.4755859 + width: 0.02441406 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7746 + uv: + serializedVersion: 2 + x: 0.8837891 + y: 0.3154297 + width: 0.02929688 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 30 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7747 + uv: + serializedVersion: 2 + x: 0.7919922 + y: 0.3837891 + width: 0.02832031 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7748 + uv: + serializedVersion: 2 + x: 0.8203125 + y: 0.3935547 + width: 0.02636719 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 48 + width: 27 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7749 + uv: + serializedVersion: 2 + x: 0.7382813 + y: 0.4697266 + width: 0.02441406 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7750 + uv: + serializedVersion: 2 + x: 0.7861328 + y: 0.4306641 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7751 + uv: + serializedVersion: 2 + x: 0.9130859 + y: 0.2939453 + width: 0.02441406 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 25 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7752 + uv: + serializedVersion: 2 + x: 0.9521484 + y: 0.2734375 + width: 0.02636719 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7753 + uv: + serializedVersion: 2 + x: 0.8466797 + y: 0.3740234 + width: 0.02441406 + height: -0.03417969 + vert: + serializedVersion: 2 + x: 2 + y: 26 + width: 25 + height: -35 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7770 + uv: + serializedVersion: 2 + x: 0.7626953 + y: 0.4775391 + width: 0.02539063 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7771 + uv: + serializedVersion: 2 + x: 0.8710938 + y: 0.3535156 + width: 0.02734375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7772 + uv: + serializedVersion: 2 + x: 0.9130859 + y: 0.3496094 + width: 0.02539063 + height: -0.05566406 + vert: + serializedVersion: 2 + x: 2 + y: 44 + width: 26 + height: -57 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7773 + uv: + serializedVersion: 2 + x: 0.8125 + y: 0.4394531 + width: 0.02734375 + height: -0.04589844 + vert: + serializedVersion: 2 + x: 1 + y: 34 + width: 28 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7774 + uv: + serializedVersion: 2 + x: 0.8466797 + y: 0.4169922 + width: 0.02539063 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 26 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7775 + uv: + serializedVersion: 2 + x: 0.9384766 + y: 0.3076172 + width: 0.02734375 + height: -0.03417969 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -35 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7776 + uv: + serializedVersion: 2 + x: 0.9658203 + y: 0.3222656 + width: 0.02832031 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 0 + y: 48 + width: 29 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7777 + uv: + serializedVersion: 2 + x: 0.8720703 + y: 0.3916016 + width: 0.0234375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 24 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7778 + uv: + serializedVersion: 2 + x: 0.8955078 + y: 0.4013672 + width: 0.02832031 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 0 + y: 36 + width: 29 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7779 + uv: + serializedVersion: 2 + x: 0.7880859 + y: 0.46875 + width: 0.0234375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 3 + y: 26 + width: 24 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7788 + uv: + serializedVersion: 2 + x: 0.8398438 + y: 0.4638672 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7789 + uv: + serializedVersion: 2 + x: 0.8720703 + y: 0.4384766 + width: 0.0234375 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 24 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7790 + uv: + serializedVersion: 2 + x: 0.9238281 + y: 0.3925781 + width: 0.02636719 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7791 + uv: + serializedVersion: 2 + x: 0.9501953 + y: 0.3652344 + width: 0.0234375 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 24 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7808 + uv: + serializedVersion: 2 + x: 0.8955078 + y: 0.4462891 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7809 + uv: + serializedVersion: 2 + x: 0.8115234 + y: 0.4990234 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7810 + uv: + serializedVersion: 2 + x: 0.9501953 + y: 0.4101563 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7811 + uv: + serializedVersion: 2 + x: 0.8662109 + y: 0.4814453 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7812 + uv: + serializedVersion: 2 + x: 0.9257813 + y: 0.4570313 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 47 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7813 + uv: + serializedVersion: 2 + x: 0.9560547 + y: 0.4472656 + width: 0.03027344 + height: -0.03710938 + vert: + serializedVersion: 2 + x: -1 + y: 37 + width: 31 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7822 + uv: + serializedVersion: 2 + x: 0.9560547 + y: 0.4951172 + width: 0.03027344 + height: -0.04785156 + vert: + serializedVersion: 2 + x: -1 + y: 48 + width: 31 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7823 + uv: + serializedVersion: 2 + x: 0.6982422 + y: 0.1347656 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7826 + uv: + serializedVersion: 2 + x: 0.8964844 + y: 0.4931641 + width: 0.02734375 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7827 + uv: + serializedVersion: 2 + x: 0.9238281 + y: 0.4941406 + width: 0.0234375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 3 + y: 25 + width: 24 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7831 + uv: + serializedVersion: 2 + x: 0.8779297 + y: 0.2167969 + width: 0.0234375 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 2 + y: 48 + width: 24 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7838 + uv: + serializedVersion: 2 + x: 0 + y: 0.5351563 + width: 0.02929688 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 30 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7840 + uv: + serializedVersion: 2 + x: 0.02929688 + y: 0.546875 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7841 + uv: + serializedVersion: 2 + x: 0 + y: 0.5732422 + width: 0.02832031 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7842 + uv: + serializedVersion: 2 + x: 0.05957031 + y: 0.5478516 + width: 0.03027344 + height: -0.04785156 + vert: + serializedVersion: 2 + x: -1 + y: 48 + width: 31 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7843 + uv: + serializedVersion: 2 + x: 0 + y: 0.6123047 + width: 0.02832031 + height: -0.0390625 + vert: + serializedVersion: 2 + x: 0 + y: 38 + width: 29 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7844 + uv: + serializedVersion: 2 + x: 0.08984375 + y: 0.5488281 + width: 0.03320313 + height: -0.04882813 + vert: + serializedVersion: 2 + x: -1 + y: 49 + width: 34 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7845 + uv: + serializedVersion: 2 + x: 0.02832031 + y: 0.5869141 + width: 0.02929688 + height: -0.04003906 + vert: + serializedVersion: 2 + x: 0 + y: 39 + width: 30 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7846 + uv: + serializedVersion: 2 + x: 0 + y: 0.6611328 + width: 0.03222656 + height: -0.04882813 + vert: + serializedVersion: 2 + x: -3 + y: 49 + width: 33 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7847 + uv: + serializedVersion: 2 + x: 0.1230469 + y: 0.5400391 + width: 0.03027344 + height: -0.04003906 + vert: + serializedVersion: 2 + x: -2 + y: 39 + width: 31 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7848 + uv: + serializedVersion: 2 + x: 0.05761719 + y: 0.6015625 + width: 0.03320313 + height: -0.05273438 + vert: + serializedVersion: 2 + x: -1 + y: 53 + width: 34 + height: -54 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7849 + uv: + serializedVersion: 2 + x: 0.03222656 + y: 0.6464844 + width: 0.02929688 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 0 + y: 44 + width: 30 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7850 + uv: + serializedVersion: 2 + x: 0.1533203 + y: 0.5537109 + width: 0.03027344 + height: -0.05371094 + vert: + serializedVersion: 2 + x: -1 + y: 54 + width: 31 + height: -55 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7851 + uv: + serializedVersion: 2 + x: 0 + y: 0.7080078 + width: 0.02832031 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 46 + width: 29 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7852 + uv: + serializedVersion: 2 + x: 0.06152344 + y: 0.6582031 + width: 0.03027344 + height: -0.05664063 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -58 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7853 + uv: + serializedVersion: 2 + x: 0.1230469 + y: 0.5869141 + width: 0.02832031 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7854 + uv: + serializedVersion: 2 + x: 0.1835938 + y: 0.5507813 + width: 0.03027344 + height: -0.05078125 + vert: + serializedVersion: 2 + x: -1 + y: 51 + width: 31 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7855 + uv: + serializedVersion: 2 + x: 0.02832031 + y: 0.7050781 + width: 0.02832031 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 0 + y: 43 + width: 29 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7856 + uv: + serializedVersion: 2 + x: 0.09179688 + y: 0.5996094 + width: 0.03027344 + height: -0.05078125 + vert: + serializedVersion: 2 + x: -1 + y: 51 + width: 31 + height: -52 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7857 + uv: + serializedVersion: 2 + x: 0.1513672 + y: 0.5976563 + width: 0.02832031 + height: -0.04394531 + vert: + serializedVersion: 2 + x: 0 + y: 43 + width: 29 + height: -45 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7858 + uv: + serializedVersion: 2 + x: 0 + y: 0.7636719 + width: 0.03027344 + height: -0.05566406 + vert: + serializedVersion: 2 + x: -1 + y: 56 + width: 31 + height: -57 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7859 + uv: + serializedVersion: 2 + x: 0.1220703 + y: 0.6347656 + width: 0.02832031 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 0 + y: 47 + width: 29 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7860 + uv: + serializedVersion: 2 + x: 0.2138672 + y: 0.5537109 + width: 0.03027344 + height: -0.05371094 + vert: + serializedVersion: 2 + x: -1 + y: 54 + width: 31 + height: -55 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7861 + uv: + serializedVersion: 2 + x: 0.05664063 + y: 0.7050781 + width: 0.02832031 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 46 + width: 29 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7862 + uv: + serializedVersion: 2 + x: 0.1796875 + y: 0.6103516 + width: 0.03027344 + height: -0.05664063 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -58 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7863 + uv: + serializedVersion: 2 + x: 0.03027344 + y: 0.7519531 + width: 0.02832031 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7864 + uv: + serializedVersion: 2 + x: 0.08496094 + y: 0.7050781 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7865 + uv: + serializedVersion: 2 + x: 0.2441406 + y: 0.5380859 + width: 0.02636719 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7866 + uv: + serializedVersion: 2 + x: 0.1503906 + y: 0.6455078 + width: 0.02441406 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 2 + y: 48 + width: 25 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7867 + uv: + serializedVersion: 2 + x: 0.109375 + y: 0.6738281 + width: 0.02636719 + height: -0.0390625 + vert: + serializedVersion: 2 + x: 1 + y: 38 + width: 27 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7868 + uv: + serializedVersion: 2 + x: 0 + y: 0.8105469 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 47 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7869 + uv: + serializedVersion: 2 + x: 0.05859375 + y: 0.7431641 + width: 0.02636719 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 37 + width: 27 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7870 + uv: + serializedVersion: 2 + x: 0.2099609 + y: 0.6025391 + width: 0.03027344 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 2 + y: 49 + width: 31 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7871 + uv: + serializedVersion: 2 + x: 0.2705078 + y: 0.5400391 + width: 0.03125 + height: -0.04003906 + vert: + serializedVersion: 2 + x: 1 + y: 39 + width: 32 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7872 + uv: + serializedVersion: 2 + x: 0.03027344 + y: 0.8007813 + width: 0.02929688 + height: -0.04882813 + vert: + serializedVersion: 2 + x: -3 + y: 49 + width: 30 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7873 + uv: + serializedVersion: 2 + x: 0.109375 + y: 0.7138672 + width: 0.02929688 + height: -0.04003906 + vert: + serializedVersion: 2 + x: -2 + y: 39 + width: 30 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7874 + uv: + serializedVersion: 2 + x: 0.1748047 + y: 0.6630859 + width: 0.03027344 + height: -0.05273438 + vert: + serializedVersion: 2 + x: 2 + y: 53 + width: 31 + height: -54 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7875 + uv: + serializedVersion: 2 + x: 0.2402344 + y: 0.5986328 + width: 0.03125 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 44 + width: 32 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7876 + uv: + serializedVersion: 2 + x: 0.1386719 + y: 0.6992188 + width: 0.02441406 + height: -0.05371094 + vert: + serializedVersion: 2 + x: 2 + y: 54 + width: 25 + height: -55 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7877 + uv: + serializedVersion: 2 + x: 0.3017578 + y: 0.546875 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 46 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7878 + uv: + serializedVersion: 2 + x: 0 + y: 0.8671875 + width: 0.02441406 + height: -0.05664063 + vert: + serializedVersion: 2 + x: 2 + y: 45 + width: 25 + height: -58 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7879 + uv: + serializedVersion: 2 + x: 0.05957031 + y: 0.7900391 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7880 + uv: + serializedVersion: 2 + x: 0.2099609 + y: 0.6503906 + width: 0.02441406 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 2 + y: 48 + width: 25 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7881 + uv: + serializedVersion: 2 + x: 0.0859375 + y: 0.7431641 + width: 0.0234375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 3 + y: 38 + width: 24 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7882 + uv: + serializedVersion: 2 + x: 0.2714844 + y: 0.5869141 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7883 + uv: + serializedVersion: 2 + x: 0.328125 + y: 0.5488281 + width: 0.0234375 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 3 + y: 37 + width: 24 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7884 + uv: + serializedVersion: 2 + x: 0.0859375 + y: 0.7910156 + width: 0.02734375 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7885 + uv: + serializedVersion: 2 + x: 0.02441406 + y: 0.8388672 + width: 0.02734375 + height: -0.03808594 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 28 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7886 + uv: + serializedVersion: 2 + x: 0.234375 + y: 0.6513672 + width: 0.02734375 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 1 + y: 48 + width: 28 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7887 + uv: + serializedVersion: 2 + x: 0.1386719 + y: 0.7382813 + width: 0.02734375 + height: -0.0390625 + vert: + serializedVersion: 2 + x: 1 + y: 38 + width: 28 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7888 + uv: + serializedVersion: 2 + x: 0.1660156 + y: 0.7128906 + width: 0.03125 + height: -0.04980469 + vert: + serializedVersion: 2 + x: 1 + y: 49 + width: 32 + height: -51 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7889 + uv: + serializedVersion: 2 + x: 0.3515625 + y: 0.5400391 + width: 0.03125 + height: -0.04003906 + vert: + serializedVersion: 2 + x: 1 + y: 39 + width: 32 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7890 + uv: + serializedVersion: 2 + x: 0.05175781 + y: 0.8505859 + width: 0.03125 + height: -0.04980469 + vert: + serializedVersion: 2 + x: -3 + y: 49 + width: 32 + height: -51 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7891 + uv: + serializedVersion: 2 + x: 0.1132813 + y: 0.7783203 + width: 0.03125 + height: -0.04003906 + vert: + serializedVersion: 2 + x: -3 + y: 39 + width: 32 + height: -41 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7892 + uv: + serializedVersion: 2 + x: 0.2714844 + y: 0.640625 + width: 0.03125 + height: -0.05371094 + vert: + serializedVersion: 2 + x: 1 + y: 53 + width: 32 + height: -55 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7893 + uv: + serializedVersion: 2 + x: 0.1972656 + y: 0.7080078 + width: 0.03125 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 1 + y: 44 + width: 32 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7894 + uv: + serializedVersion: 2 + x: 0.02441406 + y: 0.8935547 + width: 0.02734375 + height: -0.0546875 + vert: + serializedVersion: 2 + x: 1 + y: 54 + width: 28 + height: -56 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7895 + uv: + serializedVersion: 2 + x: 0.08300781 + y: 0.8378906 + width: 0.02734375 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 46 + width: 28 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7896 + uv: + serializedVersion: 2 + x: 0.3027344 + y: 0.6054688 + width: 0.02734375 + height: -0.05664063 + vert: + serializedVersion: 2 + x: 1 + y: 45 + width: 28 + height: -58 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7897 + uv: + serializedVersion: 2 + x: 0.1660156 + y: 0.7597656 + width: 0.02734375 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7898 + uv: + serializedVersion: 2 + x: 0.3300781 + y: 0.5947266 + width: 0.03125 + height: -0.04589844 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 32 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7899 + uv: + serializedVersion: 2 + x: 0.3828125 + y: 0.5361328 + width: 0.03027344 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7900 + uv: + serializedVersion: 2 + x: 0.2285156 + y: 0.6972656 + width: 0.03125 + height: -0.04589844 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 32 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7901 + uv: + serializedVersion: 2 + x: 0.1132813 + y: 0.8144531 + width: 0.03027344 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7902 + uv: + serializedVersion: 2 + x: 0.05175781 + y: 0.8994141 + width: 0.03125 + height: -0.04882813 + vert: + serializedVersion: 2 + x: -1 + y: 48 + width: 32 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7903 + uv: + serializedVersion: 2 + x: 0.1972656 + y: 0.7470703 + width: 0.03027344 + height: -0.0390625 + vert: + serializedVersion: 2 + x: -1 + y: 38 + width: 31 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7904 + uv: + serializedVersion: 2 + x: 0.3027344 + y: 0.6523438 + width: 0.03125 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 46 + width: 32 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7905 + uv: + serializedVersion: 2 + x: 0.3613281 + y: 0.578125 + width: 0.03027344 + height: -0.03808594 + vert: + serializedVersion: 2 + x: -1 + y: 37 + width: 31 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7906 + uv: + serializedVersion: 2 + x: 0.2597656 + y: 0.6992188 + width: 0.03125 + height: -0.04785156 + vert: + serializedVersion: 2 + x: -1 + y: 36 + width: 32 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7907 + uv: + serializedVersion: 2 + x: 0.4130859 + y: 0.5380859 + width: 0.03027344 + height: -0.03808594 + vert: + serializedVersion: 2 + x: -1 + y: 26 + width: 31 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7908 + uv: + serializedVersion: 2 + x: 0 + y: 0.9404297 + width: 0.02636719 + height: -0.046875 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7909 + uv: + serializedVersion: 2 + x: 0.02636719 + y: 0.9306641 + width: 0.02441406 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 2 + y: 25 + width: 25 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7910 + uv: + serializedVersion: 2 + x: 0.08300781 + y: 0.8867188 + width: 0.02636719 + height: -0.04882813 + vert: + serializedVersion: 2 + x: 1 + y: 48 + width: 27 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7911 + uv: + serializedVersion: 2 + x: 0.1435547 + y: 0.8173828 + width: 0.02441406 + height: -0.0390625 + vert: + serializedVersion: 2 + x: 2 + y: 38 + width: 25 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7912 + uv: + serializedVersion: 2 + x: 0.2285156 + y: 0.7431641 + width: 0.03125 + height: -0.04589844 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 32 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7913 + uv: + serializedVersion: 2 + x: 0.3916016 + y: 0.5742188 + width: 0.03125 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 32 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7914 + uv: + serializedVersion: 2 + x: 0.3339844 + y: 0.640625 + width: 0.03125 + height: -0.04589844 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 32 + height: -47 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7915 + uv: + serializedVersion: 2 + x: 0 + y: 0.9765625 + width: 0.03125 + height: -0.03613281 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 32 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7916 + uv: + serializedVersion: 2 + x: 0.4433594 + y: 0.5488281 + width: 0.03125 + height: -0.04882813 + vert: + serializedVersion: 2 + x: -1 + y: 48 + width: 32 + height: -50 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7917 + uv: + serializedVersion: 2 + x: 0.1933594 + y: 0.7861328 + width: 0.03125 + height: -0.0390625 + vert: + serializedVersion: 2 + x: -1 + y: 38 + width: 32 + height: -40 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7918 + uv: + serializedVersion: 2 + x: 0.109375 + y: 0.8847656 + width: 0.03125 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 46 + width: 32 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7919 + uv: + serializedVersion: 2 + x: 0.05078125 + y: 0.9375 + width: 0.03125 + height: -0.03808594 + vert: + serializedVersion: 2 + x: -1 + y: 37 + width: 32 + height: -39 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7920 + uv: + serializedVersion: 2 + x: 0.2910156 + y: 0.6992188 + width: 0.03125 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 32 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7921 + uv: + serializedVersion: 2 + x: 0.2597656 + y: 0.7363281 + width: 0.03125 + height: -0.03710938 + vert: + serializedVersion: 2 + x: -1 + y: 25 + width: 32 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7922 + uv: + serializedVersion: 2 + x: 0.3652344 + y: 0.6230469 + width: 0.03027344 + height: -0.04492188 + vert: + serializedVersion: 2 + x: -1 + y: 45 + width: 31 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7923 + uv: + serializedVersion: 2 + x: 0.140625 + y: 0.8623047 + width: 0.02441406 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 2 + y: 35 + width: 25 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7924 + uv: + serializedVersion: 2 + x: 0.08300781 + y: 0.9335938 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7925 + uv: + serializedVersion: 2 + x: 0.03125 + y: 0.9746094 + width: 0.02539063 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 25 + width: 26 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7926 + uv: + serializedVersion: 2 + x: 0.2246094 + y: 0.7949219 + width: 0.03027344 + height: -0.04785156 + vert: + serializedVersion: 2 + x: -1 + y: 48 + width: 31 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7927 + uv: + serializedVersion: 2 + x: 0.3955078 + y: 0.6220703 + width: 0.02441406 + height: -0.04785156 + vert: + serializedVersion: 2 + x: 2 + y: 38 + width: 25 + height: -49 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7928 + uv: + serializedVersion: 2 + x: 0.3222656 + y: 0.6992188 + width: 0.03027344 + height: -0.046875 + vert: + serializedVersion: 2 + x: -1 + y: 47 + width: 31 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 7929 + uv: + serializedVersion: 2 + x: 0.4746094 + y: 0.546875 + width: 0.02441406 + height: -0.046875 + vert: + serializedVersion: 2 + x: 2 + y: 37 + width: 25 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8211 + uv: + serializedVersion: 2 + x: 0.1679688 + y: 0.7851563 + width: 0.0078125 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 2 + y: 17 + width: 26 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8212 + uv: + serializedVersion: 2 + x: 0.1650391 + y: 0.8486328 + width: 0.0078125 + height: -0.03125 + vert: + serializedVersion: 2 + x: -1 + y: 17 + width: 32 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8216 + uv: + serializedVersion: 2 + x: 0.3652344 + y: 0.640625 + width: 0.01171875 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 9 + y: 36 + width: 12 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8217 + uv: + serializedVersion: 2 + x: 0.1728516 + y: 0.8027344 + width: 0.01171875 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 9 + y: 36 + width: 12 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8218 + uv: + serializedVersion: 2 + x: 0.2910156 + y: 0.7167969 + width: 0.01171875 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 9 + y: 11 + width: 12 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8220 + uv: + serializedVersion: 2 + x: 0.4228516 + y: 0.5605469 + width: 0.01757813 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 36 + width: 23 + height: -18 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8221 + uv: + serializedVersion: 2 + x: 0.05664063 + y: 0.9599609 + width: 0.01757813 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 36 + width: 23 + height: -18 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8222 + uv: + serializedVersion: 2 + x: 0.4199219 + y: 0.5966797 + width: 0.01757813 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 11 + width: 23 + height: -18 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8224 + uv: + serializedVersion: 2 + x: 0.2597656 + y: 0.7626953 + width: 0.01855469 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 5 + y: 36 + width: 19 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8225 + uv: + serializedVersion: 2 + x: 0.1132813 + y: 0.9111328 + width: 0.01855469 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 5 + y: 36 + width: 19 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8226 + uv: + serializedVersion: 2 + x: 0.3769531 + y: 0.6396484 + width: 0.01660156 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 6 + y: 25 + width: 17 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8230 + uv: + serializedVersion: 2 + x: 0.3027344 + y: 0.7285156 + width: 0.01171875 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 0 + y: 10 + width: 30 + height: -12 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8240 + uv: + serializedVersion: 2 + x: 0.140625 + y: 0.8994141 + width: 0.03027344 + height: -0.03710938 + vert: + serializedVersion: 2 + x: -1 + y: 36 + width: 31 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8242 + uv: + serializedVersion: 2 + x: 0.3525391 + y: 0.6582031 + width: 0.01171875 + height: -0.01757813 + vert: + serializedVersion: 2 + x: 9 + y: 36 + width: 12 + height: -18 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8243 + uv: + serializedVersion: 2 + x: 0.03125 + y: 0.9970703 + width: 0.01757813 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 36 + width: 23 + height: -18 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8249 + uv: + serializedVersion: 2 + x: 0.3642578 + y: 0.6660156 + width: 0.01464844 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 7 + y: 25 + width: 15 + height: -26 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8250 + uv: + serializedVersion: 2 + x: 0.07421875 + y: 0.9628906 + width: 0.01464844 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 7 + y: 25 + width: 15 + height: -26 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8260 + uv: + serializedVersion: 2 + x: 0.4375 + y: 0.5869141 + width: 0.01757813 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 26 + width: 27 + height: -18 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8304 + uv: + serializedVersion: 2 + x: 0.3144531 + y: 0.7158203 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8305 + uv: + serializedVersion: 2 + x: 0.2783203 + y: 0.7597656 + width: 0.01464844 + height: -0.0234375 + vert: + serializedVersion: 2 + x: 8 + y: 42 + width: 15 + height: -24 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8308 + uv: + serializedVersion: 2 + x: 0.4550781 + y: 0.5654297 + width: 0.01464844 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 15 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8309 + uv: + serializedVersion: 2 + x: 0.05664063 + y: 0.9765625 + width: 0.01367188 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 14 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8310 + uv: + serializedVersion: 2 + x: 0.3935547 + y: 0.6396484 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8311 + uv: + serializedVersion: 2 + x: 0.4199219 + y: 0.6132813 + width: 0.01171875 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 9 + y: 35 + width: 12 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8312 + uv: + serializedVersion: 2 + x: 0.4697266 + y: 0.5654297 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8313 + uv: + serializedVersion: 2 + x: 0.1845703 + y: 0.8027344 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 35 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8317 + uv: + serializedVersion: 2 + x: 0.3789063 + y: 0.6660156 + width: 0.01269531 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 8 + y: 40 + width: 13 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8318 + uv: + serializedVersion: 2 + x: 0.4550781 + y: 0.5917969 + width: 0.01269531 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 8 + y: 40 + width: 13 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8319 + uv: + serializedVersion: 2 + x: 0.2548828 + y: 0.7792969 + width: 0.015625 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 7 + y: 35 + width: 16 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8320 + uv: + serializedVersion: 2 + x: 0.1132813 + y: 0.9277344 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8321 + uv: + serializedVersion: 2 + x: 0.4375 + y: 0.6035156 + width: 0.01367188 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 14 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8322 + uv: + serializedVersion: 2 + x: 0.08886719 + y: 0.9501953 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8323 + uv: + serializedVersion: 2 + x: 0.3271484 + y: 0.7158203 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8324 + uv: + serializedVersion: 2 + x: 0.2929688 + y: 0.7451172 + width: 0.01464844 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 15 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8325 + uv: + serializedVersion: 2 + x: 0.40625 + y: 0.6386719 + width: 0.01367188 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 14 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8326 + uv: + serializedVersion: 2 + x: 0.3144531 + y: 0.7324219 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8327 + uv: + serializedVersion: 2 + x: 0.3525391 + y: 0.6748047 + width: 0.01171875 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 9 + y: 6 + width: 12 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8328 + uv: + serializedVersion: 2 + x: 0.3916016 + y: 0.65625 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8329 + uv: + serializedVersion: 2 + x: 0.4824219 + y: 0.5634766 + width: 0.01269531 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 8 + y: 6 + width: 13 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8333 + uv: + serializedVersion: 2 + x: 0.1708984 + y: 0.875 + width: 0.01269531 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 8 + y: 11 + width: 13 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8334 + uv: + serializedVersion: 2 + x: 0.2705078 + y: 0.7890625 + width: 0.01269531 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 8 + y: 11 + width: 13 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8340 + uv: + serializedVersion: 2 + x: 0.4199219 + y: 0.6298828 + width: 0.015625 + height: -0.01660156 + vert: + serializedVersion: 2 + x: 7 + y: 6 + width: 16 + height: -17 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8353 + uv: + serializedVersion: 2 + x: 0.4677734 + y: 0.5996094 + width: 0.02636719 + height: -0.03417969 + vert: + serializedVersion: 2 + x: 1 + y: 34 + width: 27 + height: -35 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8356 + uv: + serializedVersion: 2 + x: 0.1015625 + y: 0.9609375 + width: 0.02246094 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 3 + y: 31 + width: 23 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8358 + uv: + serializedVersion: 2 + x: 0.0703125 + y: 0.9892578 + width: 0.02636719 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 30 + width: 27 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8359 + uv: + serializedVersion: 2 + x: 0.1259766 + y: 0.9375 + width: 0.02539063 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 2 + y: 30 + width: 26 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8363 + uv: + serializedVersion: 2 + x: 0.2929688 + y: 0.7783203 + width: 0.02246094 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 3 + y: 31 + width: 23 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8364 + uv: + serializedVersion: 2 + x: 0.3398438 + y: 0.7275391 + width: 0.02734375 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 31 + width: 29 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8369 + uv: + serializedVersion: 2 + x: 0.4355469 + y: 0.6298828 + width: 0.02539063 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 2 + y: 30 + width: 26 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8370 + uv: + serializedVersion: 2 + x: 0.4042969 + y: 0.6728516 + width: 0.02050781 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 4 + y: 34 + width: 21 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8373 + uv: + serializedVersion: 2 + x: 0.3642578 + y: 0.6992188 + width: 0.02050781 + height: -0.03320313 + vert: + serializedVersion: 2 + x: 4 + y: 34 + width: 21 + height: -34 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8377 + uv: + serializedVersion: 2 + x: 0.1708984 + y: 0.9013672 + width: 0.02050781 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 4 + y: 30 + width: 21 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8467 + uv: + serializedVersion: 2 + x: 0.09667969 + y: 0.9970703 + width: 0.02539063 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 26 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8480 + uv: + serializedVersion: 2 + x: 0.2548828 + y: 0.8173828 + width: 0.01660156 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -17 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8482 + uv: + serializedVersion: 2 + x: 0.2714844 + y: 0.8173828 + width: 0.01660156 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -17 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8486 + uv: + serializedVersion: 2 + x: 0.3154297 + y: 0.7685547 + width: 0.02832031 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 0 + y: 36 + width: 29 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8494 + uv: + serializedVersion: 2 + x: 0.1513672 + y: 0.9287109 + width: 0.02636719 + height: -0.02734375 + vert: + serializedVersion: 2 + x: 1 + y: 31 + width: 27 + height: -28 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8531 + uv: + serializedVersion: 2 + x: 0.1240234 + y: 0.9736328 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8532 + uv: + serializedVersion: 2 + x: 0.4248047 + y: 0.6660156 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8539 + uv: + serializedVersion: 2 + x: 0.4609375 + y: 0.6357422 + width: 0.02734375 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 28 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8540 + uv: + serializedVersion: 2 + x: 0.1914063 + y: 0.8388672 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8541 + uv: + serializedVersion: 2 + x: 0.3671875 + y: 0.7353516 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8542 + uv: + serializedVersion: 2 + x: 0.2880859 + y: 0.8144531 + width: 0.02636719 + height: -0.03613281 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -37 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8592 + uv: + serializedVersion: 2 + x: 0.2177734 + y: 0.8242188 + width: 0.02734375 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 0 + y: 31 + width: 30 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8593 + uv: + serializedVersion: 2 + x: 0.3935547 + y: 0.7021484 + width: 0.02636719 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 1 + y: 32 + width: 27 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8594 + uv: + serializedVersion: 2 + x: 0.1777344 + y: 0.9306641 + width: 0.02734375 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 0 + y: 31 + width: 30 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8595 + uv: + serializedVersion: 2 + x: 0.1513672 + y: 0.9580078 + width: 0.02636719 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 1 + y: 32 + width: 27 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8596 + uv: + serializedVersion: 2 + x: 0.3154297 + y: 0.7988281 + width: 0.02734375 + height: -0.03027344 + vert: + serializedVersion: 2 + x: -1 + y: 31 + width: 31 + height: -28 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8597 + uv: + serializedVersion: 2 + x: 0.2451172 + y: 0.8476563 + width: 0.02636719 + height: -0.03027344 + vert: + serializedVersion: 2 + x: 1 + y: 32 + width: 27 + height: -31 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8598 + uv: + serializedVersion: 2 + x: 0.4248047 + y: 0.6923828 + width: 0.02636719 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 31 + width: 27 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8599 + uv: + serializedVersion: 2 + x: 0.1835938 + y: 0.8652344 + width: 0.02636719 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 31 + width: 27 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8600 + uv: + serializedVersion: 2 + x: 0.3935547 + y: 0.7285156 + width: 0.02636719 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 31 + width: 27 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8601 + uv: + serializedVersion: 2 + x: 0.4511719 + y: 0.6621094 + width: 0.02636719 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 31 + width: 27 + height: -27 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8706 + uv: + serializedVersion: 2 + x: 0.2880859 + y: 0.8515625 + width: 0.02734375 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 1 + y: 36 + width: 28 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8710 + uv: + serializedVersion: 2 + x: 0.34375 + y: 0.7705078 + width: 0.03027344 + height: -0.03515625 + vert: + serializedVersion: 2 + x: -1 + y: 35 + width: 31 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8719 + uv: + serializedVersion: 2 + x: 0.2050781 + y: 0.9003906 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8721 + uv: + serializedVersion: 2 + x: 0.1777344 + y: 0.9658203 + width: 0.02636719 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 1 + y: 35 + width: 27 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8722 + uv: + serializedVersion: 2 + x: 0.1503906 + y: 0.9804688 + width: 0.0078125 + height: -0.02246094 + vert: + serializedVersion: 2 + x: 3 + y: 21 + width: 23 + height: -8 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8725 + uv: + serializedVersion: 2 + x: 0.3740234 + y: 0.7822266 + width: 0.02832031 + height: -0.046875 + vert: + serializedVersion: 2 + x: 0 + y: 41 + width: 29 + height: -48 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8729 + uv: + serializedVersion: 2 + x: 0.4511719 + y: 0.6767578 + width: 0.01367188 + height: -0.01464844 + vert: + serializedVersion: 2 + x: 7 + y: 24 + width: 15 + height: -14 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8730 + uv: + serializedVersion: 2 + x: 0.3154297 + y: 0.8417969 + width: 0.02929688 + height: -0.04296875 + vert: + serializedVersion: 2 + x: 0 + y: 43 + width: 30 + height: -44 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8734 + uv: + serializedVersion: 2 + x: 0.3427734 + y: 0.7988281 + width: 0.01855469 + height: -0.02832031 + vert: + serializedVersion: 2 + x: 0 + y: 26 + width: 29 + height: -19 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8747 + uv: + serializedVersion: 2 + x: 0.4199219 + y: 0.7373047 + width: 0.01953125 + height: -0.04492188 + vert: + serializedVersion: 2 + x: 5 + y: 35 + width: 20 + height: -46 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8776 + uv: + serializedVersion: 2 + x: 0.4648438 + y: 0.6884766 + width: 0.0234375 + height: -0.02636719 + vert: + serializedVersion: 2 + x: 1 + y: 28 + width: 27 + height: -24 + advance: 29 + flipped: 1 + - serializedVersion: 2 + index: 8800 + uv: + serializedVersion: 2 + x: 0.4394531 + y: 0.7177734 + width: 0.02246094 + height: -0.02539063 + vert: + serializedVersion: 2 + x: 3 + y: 30 + width: 23 + height: -26 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8804 + uv: + serializedVersion: 2 + x: 0.2041016 + y: 0.9599609 + width: 0.02246094 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 3 + y: 29 + width: 23 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 8805 + uv: + serializedVersion: 2 + x: 0.2314453 + y: 0.8769531 + width: 0.02246094 + height: -0.02929688 + vert: + serializedVersion: 2 + x: 3 + y: 29 + width: 23 + height: -30 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 9674 + uv: + serializedVersion: 2 + x: 0.3447266 + y: 0.8339844 + width: 0.02832031 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 29 + height: -36 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 64257 + uv: + serializedVersion: 2 + x: 0.4619141 + y: 0.7255859 + width: 0.02832031 + height: -0.03710938 + vert: + serializedVersion: 2 + x: 0 + y: 37 + width: 29 + height: -38 + advance: 29 + flipped: 0 + - serializedVersion: 2 + index: 64258 + uv: + serializedVersion: 2 + x: 0.3730469 + y: 0.8173828 + width: 0.02734375 + height: -0.03515625 + vert: + serializedVersion: 2 + x: 0 + y: 35 + width: 28 + height: -36 + advance: 29 + flipped: 0 + m_KerningValues: [] + m_PixelScale: 0.1 + m_FontData: + m_Ascent: 53.76 + m_Descent: -17.328 + m_DefaultStyle: 0 + m_FontNames: + - Space Mono + m_FallbackFonts: + - {fileID: 12800000, guid: fdbb1e1ff0f63954ba7e22fb4546aac9, type: 2} + - {fileID: 12800000, guid: 420d4cdae7b423841bc36cfffefd5e19, type: 2} + - {fileID: 12800000, guid: 433e0f45dd76ac74c80719d0dbc7664a, type: 2} + m_FontRenderingMode: 0 + m_UseLegacyBoundsCalculation: 0 diff --git a/UnityProject/Assets/SpaceMono-Bold.asset.meta b/UnityProject/Assets/SpaceMono-Bold.asset.meta new file mode 100644 index 000000000..e1e919f41 --- /dev/null +++ b/UnityProject/Assets/SpaceMono-Bold.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58199d5bdd1dec045bcdd0a15a8dc780 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/spacemono-bold.mat b/UnityProject/Assets/spacemono-bold.mat new file mode 100644 index 000000000..40355cda9 --- /dev/null +++ b/UnityProject/Assets/spacemono-bold.mat @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: spacemono-bold + m_Shader: {fileID: 10101, guid: 0000000000000000e000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 569f4fb55f34077409521ba64a7de5d6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityProject/Assets/spacemono-bold.mat.meta b/UnityProject/Assets/spacemono-bold.mat.meta new file mode 100644 index 000000000..876390f3d --- /dev/null +++ b/UnityProject/Assets/spacemono-bold.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fff59d5e06ad5b74497d7cc1dddc5e28 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/spacemono-bold.png b/UnityProject/Assets/spacemono-bold.png new file mode 100644 index 0000000000000000000000000000000000000000..57997255af99a32822504db6501d9491d25d5ab9 GIT binary patch literal 219335 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%0DTY;EJ*EbuRjk^-}+JUc9V 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 z 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/spacemono-bold.png.meta b/UnityProject/Assets/spacemono-bold.png.meta new file mode 100644 index 000000000..f6cdb2dfe --- /dev/null +++ b/UnityProject/Assets/spacemono-bold.png.meta @@ -0,0 +1,86 @@ +fileFormatVersion: 2 +guid: 569f4fb55f34077409521ba64a7de5d6 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: From 86a8ffd3ddcbb1da5c2b6cf864d4280076740e61 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 23 Oct 2020 19:08:33 +0100 Subject: [PATCH 009/207] remove assets --- AssetBundles/conversation | Bin 185833 -> 3136 bytes AssetBundles/conversation.manifest | 14 +- UnityProject/Assets/SpaceMono-Bold.asset | 9825 ----------------- UnityProject/Assets/SpaceMono-Bold.asset.meta | 8 - UnityProject/Assets/spacemono-bold.mat | 27 - UnityProject/Assets/spacemono-bold.mat.meta | 8 - UnityProject/Assets/spacemono-bold.png | Bin 219335 -> 0 bytes UnityProject/Assets/spacemono-bold.png.meta | 86 - 8 files changed, 3 insertions(+), 9965 deletions(-) delete mode 100644 UnityProject/Assets/SpaceMono-Bold.asset delete mode 100644 UnityProject/Assets/SpaceMono-Bold.asset.meta delete mode 100644 UnityProject/Assets/spacemono-bold.mat delete mode 100644 UnityProject/Assets/spacemono-bold.mat.meta delete mode 100644 UnityProject/Assets/spacemono-bold.png delete mode 100644 UnityProject/Assets/spacemono-bold.png.meta diff --git a/AssetBundles/conversation b/AssetBundles/conversation index 96988cd9bcd15d79a1de43ec27d7c73853007d79..c8efe88b13e5eff75fee782be30a027c877af2a9 100644 GIT binary patch delta 3098 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 literal 185833 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�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%0DTY;EJ*EbuRjk^-}+JUc9V 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 z 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 diff --git a/UnityProject/Assets/spacemono-bold.png.meta b/UnityProject/Assets/spacemono-bold.png.meta deleted file mode 100644 index f6cdb2dfe..000000000 --- a/UnityProject/Assets/spacemono-bold.png.meta +++ /dev/null @@ -1,86 +0,0 @@ -fileFormatVersion: 2 -guid: 569f4fb55f34077409521ba64a7de5d6 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 4 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -1 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 1 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - spritePackingTag: - userData: - assetBundleName: - assetBundleVariant: From e7ec23d4ad9850ea5b363aff61e8701a38c6f105 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 23 Oct 2020 23:08:48 +0100 Subject: [PATCH 010/207] make it work --- AssetBundles/conversation | Bin 3136 -> 3183 bytes AssetBundles/conversation.manifest | 14 +++++++--- QSB/ConversationSync/ConversationEvent.cs | 7 ++++- QSB/ConversationSync/ConversationManager.cs | 27 ++++++++++++++++++-- QSB/ConversationSync/ConversationPatches.cs | 3 +++ QSB/ConversationSync/ConversationType.cs | 4 ++- QSB/TransformSync/NomaiOrbTransformSync.cs | 2 +- UnityProject/Assets/DialogueBubble.prefab | 6 ++--- 8 files changed, 52 insertions(+), 11 deletions(-) diff --git a/AssetBundles/conversation b/AssetBundles/conversation index c8efe88b13e5eff75fee782be30a027c877af2a9..ff7f3e2ca817ed515bc9920950fa4ca1d487cb0e 100644 GIT binary patch delta 3121 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 L3}f+2{okRwKO-a< delta 3073 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 P1_APp#F3x-`nUSf8I{Dm diff --git a/AssetBundles/conversation.manifest b/AssetBundles/conversation.manifest index 0682315e7..a669c9578 100644 --- a/AssetBundles/conversation.manifest +++ b/AssetBundles/conversation.manifest @@ -1,16 +1,22 @@ ManifestFileVersion: 0 -CRC: 2169759651 +CRC: 674027210 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 15a4033bba58538c184c71c4d9f2799c + Hash: 207385c19798113635f73bd17e7c2e5c TypeTreeHash: serializedVersion: 2 - Hash: 6ce89620af51ba381c9e4f226a2ebb1b + Hash: 27971550fda62b1a0371f7196924aa6c HashAppended: 0 ClassTypes: - Class: 1 Script: {instanceID: 0} +- Class: 21 + Script: {instanceID: 0} +- Class: 28 + Script: {instanceID: 0} +- Class: 48 + Script: {instanceID: 0} - Class: 114 Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 @@ -21,6 +27,8 @@ ClassTypes: Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 115 Script: {instanceID: 0} +- Class: 128 + Script: {instanceID: 0} - Class: 222 Script: {instanceID: 0} - Class: 223 diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index 91f616c3e..49941ceed 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -28,11 +28,16 @@ public override void OnReceiveRemote(ConversationMessage message) { case ConversationType.Character: var translated = TextTranslation.Translate(message.Message).Trim(); - DebugLog.DebugWrite($"CHARACTER id [{message.ObjectId}] text [{translated}]"); + ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); break; case ConversationType.Player: ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); break; + case ConversationType.EndCharacter: + break; + case ConversationType.EndPlayer: + UnityEngine.Object.Destroy(PlayerRegistry.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); + break; } } } diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 34d57b977..e3decbefb 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,4 +1,5 @@ using OWML.Common; +using OWML.ModHelper.Events; using QSB.Events; using QSB.Utility; using UnityEngine; @@ -39,6 +40,16 @@ public void SendCharacterDialogue(int id, string text) GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); } + public void EndConversationPlayer() + { + GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.EndPlayer); + } + + public void EndConversationCharacter(int id) + { + GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.EndCharacter); + } + public void DisplayPlayerConversationBox(uint playerId, string text) { Destroy(PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox); @@ -48,12 +59,24 @@ public void DisplayPlayerConversationBox(uint playerId, string text) return; } var newBox = Instantiate(BoxPrefab); + newBox.SetActive(false); newBox.transform.parent = PlayerRegistry.GetPlayer(playerId).Body.transform; - newBox.transform.localPosition = Vector3.zero; - newBox.transform.LookAt(PlayerRegistry.LocalPlayer.Camera.transform); + newBox.transform.localPosition = new Vector3(0, 25, 0); + newBox.transform.rotation = PlayerRegistry.GetPlayer(playerId).Body.transform.rotation; + //newBox.transform.LookAt(PlayerRegistry.LocalPlayer.Camera.transform, PlayerRegistry.GetPlayer(playerId).Body.transform.up); + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); newBox.GetComponent().text = text; + newBox.SetActive(true); PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox = newBox; } + + public void DisplayCharacterConversationBox(int index, string text) + { + + } } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 33eaa346b..51b1fb8a6 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -16,6 +16,7 @@ public static void StartConversation(CharacterDialogueTree __instance) public static void EndConversation() { PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; + ConversationManager.Instance.EndConversationPlayer(); } public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) @@ -23,6 +24,8 @@ public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____curr if (optionIndex < 0) { // in a page where there is no selectable options + PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; + ConversationManager.Instance.EndConversationPlayer(); return true; } diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 9a17d13d6..18212519f 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -3,6 +3,8 @@ public enum ConversationType { Character, - Player + Player, + EndCharacter, + EndPlayer } } diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 50eee1fa0..d905a3712 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -93,4 +93,4 @@ protected virtual void UpdateTransform() } } } -} +} \ No newline at end of file diff --git a/UnityProject/Assets/DialogueBubble.prefab b/UnityProject/Assets/DialogueBubble.prefab index 78b5d43ba..f8713e301 100644 --- a/UnityProject/Assets/DialogueBubble.prefab +++ b/UnityProject/Assets/DialogueBubble.prefab @@ -69,7 +69,7 @@ MonoBehaviour: m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_FontData: - m_Font: {fileID: 12800000, guid: 58199d5bdd1dec045bcdd0a15a8dc780, type: 2} + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 1 m_FontStyle: 0 m_BestFit: 0 @@ -94,7 +94,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.841} + m_Color: {r: 0, g: 0, b: 0, a: 0.50980395} m_RaycastTarget: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -196,7 +196,7 @@ RectTransform: m_GameObject: {fileID: 1531056750600734} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.13, y: 0.13, z: 1} + m_LocalScale: {x: 0.1, y: 0.1, z: 1} m_Children: - {fileID: 224902966460615240} m_Father: {fileID: 0} From 3742e36248edfdf6255e2580246cae88b0690688 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 23 Oct 2020 23:09:01 +0100 Subject: [PATCH 011/207] cleanup --- QSB/ConversationSync/ConversationEvent.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index 49941ceed..5a44e3c22 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -1,6 +1,5 @@ using QSB.Events; using QSB.Messaging; -using QSB.Utility; namespace QSB.ConversationSync { From e9d39634ab1d441fc83cda9133aed2a925a4ceb1 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 24 Oct 2020 11:17:52 +0100 Subject: [PATCH 012/207] add boxes for characters --- AssetBundles/conversation | Bin 3183 -> 3143 bytes AssetBundles/conversation.manifest | 14 ++-------- QSB/ConversationSync/ConversationEvent.cs | 4 +++ QSB/ConversationSync/ConversationManager.cs | 29 ++++++++++++++++++-- QSB/ConversationSync/ConversationPatches.cs | 3 +- UnityProject/Assets/DialogueBubble.prefab | 8 +++--- 6 files changed, 40 insertions(+), 18 deletions(-) diff --git a/AssetBundles/conversation b/AssetBundles/conversation index ff7f3e2ca817ed515bc9920950fa4ca1d487cb0e..9dd2f86f8e35333054073221379d2133235b987b 100644 GIT binary patch delta 3080 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 W>*}QjlK&QoIIAg5WeTtRyFsqFtI41M delta 3121 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 L3}f+2{okRwlzJo| diff --git a/AssetBundles/conversation.manifest b/AssetBundles/conversation.manifest index a669c9578..6cae1daa2 100644 --- a/AssetBundles/conversation.manifest +++ b/AssetBundles/conversation.manifest @@ -1,22 +1,16 @@ ManifestFileVersion: 0 -CRC: 674027210 +CRC: 3469869292 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 207385c19798113635f73bd17e7c2e5c + Hash: 86686b50f40f37c15d0bca36dcaff7af TypeTreeHash: serializedVersion: 2 - Hash: 27971550fda62b1a0371f7196924aa6c + Hash: 6ce89620af51ba381c9e4f226a2ebb1b HashAppended: 0 ClassTypes: - Class: 1 Script: {instanceID: 0} -- Class: 21 - Script: {instanceID: 0} -- Class: 28 - Script: {instanceID: 0} -- Class: 48 - Script: {instanceID: 0} - Class: 114 Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 @@ -27,8 +21,6 @@ ClassTypes: Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 115 Script: {instanceID: 0} -- Class: 128 - Script: {instanceID: 0} - Class: 222 Script: {instanceID: 0} - Class: 223 diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index 5a44e3c22..d67bb0397 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -1,5 +1,7 @@ using QSB.Events; using QSB.Messaging; +using QSB.Utility; +using QSB.WorldSync; namespace QSB.ConversationSync { @@ -23,6 +25,7 @@ public class ConversationEvent : QSBEvent public override void OnReceiveRemote(ConversationMessage message) { + DebugLog.DebugWrite($"Conv. type {message.Type} id {message.ObjectId} text {message.Message}"); switch (message.Type) { case ConversationType.Character: @@ -33,6 +36,7 @@ public override void OnReceiveRemote(ConversationMessage message) ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); break; case ConversationType.EndCharacter: + UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[WorldRegistry.OldDialogueTrees[message.ObjectId]]); break; case ConversationType.EndPlayer: UnityEngine.Object.Destroy(PlayerRegistry.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index e3decbefb..e1543cff0 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -2,6 +2,8 @@ using OWML.ModHelper.Events; using QSB.Events; using QSB.Utility; +using QSB.WorldSync; +using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; @@ -12,6 +14,7 @@ public class ConversationManager : MonoBehaviour public static ConversationManager Instance { get; private set; } public AssetBundle ConversationAssetBundle { get; private set; } private GameObject BoxPrefab; + public Dictionary BoxMappings = new Dictionary(); private void Start() { @@ -21,7 +24,7 @@ private void Start() DebugLog.LogState("ConversationBundle", ConversationAssetBundle); BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); - var font = (Font)Resources.Load(@"fonts\english - latin\SpaceMono-Bold"); + var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); if (font == null) { DebugLog.ToConsole("Error - Font is null!", MessageType.Error); @@ -32,21 +35,25 @@ private void Start() public void SendPlayerOption(string text) { + DebugLog.DebugWrite("sending player option - " + text); GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); } public void SendCharacterDialogue(int id, string text) { + DebugLog.DebugWrite("sending char dialoge - " + text); GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); } public void EndConversationPlayer() { + DebugLog.DebugWrite("Ending conversation -- player"); GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.EndPlayer); } public void EndConversationCharacter(int id) { + DebugLog.DebugWrite("Ending conversation -- character"); GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.EndCharacter); } @@ -63,7 +70,6 @@ public void DisplayPlayerConversationBox(uint playerId, string text) newBox.transform.parent = PlayerRegistry.GetPlayer(playerId).Body.transform; newBox.transform.localPosition = new Vector3(0, 25, 0); newBox.transform.rotation = PlayerRegistry.GetPlayer(playerId).Body.transform.rotation; - //newBox.transform.LookAt(PlayerRegistry.LocalPlayer.Camera.transform, PlayerRegistry.GetPlayer(playerId).Body.transform.up); var lookAt = newBox.AddComponent(); lookAt.SetValue("_useLookAt", false); lookAt.SetValue("_localFacingVector", Vector3.back); @@ -76,7 +82,26 @@ public void DisplayPlayerConversationBox(uint playerId, string text) public void DisplayCharacterConversationBox(int index, string text) { + var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; + if (BoxMappings.ContainsKey(oldDialogueTree)) + { + Destroy(BoxMappings[oldDialogueTree]); + BoxMappings.Remove(oldDialogueTree); + } + + var newBox = Instantiate(BoxPrefab); + newBox.SetActive(false); + newBox.transform.parent = oldDialogueTree.gameObject.transform; + newBox.transform.localPosition = new Vector3(0, 2, 0); + newBox.transform.rotation = oldDialogueTree.gameObject.transform.rotation; + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); + newBox.GetComponent().text = text; + newBox.SetActive(true); + BoxMappings.Add(oldDialogueTree, newBox); } } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 51b1fb8a6..07c7c1d56 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -15,6 +15,7 @@ public static void StartConversation(CharacterDialogueTree __instance) public static void EndConversation() { + ConversationManager.Instance.EndConversationCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; ConversationManager.Instance.EndConversationPlayer(); } @@ -24,7 +25,7 @@ public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____curr if (optionIndex < 0) { // in a page where there is no selectable options - PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; + //PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; ConversationManager.Instance.EndConversationPlayer(); return true; } diff --git a/UnityProject/Assets/DialogueBubble.prefab b/UnityProject/Assets/DialogueBubble.prefab index f8713e301..262bc2fac 100644 --- a/UnityProject/Assets/DialogueBubble.prefab +++ b/UnityProject/Assets/DialogueBubble.prefab @@ -60,7 +60,7 @@ MonoBehaviour: m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 2100000, guid: fff59d5e06ad5b74497d7cc1dddc5e28, type: 2} + m_Material: {fileID: 2100000, guid: 08e1a88dddd41604db20b0dcb92d17d8, type: 2} m_Color: {r: 1, g: 0.68275857, b: 0, a: 1} m_RaycastTarget: 0 m_OnCullStateChanged: @@ -69,7 +69,7 @@ MonoBehaviour: m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Font: {fileID: 12800000, guid: 67f35d66c98319540bc681e5a18105d2, type: 2} m_FontSize: 1 m_FontStyle: 0 m_BestFit: 0 @@ -120,7 +120,7 @@ MonoBehaviour: m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: m_EditorClassIdentifier: - m_HorizontalFit: 2 + m_HorizontalFit: 0 m_VerticalFit: 2 --- !u!114 &114670735829080676 MonoBehaviour: @@ -205,7 +205,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: 25, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224902966460615240 RectTransform: From b5c890c1d50f443c993b72fad34d0ecd43e575f3 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 24 Oct 2020 11:20:45 +0100 Subject: [PATCH 013/207] remove logs, rename methods --- QSB/ConversationSync/ConversationEvent.cs | 5 ++++- QSB/ConversationSync/ConversationManager.cs | 8 ++------ QSB/ConversationSync/ConversationPatches.cs | 7 +++---- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index d67bb0397..71b2d27e2 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -25,7 +25,6 @@ public class ConversationEvent : QSBEvent public override void OnReceiveRemote(ConversationMessage message) { - DebugLog.DebugWrite($"Conv. type {message.Type} id {message.ObjectId} text {message.Message}"); switch (message.Type) { case ConversationType.Character: @@ -36,6 +35,10 @@ public override void OnReceiveRemote(ConversationMessage message) ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); break; case ConversationType.EndCharacter: + if (message.ObjectId == -1) + { + break; + } UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[WorldRegistry.OldDialogueTrees[message.ObjectId]]); break; case ConversationType.EndPlayer: diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index e1543cff0..656657643 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -35,25 +35,21 @@ private void Start() public void SendPlayerOption(string text) { - DebugLog.DebugWrite("sending player option - " + text); GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); } public void SendCharacterDialogue(int id, string text) { - DebugLog.DebugWrite("sending char dialoge - " + text); GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); } - public void EndConversationPlayer() + public void CloseBoxPlayer() { - DebugLog.DebugWrite("Ending conversation -- player"); GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.EndPlayer); } - public void EndConversationCharacter(int id) + public void CloseBoxCharacter(int id) { - DebugLog.DebugWrite("Ending conversation -- character"); GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.EndCharacter); } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 07c7c1d56..b1c983c79 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -15,9 +15,9 @@ public static void StartConversation(CharacterDialogueTree __instance) public static void EndConversation() { - ConversationManager.Instance.EndConversationCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); + ConversationManager.Instance.CloseBoxCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; - ConversationManager.Instance.EndConversationPlayer(); + ConversationManager.Instance.CloseBoxPlayer(); } public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) @@ -25,8 +25,7 @@ public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____curr if (optionIndex < 0) { // in a page where there is no selectable options - //PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; - ConversationManager.Instance.EndConversationPlayer(); + ConversationManager.Instance.CloseBoxPlayer(); return true; } From 25e442ddba42afcd9d2e0104976ede84d36ebda9 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 24 Oct 2020 15:31:20 +0100 Subject: [PATCH 014/207] more stability and IK code --- QSB/ConversationSync/ConversationEvent.cs | 5 +- QSB/ConversationSync/ConversationManager.cs | 25 +++++- QSB/ConversationSync/ConversationPatches.cs | 37 ++++++++- .../ConversationStartEndEvent.cs | 76 +++++++++++++++++++ .../ConversationStartEndMessage.cs | 28 +++++++ QSB/ConversationSync/ConversationType.cs | 4 +- .../QSBCharacterAnimController.cs | 9 --- .../QSBFacePlayerWhenTalking.cs | 68 +++++++++++++++++ QSB/Events/EventList.cs | 3 +- QSB/Events/EventNames.cs | 1 + QSB/Messaging/EventType.cs | 2 +- QSB/QSB.csproj | 4 +- QSB/QSBNetworkManager.cs | 13 +++- 13 files changed, 252 insertions(+), 23 deletions(-) create mode 100644 QSB/ConversationSync/ConversationStartEndEvent.cs create mode 100644 QSB/ConversationSync/ConversationStartEndMessage.cs delete mode 100644 QSB/ConversationSync/QSBCharacterAnimController.cs create mode 100644 QSB/ConversationSync/QSBFacePlayerWhenTalking.cs diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index 71b2d27e2..46f2b8692 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -1,6 +1,5 @@ using QSB.Events; using QSB.Messaging; -using QSB.Utility; using QSB.WorldSync; namespace QSB.ConversationSync @@ -34,14 +33,14 @@ public override void OnReceiveRemote(ConversationMessage message) case ConversationType.Player: ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); break; - case ConversationType.EndCharacter: + case ConversationType.CloseCharacter: if (message.ObjectId == -1) { break; } UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[WorldRegistry.OldDialogueTrees[message.ObjectId]]); break; - case ConversationType.EndPlayer: + case ConversationType.ClosePlayer: UnityEngine.Object.Destroy(PlayerRegistry.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); break; } diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 656657643..e48141188 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -4,6 +4,7 @@ using QSB.Utility; using QSB.WorldSync; using System.Collections.Generic; +using System.Linq; using UnityEngine; using UnityEngine.UI; @@ -33,6 +34,16 @@ private void Start() DebugLog.LogState("BoxPrefab", BoxPrefab); } + public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) + { + var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); + if (!PlayerRegistry.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) + { + return uint.MaxValue; + } + return PlayerRegistry.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + } + public void SendPlayerOption(string text) { GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); @@ -45,12 +56,22 @@ public void SendCharacterDialogue(int id, string text) public void CloseBoxPlayer() { - GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.EndPlayer); + GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.ClosePlayer); } public void CloseBoxCharacter(int id) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.EndCharacter); + GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + } + + public void SendStart(int charId) + { + GlobalMessenger.FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, true); + } + + public void SendEnd(int charId) + { + GlobalMessenger.FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, false); } public void DisplayPlayerConversationBox(uint playerId, string text) diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index b1c983c79..4ddba1dde 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -1,6 +1,6 @@ -using QSB.Utility; -using QSB.WorldSync; +using QSB.WorldSync; using System.Collections.Generic; +using UnityEngine; namespace QSB.ConversationSync { @@ -10,11 +10,12 @@ public static void StartConversation(CharacterDialogueTree __instance) { var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); PlayerRegistry.LocalPlayer.CurrentDialogueID = index; - DebugLog.DebugWrite($"Start converstation id {index}"); + ConversationManager.Instance.SendStart(index); } public static void EndConversation() { + ConversationManager.Instance.SendEnd(PlayerRegistry.LocalPlayer.CurrentDialogueID); ConversationManager.Instance.CloseBoxCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; ConversationManager.Instance.CloseBoxPlayer(); @@ -42,12 +43,42 @@ public static void GetNextPage(string ____name, List ____listPagesToDisp () => ConversationManager.Instance.SendCharacterDialogue(PlayerRegistry.LocalPlayer.CurrentDialogueID, key)); } + public static bool OnAnimatorIK(float ___headTrackingWeight, + bool ___lookOnlyWhenTalking, + bool ____playerInHeadZone, + bool ____inConversation, + ref float ____currentLookWeight, + ref Vector3 ____currentLookTarget, + DampedSpring3D ___lookSpring, + Animator ____animator, + CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + Vector3 position; + if (playerId == uint.MaxValue) + { + position = Locator.GetActiveCamera().transform.position; + } + else + { + position = PlayerRegistry.GetPlayer(playerId).Camera.transform.position; + } + float b = ___headTrackingWeight * (float)Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); + ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); + ____animator.SetLookAtPosition(____currentLookTarget); + ____animator.SetLookAtWeight(____currentLookWeight); + return false; + + } + public static void AddPatches() { QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); QSB.Helper.HarmonyHelper.AddPostfix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); } } } diff --git a/QSB/ConversationSync/ConversationStartEndEvent.cs b/QSB/ConversationSync/ConversationStartEndEvent.cs new file mode 100644 index 000000000..2b8a6cf3c --- /dev/null +++ b/QSB/ConversationSync/ConversationStartEndEvent.cs @@ -0,0 +1,76 @@ +using OWML.Common; +using OWML.ModHelper.Events; +using QSB.Events; +using QSB.Messaging; +using QSB.Utility; +using QSB.WorldSync; +using System.Linq; +using UnityEngine; + +namespace QSB.ConversationSync +{ + public class ConversationStartEndEvent : QSBEvent + { + public override Messaging.EventType Type => Messaging.EventType.ConversationStartEnd; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); + + private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); + + private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage + { + AboutId = LocalPlayerId, + CharacterId = charId, + PlayerId = playerId, + State = state + }; + + public override void OnReceiveRemote(ConversationStartEndMessage message) + { + if (message.CharacterId == -1) + { + return; + } + var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; + var animController = Resources.FindObjectsOfTypeAll().First(x => x.GetValue("_dialogueTree") == dialogueTree); + if (message.State) + { + PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + animController.SetValue("_inConversation", true); + animController.SetValue("_playerInHeadZone", true); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Talking"); + } + } + else + { + PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + animController.SetValue("_inConversation", false); + animController.SetValue("_playerInHeadZone", false); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Idle"); + } + } + + /* + var qsbFacePlayer = dialogueTree.GetComponent(); + if (qsbFacePlayer == null) + { + DebugLog.ToConsole($"Error - QSBFacePlayerWhenTalking not found for object ID {message.CharacterId}!", MessageType.Error); + } + if (message.State) + { + qsbFacePlayer.StartConversation(PlayerRegistry.GetPlayer(message.PlayerId).Camera.transform.position); + } + else + { + qsbFacePlayer.EndConversation(); + } + */ + } + } +} diff --git a/QSB/ConversationSync/ConversationStartEndMessage.cs b/QSB/ConversationSync/ConversationStartEndMessage.cs new file mode 100644 index 000000000..cbce668ca --- /dev/null +++ b/QSB/ConversationSync/ConversationStartEndMessage.cs @@ -0,0 +1,28 @@ +using QSB.Messaging; +using UnityEngine.Networking; + +namespace QSB.ConversationSync +{ + public class ConversationStartEndMessage : PlayerMessage + { + public int CharacterId { get; set; } + public uint PlayerId { get; set; } + public bool State { get; set; } + + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + CharacterId = reader.ReadInt32(); + PlayerId = reader.ReadUInt32(); + State = reader.ReadBoolean(); + } + + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(CharacterId); + writer.Write(PlayerId); + writer.Write(State); + } + } +} diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 18212519f..5384727e1 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -4,7 +4,7 @@ public enum ConversationType { Character, Player, - EndCharacter, - EndPlayer + CloseCharacter, + ClosePlayer } } diff --git a/QSB/ConversationSync/QSBCharacterAnimController.cs b/QSB/ConversationSync/QSBCharacterAnimController.cs deleted file mode 100644 index d0b181bd7..000000000 --- a/QSB/ConversationSync/QSBCharacterAnimController.cs +++ /dev/null @@ -1,9 +0,0 @@ -using QSB.WorldSync; - -namespace QSB.ConversationSync -{ - public class QSBCharacterAnimController : WorldObject - { - public CharacterAnimController AnimController { get; private set; } - } -} diff --git a/QSB/ConversationSync/QSBFacePlayerWhenTalking.cs b/QSB/ConversationSync/QSBFacePlayerWhenTalking.cs new file mode 100644 index 000000000..cc21d85b9 --- /dev/null +++ b/QSB/ConversationSync/QSBFacePlayerWhenTalking.cs @@ -0,0 +1,68 @@ +using QSB.Utility; +using UnityEngine; + +namespace QSB.ConversationSync +{ + class QSBFacePlayerWhenTalking : MonoBehaviour + { + private CharacterDialogueTree _dialogueTree; + private Quaternion _origLocalRotation; + private Quaternion _targetLocalRotation; + + private void Awake() + { + _dialogueTree = GetComponentInChildren(); + DebugLog.DebugWrite("Awake of QSBFacePlayer. Attached to " + _dialogueTree.name); + if (_dialogueTree != null) + { + _dialogueTree.OnStartConversation += () => StartConversation(Locator.GetPlayerTransform().position); + _dialogueTree.OnEndConversation += EndConversation; + } + _origLocalRotation = base.transform.localRotation; + } + + private void OnDestroy() + { + if (_dialogueTree != null) + { + _dialogueTree.OnStartConversation -= () => StartConversation(Locator.GetPlayerTransform().position); + _dialogueTree.OnEndConversation -= EndConversation; + } + } + + private void Start() + { + enabled = false; + } + + public void StartConversation(Vector3 playerPosition) + { + Vector3 vector = playerPosition - transform.position; + Vector3 vector2 = vector - Vector3.Project(vector, transform.up); + float angle = Vector3.Angle(transform.forward, vector2) * Mathf.Sign(Vector3.Dot(vector2, transform.right)); + Vector3 axis = transform.parent.InverseTransformDirection(transform.up); + Quaternion lhs = Quaternion.AngleAxis(angle, axis); + this.FaceLocalRotation(lhs * transform.localRotation); + } + + public void EndConversation() + { + FaceLocalRotation(_origLocalRotation); + } + + private void FaceLocalRotation(Quaternion targetLocalRotation) + { + enabled = true; + _targetLocalRotation = targetLocalRotation; + } + + private void Update() + { + transform.localRotation = Quaternion.Slerp(transform.localRotation, _targetLocalRotation, 0.1f); + if (Mathf.Abs(Quaternion.Angle(transform.localRotation, _targetLocalRotation)) < 1f) + { + enabled = false; + } + } + } +} diff --git a/QSB/Events/EventList.cs b/QSB/Events/EventList.cs index ac4ebba68..39aeac526 100644 --- a/QSB/Events/EventList.cs +++ b/QSB/Events/EventList.cs @@ -42,7 +42,8 @@ public static void Init() new AnimTriggerEvent(), new OrbSlotEvent(), new OrbUserEvent(), - new ConversationEvent() + new ConversationEvent(), + new ConversationStartEndEvent() }; _eventList.ForEach(ev => ev.SetupListener()); diff --git a/QSB/Events/EventNames.cs b/QSB/Events/EventNames.cs index db6991bbf..23a60a4e0 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -33,5 +33,6 @@ public static class EventNames public static string QSBOrbSlot = "QSBOrbSlot"; public static string QSBOrbUser = "QSBOrbUser"; public static string QSBConversation = "QSBConversation"; + public static string QSBConversationStartEnd = "QSBConversationStartEnd"; } } diff --git a/QSB/Messaging/EventType.cs b/QSB/Messaging/EventType.cs index 6c1753960..b9cd8511e 100644 --- a/QSB/Messaging/EventType.cs +++ b/QSB/Messaging/EventType.cs @@ -23,6 +23,6 @@ public enum EventType OrbSlot, OrbUser, Conversation, - ConversationStatus + ConversationStartEnd } } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index ee27740ae..f73f9a2bd 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -129,9 +129,11 @@ + + - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index cdaaefbd7..5a7265be7 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -79,6 +79,12 @@ private void OnSceneLoaded(OWScene scene, bool inUniverse) OrbManager.Instance.BuildOrbs(); WorldRegistry.OldDialogueTrees.Clear(); WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + + foreach (var item in Resources.FindObjectsOfTypeAll()) + { + item.gameObject.AddComponent(); + Destroy(item); + } } } @@ -104,9 +110,14 @@ public override void OnStartServer() { OrbManager.Instance.QueueBuildOrbs(); } - if (WorldRegistry.OldDialogueTrees.Count == 0) + if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) { WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + foreach (var item in Resources.FindObjectsOfTypeAll()) + { + item.gameObject.AddComponent(); + Destroy(item); + } } } From 3b42096d8cef290c1313b93e80bd8edd1fe4b413 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 24 Oct 2020 19:04:50 +0100 Subject: [PATCH 015/207] fixed bugs --- QSB/ConversationSync/ConversationManager.cs | 1 + QSB/ConversationSync/ConversationPatches.cs | 12 ++++++- .../ConversationStartEndEvent.cs | 33 ++++++++++--------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index e48141188..8e68f3f2a 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -31,6 +31,7 @@ private void Start() DebugLog.ToConsole("Error - Font is null!", MessageType.Error); } BoxPrefab.GetComponent().font = font; + BoxPrefab.GetComponent().color = Color.white; DebugLog.LogState("BoxPrefab", BoxPrefab); } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 4ddba1dde..e7c4cd703 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -63,13 +63,22 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, { position = PlayerRegistry.GetPlayer(playerId).Camera.transform.position; } - float b = ___headTrackingWeight * (float)Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); ____animator.SetLookAtPosition(____currentLookTarget); ____animator.SetLookAtWeight(____currentLookWeight); return false; + } + public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + if (playerId == uint.MaxValue) + { + return true; + } + return false; } public static void AddPatches() @@ -79,6 +88,7 @@ public static void AddPatches() QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); QSB.Helper.HarmonyHelper.AddPostfix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); + QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); } } } diff --git a/QSB/ConversationSync/ConversationStartEndEvent.cs b/QSB/ConversationSync/ConversationStartEndEvent.cs index 2b8a6cf3c..a5599cd4f 100644 --- a/QSB/ConversationSync/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/ConversationStartEndEvent.cs @@ -34,25 +34,28 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) return; } var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; - var animController = Resources.FindObjectsOfTypeAll().First(x => x.GetValue("_dialogueTree") == dialogueTree); - if (message.State) + var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); + if (animController != default(CharacterAnimController)) { - PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; - animController.SetValue("_inConversation", true); - animController.SetValue("_playerInHeadZone", true); - if (animController.GetValue("_hasTalkAnimation")) + if (message.State) { - animController.GetValue("_animator").SetTrigger("Talking"); + PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + animController.SetValue("_inConversation", true); + animController.SetValue("_playerInHeadZone", true); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Talking"); + } } - } - else - { - PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = -1; - animController.SetValue("_inConversation", false); - animController.SetValue("_playerInHeadZone", false); - if (animController.GetValue("_hasTalkAnimation")) + else { - animController.GetValue("_animator").SetTrigger("Idle"); + PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + animController.SetValue("_inConversation", false); + animController.SetValue("_playerInHeadZone", false); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Idle"); + } } } From 02ba9bd1baf18d676c0376be0c5b2d7d655d05d7 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 13:17:01 +0000 Subject: [PATCH 016/207] fixed bugs --- QSB/ConversationSync/ConversationManager.cs | 20 +++++++++++++++++ QSB/ConversationSync/ConversationPatches.cs | 22 ++++++++++++++++--- .../ConversationStartEndEvent.cs | 4 ++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 8e68f3f2a..06d6e6975 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -52,6 +52,11 @@ public void SendPlayerOption(string text) public void SendCharacterDialogue(int id, string text) { + if (id == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); + return; + } GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); } @@ -67,11 +72,21 @@ public void CloseBoxCharacter(int id) public void SendStart(int charId) { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. start event with char id -1.", MessageType.Warning); + return; + } GlobalMessenger.FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, true); } public void SendEnd(int charId) { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. end event with char id -1.", MessageType.Warning); + return; + } GlobalMessenger.FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, false); } @@ -100,6 +115,11 @@ public void DisplayPlayerConversationBox(uint playerId, string text) public void DisplayCharacterConversationBox(int index, string text) { + if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) + { + DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); + return; + } var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; if (BoxMappings.ContainsKey(oldDialogueTree)) { diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index e7c4cd703..058512817 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -1,4 +1,6 @@ -using QSB.WorldSync; +using OWML.Common; +using QSB.Utility; +using QSB.WorldSync; using System.Collections.Generic; using UnityEngine; @@ -9,16 +11,30 @@ public static class ConversationPatches public static void StartConversation(CharacterDialogueTree __instance) { var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); + if (index == -1) + { + DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); + } PlayerRegistry.LocalPlayer.CurrentDialogueID = index; ConversationManager.Instance.SendStart(index); } - public static void EndConversation() + public static bool EndConversation(CharacterDialogueTree __instance) { + if (!__instance.enabled) + { + return false; + } + if (PlayerRegistry.LocalPlayer.CurrentDialogueID == -1) + { + DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); + return false; + } ConversationManager.Instance.SendEnd(PlayerRegistry.LocalPlayer.CurrentDialogueID); ConversationManager.Instance.CloseBoxCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; ConversationManager.Instance.CloseBoxPlayer(); + return true; } public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) @@ -86,7 +102,7 @@ public static void AddPatches() QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); - QSB.Helper.HarmonyHelper.AddPostfix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); } diff --git a/QSB/ConversationSync/ConversationStartEndEvent.cs b/QSB/ConversationSync/ConversationStartEndEvent.cs index a5599cd4f..c1bcc0206 100644 --- a/QSB/ConversationSync/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/ConversationStartEndEvent.cs @@ -31,6 +31,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) { if (message.CharacterId == -1) { + DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); return; } var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; @@ -46,6 +47,8 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) { animController.GetValue("_animator").SetTrigger("Talking"); } + dialogueTree.GetComponent().DisableInteraction(); + } else { @@ -56,6 +59,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) { animController.GetValue("_animator").SetTrigger("Idle"); } + dialogueTree.GetComponent().EnableInteraction(); } } From 2d8ea703e28e0e9ea06f62745102d067ca64f7e3 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 13:17:46 +0000 Subject: [PATCH 017/207] cleanup --- QSB/ConversationSync/ConversationStartEndEvent.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/QSB/ConversationSync/ConversationStartEndEvent.cs b/QSB/ConversationSync/ConversationStartEndEvent.cs index c1bcc0206..f19310ae7 100644 --- a/QSB/ConversationSync/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/ConversationStartEndEvent.cs @@ -1,7 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; using QSB.Events; -using QSB.Messaging; using QSB.Utility; using QSB.WorldSync; using System.Linq; @@ -62,7 +61,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) dialogueTree.GetComponent().EnableInteraction(); } } - + /* var qsbFacePlayer = dialogueTree.GetComponent(); if (qsbFacePlayer == null) From a707d5f9e070c2841c1c7ce9886d195391edf2c4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 15:19:23 +0000 Subject: [PATCH 018/207] cleanup --- QSB/ConversationSync/ConversationEvent.cs | 3 +- QSB/ConversationSync/ConversationManager.cs | 31 +++++++++---------- QSB/ConversationSync/ConversationPatches.cs | 4 +-- .../ConversationStartEndEvent.cs | 30 +++++++++--------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/ConversationEvent.cs index 46f2b8692..2c2907ee7 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/ConversationEvent.cs @@ -38,7 +38,8 @@ public override void OnReceiveRemote(ConversationMessage message) { break; } - UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[WorldRegistry.OldDialogueTrees[message.ObjectId]]); + var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; + UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); break; case ConversationType.ClosePlayer: UnityEngine.Object.Destroy(PlayerRegistry.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 06d6e6975..5a2bbc589 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -40,14 +40,17 @@ public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); if (!PlayerRegistry.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) { + // No player talking to tree return uint.MaxValue; } + // .First() should be fine here as only one player should be talking to a character. return PlayerRegistry.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; } public void SendPlayerOption(string text) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); + GlobalMessenger + .FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); } public void SendCharacterDialogue(int id, string text) @@ -57,37 +60,31 @@ public void SendCharacterDialogue(int id, string text) DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); return; } - GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); } public void CloseBoxPlayer() { - GlobalMessenger.FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.ClosePlayer); + GlobalMessenger + .FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.ClosePlayer); } public void CloseBoxCharacter(int id) { - GlobalMessenger.FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); } - public void SendStart(int charId) + public void SendConvState(int charId, bool state) { if (charId == -1) { - DebugLog.ToConsole("Warning - Tried to send conv. start event with char id -1.", MessageType.Warning); + DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); return; } - GlobalMessenger.FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, true); - } - - public void SendEnd(int charId) - { - if (charId == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. end event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger.FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, false); + GlobalMessenger + .FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, state); } public void DisplayPlayerConversationBox(uint playerId, string text) diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 058512817..76b6a532a 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -16,7 +16,7 @@ public static void StartConversation(CharacterDialogueTree __instance) DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); } PlayerRegistry.LocalPlayer.CurrentDialogueID = index; - ConversationManager.Instance.SendStart(index); + ConversationManager.Instance.SendConvState(index, true); } public static bool EndConversation(CharacterDialogueTree __instance) @@ -30,7 +30,7 @@ public static bool EndConversation(CharacterDialogueTree __instance) DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); return false; } - ConversationManager.Instance.SendEnd(PlayerRegistry.LocalPlayer.CurrentDialogueID); + ConversationManager.Instance.SendConvState(PlayerRegistry.LocalPlayer.CurrentDialogueID, false); ConversationManager.Instance.CloseBoxCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; ConversationManager.Instance.CloseBoxPlayer(); diff --git a/QSB/ConversationSync/ConversationStartEndEvent.cs b/QSB/ConversationSync/ConversationStartEndEvent.cs index f19310ae7..36882054f 100644 --- a/QSB/ConversationSync/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/ConversationStartEndEvent.cs @@ -35,10 +35,13 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) } var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); + + // Make character face player and talk if (animController != default(CharacterAnimController)) { if (message.State) { + // Start talking PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; animController.SetValue("_inConversation", true); animController.SetValue("_playerInHeadZone", true); @@ -47,10 +50,10 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) animController.GetValue("_animator").SetTrigger("Talking"); } dialogueTree.GetComponent().DisableInteraction(); - } else { + // Stop talking PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = -1; animController.SetValue("_inConversation", false); animController.SetValue("_playerInHeadZone", false); @@ -62,21 +65,20 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) } } - /* - var qsbFacePlayer = dialogueTree.GetComponent(); - if (qsbFacePlayer == null) - { - DebugLog.ToConsole($"Error - QSBFacePlayerWhenTalking not found for object ID {message.CharacterId}!", MessageType.Error); - } - if (message.State) - { - qsbFacePlayer.StartConversation(PlayerRegistry.GetPlayer(message.PlayerId).Camera.transform.position); - } - else + // Make character turn to player (if they're meant to) + var qsbFacePlayer = dialogueTree.GetComponentInParent(); + if (qsbFacePlayer != null) { - qsbFacePlayer.EndConversation(); + if (message.State) + { + DebugLog.DebugWrite("start convo faceplayer for " + message.CharacterId); + qsbFacePlayer.StartConversation(PlayerRegistry.GetPlayer(message.PlayerId).Body.transform.position); + } + else + { + qsbFacePlayer.EndConversation(); + } } - */ } } } From 6278825786b687461ac681bfd3c58be545921b3f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 15:27:53 +0000 Subject: [PATCH 019/207] cleanup --- QSB/ConversationSync/ConversationManager.cs | 39 +++++++++++---------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 5a2bbc589..0b3ef1f72 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -89,25 +89,22 @@ public void SendConvState(int charId, bool state) public void DisplayPlayerConversationBox(uint playerId, string text) { - Destroy(PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox); if (playerId == PlayerRegistry.LocalPlayerId) { DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); return; } - var newBox = Instantiate(BoxPrefab); - newBox.SetActive(false); - newBox.transform.parent = PlayerRegistry.GetPlayer(playerId).Body.transform; - newBox.transform.localPosition = new Vector3(0, 25, 0); - newBox.transform.rotation = PlayerRegistry.GetPlayer(playerId).Body.transform.rotation; - var lookAt = newBox.AddComponent(); - lookAt.SetValue("_useLookAt", false); - lookAt.SetValue("_localFacingVector", Vector3.back); - lookAt.SetValue("_localRotationAxis", Vector3.up); - newBox.GetComponent().text = text; - newBox.SetActive(true); - PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox = newBox; + var player = PlayerRegistry.GetPlayer(playerId); + + // Destroy old box if it exists + var playerBox = player.CurrentDialogueBox; + if (playerBox != null) + { + Destroy(playerBox); + } + + PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); } public void DisplayCharacterConversationBox(int index, string text) @@ -117,6 +114,8 @@ public void DisplayCharacterConversationBox(int index, string text) DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); return; } + + // Remove old box if it exists var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; if (BoxMappings.ContainsKey(oldDialogueTree)) { @@ -124,19 +123,23 @@ public void DisplayCharacterConversationBox(int index, string text) BoxMappings.Remove(oldDialogueTree); } + BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); + } + + private GameObject CreateBox(Transform parent, float vertOffset, string text) + { var newBox = Instantiate(BoxPrefab); newBox.SetActive(false); - newBox.transform.parent = oldDialogueTree.gameObject.transform; - newBox.transform.localPosition = new Vector3(0, 2, 0); - newBox.transform.rotation = oldDialogueTree.gameObject.transform.rotation; + newBox.transform.parent = parent; + newBox.transform.localPosition = new Vector3(0, vertOffset, 0); + newBox.transform.rotation = parent.rotation; var lookAt = newBox.AddComponent(); lookAt.SetValue("_useLookAt", false); lookAt.SetValue("_localFacingVector", Vector3.back); lookAt.SetValue("_localRotationAxis", Vector3.up); newBox.GetComponent().text = text; newBox.SetActive(true); - - BoxMappings.Add(oldDialogueTree, newBox); + return newBox; } } } From d6bc390b9fec559267f329f5c53b6aa37c72cbe3 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 17:17:47 +0000 Subject: [PATCH 020/207] Update ConversationPatches.cs --- QSB/ConversationSync/ConversationPatches.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 76b6a532a..7d0aa8e70 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -73,6 +73,7 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, Vector3 position; if (playerId == uint.MaxValue) { + // TODO : Find closest player and track to that camera. position = Locator.GetActiveCamera().transform.position; } else From ff296a6c3eaea9e73d70a2919f75e793dee2c95d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 18:59:56 +0000 Subject: [PATCH 021/207] Update .gitignore --- .gitignore | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c84aecd55..1fa9f17ce 100644 --- a/.gitignore +++ b/.gitignore @@ -358,4 +358,12 @@ MigrationBackup/ # Unecessary asset bundle file /AssetBundles/AssetBundles* -QSB.csproj.user \ No newline at end of file +QSB.csproj.user +UnityProject/Assets/AnimationClip +UnityProject/Assets/AnimationController +UnityProject/Assets/AnimatorOverrideController +UnityProject/Assets/Avatar +UnityProject/Assets/Avatars +UnityProject/Assets/Material +UnityProject/Assets/Mesh +UnityProject/Assets/Texture2D \ No newline at end of file From 14f5d9faff1c0e4bdeff99c485049e55b0510cc4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 19:01:26 +0000 Subject: [PATCH 022/207] Update .gitignore --- .gitignore | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 1fa9f17ce..04d889501 100644 --- a/.gitignore +++ b/.gitignore @@ -359,11 +359,11 @@ MigrationBackup/ /AssetBundles/AssetBundles* QSB.csproj.user -UnityProject/Assets/AnimationClip -UnityProject/Assets/AnimationController -UnityProject/Assets/AnimatorOverrideController -UnityProject/Assets/Avatar -UnityProject/Assets/Avatars -UnityProject/Assets/Material -UnityProject/Assets/Mesh -UnityProject/Assets/Texture2D \ No newline at end of file +UnityProject/Assets/AnimationClip/ +UnityProject/Assets/AnimationController/ +UnityProject/Assets/AnimatorOverrideController/ +UnityProject/Assets/Avatar/ +UnityProject/Assets/Avatars/ +UnityProject/Assets/Material/ +UnityProject/Assets/Mesh/ +UnityProject/Assets/Texture2D/ From caa35852a8db7d6fe3e798cdf3f79bbf4cae591e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 19:06:03 +0000 Subject: [PATCH 023/207] Update .gitignore --- .gitignore | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 04d889501..9ff6c303d 100644 --- a/.gitignore +++ b/.gitignore @@ -359,11 +359,4 @@ MigrationBackup/ /AssetBundles/AssetBundles* QSB.csproj.user -UnityProject/Assets/AnimationClip/ -UnityProject/Assets/AnimationController/ -UnityProject/Assets/AnimatorOverrideController/ -UnityProject/Assets/Avatar/ -UnityProject/Assets/Avatars/ -UnityProject/Assets/Material/ -UnityProject/Assets/Mesh/ -UnityProject/Assets/Texture2D/ +GameAssets/ From 18647e2ec085bcc63caa376ac43400756b8d05ad Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 25 Oct 2020 20:45:48 +0000 Subject: [PATCH 024/207] stuff --- QSB/QSB.csproj | 4 +++- UnityProject/Assets/GameAssets.meta | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 UnityProject/Assets/GameAssets.meta diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index f73f9a2bd..d777ffe9a 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -223,7 +223,9 @@ - + + + md "$(OwmlDir)\Mods\$(ProjectName)" diff --git a/UnityProject/Assets/GameAssets.meta b/UnityProject/Assets/GameAssets.meta new file mode 100644 index 000000000..d9ebec458 --- /dev/null +++ b/UnityProject/Assets/GameAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 25ad0d403d7c13b4c9eda845de42a823 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From dd7ccf48b500e24dd63d67f46659923c292c52d5 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 27 Oct 2020 22:59:19 +0000 Subject: [PATCH 025/207] stuffz --- QSB/Instruments/InstrumentsManager.cs | 35 ++++++ QSB/Instruments/QSBCamera/CameraManager.cs | 120 +++++++++++++++++++++ QSB/Instruments/QSBCamera/CameraMode.cs | 13 +++ QSB/QSB.cs | 2 + QSB/QSB.csproj | 13 ++- 5 files changed, 180 insertions(+), 3 deletions(-) create mode 100644 QSB/Instruments/InstrumentsManager.cs create mode 100644 QSB/Instruments/QSBCamera/CameraManager.cs create mode 100644 QSB/Instruments/QSBCamera/CameraMode.cs diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs new file mode 100644 index 000000000..49cfd6dff --- /dev/null +++ b/QSB/Instruments/InstrumentsManager.cs @@ -0,0 +1,35 @@ +using QSB.Instruments.QSBCamera; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB.Instruments +{ + public class InstrumentsManager : MonoBehaviour + { + public static InstrumentsManager Instance; + + private void Awake() + { + Instance = this; + gameObject.AddComponent(); + } + + private void Update() + { + if (Input.GetKeyDown(KeyCode.Keypad9)) + { + if (CameraManager.Instance.Mode == CameraMode.FirstPerson) + { + CameraManager.Instance.SwitchTo3rdPerson(); + } + else + { + CameraManager.Instance.SwitchTo1stPerson(); + } + } + } + } +} diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs new file mode 100644 index 000000000..f2c1e978b --- /dev/null +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -0,0 +1,120 @@ +using OWML.Common; +using QSB.Utility; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.PostProcessing; + +namespace QSB.Instruments.QSBCamera +{ + public class CameraManager : MonoBehaviour + { + public static CameraManager Instance; + private GameObject CameraBase; + private GameObject CameraObj; + private Camera Camera; + private OWCamera OWCamera; + public bool IsSetUp { get; private set; } + public CameraMode Mode { get; private set; } + + public void Start() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool inUniverse) + { + if (!inUniverse) + { + return; + } + IsSetUp = false; + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerCamera() != null && Locator.GetPlayerTransform() != null, FinishSetup); + } + + private void FinishSetup() + { + CameraBase = new GameObject(); + CameraBase.SetActive(false); + CameraBase.AddComponent(); + CameraBase.transform.parent = Locator.GetPlayerTransform(); + CameraBase.transform.localPosition = Vector3.zero; + CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); + + CameraObj = new GameObject(); + CameraObj.transform.parent = CameraBase.transform; + CameraObj.transform.localPosition = new Vector3(0, 0.8f, -5f); + CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); + Camera = CameraObj.AddComponent(); + Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); + Camera.clearFlags = CameraClearFlags.Color; + Camera.backgroundColor = Color.black; + Camera.fieldOfView = 90f; + Camera.nearClipPlane = 0.1f; + Camera.farClipPlane = 40000f; + Camera.depth = 0f; + Camera.enabled = false; + OWCamera = CameraObj.AddComponent(); + OWCamera.renderSkybox = true; + + var screenGrab = CameraObj.AddComponent(); + screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; + + var fogImage = CameraObj.AddComponent(); + fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; + + var postProcessing = CameraObj.AddComponent(); + postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetAddComponent().profile; + + CameraBase.SetActive(true); + + IsSetUp = true; + } + + public void SwitchTo3rdPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + return; + } + if (Mode == CameraMode.ThirdPerson) + { + DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); + return; + } + if (OWInput.GetInputMode() != InputMode.Character) + { + DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.None); + GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); + Locator.GetActiveCamera().mainCamera.enabled = false; + Camera.enabled = true; + Mode = CameraMode.ThirdPerson; + } + + public void SwitchTo1stPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + return; + } + if (Mode == CameraMode.FirstPerson) + { + DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.Character); + GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); + Locator.GetActiveCamera().mainCamera.enabled = true; + Camera.enabled = false; + Mode = CameraMode.FirstPerson; + } + } +} diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs new file mode 100644 index 000000000..1121015a6 --- /dev/null +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.Instruments.QSBCamera +{ + public enum CameraMode + { + FirstPerson, + ThirdPerson + } +} diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 4b6b0bf27..17f7ba3ba 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -4,6 +4,7 @@ using QSB.DeathSync; using QSB.ElevatorSync; using QSB.GeyserSync; +using QSB.Instruments; using QSB.OrbSync; using QSB.Tools; using QSB.TransformSync; @@ -49,6 +50,7 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); + gameObject.AddComponent(); Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave); } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index d777ffe9a..04e6297a6 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -37,6 +37,10 @@ $(GameDir)\OuterWilds_Data\Managed\Assembly-CSharp.dll + + False + $(GameDir)\OuterWilds_Data\Managed\Assembly-CSharp-firstpass.dll + ..\packages\OWML.0.7.3\lib\net35\NAudio-Unity.dll @@ -144,6 +148,11 @@ + + + + + @@ -223,9 +232,7 @@ - - - + md "$(OwmlDir)\Mods\$(ProjectName)" From 939a7222cef036e285d742698ef29af68d3294f6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 28 Oct 2020 09:41:19 +0000 Subject: [PATCH 026/207] remove stuff --- QSB/Instruments/QSBCamera/CameraManager.cs | 4 ++-- QSB/QSB.csproj | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index f2c1e978b..34ea5fd0f 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -66,8 +66,8 @@ private void FinishSetup() var fogImage = CameraObj.AddComponent(); fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; - var postProcessing = CameraObj.AddComponent(); - postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetAddComponent().profile; + //var postProcessing = CameraObj.AddComponent(); + //postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetAddComponent().profile; CameraBase.SetActive(true); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 04e6297a6..de17f24dd 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -148,8 +148,6 @@ - - From ed771f4a288c6c96b830aa6f83694afc9767b180 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 28 Oct 2020 09:42:47 +0000 Subject: [PATCH 027/207] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c84aecd55..9ff6c303d 100644 --- a/.gitignore +++ b/.gitignore @@ -358,4 +358,5 @@ MigrationBackup/ # Unecessary asset bundle file /AssetBundles/AssetBundles* -QSB.csproj.user \ No newline at end of file +QSB.csproj.user +GameAssets/ From 6882493b491e89a4ef9197f89f798b14b732fb28 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 28 Oct 2020 09:49:45 +0000 Subject: [PATCH 028/207] Update README.md --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0a341ea99..25db1153a 100644 --- a/README.md +++ b/README.md @@ -31,19 +31,18 @@ ## Playing as a client -- Run `OWML.Launcher.exe` to start the game; +- Run the game; - You'll see some new buttons on the top left; - Replace `localhost` with the server's IP address; -- Press "LAN Client(C)"; +- Press "LAN Client(C). You can join servers in the menu or in-game, but it is recommended to join in the main menu."; - If you see "Stop (X)", you are connected. ## Playing as a host - Open port `7777` on your router; -- Run `OWML.Launcher.exe` to start the game; +- Run the game; - You'll see some new buttons on the top left; -- Don't start the game (expedition) before starting the server; -- Press "LAN Host(H)"; +- Press "LAN Host(H)". This can be done in-game or in the menu, but it is recommened to start servers in the menu.; - If you now see the "Stop (X)" button, you are serving; - Give your external IPv4 address to your clients ([like what you see here](http://whatismyip.host/)). @@ -66,11 +65,13 @@ If for some reason none of this is working, you might have to set everything man - To fix the references, right*click "References" in the Solution Explorer > "Add Reference", and add all the missing DLLs (references with yellow warning icon). You can find these DLLs in the game's directory (`OuterWilds\OuterWilds_Data\Managed`); - If Visual Studio isn't able to automatically copy the files, you'll have to copy the built dlls manually to OWML. +Refer to this repo's wiki for documentation on core QSB design specifications and mechanics. + ## Authors -- [Mister_Nebula](https://github.com/misternebula) - Current lead -- [AmazingAlek](https://github.com/amazingalek) -- [Raicuparta](https://github.com/Raicuparta) +- [Mister_Nebula](https://github.com/misternebula) - Developer of v0.3 onwards +- [AmazingAlek](https://github.com/amazingalek) - On-and-off developer and sometimes code tidyer +- [Raicuparta](https://github.com/Raicuparta) - Developer of v0.1 - v0.2 ## Help / Discuss development / Whatever From 69d11c805bcc81815cf06ba1ce7bd692726c9fcb Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 28 Oct 2020 21:41:07 +0000 Subject: [PATCH 029/207] add camera controller --- QSB/Instruments/QSBCamera/CameraController.cs | 44 +++++++++++++++++++ QSB/Instruments/QSBCamera/CameraManager.cs | 1 + QSB/QSB.csproj | 1 + 3 files changed, 46 insertions(+) create mode 100644 QSB/Instruments/QSBCamera/CameraController.cs diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs new file mode 100644 index 000000000..f766412f7 --- /dev/null +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB.Instruments.QSBCamera +{ + class CameraController : MonoBehaviour + { + private float _degreesX; + private float _degreesY; + private Quaternion _rotationX; + private Quaternion _rotationY; + + void FixedUpdate() + { + if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) + { + return; + } + UpdateInput(); + UpdateRotation(); + } + + private void UpdateInput() + { + var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); + _degreesX += input.x * 180f * Time.fixedDeltaTime; + _degreesY += input.y * 180f * Time.fixedDeltaTime; + } + + private void UpdateRotation() + { + _degreesX %= 360f; + _degreesY %= 360f; + _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); + _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); + _rotationY = Quaternion.AngleAxis(_degreesY, -Vector3.right); + var localRotation = _rotationX * _rotationY * Quaternion.identity; + gameObject.transform.parent.localRotation = localRotation; + } + } +} diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 34ea5fd0f..cc7418270 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -59,6 +59,7 @@ private void FinishSetup() Camera.enabled = false; OWCamera = CameraObj.AddComponent(); OWCamera.renderSkybox = true; + CameraObj.AddComponent(); var screenGrab = CameraObj.AddComponent(); screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index de17f24dd..68c9ca7aa 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -148,6 +148,7 @@ + From b61e95afb9c7bb6051aaea65afa59c94220c1609 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 1 Nov 2020 11:52:31 +0000 Subject: [PATCH 030/207] add clip prevention to camera --- QSB/Instruments/InstrumentsManager.cs | 4 -- QSB/Instruments/QSBCamera/CameraController.cs | 42 ++++++++++++++++--- QSB/Instruments/QSBCamera/CameraManager.cs | 8 +--- QSB/Instruments/QSBCamera/CameraMode.cs | 7 +--- 4 files changed, 39 insertions(+), 22 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 49cfd6dff..05378ae29 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,8 +1,4 @@ using QSB.Instruments.QSBCamera; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; namespace QSB.Instruments diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index f766412f7..6780da103 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; +using UnityEngine; namespace QSB.Instruments.QSBCamera { @@ -13,16 +9,50 @@ class CameraController : MonoBehaviour private Quaternion _rotationX; private Quaternion _rotationY; + private const float PercentToMove = 0.75f; + + public GameObject CameraObject; + void FixedUpdate() { if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) { return; } + UpdatePosition(); UpdateInput(); UpdateRotation(); } + private void UpdatePosition() + { + var origin = transform.position; + var localDirection = CameraObject.transform.localPosition.normalized; + Vector3 localTargetPoint; + if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out RaycastHit outRay, 10, LayerMask.GetMask("Default"))) + { + localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; + } + else + { + localTargetPoint = localDirection * 10 * PercentToMove; + } + var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); + var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); + Vector3 movement; + if (targetDistance < currentDistance) + { + // Snap to target to avoid clipping + movement = localTargetPoint; + } + else + { + // Move camera out slowly + movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); + } + CameraObject.transform.localPosition = movement; + } + private void UpdateInput() { var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); @@ -38,7 +68,7 @@ private void UpdateRotation() _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); _rotationY = Quaternion.AngleAxis(_degreesY, -Vector3.right); var localRotation = _rotationX * _rotationY * Quaternion.identity; - gameObject.transform.parent.localRotation = localRotation; + transform.localRotation = localRotation; } } } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index cc7418270..2fe556146 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -1,11 +1,6 @@ using OWML.Common; using QSB.Utility; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; -using UnityEngine.PostProcessing; namespace QSB.Instruments.QSBCamera { @@ -59,7 +54,8 @@ private void FinishSetup() Camera.enabled = false; OWCamera = CameraObj.AddComponent(); OWCamera.renderSkybox = true; - CameraObj.AddComponent(); + + CameraBase.AddComponent().CameraObject = CameraObj; var screenGrab = CameraObj.AddComponent(); screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs index 1121015a6..738ca214d 100644 --- a/QSB/Instruments/QSBCamera/CameraMode.cs +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.Instruments.QSBCamera +namespace QSB.Instruments.QSBCamera { public enum CameraMode { From 36b877c358504e6e42369b7dd7822a284223a4ff Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 1 Nov 2020 11:57:15 +0000 Subject: [PATCH 031/207] cleanup --- QSB/Instruments/InstrumentsManager.cs | 9 +-------- QSB/Instruments/QSBCamera/CameraController.cs | 9 ++++++--- QSB/Instruments/QSBCamera/CameraManager.cs | 10 ++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 05378ae29..059acb793 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -17,14 +17,7 @@ private void Update() { if (Input.GetKeyDown(KeyCode.Keypad9)) { - if (CameraManager.Instance.Mode == CameraMode.FirstPerson) - { - CameraManager.Instance.SwitchTo3rdPerson(); - } - else - { - CameraManager.Instance.SwitchTo1stPerson(); - } + CameraManager.Instance.ToggleViewMode(); } } } diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index 6780da103..c33964b99 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -9,7 +9,10 @@ class CameraController : MonoBehaviour private Quaternion _rotationX; private Quaternion _rotationY; + // How far along the ray to move the camera. Avoids clipping into the walls. private const float PercentToMove = 0.75f; + // Maximum distance for camera clipping + private const float RayLength = 10f; public GameObject CameraObject; @@ -29,13 +32,13 @@ private void UpdatePosition() var origin = transform.position; var localDirection = CameraObject.transform.localPosition.normalized; Vector3 localTargetPoint; - if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out RaycastHit outRay, 10, LayerMask.GetMask("Default"))) + if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out RaycastHit outRay, RayLength, LayerMask.GetMask("Default"))) { localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; } else { - localTargetPoint = localDirection * 10 * PercentToMove; + localTargetPoint = localDirection * RayLength * PercentToMove; } var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); @@ -66,7 +69,7 @@ private void UpdateRotation() _degreesY %= 360f; _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); - _rotationY = Quaternion.AngleAxis(_degreesY, -Vector3.right); + _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); var localRotation = _rotationX * _rotationY * Quaternion.identity; transform.localRotation = localRotation; } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 2fe556146..46023e3ca 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -113,5 +113,15 @@ public void SwitchTo1stPerson() Camera.enabled = false; Mode = CameraMode.FirstPerson; } + + public void ToggleViewMode() + { + if (Mode == CameraMode.FirstPerson) + { + SwitchTo3rdPerson(); + return; + } + SwitchTo1stPerson(); + } } } From ca38f789fed418c36bd997cf7fe3a1a82a0c5d9e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 1 Nov 2020 12:11:36 +0000 Subject: [PATCH 032/207] add events --- QSB/Events/EventList.cs | 7 +++--- QSB/Events/EventNames.cs | 1 + QSB/Instruments/Events/PlayInstrumentEvent.cs | 23 +++++++++++++++++ .../Events/PlayInstrumentMessage.cs | 25 +++++++++++++++++++ QSB/Instruments/InstrumentType.cs | 17 +++++++++++++ QSB/QSB.csproj | 3 +++ 6 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 QSB/Instruments/Events/PlayInstrumentEvent.cs create mode 100644 QSB/Instruments/Events/PlayInstrumentMessage.cs create mode 100644 QSB/Instruments/InstrumentType.cs diff --git a/QSB/Events/EventList.cs b/QSB/Events/EventList.cs index 39aeac526..cb8487973 100644 --- a/QSB/Events/EventList.cs +++ b/QSB/Events/EventList.cs @@ -3,6 +3,7 @@ using QSB.DeathSync; using QSB.ElevatorSync; using QSB.GeyserSync; +using QSB.Instruments.Events; using QSB.OrbSync; using QSB.TimeSync; using QSB.Tools; @@ -11,9 +12,6 @@ namespace QSB.Events { - /// - /// Creates instances of all of the events QSB uses. - /// public static class EventList { public static bool Ready { get; private set; } @@ -43,7 +41,8 @@ public static void Init() new OrbSlotEvent(), new OrbUserEvent(), new ConversationEvent(), - new ConversationStartEndEvent() + new ConversationStartEndEvent(), + new PlayInstrumentEvent() }; _eventList.ForEach(ev => ev.SetupListener()); diff --git a/QSB/Events/EventNames.cs b/QSB/Events/EventNames.cs index 23a60a4e0..8d687c31b 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -34,5 +34,6 @@ public static class EventNames public static string QSBOrbUser = "QSBOrbUser"; public static string QSBConversation = "QSBConversation"; public static string QSBConversationStartEnd = "QSBConversationStartEnd"; + public static string QSBPlayInstrument = "QSBPlayInstrument"; } } diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs new file mode 100644 index 000000000..db0312dc8 --- /dev/null +++ b/QSB/Instruments/Events/PlayInstrumentEvent.cs @@ -0,0 +1,23 @@ +using QSB.Events; +using QSB.Messaging; + +namespace QSB.Instruments.Events +{ + public class PlayInstrumentEvent : QSBEvent + { + public override EventType Type => EventType.FullStateRequest; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); + + private void Handler(InstrumentType type, bool state) => SendEvent(CreateMessage(type, state)); + + private PlayInstrumentMessage CreateMessage(InstrumentType type, bool state) => new PlayInstrumentMessage + { + AboutId = LocalPlayerId, + Type = type, + State = state + }; + } +} diff --git a/QSB/Instruments/Events/PlayInstrumentMessage.cs b/QSB/Instruments/Events/PlayInstrumentMessage.cs new file mode 100644 index 000000000..0f4c36276 --- /dev/null +++ b/QSB/Instruments/Events/PlayInstrumentMessage.cs @@ -0,0 +1,25 @@ +using QSB.Messaging; +using UnityEngine.Networking; + +namespace QSB.Instruments.Events +{ + public class PlayInstrumentMessage : PlayerMessage + { + public InstrumentType Type; + public bool State; + + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Type = (InstrumentType)reader.ReadInt32(); + State = reader.ReadBoolean(); + } + + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write((int)Type); + writer.Write(State); + } + } +} diff --git a/QSB/Instruments/InstrumentType.cs b/QSB/Instruments/InstrumentType.cs new file mode 100644 index 000000000..9401d84aa --- /dev/null +++ b/QSB/Instruments/InstrumentType.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.Instruments +{ + public enum InstrumentType + { + CHERT, + ESKER, + FELDSPAR, + GABBRO, + REIBECK, + SOLANUM + } +} \ No newline at end of file diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 68c9ca7aa..404297f26 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -148,6 +148,9 @@ + + + From be117ccc40c1a5fbd32715ca99a39ff33c683614 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 1 Nov 2020 12:26:09 +0000 Subject: [PATCH 033/207] add more stuff --- QSB/Instruments/InstrumentType.cs | 1 + QSB/Instruments/InstrumentsManager.cs | 14 ++++++++++++-- QSB/Instruments/QSBCamera/CameraController.cs | 2 ++ QSB/PlayerInfo.cs | 16 ++++++++++++---- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/QSB/Instruments/InstrumentType.cs b/QSB/Instruments/InstrumentType.cs index 9401d84aa..6bba48c5a 100644 --- a/QSB/Instruments/InstrumentType.cs +++ b/QSB/Instruments/InstrumentType.cs @@ -7,6 +7,7 @@ namespace QSB.Instruments { public enum InstrumentType { + NONE, CHERT, ESKER, FELDSPAR, diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 059acb793..c7691915f 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,4 +1,5 @@ -using QSB.Instruments.QSBCamera; +using QSB.Events; +using QSB.Instruments.QSBCamera; using UnityEngine; namespace QSB.Instruments @@ -17,7 +18,16 @@ private void Update() { if (Input.GetKeyDown(KeyCode.Keypad9)) { - CameraManager.Instance.ToggleViewMode(); + if (!PlayerRegistry.LocalPlayer.PlayingInstrument) + { + CameraManager.Instance.SwitchTo3rdPerson(); + GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, InstrumentType.REIBECK, true); + } + else + { + CameraManager.Instance.SwitchTo1stPerson(); + GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, InstrumentType.REIBECK, false); + } } } } diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index c33964b99..5129e2c93 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -34,10 +34,12 @@ private void UpdatePosition() Vector3 localTargetPoint; if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out RaycastHit outRay, RayLength, LayerMask.GetMask("Default"))) { + // Raycast hit collider, get target from hitpoint. localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; } else { + // Raycast didn't hit collider, get target from camera direction localTargetPoint = localDirection * RayLength * PercentToMove; } var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); diff --git a/QSB/PlayerInfo.cs b/QSB/PlayerInfo.cs index e469facc0..6c18d0b18 100644 --- a/QSB/PlayerInfo.cs +++ b/QSB/PlayerInfo.cs @@ -1,4 +1,5 @@ using QSB.Animation; +using QSB.Instruments; using QSB.Tools; using QSB.TransformSync; using QSB.Utility; @@ -10,6 +11,12 @@ namespace QSB public class PlayerInfo { public uint PlayerId { get; } + public string Name { get; set; } + public bool IsReady { get; set; } + public PlayerHUDMarker HudMarker { get; set; } + public State State { get; set; } + + // Body Objects public GameObject Camera { get; set; } public GameObject Body { get; set; } @@ -21,12 +28,13 @@ public class PlayerInfo public QSBTool Translator => GetToolByType(ToolType.Translator); public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); - public PlayerHUDMarker HudMarker { get; set; } - public string Name { get; set; } - public bool IsReady { get; set; } + // Conversation public int CurrentDialogueID { get; set; } public GameObject CurrentDialogueBox { get; set; } - public State State { get; set; } + + // Instruments + public InstrumentType CurrentInstrument { get; set; } + public bool PlayingInstrument => CurrentInstrument != InstrumentType.NONE; public PlayerInfo(uint id) { From c6621f715bb54901bbf2e25b6cb474d20118ed72 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 1 Nov 2020 15:56:48 +0000 Subject: [PATCH 034/207] fix --- QSB/Instruments/Events/PlayInstrumentEvent.cs | 21 ++++++++++++------- .../Events/PlayInstrumentMessage.cs | 3 --- QSB/Instruments/InstrumentsManager.cs | 10 +++++++-- QSB/Messaging/EventType.cs | 3 ++- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs index db0312dc8..d3bdff0bb 100644 --- a/QSB/Instruments/Events/PlayInstrumentEvent.cs +++ b/QSB/Instruments/Events/PlayInstrumentEvent.cs @@ -1,23 +1,30 @@ using QSB.Events; using QSB.Messaging; +using QSB.Utility; +using System; namespace QSB.Instruments.Events { public class PlayInstrumentEvent : QSBEvent { - public override EventType Type => EventType.FullStateRequest; + public override EventType Type => EventType.PlayInstrument; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayInstrument, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayInstrument, Handler); - private void Handler(InstrumentType type, bool state) => SendEvent(CreateMessage(type, state)); + private void Handler(InstrumentType type) => SendEvent(CreateMessage(type)); - private PlayInstrumentMessage CreateMessage(InstrumentType type, bool state) => new PlayInstrumentMessage + private PlayInstrumentMessage CreateMessage(InstrumentType type) => new PlayInstrumentMessage { AboutId = LocalPlayerId, - Type = type, - State = state + Type = type }; + + public override void OnReceiveRemote(PlayInstrumentMessage message) + { + PlayerRegistry.GetPlayer(message.AboutId).CurrentInstrument = message.Type; + DebugLog.DebugWrite($"Player ID {message.AboutId} now playing instrument {Enum.GetName(typeof(InstrumentType), message.Type)}"); + } } } diff --git a/QSB/Instruments/Events/PlayInstrumentMessage.cs b/QSB/Instruments/Events/PlayInstrumentMessage.cs index 0f4c36276..1884e5a42 100644 --- a/QSB/Instruments/Events/PlayInstrumentMessage.cs +++ b/QSB/Instruments/Events/PlayInstrumentMessage.cs @@ -6,20 +6,17 @@ namespace QSB.Instruments.Events public class PlayInstrumentMessage : PlayerMessage { public InstrumentType Type; - public bool State; public override void Deserialize(NetworkReader reader) { base.Deserialize(reader); Type = (InstrumentType)reader.ReadInt32(); - State = reader.ReadBoolean(); } public override void Serialize(NetworkWriter writer) { base.Serialize(writer); writer.Write((int)Type); - writer.Write(State); } } } diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index c7691915f..df81ad6c1 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -21,14 +21,20 @@ private void Update() if (!PlayerRegistry.LocalPlayer.PlayingInstrument) { CameraManager.Instance.SwitchTo3rdPerson(); - GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, InstrumentType.REIBECK, true); + SwitchToInstrument(InstrumentType.REIBECK); } else { CameraManager.Instance.SwitchTo1stPerson(); - GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, InstrumentType.REIBECK, false); + SwitchToInstrument(InstrumentType.NONE); } } } + + public void SwitchToInstrument(InstrumentType type) + { + PlayerRegistry.LocalPlayer.CurrentInstrument = type; + GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, type); + } } } diff --git a/QSB/Messaging/EventType.cs b/QSB/Messaging/EventType.cs index b9cd8511e..dbbe2dd69 100644 --- a/QSB/Messaging/EventType.cs +++ b/QSB/Messaging/EventType.cs @@ -23,6 +23,7 @@ public enum EventType OrbSlot, OrbUser, Conversation, - ConversationStartEnd + ConversationStartEnd, + PlayInstrument } } From 26cb99592c0fb89368ca10b6eec9033148cf70ea Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 1 Nov 2020 15:59:01 +0000 Subject: [PATCH 035/207] Update CameraManager.cs --- QSB/Instruments/QSBCamera/CameraManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 46023e3ca..8e890e3c8 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -41,7 +41,7 @@ private void FinishSetup() CameraObj = new GameObject(); CameraObj.transform.parent = CameraBase.transform; - CameraObj.transform.localPosition = new Vector3(0, 0.8f, -5f); + CameraObj.transform.localPosition = new Vector3(0, 0, -5f); CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); Camera = CameraObj.AddComponent(); Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); From cea3688e74c0667e672c660f398e518c40e26a6e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 2 Nov 2020 22:15:46 +0000 Subject: [PATCH 036/207] add more stuff --- QSB/Instruments/InstrumentType.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 23 ++++++++++++++++++- QSB/Instruments/QSBCamera/CameraController.cs | 4 ++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/QSB/Instruments/InstrumentType.cs b/QSB/Instruments/InstrumentType.cs index 6bba48c5a..75ead23de 100644 --- a/QSB/Instruments/InstrumentType.cs +++ b/QSB/Instruments/InstrumentType.cs @@ -12,7 +12,7 @@ public enum InstrumentType ESKER, FELDSPAR, GABBRO, - REIBECK, + RIEBECK, SOLANUM } } \ No newline at end of file diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index df81ad6c1..a144e27f5 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Instruments.QSBCamera; +using QSB.Utility; using UnityEngine; namespace QSB.Instruments @@ -7,11 +8,28 @@ namespace QSB.Instruments public class InstrumentsManager : MonoBehaviour { public static InstrumentsManager Instance; + private RuntimeAnimatorController RiebeckController; + private RuntimeAnimatorController ChertController; + private RuntimeAnimatorController GabbroController; + private RuntimeAnimatorController FeldsparController; private void Awake() { Instance = this; gameObject.AddComponent(); + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool inUniverse) + { + var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); + RiebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; + var chertRoot = GameObject.Find("Traveller_HEA_Chert_ANIM_Chatter_Chipper"); + ChertController = chertRoot.GetComponent().runtimeAnimatorController; + var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); + GabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; + var feldsparRoot = GameObject.Find("Traveller_HEA_Feldspar_ANIM_Talking"); + FeldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; } private void Update() @@ -21,7 +39,10 @@ private void Update() if (!PlayerRegistry.LocalPlayer.PlayingInstrument) { CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToInstrument(InstrumentType.REIBECK); + SwitchToInstrument(InstrumentType.RIEBECK); + var animator = Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2").GetComponent(); + animator.runtimeAnimatorController = ChertController; + animator.SetTrigger("Playing"); } else { diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index 5129e2c93..793349f55 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -10,9 +10,9 @@ class CameraController : MonoBehaviour private Quaternion _rotationY; // How far along the ray to move the camera. Avoids clipping into the walls. - private const float PercentToMove = 0.75f; + private const float PercentToMove = 0.80f; // Maximum distance for camera clipping - private const float RayLength = 10f; + private const float RayLength = 5f; public GameObject CameraObject; From 4fb2e359745885f783ec0e3c42b375acbfe83183 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 17:56:48 +0000 Subject: [PATCH 037/207] added "events" subnamespace --- .../{ => Events}/AnimTriggerEvent.cs | 2 +- .../{ => Events}/AnimTriggerMessage.cs | 2 +- .../{ => Events}/ConversationEvent.cs | 2 +- .../{ => Events}/ConversationMessage.cs | 2 +- .../{ => Events}/ConversationStartEndEvent.cs | 2 +- .../ConversationStartEndMessage.cs | 2 +- .../{ => Events}/PlayerDeathEvent.cs | 2 +- .../{ => Events}/PlayerDeathMessage.cs | 2 +- .../{ => Events}/ElevatorEvent.cs | 2 +- .../{ => Events}/ElevatorMessage.cs | 2 +- QSB/Events/EventList.cs | 15 +++---- QSB/GeyserSync/{ => Events}/GeyserEvent.cs | 2 +- QSB/Instruments/InstrumentType.cs | 7 +--- QSB/Instruments/InstrumentsManager.cs | 1 - QSB/OrbSync/{ => Events}/OrbSlotEvent.cs | 2 +- QSB/OrbSync/{ => Events}/OrbUserEvent.cs | 2 +- QSB/QSB.csproj | 40 +++++++++---------- QSB/TimeSync/{ => Events}/ServerTimeEvent.cs | 2 +- .../{ => Events}/ServerTimeMessage.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 1 + .../{ => Events}/PlayerFlashlightEvent.cs | 2 +- QSB/Tools/{ => Events}/PlayerProbeEvent.cs | 2 +- .../{ => Events}/PlayerProbeLauncherEvent.cs | 2 +- .../{ => Events}/PlayerSignalscopeEvent.cs | 2 +- .../{ => Events}/PlayerTranslatorEvent.cs | 2 +- 25 files changed, 50 insertions(+), 54 deletions(-) rename QSB/Animation/{ => Events}/AnimTriggerEvent.cs (97%) rename QSB/Animation/{ => Events}/AnimTriggerMessage.cs (94%) rename QSB/ConversationSync/{ => Events}/ConversationEvent.cs (98%) rename QSB/ConversationSync/{ => Events}/ConversationMessage.cs (95%) rename QSB/ConversationSync/{ => Events}/ConversationStartEndEvent.cs (98%) rename QSB/ConversationSync/{ => Events}/ConversationStartEndMessage.cs (95%) rename QSB/DeathSync/{ => Events}/PlayerDeathEvent.cs (97%) rename QSB/DeathSync/{ => Events}/PlayerDeathMessage.cs (94%) rename QSB/ElevatorSync/{ => Events}/ElevatorEvent.cs (96%) rename QSB/ElevatorSync/{ => Events}/ElevatorMessage.cs (93%) rename QSB/GeyserSync/{ => Events}/GeyserEvent.cs (97%) rename QSB/OrbSync/{ => Events}/OrbSlotEvent.cs (97%) rename QSB/OrbSync/{ => Events}/OrbUserEvent.cs (98%) rename QSB/TimeSync/{ => Events}/ServerTimeEvent.cs (96%) rename QSB/TimeSync/{ => Events}/ServerTimeMessage.cs (95%) rename QSB/Tools/{ => Events}/PlayerFlashlightEvent.cs (98%) rename QSB/Tools/{ => Events}/PlayerProbeEvent.cs (98%) rename QSB/Tools/{ => Events}/PlayerProbeLauncherEvent.cs (98%) rename QSB/Tools/{ => Events}/PlayerSignalscopeEvent.cs (98%) rename QSB/Tools/{ => Events}/PlayerTranslatorEvent.cs (98%) diff --git a/QSB/Animation/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs similarity index 97% rename from QSB/Animation/AnimTriggerEvent.cs rename to QSB/Animation/Events/AnimTriggerEvent.cs index 19e20ea5f..4f6b4868f 100644 --- a/QSB/Animation/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.Animation +namespace QSB.Animation.Events { public class AnimTriggerEvent : QSBEvent { diff --git a/QSB/Animation/AnimTriggerMessage.cs b/QSB/Animation/Events/AnimTriggerMessage.cs similarity index 94% rename from QSB/Animation/AnimTriggerMessage.cs rename to QSB/Animation/Events/AnimTriggerMessage.cs index a09b41c72..4362d38b9 100644 --- a/QSB/Animation/AnimTriggerMessage.cs +++ b/QSB/Animation/Events/AnimTriggerMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.Animation +namespace QSB.Animation.Events { public class AnimTriggerMessage : PlayerMessage { diff --git a/QSB/ConversationSync/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs similarity index 98% rename from QSB/ConversationSync/ConversationEvent.cs rename to QSB/ConversationSync/Events/ConversationEvent.cs index 2c2907ee7..b07281e25 100644 --- a/QSB/ConversationSync/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.WorldSync; -namespace QSB.ConversationSync +namespace QSB.ConversationSync.Events { public class ConversationEvent : QSBEvent { diff --git a/QSB/ConversationSync/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs similarity index 95% rename from QSB/ConversationSync/ConversationMessage.cs rename to QSB/ConversationSync/Events/ConversationMessage.cs index 30b2a9ca6..5bf1ea0c7 100644 --- a/QSB/ConversationSync/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.ConversationSync +namespace QSB.ConversationSync.Events { public class ConversationMessage : PlayerMessage { diff --git a/QSB/ConversationSync/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs similarity index 98% rename from QSB/ConversationSync/ConversationStartEndEvent.cs rename to QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 36882054f..157006aa5 100644 --- a/QSB/ConversationSync/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -6,7 +6,7 @@ using System.Linq; using UnityEngine; -namespace QSB.ConversationSync +namespace QSB.ConversationSync.Events { public class ConversationStartEndEvent : QSBEvent { diff --git a/QSB/ConversationSync/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs similarity index 95% rename from QSB/ConversationSync/ConversationStartEndMessage.cs rename to QSB/ConversationSync/Events/ConversationStartEndMessage.cs index cbce668ca..f53657c10 100644 --- a/QSB/ConversationSync/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.ConversationSync +namespace QSB.ConversationSync.Events { public class ConversationStartEndMessage : PlayerMessage { diff --git a/QSB/DeathSync/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs similarity index 97% rename from QSB/DeathSync/PlayerDeathEvent.cs rename to QSB/DeathSync/Events/PlayerDeathEvent.cs index 7bbdac2f6..a6ca81e8f 100644 --- a/QSB/DeathSync/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Utility; -namespace QSB.DeathSync +namespace QSB.DeathSync.Events { public class PlayerDeathEvent : QSBEvent { diff --git a/QSB/DeathSync/PlayerDeathMessage.cs b/QSB/DeathSync/Events/PlayerDeathMessage.cs similarity index 94% rename from QSB/DeathSync/PlayerDeathMessage.cs rename to QSB/DeathSync/Events/PlayerDeathMessage.cs index edbb8c627..14f398b51 100644 --- a/QSB/DeathSync/PlayerDeathMessage.cs +++ b/QSB/DeathSync/Events/PlayerDeathMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.DeathSync +namespace QSB.DeathSync.Events { public class PlayerDeathMessage : PlayerMessage { diff --git a/QSB/ElevatorSync/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs similarity index 96% rename from QSB/ElevatorSync/ElevatorEvent.cs rename to QSB/ElevatorSync/Events/ElevatorEvent.cs index e1f26da49..b38100a24 100644 --- a/QSB/ElevatorSync/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.WorldSync; -namespace QSB.ElevatorSync +namespace QSB.ElevatorSync.Events { public class ElevatorEvent : QSBEvent { diff --git a/QSB/ElevatorSync/ElevatorMessage.cs b/QSB/ElevatorSync/Events/ElevatorMessage.cs similarity index 93% rename from QSB/ElevatorSync/ElevatorMessage.cs rename to QSB/ElevatorSync/Events/ElevatorMessage.cs index 368df4d24..005e9cd85 100644 --- a/QSB/ElevatorSync/ElevatorMessage.cs +++ b/QSB/ElevatorSync/Events/ElevatorMessage.cs @@ -1,7 +1,7 @@ using QSB.WorldSync; using UnityEngine.Networking; -namespace QSB.ElevatorSync +namespace QSB.ElevatorSync.Events { public class ElevatorMessage : WorldObjectMessage { diff --git a/QSB/Events/EventList.cs b/QSB/Events/EventList.cs index cb8487973..eb48d3515 100644 --- a/QSB/Events/EventList.cs +++ b/QSB/Events/EventList.cs @@ -1,12 +1,13 @@ using QSB.Animation; -using QSB.ConversationSync; -using QSB.DeathSync; -using QSB.ElevatorSync; -using QSB.GeyserSync; +using QSB.Animation.Events; +using QSB.ConversationSync.Events; +using QSB.DeathSync.Events; +using QSB.ElevatorSync.Events; +using QSB.GeyserSync.Events; using QSB.Instruments.Events; -using QSB.OrbSync; -using QSB.TimeSync; -using QSB.Tools; +using QSB.OrbSync.Events; +using QSB.TimeSync.Events; +using QSB.Tools.Events; using QSB.TransformSync; using System.Collections.Generic; diff --git a/QSB/GeyserSync/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs similarity index 97% rename from QSB/GeyserSync/GeyserEvent.cs rename to QSB/GeyserSync/Events/GeyserEvent.cs index fa42e52a7..4cb85cc1f 100644 --- a/QSB/GeyserSync/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.WorldSync; -namespace QSB.GeyserSync +namespace QSB.GeyserSync.Events { public class GeyserEvent : QSBEvent { diff --git a/QSB/Instruments/InstrumentType.cs b/QSB/Instruments/InstrumentType.cs index 75ead23de..126e632b7 100644 --- a/QSB/Instruments/InstrumentType.cs +++ b/QSB/Instruments/InstrumentType.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.Instruments +namespace QSB.Instruments { public enum InstrumentType { diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index a144e27f5..3c6474331 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,6 +1,5 @@ using QSB.Events; using QSB.Instruments.QSBCamera; -using QSB.Utility; using UnityEngine; namespace QSB.Instruments diff --git a/QSB/OrbSync/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs similarity index 97% rename from QSB/OrbSync/OrbSlotEvent.cs rename to QSB/OrbSync/Events/OrbSlotEvent.cs index 6b92d6da3..1ded1b922 100644 --- a/QSB/OrbSync/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.WorldSync; -namespace QSB.OrbSync +namespace QSB.OrbSync.Events { public class OrbSlotEvent : QSBEvent { diff --git a/QSB/OrbSync/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs similarity index 98% rename from QSB/OrbSync/OrbUserEvent.cs rename to QSB/OrbSync/Events/OrbUserEvent.cs index 4bc865f21..c855b6543 100644 --- a/QSB/OrbSync/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -7,7 +7,7 @@ using System.Linq; using UnityEngine.Networking; -namespace QSB.OrbSync +namespace QSB.OrbSync.Events { public class OrbUserEvent : QSBEvent { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 404297f26..22ef6e16e 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -123,30 +123,30 @@ - + - + - - + + - - + + - + - + - + @@ -156,32 +156,32 @@ - + - + - + - + - - + + - + - - - + + + @@ -220,7 +220,7 @@ - + diff --git a/QSB/TimeSync/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs similarity index 96% rename from QSB/TimeSync/ServerTimeEvent.cs rename to QSB/TimeSync/Events/ServerTimeEvent.cs index dbf08dea5..7c5c44357 100644 --- a/QSB/TimeSync/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.TimeSync +namespace QSB.TimeSync.Events { public class ServerTimeEvent : QSBEvent { diff --git a/QSB/TimeSync/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs similarity index 95% rename from QSB/TimeSync/ServerTimeMessage.cs rename to QSB/TimeSync/Events/ServerTimeMessage.cs index 4f1e925c4..9831ed726 100644 --- a/QSB/TimeSync/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.TimeSync +namespace QSB.TimeSync.Events { public class ServerTimeMessage : PlayerMessage { diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index da4c745be..168d82c7b 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,6 +1,7 @@ using OWML.ModHelper.Events; using QSB.DeathSync; using QSB.Events; +using QSB.TimeSync.Events; using QSB.Utility; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/Tools/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs similarity index 98% rename from QSB/Tools/PlayerFlashlightEvent.cs rename to QSB/Tools/Events/PlayerFlashlightEvent.cs index fff4b1171..3ca1d9e0d 100644 --- a/QSB/Tools/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.Tools +namespace QSB.Tools.Events { public class PlayerFlashlightEvent : QSBEvent { diff --git a/QSB/Tools/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs similarity index 98% rename from QSB/Tools/PlayerProbeEvent.cs rename to QSB/Tools/Events/PlayerProbeEvent.cs index 50c1f7a69..f131df0b8 100644 --- a/QSB/Tools/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.Tools +namespace QSB.Tools.Events { public class PlayerProbeEvent : QSBEvent { diff --git a/QSB/Tools/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs similarity index 98% rename from QSB/Tools/PlayerProbeLauncherEvent.cs rename to QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 1447c2426..54c3a3ac8 100644 --- a/QSB/Tools/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.Tools +namespace QSB.Tools.Events { public class PlayerProbeLauncherEvent : QSBEvent { diff --git a/QSB/Tools/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs similarity index 98% rename from QSB/Tools/PlayerSignalscopeEvent.cs rename to QSB/Tools/Events/PlayerSignalscopeEvent.cs index 5bbe2b878..728807e52 100644 --- a/QSB/Tools/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.Tools +namespace QSB.Tools.Events { public class PlayerSignalscopeEvent : QSBEvent { diff --git a/QSB/Tools/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs similarity index 98% rename from QSB/Tools/PlayerTranslatorEvent.cs rename to QSB/Tools/Events/PlayerTranslatorEvent.cs index b2deb81db..54df0c848 100644 --- a/QSB/Tools/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.Messaging; -namespace QSB.Tools +namespace QSB.Tools.Events { public class PlayerTranslatorEvent : QSBEvent { From a0992d71c7823500f8d10c9554b8b8bca93a924a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:11:10 +0000 Subject: [PATCH 038/207] patch cleanup --- QSB/ConversationSync/ConversationPatches.cs | 6 ++- QSB/DeathSync/DeathPatches.cs | 7 +-- QSB/ElevatorSync/ElevatorManager.cs | 1 - QSB/ElevatorSync/ElevatorPatches.cs | 9 +++- .../{EventList.cs => QSBEventManager.cs} | 8 +++- QSB/OrbSync/OrbPatches.cs | 6 ++- QSB/Patches/QSBPatch.cs | 14 ++++++ QSB/Patches/QSBPatchManager.cs | 45 +++++++++++++++++++ QSB/Patches/QSBPatchTypes.cs | 14 ++++++ QSB/QSB.cs | 7 ++- QSB/QSB.csproj | 5 ++- QSB/QSBNetworkManager.cs | 17 ++++--- QSB/TimeSync/WakeUpPatches.cs | 12 ++--- QSB/Tools/ProbePatches.cs | 6 ++- 14 files changed, 127 insertions(+), 30 deletions(-) rename QSB/Events/{EventList.cs => QSBEventManager.cs} (90%) create mode 100644 QSB/Patches/QSBPatch.cs create mode 100644 QSB/Patches/QSBPatchManager.cs create mode 100644 QSB/Patches/QSBPatchTypes.cs diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 7d0aa8e70..b2e729b8b 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -6,8 +6,10 @@ namespace QSB.ConversationSync { - public static class ConversationPatches + public class ConversationPatches : QSBPatch { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public static void StartConversation(CharacterDialogueTree __instance) { var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); @@ -98,7 +100,7 @@ public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) return false; } - public static void AddPatches() + public override void DoPatches() { QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index a76e03050..917722ce1 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -3,8 +3,10 @@ namespace QSB.DeathSync { - public static class DeathPatches + public class DeathPatches : QSBPatch { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public static bool PreFinishDeathSequence(DeathType deathType) { if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) @@ -25,11 +27,10 @@ public static void BroadcastDeath(DeathType deathType) GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); } - public static void DoPatches() + public override void DoPatches() { QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); } - } } \ No newline at end of file diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index eff4136de..9f8eade3b 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -15,7 +15,6 @@ private void Awake() { Instance = this; QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(ElevatorPatches.StartLift)); } private void OnSceneLoaded(OWScene scene, bool isInUniverse) diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 206892c52..779e83c28 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -3,8 +3,10 @@ namespace QSB.ElevatorSync { - public static class ElevatorPatches + public class ElevatorPatches : QSBPatch { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public static void StartLift(Elevator __instance) { var isGoingUp = __instance.GetValue("_goingToTheEnd"); @@ -12,5 +14,10 @@ public static void StartLift(Elevator __instance) var id = ElevatorManager.Instance.GetId(__instance); GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, direction); } + + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); + } } } diff --git a/QSB/Events/EventList.cs b/QSB/Events/QSBEventManager.cs similarity index 90% rename from QSB/Events/EventList.cs rename to QSB/Events/QSBEventManager.cs index eb48d3515..03708e71b 100644 --- a/QSB/Events/EventList.cs +++ b/QSB/Events/QSBEventManager.cs @@ -1,4 +1,5 @@ -using QSB.Animation; +using OWML.Common; +using QSB.Animation; using QSB.Animation.Events; using QSB.ConversationSync.Events; using QSB.DeathSync.Events; @@ -9,11 +10,12 @@ using QSB.TimeSync.Events; using QSB.Tools.Events; using QSB.TransformSync; +using QSB.Utility; using System.Collections.Generic; namespace QSB.Events { - public static class EventList + public static class QSBEventManager { public static bool Ready { get; private set; } @@ -49,6 +51,8 @@ public static void Init() _eventList.ForEach(ev => ev.SetupListener()); Ready = true; + + DebugLog.DebugWrite($"Event manager ready.", MessageType.Success); } public static void Reset() diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 692933d60..620135d25 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -4,8 +4,10 @@ namespace QSB.OrbSync { - public static class OrbPatches + public class OrbPatches : QSBPatch { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) { if (__result) @@ -52,7 +54,7 @@ public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __ins return false; } - public static void AddPatches() + public override void DoPatches() { QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs new file mode 100644 index 000000000..d5019ed02 --- /dev/null +++ b/QSB/Patches/QSBPatch.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB +{ + public abstract class QSBPatch + { + public abstract QSBPatchTypes Type { get; } + + public abstract void DoPatches(); + } +} diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs new file mode 100644 index 000000000..1541ab2a6 --- /dev/null +++ b/QSB/Patches/QSBPatchManager.cs @@ -0,0 +1,45 @@ +using OWML.Common; +using QSB.ConversationSync; +using QSB.DeathSync; +using QSB.ElevatorSync; +using QSB.OrbSync; +using QSB.TimeSync; +using QSB.Tools; +using QSB.Utility; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.Patches +{ + public static class QSBPatchManager + { + public static List _patchList = new List(); + + public static void Init() + { + _patchList = new List + { + new ConversationPatches(), + new DeathPatches(), + new ElevatorPatches(), + new OrbPatches(), + new WakeUpPatches(), + new ProbePatches() + }; + + DebugLog.DebugWrite($"Patch manager ready.", MessageType.Success); + } + + public static void DoPatchType(QSBPatchTypes type) + { + DebugLog.DebugWrite($"Setting up patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); + foreach (var patch in _patchList.Where(x => x.Type == type)) + { + DebugLog.DebugWrite($" - Doing patches for {patch.GetType().Name}", MessageType.Info); + patch.DoPatches(); + } + } + } +} diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs new file mode 100644 index 000000000..1271a38c0 --- /dev/null +++ b/QSB/Patches/QSBPatchTypes.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB +{ + public enum QSBPatchTypes + { + OnModStart, + OnClientConnect, + OnNonServerClientConnect + } +} diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 17f7ba3ba..03df32c93 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -6,9 +6,11 @@ using QSB.GeyserSync; using QSB.Instruments; using QSB.OrbSync; +using QSB.Patches; using QSB.Tools; using QSB.TransformSync; using QSB.Utility; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; @@ -36,8 +38,9 @@ private void Start() NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); DebugLog.LogState("NetworkBundle", NetworkAssetBundle); - ProbePatches.DoPatches(); - DeathPatches.DoPatches(); + QSBPatchManager.Init(); + + QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); // Turns out these are very finicky about what order they go. QSBNetworkManager seems to // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 22ef6e16e..37cdc6e4f 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -160,8 +160,11 @@ + + + @@ -198,7 +201,7 @@ - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 5a7265be7..13bf29d50 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -7,6 +7,7 @@ using QSB.Events; using QSB.GeyserSync; using QSB.OrbSync; +using QSB.Patches; using QSB.TimeSync; using QSB.TransformSync; using QSB.Utility; @@ -145,24 +146,22 @@ public override void OnClientConnect(NetworkConnection connection) // Called on if (NetworkClient.active && !NetworkServer.active) { - GeyserManager.Instance.EmptyUpdate(); - WakeUpPatches.AddPatches(); + QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); } - OrbPatches.AddPatches(); - ConversationPatches.AddPatches(); + QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); _lobby.CanEditName = false; OnNetworkManagerReady?.Invoke(); IsReady = true; - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, EventList.Init); + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); - QSB.Helper.Events.Unity.RunWhen(() => EventList.Ready, + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); - QSB.Helper.Events.Unity.RunWhen(() => EventList.Ready, + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); } @@ -172,7 +171,7 @@ public override void OnStopClient() // Called on the client when closing connect Destroy(GetComponent()); Destroy(GetComponent()); Destroy(GetComponent()); - EventList.Reset(); + QSBEventManager.Reset(); PlayerRegistry.PlayerList.ForEach(player => player.HudMarker?.Remove()); foreach (var player in PlayerRegistry.PlayerList) @@ -215,7 +214,7 @@ public override void OnStopServer() Destroy(GetComponent()); Destroy(GetComponent()); Destroy(GetComponent()); - EventList.Reset(); + QSBEventManager.Reset(); DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); PlayerRegistry.PlayerList.ForEach(player => player.HudMarker?.Remove()); NetworkServer.connections.ToList().ForEach(CleanupConnection); diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index d934dc8a4..8bd2bffaf 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -2,12 +2,9 @@ namespace QSB.TimeSync { - public static class WakeUpPatches + public class WakeUpPatches : QSBPatch { - public static void AddPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); - } + public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) { @@ -17,5 +14,10 @@ public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __in } return false; } + + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); + } } } diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs index 60fed631c..baa615e43 100644 --- a/QSB/Tools/ProbePatches.cs +++ b/QSB/Tools/ProbePatches.cs @@ -2,8 +2,10 @@ namespace QSB.Tools { - public static class ProbePatches + public class ProbePatches : QSBPatch { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + private static void ProbeAnchor() { GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); @@ -18,7 +20,7 @@ private static bool ProbeWarp(ref bool ____isRetrieving) return true; } - public static void DoPatches() + public override void DoPatches() { QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); From 5e9e1a72418daf037565d7c62829126ea70db3e5 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:18:40 +0000 Subject: [PATCH 039/207] cleanup --- QSB/Animation/AnimationSync.cs | 2 +- QSB/Animation/Events/AnimTriggerEvent.cs | 2 +- QSB/Animation/PlayerSuitEvent.cs | 4 ++-- QSB/ConversationSync/ConversationManager.cs | 16 ++++++------- QSB/ConversationSync/ConversationPatches.cs | 16 ++++++------- .../Events/ConversationEvent.cs | 2 +- .../Events/ConversationStartEndEvent.cs | 6 ++--- QSB/DeathSync/Events/PlayerDeathEvent.cs | 2 +- QSB/ElevatorSync/ElevatorDirection.cs | 8 ------- QSB/ElevatorSync/ElevatorPatches.cs | 3 +-- QSB/ElevatorSync/Events/ElevatorEvent.cs | 16 ++++++------- QSB/ElevatorSync/Events/ElevatorMessage.cs | 22 ----------------- QSB/ElevatorSync/QSBElevator.cs | 6 ++--- QSB/Events/PlayerJoinEvent.cs | 4 ++-- QSB/Events/PlayerLeaveEvent.cs | 6 ++--- QSB/Events/PlayerReadyEvent.cs | 6 ++--- QSB/Events/PlayerState.cs | 8 +++---- QSB/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/Events/QSBEvent.cs | 8 +++---- QSB/Instruments/Events/PlayInstrumentEvent.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 4 ++-- QSB/PlayerInfo.cs | 4 ++-- QSB/PlayerSyncObject.cs | 2 +- QSB/QSB.csproj | 4 +--- QSB/QSBNetworkManager.cs | 24 +++++++++---------- ...{PlayerRegistry.cs => QSBPlayerManager.cs} | 2 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 4 ++-- QSB/Tools/Events/PlayerProbeEvent.cs | 4 ++-- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 4 ++-- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 4 ++-- QSB/Tools/Events/PlayerTranslatorEvent.cs | 4 ++-- QSB/TransformSync/PlayerCameraSync.cs | 2 +- QSB/TransformSync/PlayerProbeSync.cs | 2 +- QSB/TransformSync/PlayerSectorEvent.cs | 2 +- QSB/TransformSync/PlayerTransformSync.cs | 2 +- QSB/TransformSync/SectorSync.cs | 2 +- QSB/TransformSync/ShipTransformSync.cs | 2 +- QSB/TransformSync/TransformSync.cs | 2 +- 38 files changed, 91 insertions(+), 124 deletions(-) delete mode 100644 QSB/ElevatorSync/ElevatorDirection.cs delete mode 100644 QSB/ElevatorSync/Events/ElevatorMessage.cs rename QSB/{PlayerRegistry.cs => QSBPlayerManager.cs} (99%) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index a028d493f..8e7fd5684 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -56,7 +56,7 @@ private void InitCommon(Transform body) mirror.Init(_anim, _bodyAnim); } - PlayerRegistry.PlayerSyncObjects.Add(this); + QSBPlayerManager.PlayerSyncObjects.Add(this); for (var i = 0; i < _anim.parameterCount; i++) { diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs index 4f6b4868f..573b85426 100644 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -22,7 +22,7 @@ public class AnimTriggerEvent : QSBEvent public override void OnReceiveRemote(AnimTriggerMessage message) { - var animationSync = PlayerRegistry.GetSyncObject(message.AboutId); + var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); if (animationSync == null) { return; diff --git a/QSB/Animation/PlayerSuitEvent.cs b/QSB/Animation/PlayerSuitEvent.cs index 46ea8093c..e1f0f2ad7 100644 --- a/QSB/Animation/PlayerSuitEvent.cs +++ b/QSB/Animation/PlayerSuitEvent.cs @@ -30,13 +30,13 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { - PlayerRegistry.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); + QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); } } } diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 0b3ef1f72..63ab2a723 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -38,19 +38,19 @@ private void Start() public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) { var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); - if (!PlayerRegistry.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) + if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) { // No player talking to tree return uint.MaxValue; } // .First() should be fine here as only one player should be talking to a character. - return PlayerRegistry.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; } public void SendPlayerOption(string text) { GlobalMessenger - .FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, text, ConversationType.Player); + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); } public void SendCharacterDialogue(int id, string text) @@ -67,7 +67,7 @@ public void SendCharacterDialogue(int id, string text) public void CloseBoxPlayer() { GlobalMessenger - .FireEvent(EventNames.QSBConversation, PlayerRegistry.LocalPlayerId, "", ConversationType.ClosePlayer); + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); } public void CloseBoxCharacter(int id) @@ -84,18 +84,18 @@ public void SendConvState(int charId, bool state) return; } GlobalMessenger - .FireEvent(EventNames.QSBConversationStartEnd, charId, PlayerRegistry.LocalPlayerId, state); + .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); } public void DisplayPlayerConversationBox(uint playerId, string text) { - if (playerId == PlayerRegistry.LocalPlayerId) + if (playerId == QSBPlayerManager.LocalPlayerId) { DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); return; } - var player = PlayerRegistry.GetPlayer(playerId); + var player = QSBPlayerManager.GetPlayer(playerId); // Destroy old box if it exists var playerBox = player.CurrentDialogueBox; @@ -104,7 +104,7 @@ public void DisplayPlayerConversationBox(uint playerId, string text) Destroy(playerBox); } - PlayerRegistry.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); } public void DisplayCharacterConversationBox(int index, string text) diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index b2e729b8b..6e7125b25 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -17,7 +17,7 @@ public static void StartConversation(CharacterDialogueTree __instance) { DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); } - PlayerRegistry.LocalPlayer.CurrentDialogueID = index; + QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; ConversationManager.Instance.SendConvState(index, true); } @@ -27,14 +27,14 @@ public static bool EndConversation(CharacterDialogueTree __instance) { return false; } - if (PlayerRegistry.LocalPlayer.CurrentDialogueID == -1) + if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) { DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); return false; } - ConversationManager.Instance.SendConvState(PlayerRegistry.LocalPlayer.CurrentDialogueID, false); - ConversationManager.Instance.CloseBoxCharacter(PlayerRegistry.LocalPlayer.CurrentDialogueID); - PlayerRegistry.LocalPlayer.CurrentDialogueID = -1; + ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); + ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); + QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; ConversationManager.Instance.CloseBoxPlayer(); return true; } @@ -57,8 +57,8 @@ public static void GetNextPage(string ____name, List ____listPagesToDisp { var key = ____name + ____listPagesToDisplay[____currentPage]; // Sending key so translation can be done on client side - should make different language-d clients compatible - QSB.Helper.Events.Unity.RunWhen(() => PlayerRegistry.LocalPlayer.CurrentDialogueID != -1, - () => ConversationManager.Instance.SendCharacterDialogue(PlayerRegistry.LocalPlayer.CurrentDialogueID, key)); + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, + () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); } public static bool OnAnimatorIK(float ___headTrackingWeight, @@ -80,7 +80,7 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, } else { - position = PlayerRegistry.GetPlayer(playerId).Camera.transform.position; + position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; } float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index b07281e25..282f0f52b 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -42,7 +42,7 @@ public override void OnReceiveRemote(ConversationMessage message) UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); break; case ConversationType.ClosePlayer: - UnityEngine.Object.Destroy(PlayerRegistry.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); + UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); break; } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 157006aa5..a7552750e 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -42,7 +42,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) if (message.State) { // Start talking - PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; animController.SetValue("_inConversation", true); animController.SetValue("_playerInHeadZone", true); if (animController.GetValue("_hasTalkAnimation")) @@ -54,7 +54,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) else { // Stop talking - PlayerRegistry.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; animController.SetValue("_inConversation", false); animController.SetValue("_playerInHeadZone", false); if (animController.GetValue("_hasTalkAnimation")) @@ -72,7 +72,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) if (message.State) { DebugLog.DebugWrite("start convo faceplayer for " + message.CharacterId); - qsbFacePlayer.StartConversation(PlayerRegistry.GetPlayer(message.PlayerId).Body.transform.position); + qsbFacePlayer.StartConversation(QSBPlayerManager.GetPlayer(message.PlayerId).Body.transform.position); } else { diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index a6ca81e8f..930e32354 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -22,7 +22,7 @@ public class PlayerDeathEvent : QSBEvent public override void OnReceiveRemote(PlayerDeathMessage message) { - var playerName = PlayerRegistry.GetPlayer(message.AboutId).Name; + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; var deathMessage = Necronomicon.GetPhrase(message.DeathType); DebugLog.ToAll(string.Format(deathMessage, playerName)); } diff --git a/QSB/ElevatorSync/ElevatorDirection.cs b/QSB/ElevatorSync/ElevatorDirection.cs deleted file mode 100644 index fe373914c..000000000 --- a/QSB/ElevatorSync/ElevatorDirection.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace QSB.ElevatorSync -{ - public enum ElevatorDirection - { - Up, - Down - } -} diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 779e83c28..af3722a13 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -10,9 +10,8 @@ public class ElevatorPatches : QSBPatch public static void StartLift(Elevator __instance) { var isGoingUp = __instance.GetValue("_goingToTheEnd"); - var direction = isGoingUp ? ElevatorDirection.Up : ElevatorDirection.Down; var id = ElevatorManager.Instance.GetId(__instance); - GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, direction); + GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); } public override void DoPatches() diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index b38100a24..a0d446166 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -4,26 +4,26 @@ namespace QSB.ElevatorSync.Events { - public class ElevatorEvent : QSBEvent + public class ElevatorEvent : QSBEvent { public override EventType Type => EventType.Elevator; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); - private void Handler(int id, ElevatorDirection direction) => SendEvent(CreateMessage(id, direction)); + private void Handler(int id, bool direction) => SendEvent(CreateMessage(id, direction)); - private ElevatorMessage CreateMessage(int id, ElevatorDirection direction) => new ElevatorMessage + private BoolWorldObjectMessage CreateMessage(int id, bool direction) => new BoolWorldObjectMessage { - Direction = direction, + State = direction, ObjectId = id }; - public override void OnReceiveRemote(ElevatorMessage message) + public override void OnReceiveRemote(BoolWorldObjectMessage message) { var elevator = WorldRegistry.GetObject(message.ObjectId); - elevator?.RemoteCall(message.Direction); + elevator?.RemoteCall(message.State); } } } diff --git a/QSB/ElevatorSync/Events/ElevatorMessage.cs b/QSB/ElevatorSync/Events/ElevatorMessage.cs deleted file mode 100644 index 005e9cd85..000000000 --- a/QSB/ElevatorSync/Events/ElevatorMessage.cs +++ /dev/null @@ -1,22 +0,0 @@ -using QSB.WorldSync; -using UnityEngine.Networking; - -namespace QSB.ElevatorSync.Events -{ - public class ElevatorMessage : WorldObjectMessage - { - public ElevatorDirection Direction { get; set; } - - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Direction = (ElevatorDirection)reader.ReadInt32(); - } - - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write((int)Direction); - } - } -} diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index 9a23999b8..2d442c23d 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -30,15 +30,15 @@ private void InitValues() _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); } - public void RemoteCall(ElevatorDirection direction) + public void RemoteCall(bool direction) { SetDirection(direction); RemoteStartLift(); } - private void SetDirection(ElevatorDirection direction) + private void SetDirection(bool direction) { - var isGoingUp = direction == ElevatorDirection.Up; + var isGoingUp = direction; var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; _elevator.SetValue("_goingToTheEnd", isGoingUp); _elevator.SetValue("_targetLocalPos", targetPos); diff --git a/QSB/Events/PlayerJoinEvent.cs b/QSB/Events/PlayerJoinEvent.cs index efd6e8ffb..a3e343a29 100644 --- a/QSB/Events/PlayerJoinEvent.cs +++ b/QSB/Events/PlayerJoinEvent.cs @@ -22,7 +22,7 @@ public class PlayerJoinEvent : QSBEvent public override void OnReceiveRemote(PlayerJoinMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player.Name = message.PlayerName; DebugLog.ToHud($"{player.Name} joined!"); DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); @@ -30,7 +30,7 @@ public override void OnReceiveRemote(PlayerJoinMessage message) public override void OnReceiveLocal(PlayerJoinMessage message) { - var player = PlayerRegistry.GetPlayer(PlayerRegistry.LocalPlayerId); + var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); player.Name = message.PlayerName; var text = $"Connected to server as {player.Name}."; DebugLog.ToAll(text, MessageType.Info); diff --git a/QSB/Events/PlayerLeaveEvent.cs b/QSB/Events/PlayerLeaveEvent.cs index e9682b6d0..61b6ffc7a 100644 --- a/QSB/Events/PlayerLeaveEvent.cs +++ b/QSB/Events/PlayerLeaveEvent.cs @@ -23,10 +23,10 @@ public class PlayerLeaveEvent : QSBEvent public override void OnReceiveRemote(PlayerLeaveMessage message) { - var playerName = PlayerRegistry.GetPlayer(message.AboutId).Name; + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); - PlayerRegistry.GetPlayer(message.AboutId).HudMarker?.Remove(); - PlayerRegistry.RemovePlayer(message.AboutId); + QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(message.AboutId); message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); } } diff --git a/QSB/Events/PlayerReadyEvent.cs b/QSB/Events/PlayerReadyEvent.cs index 30f693ee3..b307d4b68 100644 --- a/QSB/Events/PlayerReadyEvent.cs +++ b/QSB/Events/PlayerReadyEvent.cs @@ -25,18 +25,18 @@ public class PlayerReadyEvent : QSBEvent public override void OnServerReceive(ToggleMessage message) { DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); - if (message.FromId == PlayerRegistry.LocalPlayerId) + if (message.FromId == QSBPlayerManager.LocalPlayerId) { return; } - PlayerRegistry.GetPlayer(message.AboutId).IsReady = message.ToggleValue; + QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; PlayerState.LocalInstance.Send(); } public override void OnReceiveRemote(ToggleMessage message) { DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - foreach (var item in PlayerRegistry.GetSyncObjects() + foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) { GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); diff --git a/QSB/Events/PlayerState.cs b/QSB/Events/PlayerState.cs index 8d0aba0d2..0b9b9d351 100644 --- a/QSB/Events/PlayerState.cs +++ b/QSB/Events/PlayerState.cs @@ -19,18 +19,18 @@ private void Awake() private void OnClientReceiveMessage(PlayerStateMessage message) { - if (message.AboutId == PlayerRegistry.LocalPlayerId) + if (message.AboutId == QSBPlayerManager.LocalPlayerId) { return; } QSB.Helper.Events.Unity.RunWhen( - () => PlayerRegistry.GetSyncObject(message.AboutId) != null, - () => PlayerRegistry.HandleFullStateMessage(message)); + () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, + () => QSBPlayerManager.HandleFullStateMessage(message)); } public void Send() { - foreach (var player in PlayerRegistry.PlayerList) + foreach (var player in QSBPlayerManager.PlayerList) { var message = new PlayerStateMessage { diff --git a/QSB/Events/PlayerStatesRequestEvent.cs b/QSB/Events/PlayerStatesRequestEvent.cs index ff461bd0d..13c5f7c6c 100644 --- a/QSB/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Events/PlayerStatesRequestEvent.cs @@ -24,7 +24,7 @@ public override void OnServerReceive(PlayerMessage message) { DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); PlayerState.LocalInstance.Send(); - foreach (var item in PlayerRegistry.GetSyncObjects() + foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) { GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index 3e26a8891..b9c5e5aa9 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -11,7 +11,7 @@ namespace QSB.Events public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() { public abstract EventType Type { get; } - public uint LocalPlayerId => PlayerRegistry.LocalPlayerId; + public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; private readonly MessageHandler _eventHandler; protected QSBEvent() @@ -58,7 +58,7 @@ public virtual void OnServerReceive(T message) public void SendEvent(T message) { - message.FromId = PlayerRegistry.LocalPlayerId; + message.FromId = QSBPlayerManager.LocalPlayerId; QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); } @@ -76,8 +76,8 @@ private void Send(T message) private void OnClientReceive(T message) { - if (message.FromId == PlayerRegistry.LocalPlayerId || - PlayerRegistry.IsBelongingToLocalPlayer(message.AboutId)) + if (message.FromId == QSBPlayerManager.LocalPlayerId || + QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { OnReceiveLocal(message); return; diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs index d3bdff0bb..f99c76e77 100644 --- a/QSB/Instruments/Events/PlayInstrumentEvent.cs +++ b/QSB/Instruments/Events/PlayInstrumentEvent.cs @@ -23,7 +23,7 @@ public class PlayInstrumentEvent : QSBEvent public override void OnReceiveRemote(PlayInstrumentMessage message) { - PlayerRegistry.GetPlayer(message.AboutId).CurrentInstrument = message.Type; + QSBPlayerManager.GetPlayer(message.AboutId).CurrentInstrument = message.Type; DebugLog.DebugWrite($"Player ID {message.AboutId} now playing instrument {Enum.GetName(typeof(InstrumentType), message.Type)}"); } } diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 3c6474331..9ef323fa6 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -35,7 +35,7 @@ private void Update() { if (Input.GetKeyDown(KeyCode.Keypad9)) { - if (!PlayerRegistry.LocalPlayer.PlayingInstrument) + if (!QSBPlayerManager.LocalPlayer.PlayingInstrument) { CameraManager.Instance.SwitchTo3rdPerson(); SwitchToInstrument(InstrumentType.RIEBECK); @@ -53,7 +53,7 @@ private void Update() public void SwitchToInstrument(InstrumentType type) { - PlayerRegistry.LocalPlayer.CurrentInstrument = type; + QSBPlayerManager.LocalPlayer.CurrentInstrument = type; GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, type); } } diff --git a/QSB/PlayerInfo.cs b/QSB/PlayerInfo.cs index 6c18d0b18..0a8780adb 100644 --- a/QSB/PlayerInfo.cs +++ b/QSB/PlayerInfo.cs @@ -67,8 +67,8 @@ public void UpdateStateObjects() Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); - QSB.Helper.Events.Unity.RunWhen(() => PlayerRegistry.GetSyncObject(PlayerId) != null, - () => PlayerRegistry.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, + () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); } public bool GetState(State state) diff --git a/QSB/PlayerSyncObject.cs b/QSB/PlayerSyncObject.cs index 142867a12..dd896b311 100644 --- a/QSB/PlayerSyncObject.cs +++ b/QSB/PlayerSyncObject.cs @@ -7,6 +7,6 @@ public abstract class PlayerSyncObject : NetworkBehaviour public uint AttachedNetId => GetComponent()?.netId.Value ?? uint.MaxValue; public uint PlayerId => this.GetPlayerOfObject(); public uint PreviousPlayerId { get; set; } - public PlayerInfo Player => PlayerRegistry.GetPlayer(PlayerId); + public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); } } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 37cdc6e4f..94556aebd 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -139,11 +139,9 @@ - - @@ -213,7 +211,7 @@ - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 13bf29d50..d41250d24 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -172,13 +172,13 @@ public override void OnStopClient() // Called on the client when closing connect Destroy(GetComponent()); Destroy(GetComponent()); QSBEventManager.Reset(); - PlayerRegistry.PlayerList.ForEach(player => player.HudMarker?.Remove()); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - foreach (var player in PlayerRegistry.PlayerList) + foreach (var player in QSBPlayerManager.PlayerList) { - PlayerRegistry.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); + QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); } - PlayerRegistry.RemoveAllPlayers(); + QSBPlayerManager.RemoveAllPlayers(); WorldRegistry.RemoveObjects(); WorldRegistry.RemoveObjects(); @@ -205,7 +205,7 @@ public override void OnServerDisconnect(NetworkConnection connection) // Called } } - PlayerRegistry.GetPlayer(playerId).HudMarker?.Remove(); + QSBPlayerManager.GetPlayer(playerId).HudMarker?.Remove(); CleanupConnection(connection); } @@ -216,7 +216,7 @@ public override void OnStopServer() Destroy(GetComponent()); QSBEventManager.Reset(); DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); - PlayerRegistry.PlayerList.ForEach(player => player.HudMarker?.Remove()); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); NetworkServer.connections.ToList().ForEach(CleanupConnection); WorldRegistry.RemoveObjects(); @@ -239,13 +239,13 @@ private void CleanupConnection(NetworkConnection connection) DebugLog.ToConsole("Error when getting playerId in CleanupConnection: " + ex.Message, MessageType.Error); return; } - if (!PlayerRegistry.PlayerExists(playerId)) + if (!QSBPlayerManager.PlayerExists(playerId)) { return; } - var playerName = PlayerRegistry.GetPlayer(playerId).Name; + var playerName = QSBPlayerManager.GetPlayer(playerId).Name; DebugLog.ToConsole($"{playerName} disconnected.", MessageType.Info); - PlayerRegistry.RemovePlayer(playerId); + QSBPlayerManager.RemovePlayer(playerId); var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); netIds.ForEach(CleanupNetworkBehaviour); @@ -264,8 +264,8 @@ public void CleanupNetworkBehaviour(uint netId) if (transformSync != null) { DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); - PlayerRegistry.PlayerSyncObjects.Remove(transformSync); - if (transformSync.SyncedTransform != null && netId != PlayerRegistry.LocalPlayerId && !networkBehaviour.hasAuthority) + QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); + if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.hasAuthority) { DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); Destroy(transformSync.SyncedTransform.gameObject); @@ -277,7 +277,7 @@ public void CleanupNetworkBehaviour(uint netId) if (animationSync != null) { DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); - PlayerRegistry.PlayerSyncObjects.Remove(animationSync); + QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); } if (!networkBehaviour.hasAuthority) diff --git a/QSB/PlayerRegistry.cs b/QSB/QSBPlayerManager.cs similarity index 99% rename from QSB/PlayerRegistry.cs rename to QSB/QSBPlayerManager.cs index a8783670d..890e4c4d2 100644 --- a/QSB/PlayerRegistry.cs +++ b/QSB/QSBPlayerManager.cs @@ -9,7 +9,7 @@ namespace QSB { - public static class PlayerRegistry + public static class QSBPlayerManager { public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.netId.Value ?? uint.MaxValue; public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 3ca1d9e0d..9cf57fa64 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.Flashlight, message.ToggleValue); player.FlashLight?.UpdateState(message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { - PlayerRegistry.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); + QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); } } } diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index f131df0b8..d88bc263a 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.ProbeActive, message.ToggleValue); player.Probe?.SetState(message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { - PlayerRegistry.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); } } } diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 54c3a3ac8..2d318fad3 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.ProbeLauncher, message.ToggleValue); player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { - PlayerRegistry.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); } } } diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 728807e52..cc9ac372e 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.Signalscope, message.ToggleValue); player.Signalscope?.ChangeEquipState(message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { - PlayerRegistry.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); + QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); } } } diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 54df0c848..daf0fbd28 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - var player = PlayerRegistry.GetPlayer(message.AboutId); + var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.Translator, message.ToggleValue); player.Translator?.ChangeEquipState(message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { - PlayerRegistry.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); + QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); } } } diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 3dab13d1b..b05f08682 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -41,7 +41,7 @@ protected override Transform InitRemoteTransform() public override bool IsReady => Locator.GetPlayerTransform() != null && Player != null - && PlayerRegistry.PlayerExists(Player.PlayerId) + && QSBPlayerManager.PlayerExists(Player.PlayerId) && netId.Value != uint.MaxValue && netId.Value != 0U; } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index c7724f3b8..e3cf8a6b3 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -97,7 +97,7 @@ protected override void UpdateTransform() public override bool IsReady => Locator.GetProbe() != null && Player != null - && PlayerRegistry.PlayerExists(Player.PlayerId) + && QSBPlayerManager.PlayerExists(Player.PlayerId) && Player.IsReady && netId.Value != uint.MaxValue && netId.Value != 0U; diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/TransformSync/PlayerSectorEvent.cs index 9bb90ea22..3bfd683f1 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/TransformSync/PlayerSectorEvent.cs @@ -42,7 +42,7 @@ public override void OnReceiveRemote(WorldObjectMessage message) return; } - var transformSync = PlayerRegistry.GetSyncObject(message.AboutId); + var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, () => transformSync?.SetReferenceSector(sector)); diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index b680c5937..ef618362f 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -49,7 +49,7 @@ protected override Transform InitRemoteTransform() public override bool IsReady => Locator.GetPlayerTransform() != null && Player != null - && PlayerRegistry.PlayerExists(Player.PlayerId) + && QSBPlayerManager.PlayerExists(Player.PlayerId) && Player.IsReady && netId.Value != uint.MaxValue && netId.Value != 0U; diff --git a/QSB/TransformSync/SectorSync.cs b/QSB/TransformSync/SectorSync.cs index c5a9e8c35..1be541478 100644 --- a/QSB/TransformSync/SectorSync.cs +++ b/QSB/TransformSync/SectorSync.cs @@ -20,7 +20,7 @@ private void Update() { return; } - PlayerRegistry.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); + QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); _checkTimer = 0; } diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 9a2350c48..d7ba19368 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -51,7 +51,7 @@ protected override Transform InitRemoteTransform() public override bool IsReady => GetShipModel() != null && Player != null - && PlayerRegistry.PlayerExists(Player.PlayerId) + && QSBPlayerManager.PlayerExists(Player.PlayerId) && Player.IsReady && netId.Value != uint.MaxValue && netId.Value != 0U; diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 718de71f8..ff506ebff 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -22,7 +22,7 @@ public abstract class TransformSync : PlayerSyncObject protected virtual void Awake() { DebugLog.DebugWrite($"Awake of {AttachedNetId} ({GetType().Name})"); - PlayerRegistry.PlayerSyncObjects.Add(this); + QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } From 093c594ba887f1784949218dee70e9b199b2cf9d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:21:02 +0000 Subject: [PATCH 040/207] cleanup --- QSB/Patches/QSBPatch.cs | 7 +------ QSB/Patches/QSBPatchManager.cs | 1 - QSB/Patches/QSBPatchTypes.cs | 7 +------ QSB/QSB.cs | 3 --- 4 files changed, 2 insertions(+), 16 deletions(-) diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index d5019ed02..bafc9edbf 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB +namespace QSB { public abstract class QSBPatch { diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 1541ab2a6..2122ce370 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -9,7 +9,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; namespace QSB.Patches { diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 1271a38c0..53ff573de 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB +namespace QSB { public enum QSBPatchTypes { diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 03df32c93..cff821cb5 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -1,16 +1,13 @@ using OWML.Common; using OWML.ModHelper; using QSB.ConversationSync; -using QSB.DeathSync; using QSB.ElevatorSync; using QSB.GeyserSync; using QSB.Instruments; using QSB.OrbSync; using QSB.Patches; -using QSB.Tools; using QSB.TransformSync; using QSB.Utility; -using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; From 3249ce33afb8336f2cbc302759d0da459ecb84c7 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:33:48 +0000 Subject: [PATCH 041/207] cleanup... --- QSB/Animation/AnimationSync.cs | 1 + QSB/Animation/Events/AnimTriggerEvent.cs | 1 + QSB/Animation/{ => Events}/PlayerSuitEvent.cs | 1 + QSB/ConversationSync/ConversationManager.cs | 1 + QSB/ConversationSync/ConversationPatches.cs | 1 + .../Events/ConversationEvent.cs | 1 + .../Events/ConversationStartEndEvent.cs | 1 + QSB/DeathSync/Events/PlayerDeathEvent.cs | 1 + .../{PlayerState.cs => PlayerStateEvent.cs} | 6 +++-- QSB/Events/QSBEvent.cs | 1 + QSB/Events/QSBEventManager.cs | 1 + QSB/Instruments/Events/PlayInstrumentEvent.cs | 1 + QSB/Instruments/InstrumentsManager.cs | 1 + QSB/{ => Player}/Events/PlayerJoinEvent.cs | 3 ++- .../Events}/PlayerJoinMessage.cs | 5 ++-- QSB/{ => Player}/Events/PlayerLeaveEvent.cs | 3 ++- .../Events}/PlayerLeaveMessage.cs | 5 ++-- QSB/{ => Player}/Events/PlayerReadyEvent.cs | 5 ++-- .../Events}/PlayerStateMessage.cs | 5 ++-- .../Events/PlayerStatesRequestEvent.cs | 7 ++--- QSB/{ => Player}/PlayerInfo.cs | 2 +- QSB/{ => Player}/PlayerSyncObject.cs | 2 +- QSB/{ => Player}/QSBPlayerManager.cs | 3 ++- QSB/{ => Player}/State.cs | 2 +- QSB/QSB.csproj | 26 +++++++++---------- QSB/QSBNetworkManager.cs | 3 ++- QSB/Tools/Events/PlayerFlashlightEvent.cs | 1 + QSB/Tools/Events/PlayerProbeEvent.cs | 1 + QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 1 + QSB/Tools/Events/PlayerSignalscopeEvent.cs | 1 + QSB/Tools/Events/PlayerTranslatorEvent.cs | 1 + QSB/Tools/PlayerToolsManager.cs | 1 + QSB/TransformSync/PlayerCameraSync.cs | 1 + QSB/TransformSync/PlayerHUDMarker.cs | 3 ++- QSB/TransformSync/PlayerProbeSync.cs | 1 + QSB/TransformSync/PlayerSectorEvent.cs | 1 + QSB/TransformSync/PlayerTransformSync.cs | 1 + QSB/TransformSync/SectorSync.cs | 1 + QSB/TransformSync/ShipTransformSync.cs | 3 ++- QSB/TransformSync/TransformSync.cs | 1 + 40 files changed, 72 insertions(+), 35 deletions(-) rename QSB/Animation/{ => Events}/PlayerSuitEvent.cs (98%) rename QSB/Events/{PlayerState.cs => PlayerStateEvent.cs} (88%) rename QSB/{ => Player}/Events/PlayerJoinEvent.cs (96%) rename QSB/{Messaging => Player/Events}/PlayerJoinMessage.cs (84%) rename QSB/{ => Player}/Events/PlayerLeaveEvent.cs (96%) rename QSB/{Messaging => Player/Events}/PlayerLeaveMessage.cs (89%) rename QSB/{ => Player}/Events/PlayerReadyEvent.cs (94%) rename QSB/{Messaging => Player/Events}/PlayerStateMessage.cs (92%) rename QSB/{ => Player}/Events/PlayerStatesRequestEvent.cs (90%) rename QSB/{ => Player}/PlayerInfo.cs (99%) rename QSB/{ => Player}/PlayerSyncObject.cs (94%) rename QSB/{ => Player}/QSBPlayerManager.cs (99%) rename QSB/{ => Player}/State.cs (93%) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 8e7fd5684..736b8ba2b 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,5 +1,6 @@ using OWML.ModHelper.Events; using QSB.Events; +using QSB.Player; using System; using System.Linq; using UnityEngine; diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs index 573b85426..52ca352a6 100644 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Animation.Events { diff --git a/QSB/Animation/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs similarity index 98% rename from QSB/Animation/PlayerSuitEvent.cs rename to QSB/Animation/Events/PlayerSuitEvent.cs index e1f0f2ad7..481a20b82 100644 --- a/QSB/Animation/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Animation { diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 63ab2a723..083561805 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,6 +1,7 @@ using OWML.Common; using OWML.ModHelper.Events; using QSB.Events; +using QSB.Player; using QSB.Utility; using QSB.WorldSync; using System.Collections.Generic; diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 6e7125b25..8b77d4441 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -1,4 +1,5 @@ using OWML.Common; +using QSB.Player; using QSB.Utility; using QSB.WorldSync; using System.Collections.Generic; diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 282f0f52b..284f42530 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; using QSB.WorldSync; namespace QSB.ConversationSync.Events diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index a7552750e..8743f77fc 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -1,6 +1,7 @@ using OWML.Common; using OWML.ModHelper.Events; using QSB.Events; +using QSB.Player; using QSB.Utility; using QSB.WorldSync; using System.Linq; diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 930e32354..8119caa57 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; using QSB.Utility; namespace QSB.DeathSync.Events diff --git a/QSB/Events/PlayerState.cs b/QSB/Events/PlayerStateEvent.cs similarity index 88% rename from QSB/Events/PlayerState.cs rename to QSB/Events/PlayerStateEvent.cs index 0b9b9d351..692dede05 100644 --- a/QSB/Events/PlayerState.cs +++ b/QSB/Events/PlayerStateEvent.cs @@ -1,11 +1,13 @@ using QSB.Messaging; +using QSB.Player; +using QSB.Player.Events; using UnityEngine.Networking; namespace QSB.Events { - public class PlayerState : NetworkBehaviour + public class PlayerStateEvent : NetworkBehaviour { - public static PlayerState LocalInstance { get; private set; } + public static PlayerStateEvent LocalInstance { get; private set; } private MessageHandler _messageHandler; diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index b9c5e5aa9..204bd2d12 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.Player; using QSB.TransformSync; using UnityEngine.Networking; diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index 03708e71b..768786a4f 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -7,6 +7,7 @@ using QSB.GeyserSync.Events; using QSB.Instruments.Events; using QSB.OrbSync.Events; +using QSB.Player.Events; using QSB.TimeSync.Events; using QSB.Tools.Events; using QSB.TransformSync; diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs index f99c76e77..07b579f9a 100644 --- a/QSB/Instruments/Events/PlayInstrumentEvent.cs +++ b/QSB/Instruments/Events/PlayInstrumentEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; using QSB.Utility; using System; diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 9ef323fa6..28bb451a3 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Instruments.QSBCamera; +using QSB.Player; using UnityEngine; namespace QSB.Instruments diff --git a/QSB/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs similarity index 96% rename from QSB/Events/PlayerJoinEvent.cs rename to QSB/Player/Events/PlayerJoinEvent.cs index a3e343a29..42fa32517 100644 --- a/QSB/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -1,8 +1,9 @@ using OWML.Common; +using QSB.Events; using QSB.Messaging; using QSB.Utility; -namespace QSB.Events +namespace QSB.Player.Events { public class PlayerJoinEvent : QSBEvent { diff --git a/QSB/Messaging/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs similarity index 84% rename from QSB/Messaging/PlayerJoinMessage.cs rename to QSB/Player/Events/PlayerJoinMessage.cs index 560f17065..97a1efa39 100644 --- a/QSB/Messaging/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,6 +1,7 @@ -using UnityEngine.Networking; +using QSB.Messaging; +using UnityEngine.Networking; -namespace QSB.Messaging +namespace QSB.Player.Events { public class PlayerJoinMessage : PlayerMessage { diff --git a/QSB/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs similarity index 96% rename from QSB/Events/PlayerLeaveEvent.cs rename to QSB/Player/Events/PlayerLeaveEvent.cs index 61b6ffc7a..0a61363e4 100644 --- a/QSB/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -1,9 +1,10 @@ using OWML.Common; +using QSB.Events; using QSB.Messaging; using QSB.Utility; using System.Linq; -namespace QSB.Events +namespace QSB.Player.Events { public class PlayerLeaveEvent : QSBEvent { diff --git a/QSB/Messaging/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs similarity index 89% rename from QSB/Messaging/PlayerLeaveMessage.cs rename to QSB/Player/Events/PlayerLeaveMessage.cs index b5e934966..216700437 100644 --- a/QSB/Messaging/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -1,8 +1,9 @@ -using System; +using QSB.Messaging; +using System; using System.Linq; using UnityEngine.Networking; -namespace QSB.Messaging +namespace QSB.Player.Events { public class PlayerLeaveMessage : PlayerMessage { diff --git a/QSB/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs similarity index 94% rename from QSB/Events/PlayerReadyEvent.cs rename to QSB/Player/Events/PlayerReadyEvent.cs index b307d4b68..63d4b2743 100644 --- a/QSB/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -1,10 +1,11 @@ using OWML.Common; +using QSB.Events; using QSB.Messaging; using QSB.TransformSync; using QSB.Utility; using System.Linq; -namespace QSB.Events +namespace QSB.Player.Events { public class PlayerReadyEvent : QSBEvent { @@ -30,7 +31,7 @@ public override void OnServerReceive(ToggleMessage message) return; } QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - PlayerState.LocalInstance.Send(); + PlayerStateEvent.LocalInstance.Send(); } public override void OnReceiveRemote(ToggleMessage message) diff --git a/QSB/Messaging/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs similarity index 92% rename from QSB/Messaging/PlayerStateMessage.cs rename to QSB/Player/Events/PlayerStateMessage.cs index 9b54fbbba..b881e4c1d 100644 --- a/QSB/Messaging/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,6 +1,7 @@ -using UnityEngine.Networking; +using QSB.Messaging; +using UnityEngine.Networking; -namespace QSB.Messaging +namespace QSB.Player.Events { public class PlayerStateMessage : PlayerMessage { diff --git a/QSB/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs similarity index 90% rename from QSB/Events/PlayerStatesRequestEvent.cs rename to QSB/Player/Events/PlayerStatesRequestEvent.cs index 13c5f7c6c..5db26b822 100644 --- a/QSB/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,9 +1,10 @@ -using QSB.Messaging; +using QSB.Events; +using QSB.Messaging; using QSB.TransformSync; using QSB.Utility; using System.Linq; -namespace QSB.Events +namespace QSB.Player.Events { public class PlayerStatesRequestEvent : QSBEvent { @@ -23,7 +24,7 @@ public class PlayerStatesRequestEvent : QSBEvent public override void OnServerReceive(PlayerMessage message) { DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); - PlayerState.LocalInstance.Send(); + PlayerStateEvent.LocalInstance.Send(); foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) { diff --git a/QSB/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs similarity index 99% rename from QSB/PlayerInfo.cs rename to QSB/Player/PlayerInfo.cs index 0a8780adb..e3ac12b07 100644 --- a/QSB/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -6,7 +6,7 @@ using System.Linq; using UnityEngine; -namespace QSB +namespace QSB.Player { public class PlayerInfo { diff --git a/QSB/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs similarity index 94% rename from QSB/PlayerSyncObject.cs rename to QSB/Player/PlayerSyncObject.cs index dd896b311..923fbe857 100644 --- a/QSB/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB +namespace QSB.Player { public abstract class PlayerSyncObject : NetworkBehaviour { diff --git a/QSB/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs similarity index 99% rename from QSB/QSBPlayerManager.cs rename to QSB/Player/QSBPlayerManager.cs index 890e4c4d2..cb2bff9ce 100644 --- a/QSB/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.Messaging; +using QSB.Player.Events; using QSB.TransformSync; using QSB.Utility; using System.Collections.Generic; @@ -7,7 +8,7 @@ using System.Linq; using UnityEngine.Networking; -namespace QSB +namespace QSB.Player { public static class QSBPlayerManager { diff --git a/QSB/State.cs b/QSB/Player/State.cs similarity index 93% rename from QSB/State.cs rename to QSB/Player/State.cs index 01fa52094..d0217277f 100644 --- a/QSB/State.cs +++ b/QSB/Player/State.cs @@ -1,6 +1,6 @@ using System; -namespace QSB +namespace QSB.Player { [Flags] public enum State diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 94556aebd..ff7aa4322 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -159,32 +159,32 @@ - + - - + + - + - - + + - + - + @@ -200,18 +200,18 @@ - - + + - - + + - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index d41250d24..0e37ac05a 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -8,6 +8,7 @@ using QSB.GeyserSync; using QSB.OrbSync; using QSB.Patches; +using QSB.Player; using QSB.TimeSync; using QSB.TransformSync; using QSB.Utility; @@ -101,7 +102,7 @@ private void ConfigureNetworkManager() channels.Add(QosType.Reliable); channels.Add(QosType.Unreliable); - gameObject.AddComponent(); + gameObject.AddComponent(); } public override void OnStartServer() diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 9cf57fa64..7a2051ad8 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Tools.Events { diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index d88bc263a..15bd61ee3 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Tools.Events { diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 2d318fad3..ef668eb4b 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Tools.Events { diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index cc9ac372e..9acc37b35 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Tools.Events { diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index daf0fbd28..5f517c369 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Messaging; +using QSB.Player; namespace QSB.Tools.Events { diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 503ba559d..a0f8683a6 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -1,4 +1,5 @@ using OWML.ModHelper.Events; +using QSB.Player; using QSB.Utility; using System.Linq; using UnityEngine; diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index b05f08682..000015af7 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -1,4 +1,5 @@ using QSB.Events; +using QSB.Player; using QSB.Tools; using QSB.Utility; using UnityEngine; diff --git a/QSB/TransformSync/PlayerHUDMarker.cs b/QSB/TransformSync/PlayerHUDMarker.cs index 70561b872..0e1e228e1 100644 --- a/QSB/TransformSync/PlayerHUDMarker.cs +++ b/QSB/TransformSync/PlayerHUDMarker.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QSB.Player; +using UnityEngine; namespace QSB.TransformSync { diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index e3cf8a6b3..739874edd 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -1,4 +1,5 @@ using OWML.Common; +using QSB.Player; using QSB.Tools; using QSB.Utility; using UnityEngine; diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/TransformSync/PlayerSectorEvent.cs index 3bfd683f1..91a7b91b0 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/TransformSync/PlayerSectorEvent.cs @@ -1,6 +1,7 @@ using OWML.Common; using QSB.Events; using QSB.Messaging; +using QSB.Player; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index ef618362f..b07a50050 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -1,4 +1,5 @@ using QSB.Animation; +using QSB.Player; using UnityEngine; namespace QSB.TransformSync diff --git a/QSB/TransformSync/SectorSync.cs b/QSB/TransformSync/SectorSync.cs index 1be541478..a93d1e7b9 100644 --- a/QSB/TransformSync/SectorSync.cs +++ b/QSB/TransformSync/SectorSync.cs @@ -1,4 +1,5 @@ using QSB.Events; +using QSB.Player; using System.Linq; using UnityEngine; diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index d7ba19368..ba4864f55 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QSB.Player; +using UnityEngine; namespace QSB.TransformSync { diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index ff506ebff..6dcccf49a 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -1,4 +1,5 @@ using OWML.Common; +using QSB.Player; using QSB.Utility; using UnityEngine; From a64a5fcf7923f9a906a1dd8520369abfa1e38570 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:34:22 +0000 Subject: [PATCH 042/207] Update QSBPlayerManager.cs --- QSB/Player/QSBPlayerManager.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index cb2bff9ce..6e0d11c5b 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -1,5 +1,4 @@ using OWML.Common; -using QSB.Messaging; using QSB.Player.Events; using QSB.TransformSync; using QSB.Utility; From 45d459d389fd600dac9fdc9270bed2b5b847e196 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:42:14 +0000 Subject: [PATCH 043/207] cleanup --- QSB/Animation/AnimationSync.cs | 2 +- QSB/Animation/Events/AnimTriggerEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/ConversationSync/ConversationManager.cs | 2 +- .../Events/ConversationEvent.cs | 2 +- .../Events/ConversationStartEndEvent.cs | 2 +- QSB/DeathSync/DeathPatches.cs | 2 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 2 +- QSB/DeathSync/RespawnOnDeath.cs | 2 +- QSB/ElevatorSync/ElevatorPatches.cs | 2 +- QSB/ElevatorSync/Events/ElevatorEvent.cs | 2 +- QSB/{Events => EventsCore}/EventNames.cs | 2 +- QSB/{Events => EventsCore}/IQSBEvent.cs | 2 +- QSB/{Events => EventsCore}/QSBEvent.cs | 6 +++--- QSB/{Events => EventsCore}/QSBEventManager.cs | 2 +- QSB/GeyserSync/Events/GeyserEvent.cs | 2 +- QSB/GeyserSync/QSBGeyser.cs | 2 +- QSB/Instruments/Events/PlayInstrumentEvent.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 2 +- QSB/{Messaging => MessagesCore}/EventType.cs | 0 .../PlayerMessage.cs | 0 .../QSBMessageHandler.cs} | 4 ++-- .../ToggleMessage.cs | 0 QSB/OrbSync/Events/OrbSlotEvent.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 2 +- QSB/OrbSync/OrbPatches.cs | 2 +- QSB/OrbSync/QSBOrbSlot.cs | 2 +- QSB/Player/Events/PlayerJoinEvent.cs | 2 +- QSB/Player/Events/PlayerLeaveEvent.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/{ => Player}/Events/PlayerStateEvent.cs | 8 +++----- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/QSB.csproj | 18 +++++++++--------- QSB/QSBNetworkManager.cs | 5 +++-- QSB/TimeSync/Events/ServerTimeEvent.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 2 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 2 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 2 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 2 +- QSB/Tools/ProbePatches.cs | 2 +- QSB/TransformSync/PlayerCameraSync.cs | 2 +- QSB/TransformSync/PlayerSectorEvent.cs | 2 +- QSB/TransformSync/SectorSync.cs | 2 +- 45 files changed, 57 insertions(+), 58 deletions(-) rename QSB/{Events => EventsCore}/EventNames.cs (98%) rename QSB/{Events => EventsCore}/IQSBEvent.cs (79%) rename QSB/{Events => EventsCore}/QSBEvent.cs (94%) rename QSB/{Events => EventsCore}/QSBEventManager.cs (98%) rename QSB/{Messaging => MessagesCore}/EventType.cs (100%) rename QSB/{Messaging => MessagesCore}/PlayerMessage.cs (100%) rename QSB/{Messaging/MessageHandler.cs => MessagesCore/QSBMessageHandler.cs} (95%) rename QSB/{Messaging => MessagesCore}/ToggleMessage.cs (100%) rename QSB/{ => Player}/Events/PlayerStateEvent.cs (85%) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 736b8ba2b..4d45ff33f 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,5 +1,5 @@ using OWML.ModHelper.Events; -using QSB.Events; +using QSB.EventsCore; using QSB.Player; using System; using System.Linq; diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs index 52ca352a6..fb7476974 100644 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 481a20b82..732398b83 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 083561805..d90b8f356 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.Events; +using QSB.EventsCore; using QSB.Player; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 284f42530..ad4377377 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; using QSB.WorldSync; diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 8743f77fc..191aaa4c3 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.Events; +using QSB.EventsCore; using QSB.Player; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index 917722ce1..c395c9e00 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using System.Linq; namespace QSB.DeathSync diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 8119caa57..94ed53087 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; using QSB.Utility; diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index 2d4988c98..30f3de784 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.Events; +using QSB.EventsCore; using QSB.Utility; using System.Linq; using UnityEngine; diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index af3722a13..7c8012803 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -1,5 +1,5 @@ using OWML.ModHelper.Events; -using QSB.Events; +using QSB.EventsCore; namespace QSB.ElevatorSync { diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index a0d446166..bf7483f94 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.WorldSync; diff --git a/QSB/Events/EventNames.cs b/QSB/EventsCore/EventNames.cs similarity index 98% rename from QSB/Events/EventNames.cs rename to QSB/EventsCore/EventNames.cs index 8d687c31b..c4f5c125f 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -1,4 +1,4 @@ -namespace QSB.Events +namespace QSB.EventsCore { public static class EventNames { diff --git a/QSB/Events/IQSBEvent.cs b/QSB/EventsCore/IQSBEvent.cs similarity index 79% rename from QSB/Events/IQSBEvent.cs rename to QSB/EventsCore/IQSBEvent.cs index d6b8c4ed3..438a7d31f 100644 --- a/QSB/Events/IQSBEvent.cs +++ b/QSB/EventsCore/IQSBEvent.cs @@ -1,4 +1,4 @@ -namespace QSB.Events +namespace QSB.EventsCore { public interface IQSBEvent { diff --git a/QSB/Events/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs similarity index 94% rename from QSB/Events/QSBEvent.cs rename to QSB/EventsCore/QSBEvent.cs index 204bd2d12..9abaf4f4e 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -3,7 +3,7 @@ using QSB.TransformSync; using UnityEngine.Networking; -namespace QSB.Events +namespace QSB.EventsCore { /// /// Abstract class that handles all event code. @@ -13,11 +13,11 @@ namespace QSB.Events { public abstract EventType Type { get; } public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; - private readonly MessageHandler _eventHandler; + private readonly QSBMessageHandler _eventHandler; protected QSBEvent() { - _eventHandler = new MessageHandler(Type); + _eventHandler = new QSBMessageHandler(Type); _eventHandler.OnClientReceiveMessage += OnClientReceive; _eventHandler.OnServerReceiveMessage += OnServerReceive; } diff --git a/QSB/Events/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs similarity index 98% rename from QSB/Events/QSBEventManager.cs rename to QSB/EventsCore/QSBEventManager.cs index 768786a4f..513a53228 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -14,7 +14,7 @@ using QSB.Utility; using System.Collections.Generic; -namespace QSB.Events +namespace QSB.EventsCore { public static class QSBEventManager { diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 4cb85cc1f..922c07686 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.WorldSync; diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index 61cf0ed10..bd8a0ddcf 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.WorldSync; using UnityEngine.Networking; diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs index 07b579f9a..47276e11e 100644 --- a/QSB/Instruments/Events/PlayInstrumentEvent.cs +++ b/QSB/Instruments/Events/PlayInstrumentEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; using QSB.Utility; diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 28bb451a3..773c22667 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; using UnityEngine; diff --git a/QSB/Messaging/EventType.cs b/QSB/MessagesCore/EventType.cs similarity index 100% rename from QSB/Messaging/EventType.cs rename to QSB/MessagesCore/EventType.cs diff --git a/QSB/Messaging/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs similarity index 100% rename from QSB/Messaging/PlayerMessage.cs rename to QSB/MessagesCore/PlayerMessage.cs diff --git a/QSB/Messaging/MessageHandler.cs b/QSB/MessagesCore/QSBMessageHandler.cs similarity index 95% rename from QSB/Messaging/MessageHandler.cs rename to QSB/MessagesCore/QSBMessageHandler.cs index 2c1045f78..bbd644895 100644 --- a/QSB/Messaging/MessageHandler.cs +++ b/QSB/MessagesCore/QSBMessageHandler.cs @@ -7,14 +7,14 @@ namespace QSB.Messaging { // Extend this to create new message handlers. - public class MessageHandler where T : MessageBase, new() + public class QSBMessageHandler where T : MessageBase, new() { public event Action OnClientReceiveMessage; public event Action OnServerReceiveMessage; private readonly EventType _eventType; - public MessageHandler(EventType eventType) + public QSBMessageHandler(EventType eventType) { _eventType = eventType + MsgType.Highest + 1; if (QSBNetworkManager.Instance.IsReady) diff --git a/QSB/Messaging/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs similarity index 100% rename from QSB/Messaging/ToggleMessage.cs rename to QSB/MessagesCore/ToggleMessage.cs diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 1ded1b922..af4bb4770 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.WorldSync; diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index c855b6543..346f27e7c 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.TransformSync; using QSB.Utility; diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 620135d25..436dc6fdc 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.WorldSync; using UnityEngine; diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index 32123c4e4..9358557c3 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.WorldSync; namespace QSB.OrbSync diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index 42fa32517..327e3328c 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Utility; diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index 0a61363e4..90b310e94 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Utility; using System.Linq; diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 63d4b2743..6732c8efd 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.TransformSync; using QSB.Utility; diff --git a/QSB/Events/PlayerStateEvent.cs b/QSB/Player/Events/PlayerStateEvent.cs similarity index 85% rename from QSB/Events/PlayerStateEvent.cs rename to QSB/Player/Events/PlayerStateEvent.cs index 692dede05..6283cc7e4 100644 --- a/QSB/Events/PlayerStateEvent.cs +++ b/QSB/Player/Events/PlayerStateEvent.cs @@ -1,19 +1,17 @@ using QSB.Messaging; -using QSB.Player; -using QSB.Player.Events; using UnityEngine.Networking; -namespace QSB.Events +namespace QSB.Player.Events { public class PlayerStateEvent : NetworkBehaviour { public static PlayerStateEvent LocalInstance { get; private set; } - private MessageHandler _messageHandler; + private QSBMessageHandler _messageHandler; private void Awake() { - _messageHandler = new MessageHandler(EventType.FullState); + _messageHandler = new QSBMessageHandler(EventType.FullState); _messageHandler.OnClientReceiveMessage += OnClientReceiveMessage; LocalInstance = this; diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 5db26b822..9d572798f 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.TransformSync; using QSB.Utility; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index ff7aa4322..0a41a63a0 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -143,9 +143,9 @@ - + - + @@ -183,9 +183,9 @@ - + - + @@ -199,14 +199,14 @@ - + - + - - - + + + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 0e37ac05a..52372bfdb 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -4,11 +4,12 @@ using QSB.ConversationSync; using QSB.DeathSync; using QSB.ElevatorSync; -using QSB.Events; +using QSB.EventsCore; using QSB.GeyserSync; using QSB.OrbSync; using QSB.Patches; using QSB.Player; +using QSB.Player.Events; using QSB.TimeSync; using QSB.TransformSync; using QSB.Utility; @@ -102,7 +103,7 @@ private void ConfigureNetworkManager() channels.Add(QosType.Reliable); channels.Add(QosType.Unreliable); - gameObject.AddComponent(); + gameObject.AddComponent(); } public override void OnStartServer() diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index 7c5c44357..1b0f0af5d 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; namespace QSB.TimeSync.Events diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 168d82c7b..9beedb48a 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,6 +1,6 @@ using OWML.ModHelper.Events; using QSB.DeathSync; -using QSB.Events; +using QSB.EventsCore; using QSB.TimeSync.Events; using QSB.Utility; using UnityEngine; diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 7a2051ad8..10a71aaef 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 15bd61ee3..de6fa3435 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index ef668eb4b..38e8651cb 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 9acc37b35..9a7f0bc19 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 5f517c369..9c3f05a35 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs index baa615e43..0564aa513 100644 --- a/QSB/Tools/ProbePatches.cs +++ b/QSB/Tools/ProbePatches.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; namespace QSB.Tools { diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 000015af7..319af39a0 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Player; using QSB.Tools; using QSB.Utility; diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/TransformSync/PlayerSectorEvent.cs index 91a7b91b0..fa80c4f03 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/TransformSync/PlayerSectorEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.Player; using QSB.Utility; diff --git a/QSB/TransformSync/SectorSync.cs b/QSB/TransformSync/SectorSync.cs index a93d1e7b9..46d2ace79 100644 --- a/QSB/TransformSync/SectorSync.cs +++ b/QSB/TransformSync/SectorSync.cs @@ -1,4 +1,4 @@ -using QSB.Events; +using QSB.EventsCore; using QSB.Player; using System.Linq; using UnityEngine; From ffda3be2dc99a4272fcdaaad5c4b4a6c131622a2 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 22:13:12 +0000 Subject: [PATCH 044/207] cleanup --- QSB/Animation/Events/AnimTriggerEvent.cs | 1 - QSB/ConversationSync/Events/ConversationEvent.cs | 1 - QSB/ConversationSync/Events/ConversationStartEndEvent.cs | 2 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 1 - QSB/ElevatorSync/Events/ElevatorEvent.cs | 1 - QSB/{MessagesCore => EventsCore}/EventType.cs | 2 +- QSB/GeyserSync/Events/GeyserEvent.cs | 1 - QSB/Instruments/Events/PlayInstrumentEvent.cs | 1 - QSB/MessagesCore/QSBMessageHandler.cs | 1 + QSB/OrbSync/Events/OrbSlotEvent.cs | 1 - QSB/OrbSync/Events/OrbUserEvent.cs | 1 - QSB/Player/Events/PlayerJoinEvent.cs | 1 - QSB/Player/Events/PlayerLeaveEvent.cs | 1 - QSB/Player/Events/PlayerStateEvent.cs | 3 ++- QSB/QSB.csproj | 2 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 1 - QSB/TransformSync/PlayerSectorEvent.cs | 1 - 17 files changed, 6 insertions(+), 16 deletions(-) rename QSB/{MessagesCore => EventsCore}/EventType.cs (95%) diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs index fb7476974..1a4f05034 100644 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.Player; namespace QSB.Animation.Events diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index ad4377377..119f0f2cd 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.Player; using QSB.WorldSync; diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 191aaa4c3..a6b9602a5 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -11,7 +11,7 @@ namespace QSB.ConversationSync.Events { public class ConversationStartEndEvent : QSBEvent { - public override Messaging.EventType Type => Messaging.EventType.ConversationStartEnd; + public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 94ed53087..c4109236d 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.Player; using QSB.Utility; diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index bf7483f94..976b4a466 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.WorldSync; namespace QSB.ElevatorSync.Events diff --git a/QSB/MessagesCore/EventType.cs b/QSB/EventsCore/EventType.cs similarity index 95% rename from QSB/MessagesCore/EventType.cs rename to QSB/EventsCore/EventType.cs index dbbe2dd69..9fde71733 100644 --- a/QSB/MessagesCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -1,4 +1,4 @@ -namespace QSB.Messaging +namespace QSB.EventsCore { public enum EventType { diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 922c07686..839e5bdbc 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.WorldSync; namespace QSB.GeyserSync.Events diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs index 47276e11e..33bf610f7 100644 --- a/QSB/Instruments/Events/PlayInstrumentEvent.cs +++ b/QSB/Instruments/Events/PlayInstrumentEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.Player; using QSB.Utility; using System; diff --git a/QSB/MessagesCore/QSBMessageHandler.cs b/QSB/MessagesCore/QSBMessageHandler.cs index bbd644895..3a65ad77d 100644 --- a/QSB/MessagesCore/QSBMessageHandler.cs +++ b/QSB/MessagesCore/QSBMessageHandler.cs @@ -1,4 +1,5 @@ using OWML.Common; +using QSB.EventsCore; using QSB.Utility; using System; using System.Linq; diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index af4bb4770..c9f68ef18 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; using QSB.WorldSync; namespace QSB.OrbSync.Events diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 346f27e7c..18d7e7d63 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,6 +1,5 @@ using OWML.Common; using QSB.EventsCore; -using QSB.Messaging; using QSB.TransformSync; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index 327e3328c..07bb919c9 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -1,6 +1,5 @@ using OWML.Common; using QSB.EventsCore; -using QSB.Messaging; using QSB.Utility; namespace QSB.Player.Events diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index 90b310e94..bf7fca673 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -1,6 +1,5 @@ using OWML.Common; using QSB.EventsCore; -using QSB.Messaging; using QSB.Utility; using System.Linq; diff --git a/QSB/Player/Events/PlayerStateEvent.cs b/QSB/Player/Events/PlayerStateEvent.cs index 6283cc7e4..a23fdcfc1 100644 --- a/QSB/Player/Events/PlayerStateEvent.cs +++ b/QSB/Player/Events/PlayerStateEvent.cs @@ -1,4 +1,5 @@ -using QSB.Messaging; +using QSB.EventsCore; +using QSB.Messaging; using UnityEngine.Networking; namespace QSB.Player.Events diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 0a41a63a0..eaf120227 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -206,7 +206,7 @@ - + diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index 1b0f0af5d..c3829b76e 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -1,5 +1,4 @@ using QSB.EventsCore; -using QSB.Messaging; namespace QSB.TimeSync.Events { diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/TransformSync/PlayerSectorEvent.cs index fa80c4f03..8e7f99287 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/TransformSync/PlayerSectorEvent.cs @@ -1,6 +1,5 @@ using OWML.Common; using QSB.EventsCore; -using QSB.Messaging; using QSB.Player; using QSB.Utility; using QSB.WorldSync; From 66d804ad5ca8093daa1d6f682dfdcc7babdbced0 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 22:18:22 +0000 Subject: [PATCH 045/207] cleanup --- QSB/ElevatorSync/Events/ElevatorEvent.cs | 1 + QSB/GeyserSync/Events/GeyserEvent.cs | 1 + QSB/OrbSync/Events/OrbSlotEvent.cs | 1 + QSB/OrbSync/Events/OrbUserEvent.cs | 1 + QSB/QSB.csproj | 4 ++-- QSB/TransformSync/PlayerSectorEvent.cs | 1 + QSB/WorldSync/{ => Events}/BoolWorldObjectMessage.cs | 2 +- QSB/WorldSync/{ => Events}/WorldObjectMessage.cs | 2 +- 8 files changed, 9 insertions(+), 4 deletions(-) rename QSB/WorldSync/{ => Events}/BoolWorldObjectMessage.cs (93%) rename QSB/WorldSync/{ => Events}/WorldObjectMessage.cs (93%) diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 976b4a466..81a980eee 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -1,5 +1,6 @@ using QSB.EventsCore; using QSB.WorldSync; +using QSB.WorldSync.Events; namespace QSB.ElevatorSync.Events { diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 839e5bdbc..8cd7a7bd7 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -1,5 +1,6 @@ using QSB.EventsCore; using QSB.WorldSync; +using QSB.WorldSync.Events; namespace QSB.GeyserSync.Events { diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index c9f68ef18..5ade3e1e5 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -1,5 +1,6 @@ using QSB.EventsCore; using QSB.WorldSync; +using QSB.WorldSync.Events; namespace QSB.OrbSync.Events { diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 18d7e7d63..11b648fa2 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -3,6 +3,7 @@ using QSB.TransformSync; using QSB.Utility; using QSB.WorldSync; +using QSB.WorldSync.Events; using System.Linq; using UnityEngine.Networking; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index eaf120227..73695add6 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -191,8 +191,8 @@ - - + + diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/TransformSync/PlayerSectorEvent.cs index 8e7f99287..e36d235c1 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/TransformSync/PlayerSectorEvent.cs @@ -3,6 +3,7 @@ using QSB.Player; using QSB.Utility; using QSB.WorldSync; +using QSB.WorldSync.Events; namespace QSB.TransformSync { diff --git a/QSB/WorldSync/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs similarity index 93% rename from QSB/WorldSync/BoolWorldObjectMessage.cs rename to QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 60055b481..533a2b1ba 100644 --- a/QSB/WorldSync/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.WorldSync +namespace QSB.WorldSync.Events { public class BoolWorldObjectMessage : WorldObjectMessage { diff --git a/QSB/WorldSync/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs similarity index 93% rename from QSB/WorldSync/WorldObjectMessage.cs rename to QSB/WorldSync/Events/WorldObjectMessage.cs index c841df3b3..deed0f1a1 100644 --- a/QSB/WorldSync/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.WorldSync +namespace QSB.WorldSync.Events { public class WorldObjectMessage : PlayerMessage { From 0342dab555a91a3d454812056f3b3c4c45501190 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 3 Nov 2020 22:29:23 +0000 Subject: [PATCH 046/207] move stuff around --- QSB/EventsCore/QSBEventManager.cs | 1 - QSB/GeyserSync/GeyserManager.cs | 1 - QSB/Player/Events/PlayerReadyEvent.cs | 2 +- .../Events}/PlayerSectorEvent.cs | 6 +++--- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/{TransformSync => Player}/PlayerHUDMarker.cs | 2 +- QSB/QSB.cs | 2 +- QSB/QSB.csproj | 10 +++++----- QSB/QSBNetworkManager.cs | 8 ++++---- QSB/{TransformSync => SectorSync}/QSBSector.cs | 2 +- QSB/{TransformSync => SectorSync}/QSBSectorManager.cs | 2 +- QSB/{TransformSync => SectorSync}/SectorSync.cs | 6 +++--- QSB/TransformSync/TransformSync.cs | 1 + 13 files changed, 22 insertions(+), 23 deletions(-) rename QSB/{TransformSync => Player/Events}/PlayerSectorEvent.cs (94%) rename QSB/{TransformSync => Player}/PlayerHUDMarker.cs (98%) rename QSB/{TransformSync => SectorSync}/QSBSector.cs (94%) rename QSB/{TransformSync => SectorSync}/QSBSectorManager.cs (98%) rename QSB/{TransformSync => SectorSync}/SectorSync.cs (83%) diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 513a53228..2963a8f30 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -10,7 +10,6 @@ using QSB.Player.Events; using QSB.TimeSync.Events; using QSB.Tools.Events; -using QSB.TransformSync; using QSB.Utility; using System.Collections.Generic; diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index 8cfed82f9..32c27bf62 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -28,6 +28,5 @@ public void EmptyUpdate() { QSB.Helper.HarmonyHelper.EmptyMethod("Update"); } - } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 6732c8efd..8446d1a3b 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -1,7 +1,7 @@ using OWML.Common; using QSB.EventsCore; using QSB.Messaging; -using QSB.TransformSync; +using QSB.SectorSync; using QSB.Utility; using System.Linq; diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs similarity index 94% rename from QSB/TransformSync/PlayerSectorEvent.cs rename to QSB/Player/Events/PlayerSectorEvent.cs index e36d235c1..784dee43c 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -1,11 +1,11 @@ using OWML.Common; using QSB.EventsCore; -using QSB.Player; +using QSB.SectorSync; using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; -namespace QSB.TransformSync +namespace QSB.Player.Events { public class PlayerSectorEvent : QSBEvent { @@ -43,7 +43,7 @@ public override void OnReceiveRemote(WorldObjectMessage message) return; } - var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); + var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, () => transformSync?.SetReferenceSector(sector)); diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 9d572798f..5dc19c3c6 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,6 +1,6 @@ using QSB.EventsCore; using QSB.Messaging; -using QSB.TransformSync; +using QSB.SectorSync; using QSB.Utility; using System.Linq; diff --git a/QSB/TransformSync/PlayerHUDMarker.cs b/QSB/Player/PlayerHUDMarker.cs similarity index 98% rename from QSB/TransformSync/PlayerHUDMarker.cs rename to QSB/Player/PlayerHUDMarker.cs index 0e1e228e1..3ccbe7473 100644 --- a/QSB/TransformSync/PlayerHUDMarker.cs +++ b/QSB/Player/PlayerHUDMarker.cs @@ -1,7 +1,7 @@ using QSB.Player; using UnityEngine; -namespace QSB.TransformSync +namespace QSB.Player { public class PlayerHUDMarker : HUDDistanceMarker { diff --git a/QSB/QSB.cs b/QSB/QSB.cs index cff821cb5..7e13cd66e 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -6,7 +6,7 @@ using QSB.Instruments; using QSB.OrbSync; using QSB.Patches; -using QSB.TransformSync; +using QSB.SectorSync; using QSB.Utility; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 73695add6..84d009252 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -171,7 +171,7 @@ - + @@ -186,8 +186,8 @@ - - + + @@ -214,13 +214,13 @@ - + - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 52372bfdb..d8a47d61f 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -10,6 +10,7 @@ using QSB.Patches; using QSB.Player; using QSB.Player.Events; +using QSB.SectorSync; using QSB.TimeSync; using QSB.TransformSync; using QSB.Utility; @@ -139,7 +140,7 @@ public override void OnClientConnect(NetworkConnection connection) // Called on { base.OnClientConnect(connection); - gameObject.AddComponent(); + gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); @@ -170,7 +171,7 @@ public override void OnClientConnect(NetworkConnection connection) // Called on public override void OnStopClient() // Called on the client when closing connection { DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); - Destroy(GetComponent()); + Destroy(GetComponent()); Destroy(GetComponent()); Destroy(GetComponent()); QSBEventManager.Reset(); @@ -213,7 +214,7 @@ public override void OnServerDisconnect(NetworkConnection connection) // Called public override void OnStopServer() { - Destroy(GetComponent()); + Destroy(GetComponent()); Destroy(GetComponent()); Destroy(GetComponent()); QSBEventManager.Reset(); @@ -289,6 +290,5 @@ public void CleanupNetworkBehaviour(uint netId) } } } - } } diff --git a/QSB/TransformSync/QSBSector.cs b/QSB/SectorSync/QSBSector.cs similarity index 94% rename from QSB/TransformSync/QSBSector.cs rename to QSB/SectorSync/QSBSector.cs index dd81ac7cd..8634d445c 100644 --- a/QSB/TransformSync/QSBSector.cs +++ b/QSB/SectorSync/QSBSector.cs @@ -1,7 +1,7 @@ using QSB.WorldSync; using UnityEngine; -namespace QSB.TransformSync +namespace QSB.SectorSync { public class QSBSector : WorldObject { diff --git a/QSB/TransformSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs similarity index 98% rename from QSB/TransformSync/QSBSectorManager.cs rename to QSB/SectorSync/QSBSectorManager.cs index bd2fdd862..00f1f50c0 100644 --- a/QSB/TransformSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -2,7 +2,7 @@ using System.Linq; using UnityEngine; -namespace QSB.TransformSync +namespace QSB.SectorSync { public class QSBSectorManager : MonoBehaviour { diff --git a/QSB/TransformSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs similarity index 83% rename from QSB/TransformSync/SectorSync.cs rename to QSB/SectorSync/SectorSync.cs index 46d2ace79..aac4184d7 100644 --- a/QSB/TransformSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -3,7 +3,7 @@ using System.Linq; using UnityEngine; -namespace QSB.TransformSync +namespace QSB.SectorSync { public class SectorSync : MonoBehaviour { @@ -21,11 +21,11 @@ private void Update() { return; } - QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); + QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); _checkTimer = 0; } - private void CheckTransformSyncSector(TransformSync transformSync) + private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) { var syncedTransform = transformSync.SyncedTransform; if (syncedTransform == null || syncedTransform.position == Vector3.zero) diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 6dcccf49a..dea328126 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.Player; +using QSB.SectorSync; using QSB.Utility; using UnityEngine; From adb334bfe8bf07f14d88f00d2192d28e72fa7980 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 4 Nov 2020 09:09:50 +0000 Subject: [PATCH 047/207] move playerstate into "new" event system --- QSB/EventsCore/EventNames.cs | 1 + QSB/EventsCore/EventType.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/Player/Events/PlayerStateEvent.cs | 48 ------------------- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- .../Events/ServerSendPlayerStatesEvent.cs | 36 ++++++++++++++ QSB/Player/PlayerHUDMarker.cs | 3 +- QSB/Player/PlayerInfo.cs | 1 - QSB/QSB.csproj | 2 +- QSB/QSBNetworkManager.cs | 3 -- 10 files changed, 42 insertions(+), 58 deletions(-) delete mode 100644 QSB/Player/Events/PlayerStateEvent.cs create mode 100644 QSB/Player/Events/ServerSendPlayerStatesEvent.cs diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index c4f5c125f..755edaf92 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -35,5 +35,6 @@ public static class EventNames public static string QSBConversation = "QSBConversation"; public static string QSBConversationStartEnd = "QSBConversationStartEnd"; public static string QSBPlayInstrument = "QSBPlayInstrument"; + public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; } } diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index 9fde71733..2e2744f3f 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -5,7 +5,7 @@ public enum EventType Sector, ServerTime, AnimTrigger, - FullState, + PlayerState, FullStateRequest, FlashlightActiveChange, SignalscopeActiveChange, diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 8446d1a3b..9ac90dc90 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -31,7 +31,7 @@ public override void OnServerReceive(ToggleMessage message) return; } QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - PlayerStateEvent.LocalInstance.Send(); + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); } public override void OnReceiveRemote(ToggleMessage message) diff --git a/QSB/Player/Events/PlayerStateEvent.cs b/QSB/Player/Events/PlayerStateEvent.cs deleted file mode 100644 index a23fdcfc1..000000000 --- a/QSB/Player/Events/PlayerStateEvent.cs +++ /dev/null @@ -1,48 +0,0 @@ -using QSB.EventsCore; -using QSB.Messaging; -using UnityEngine.Networking; - -namespace QSB.Player.Events -{ - public class PlayerStateEvent : NetworkBehaviour - { - public static PlayerStateEvent LocalInstance { get; private set; } - - private QSBMessageHandler _messageHandler; - - private void Awake() - { - _messageHandler = new QSBMessageHandler(EventType.FullState); - _messageHandler.OnClientReceiveMessage += OnClientReceiveMessage; - - LocalInstance = this; - } - - private void OnClientReceiveMessage(PlayerStateMessage message) - { - if (message.AboutId == QSBPlayerManager.LocalPlayerId) - { - return; - } - QSB.Helper.Events.Unity.RunWhen( - () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, - () => QSBPlayerManager.HandleFullStateMessage(message)); - } - - public void Send() - { - foreach (var player in QSBPlayerManager.PlayerList) - { - var message = new PlayerStateMessage - { - AboutId = player.PlayerId, - PlayerName = player.Name, - PlayerReady = player.IsReady, - PlayerState = player.State - }; - - _messageHandler.SendToAll(message); - } - } - } -} diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 5dc19c3c6..a04a9508b 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -24,7 +24,7 @@ public class PlayerStatesRequestEvent : QSBEvent public override void OnServerReceive(PlayerMessage message) { DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); - PlayerStateEvent.LocalInstance.Send(); + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) { diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs new file mode 100644 index 000000000..224e271e9 --- /dev/null +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -0,0 +1,36 @@ +using QSB.EventsCore; + +namespace QSB.Player.Events +{ + public class ServerSendPlayerStatesEvent : QSBEvent + { + public override EventType Type => EventType.PlayerState; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); + + private void Handler() + { + foreach (var player in QSBPlayerManager.PlayerList) + { + SendEvent(CreateMessage(player)); + } + } + + private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage + { + AboutId = player.PlayerId, + PlayerName = player.Name, + PlayerReady = player.IsReady, + PlayerState = player.State + }; + + public override void OnReceiveRemote(PlayerStateMessage message) + { + QSB.Helper.Events.Unity.RunWhen( + () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, + () => QSBPlayerManager.HandleFullStateMessage(message)); + } + } +} diff --git a/QSB/Player/PlayerHUDMarker.cs b/QSB/Player/PlayerHUDMarker.cs index 3ccbe7473..afc3a167b 100644 --- a/QSB/Player/PlayerHUDMarker.cs +++ b/QSB/Player/PlayerHUDMarker.cs @@ -1,5 +1,4 @@ -using QSB.Player; -using UnityEngine; +using UnityEngine; namespace QSB.Player { diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index e3ac12b07..9efff9dd6 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -1,7 +1,6 @@ using QSB.Animation; using QSB.Instruments; using QSB.Tools; -using QSB.TransformSync; using QSB.Utility; using System.Linq; using UnityEngine; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 84d009252..5c4d148ec 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -159,6 +159,7 @@ + @@ -201,7 +202,6 @@ - diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index d8a47d61f..4e67ffd96 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -9,7 +9,6 @@ using QSB.OrbSync; using QSB.Patches; using QSB.Player; -using QSB.Player.Events; using QSB.SectorSync; using QSB.TimeSync; using QSB.TransformSync; @@ -103,8 +102,6 @@ private void ConfigureNetworkManager() this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); channels.Add(QosType.Reliable); channels.Add(QosType.Unreliable); - - gameObject.AddComponent(); } public override void OnStartServer() From 6d2ce234f57af96c68de0590754660e3c2f46061 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 4 Nov 2020 09:34:01 +0000 Subject: [PATCH 048/207] cleanup --- QSB/ConversationSync/ConversationManager.cs | 2 -- QSB/EventsCore/EventType.cs | 2 +- QSB/EventsCore/QSBEvent.cs | 4 ++-- QSB/EventsCore/QSBEventManager.cs | 5 +++-- .../{QSBMessageHandler.cs => MessageHandler.cs} | 6 ++---- QSB/Patches/QSBPatchManager.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 5 +++++ QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/Player/Events/ServerSendPlayerStatesEvent.cs | 6 +++++- QSB/QSB.cs | 1 - QSB/QSB.csproj | 2 +- QSB/QSBNetworkManager.cs | 7 ++----- QSB/QSBSceneManager.cs | 5 ++++- QSB/SectorSync/QSBSectorManager.cs | 6 +++++- QSB/Utility/DebugLog.cs | 7 ------- 15 files changed, 32 insertions(+), 30 deletions(-) rename QSB/MessagesCore/{QSBMessageHandler.cs => MessageHandler.cs} (88%) diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index d90b8f356..ebfc74d38 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -23,7 +23,6 @@ private void Start() Instance = this; ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); - DebugLog.LogState("ConversationBundle", ConversationAssetBundle); BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); @@ -33,7 +32,6 @@ private void Start() } BoxPrefab.GetComponent().font = font; BoxPrefab.GetComponent().color = Color.white; - DebugLog.LogState("BoxPrefab", BoxPrefab); } public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index 2e2744f3f..660f1e481 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -6,7 +6,7 @@ public enum EventType ServerTime, AnimTrigger, PlayerState, - FullStateRequest, + PlayerStatesRequest, FlashlightActiveChange, SignalscopeActiveChange, TranslatorActiveChange, diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 9abaf4f4e..0d4062cbd 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -13,11 +13,11 @@ namespace QSB.EventsCore { public abstract EventType Type { get; } public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; - private readonly QSBMessageHandler _eventHandler; + private readonly MessageHandler _eventHandler; protected QSBEvent() { - _eventHandler = new QSBMessageHandler(Type); + _eventHandler = new MessageHandler(Type); _eventHandler.OnClientReceiveMessage += OnClientReceive; _eventHandler.OnServerReceiveMessage += OnServerReceive; } diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 2963a8f30..61f3ea64d 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -45,14 +45,15 @@ public static void Init() new OrbUserEvent(), new ConversationEvent(), new ConversationStartEndEvent(), - new PlayInstrumentEvent() + new PlayInstrumentEvent(), + new ServerSendPlayerStatesEvent() }; _eventList.ForEach(ev => ev.SetupListener()); Ready = true; - DebugLog.DebugWrite($"Event manager ready.", MessageType.Success); + DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); } public static void Reset() diff --git a/QSB/MessagesCore/QSBMessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs similarity index 88% rename from QSB/MessagesCore/QSBMessageHandler.cs rename to QSB/MessagesCore/MessageHandler.cs index 3a65ad77d..125b1087e 100644 --- a/QSB/MessagesCore/QSBMessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -8,14 +8,14 @@ namespace QSB.Messaging { // Extend this to create new message handlers. - public class QSBMessageHandler where T : MessageBase, new() + public class MessageHandler where T : MessageBase, new() { public event Action OnClientReceiveMessage; public event Action OnServerReceiveMessage; private readonly EventType _eventType; - public QSBMessageHandler(EventType eventType) + public MessageHandler(EventType eventType) { _eventType = eventType + MsgType.Highest + 1; if (QSBNetworkManager.Instance.IsReady) @@ -33,13 +33,11 @@ private void Init() var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); if (NetworkServer.handlers.Keys.Contains((short)_eventType)) { - DebugLog.LogState($"({_eventType}) {eventName} HANDLER", false); DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); NetworkServer.handlers.Remove((short)_eventType); } NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); - DebugLog.LogState($"({_eventType}) {eventName} HANDLER", true); } public void SendToAll(T message) diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 2122ce370..a14601a1a 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -28,7 +28,7 @@ public static void Init() new ProbePatches() }; - DebugLog.DebugWrite($"Patch manager ready.", MessageType.Success); + DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); } public static void DoPatchType(QSBPatchTypes type) diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 9ac90dc90..796955ae0 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -37,6 +37,11 @@ public override void OnServerReceive(ToggleMessage message) public override void OnReceiveRemote(ToggleMessage message) { DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); + return; + } foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) { diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index a04a9508b..3afb3fa3a 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -8,7 +8,7 @@ namespace QSB.Player.Events { public class PlayerStatesRequestEvent : QSBEvent { - public override EventType Type => EventType.FullStateRequest; + public override EventType Type => EventType.PlayerStatesRequest; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index 224e271e9..ac9230bd5 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -1,4 +1,6 @@ -using QSB.EventsCore; +using OWML.Common; +using QSB.EventsCore; +using QSB.Utility; namespace QSB.Player.Events { @@ -14,6 +16,7 @@ private void Handler() { foreach (var player in QSBPlayerManager.PlayerList) { + DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); SendEvent(CreateMessage(player)); } } @@ -28,6 +31,7 @@ private void Handler() public override void OnReceiveRemote(PlayerStateMessage message) { + DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); QSB.Helper.Events.Unity.RunWhen( () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, () => QSBPlayerManager.HandleFullStateMessage(message)); diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 7e13cd66e..9a80dbe0f 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -33,7 +33,6 @@ private void Start() DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); - DebugLog.LogState("NetworkBundle", NetworkAssetBundle); QSBPatchManager.Init(); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 5c4d148ec..34a4ecc46 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -205,7 +205,7 @@ - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 4e67ffd96..a75386ff7 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -49,27 +49,22 @@ private void Awake() playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); - DebugLog.LogState("PlayerPrefab", playerPrefab); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); - DebugLog.LogState("ShipPrefab", _shipPrefab); _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); - DebugLog.LogState("CameraPrefab", _cameraPrefab); _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); - DebugLog.LogState("ProbePrefab", _probePrefab); OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); - DebugLog.LogState("OrbPrefab", OrbPrefab); ConfigureNetworkManager(); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; @@ -102,6 +97,8 @@ private void ConfigureNetworkManager() this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); channels.Add(QosType.Reliable); channels.Add(QosType.Unreliable); + + DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); } public override void OnStartServer() diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index d2d32bfa3..e2130ab31 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -1,4 +1,6 @@ -using System; +using OWML.Common; +using QSB.Utility; +using System; namespace QSB { @@ -13,6 +15,7 @@ public static class QSBSceneManager static QSBSceneManager() { LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; + DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); } private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 00f1f50c0..68565ee7f 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -1,4 +1,6 @@ -using QSB.WorldSync; +using OWML.Common; +using QSB.Utility; +using QSB.WorldSync; using System.Linq; using UnityEngine; @@ -19,10 +21,12 @@ private void Awake() { Instance = this; QSBSceneManager.OnSceneLoaded += (OWScene scene, bool universe) => RebuildSectors(); + DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } public void RebuildSectors() { + DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); WorldRegistry.RemoveObjects(); var sectors = Resources.FindObjectsOfTypeAll().ToList(); for (var id = 0; id < sectors.Count; id++) diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index 244eae385..e86164007 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -43,13 +43,6 @@ public static void DebugWrite(string message, MessageType type = MessageType.Mes } } - public static void LogState(string name, bool state) - { - var status = state ? "OK" : "FAIL"; - var messageType = state ? MessageType.Success : MessageType.Error; - DebugWrite($"* {name} {status}", messageType); - } - private static string GetCallingType(StackTrace frame) { var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); From 8b68f8d85a4d9398e93651817ca14b456a8d637e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:01:28 +0000 Subject: [PATCH 049/207] cleanup --- QSB/Animation/AnimatorMirror.cs | 9 ++++++++- QSB/GeyserSync/GeyserManager.cs | 10 ++++++++-- QSB/Patches/QSBPatchManager.cs | 9 +++++++-- QSB/TimeSync/WakeUpSync.cs | 1 - 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 0962a6c01..c40b22117 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using OWML.Common; +using QSB.Utility; +using System.Collections.Generic; using System.Linq; using UnityEngine; @@ -52,6 +54,11 @@ private void SyncParams() switch (fromParam.type) { case AnimatorControllerParameterType.Float: + if (!_floatParams.ContainsKey(fromParam.name)) + { + DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); + break; + } _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); break; case AnimatorControllerParameterType.Bool: diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index 32c27bf62..d4f7faadf 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -1,4 +1,5 @@ -using QSB.WorldSync; +using QSB.Patches; +using QSB.WorldSync; using UnityEngine; namespace QSB.GeyserSync @@ -11,6 +12,7 @@ private void Awake() { Instance = this; QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + QSBPatchManager.OnPatchType += OnPatchType; } private void OnSceneLoaded(OWScene scene, bool isInUniverse) @@ -24,8 +26,12 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) } } - public void EmptyUpdate() + public void OnPatchType(QSBPatchTypes type) { + if (type != QSBPatchTypes.OnNonServerClientConnect) + { + return; + } QSB.Helper.HarmonyHelper.EmptyMethod("Update"); } } diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index a14601a1a..fa30e95ae 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -12,10 +12,14 @@ namespace QSB.Patches { + public delegate void PatchEvent(QSBPatchTypes type); + public static class QSBPatchManager { public static List _patchList = new List(); + public static event PatchEvent OnPatchType; + public static void Init() { _patchList = new List @@ -33,10 +37,11 @@ public static void Init() public static void DoPatchType(QSBPatchTypes type) { - DebugLog.DebugWrite($"Setting up patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); + OnPatchType(type); + DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); foreach (var patch in _patchList.Where(x => x.Type == type)) { - DebugLog.DebugWrite($" - Doing patches for {patch.GetType().Name}", MessageType.Info); + DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); patch.DoPatches(); } } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 9beedb48a..6fd00cf16 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -264,6 +264,5 @@ private void UpdateLocal() DisableInput(); } } - } } From 81a8c0392173a0ef4cb3e84b0a303d20ed956e52 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 6 Nov 2020 22:05:43 +0000 Subject: [PATCH 050/207] fix patch, change splash text --- QSB/Patches/QSBPatchManager.cs | 2 +- QSB/QSB.cs | 4 ++++ QSB/SectorSync/QSBSectorManager.cs | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index fa30e95ae..f558f71c0 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -37,7 +37,7 @@ public static void Init() public static void DoPatchType(QSBPatchTypes type) { - OnPatchType(type); + OnPatchType?.Invoke(type); DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); foreach (var patch in _patchList.Where(x => x.Type == type)) { diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 9a80dbe0f..cb3a76829 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -1,5 +1,6 @@ using OWML.Common; using OWML.ModHelper; +using OWML.ModHelper.Events; using QSB.ConversationSync; using QSB.ElevatorSync; using QSB.GeyserSync; @@ -25,6 +26,9 @@ public class QSB : ModBehaviour private void Awake() { Application.runInBackground = true; + + var instance = TextTranslation.Get().GetValue("m_table"); + instance.theUITable[(int)UITextType.PleaseUseController] = "Outer Wilds is best experienced with fellow travellers..."; } private void Start() diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 68565ee7f..b7263c974 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -26,6 +26,10 @@ private void Awake() public void RebuildSectors() { + if (!QSBSceneManager.IsInUniverse) + { + return; + } DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); WorldRegistry.RemoveObjects(); var sectors = Resources.FindObjectsOfTypeAll().ToList(); From dc83bfb2ec4ce4bfea5313d06f698a2d98307da5 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 7 Nov 2020 11:45:25 +0000 Subject: [PATCH 051/207] rename method --- QSB/Instruments/QSBCamera/CameraManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 8e890e3c8..c96a88e46 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -27,10 +27,10 @@ private void OnSceneLoaded(OWScene scene, bool inUniverse) return; } IsSetUp = false; - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerCamera() != null && Locator.GetPlayerTransform() != null, FinishSetup); + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerCamera() != null && Locator.GetPlayerTransform() != null, Setup); } - private void FinishSetup() + private void Setup() { CameraBase = new GameObject(); CameraBase.SetActive(false); From d0996b4011e4a8d113830261c4f0688699bea5ee Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 7 Nov 2020 18:26:49 +0000 Subject: [PATCH 052/207] Fixed post processing --- QSB/Instruments/QSBCamera/CameraManager.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index c96a88e46..1f562c025 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -1,6 +1,7 @@ using OWML.Common; using QSB.Utility; using UnityEngine; +using UnityEngine.PostProcessing; namespace QSB.Instruments.QSBCamera { @@ -63,9 +64,6 @@ private void Setup() var fogImage = CameraObj.AddComponent(); fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; - //var postProcessing = CameraObj.AddComponent(); - //postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetAddComponent().profile; - CameraBase.SetActive(true); IsSetUp = true; @@ -90,7 +88,12 @@ public void SwitchTo3rdPerson() } OWInput.ChangeInputMode(InputMode.None); GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); - Locator.GetActiveCamera().mainCamera.enabled = false; + Locator.GetPlayerCamera().mainCamera.enabled = false; + if (CameraObj.GetComponent() == null) + { + var postProcessing = CameraObj.AddComponent(); + postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; + } Camera.enabled = true; Mode = CameraMode.ThirdPerson; } From e7a8c64af50ebefd14cb6cc0db46d3401c2e1e6a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 7 Nov 2020 21:20:30 +0000 Subject: [PATCH 053/207] move animation logic to animationsync --- QSB/Animation/AnimationSync.cs | 42 +++++++++++++++++++++++++++ QSB/Animation/AnimationType.cs | 9 ++++++ QSB/Animation/AnimatorMirror.cs | 2 ++ QSB/Instruments/InstrumentsManager.cs | 24 ++------------- QSB/QSB.csproj | 1 + 5 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 QSB/Animation/AnimationType.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 4d45ff33f..10f8f43bd 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -21,12 +21,19 @@ public class AnimationSync : PlayerSyncObject private PlayerCharacterController _playerController; private CrouchSync _crouchSync; + private RuntimeAnimatorController RiebeckController; + private RuntimeAnimatorController ChertController; + private RuntimeAnimatorController GabbroController; + private RuntimeAnimatorController FeldsparController; + private void Awake() { _anim = gameObject.AddComponent(); _netAnim = gameObject.AddComponent(); _netAnim.enabled = false; _netAnim.animator = _anim; + + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } private void OnDestroy() @@ -41,6 +48,20 @@ private void OnDestroy() _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; GlobalMessenger.RemoveListener(EventNames.SuitUp, OnSuitUp); GlobalMessenger.RemoveListener(EventNames.RemoveSuit, OnSuitDown); + + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool inUniverse) + { + var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); + RiebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; + var chertRoot = GameObject.Find("Traveller_HEA_Chert_ANIM_Chatter_Chipper"); + ChertController = chertRoot.GetComponent().runtimeAnimatorController; + var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); + GabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; + var feldsparRoot = GameObject.Find("Traveller_HEA_Feldspar_ANIM_Talking"); + FeldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; } private void InitCommon(Transform body) @@ -173,5 +194,26 @@ public void SetSuitState(bool state) } SuitDown(); } + + public void SetAnimationType(AnimationType type) + { + switch (type) + { + case AnimationType.PlayerSuited: + _bodyAnim.runtimeAnimatorController = _suitedAnimController; + _anim.runtimeAnimatorController = _suitedAnimController; + break; + case AnimationType.PlayerUnsuited: + _bodyAnim.runtimeAnimatorController = _unsuitedAnimController; + _anim.runtimeAnimatorController = _unsuitedAnimController; + break; + case AnimationType.Chert: + _bodyAnim.runtimeAnimatorController = ChertController; + _bodyAnim.SetTrigger("Playing"); + _anim.runtimeAnimatorController = ChertController; + _anim.SetTrigger("Playing"); + break; + } + } } } diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs new file mode 100644 index 000000000..7dee280e7 --- /dev/null +++ b/QSB/Animation/AnimationType.cs @@ -0,0 +1,9 @@ +namespace QSB.Animation +{ + public enum AnimationType + { + PlayerSuited, + PlayerUnsuited, + Chert + } +} diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index c40b22117..036d6d997 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -21,10 +21,12 @@ public void Init(Animator from, Animator to) _to = to; if (_from.runtimeAnimatorController == null) { + DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); _from.runtimeAnimatorController = _to.runtimeAnimatorController; } else if (_to.runtimeAnimatorController == null) { + DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); _to.runtimeAnimatorController = _from.runtimeAnimatorController; } foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 773c22667..b30e5bb05 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,4 +1,5 @@ -using QSB.EventsCore; +using QSB.Animation; +using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; using UnityEngine; @@ -8,28 +9,11 @@ namespace QSB.Instruments public class InstrumentsManager : MonoBehaviour { public static InstrumentsManager Instance; - private RuntimeAnimatorController RiebeckController; - private RuntimeAnimatorController ChertController; - private RuntimeAnimatorController GabbroController; - private RuntimeAnimatorController FeldsparController; private void Awake() { Instance = this; gameObject.AddComponent(); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - private void OnSceneLoaded(OWScene scene, bool inUniverse) - { - var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); - RiebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; - var chertRoot = GameObject.Find("Traveller_HEA_Chert_ANIM_Chatter_Chipper"); - ChertController = chertRoot.GetComponent().runtimeAnimatorController; - var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); - GabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; - var feldsparRoot = GameObject.Find("Traveller_HEA_Feldspar_ANIM_Talking"); - FeldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; } private void Update() @@ -40,9 +24,7 @@ private void Update() { CameraManager.Instance.SwitchTo3rdPerson(); SwitchToInstrument(InstrumentType.RIEBECK); - var animator = Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2").GetComponent(); - animator.runtimeAnimatorController = ChertController; - animator.SetTrigger("Playing"); + QSBPlayerManager.GetSyncObject(QSBPlayerManager.LocalPlayerId).SetAnimationType(AnimationType.Chert); } else { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 34a4ecc46..b1015bf65 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -123,6 +123,7 @@ + From 2048cbf735a4e54b609e34f3c67375fda62100cd Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 7 Nov 2020 21:25:22 +0000 Subject: [PATCH 054/207] fix "param not in dict" exception --- QSB/Animation/AnimationSync.cs | 14 +++++++------- QSB/Animation/AnimatorMirror.cs | 9 +++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 10f8f43bd..1930aeeb8 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -13,6 +13,7 @@ public class AnimationSync : PlayerSyncObject private Animator _anim; private Animator _bodyAnim; private NetworkAnimator _netAnim; + private AnimatorMirror _mirror; private RuntimeAnimatorController _suitedAnimController; private AnimatorOverrideController _unsuitedAnimController; @@ -68,14 +69,14 @@ private void InitCommon(Transform body) { _netAnim.enabled = true; _bodyAnim = body.GetComponent(); - var mirror = body.gameObject.AddComponent(); + _mirror = body.gameObject.AddComponent(); if (isLocalPlayer) { - mirror.Init(_bodyAnim, _anim); + _mirror.Init(_bodyAnim, _anim); } else { - mirror.Init(_anim, _bodyAnim); + _mirror.Init(_anim, _bodyAnim); } QSBPlayerManager.PlayerSyncObjects.Add(this); @@ -171,16 +172,14 @@ public void HandleTrigger(AnimTrigger trigger, float value) private void SuitUp() { - _bodyAnim.runtimeAnimatorController = _suitedAnimController; - _anim.runtimeAnimatorController = _suitedAnimController; + SetAnimationType(AnimationType.PlayerSuited); _unsuitedGraphics.SetActive(false); _suitedGraphics.SetActive(true); } private void SuitDown() { - _bodyAnim.runtimeAnimatorController = _unsuitedAnimController; - _anim.runtimeAnimatorController = _unsuitedAnimController; + SetAnimationType(AnimationType.PlayerUnsuited); _unsuitedGraphics.SetActive(true); _suitedGraphics.SetActive(false); } @@ -212,6 +211,7 @@ public void SetAnimationType(AnimationType type) _bodyAnim.SetTrigger("Playing"); _anim.runtimeAnimatorController = ChertController; _anim.SetTrigger("Playing"); + _mirror.RebuildFloatParams(); break; } } diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 036d6d997..f095b2428 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -78,5 +78,14 @@ private void SmoothFloats() _to.SetFloat(floatParam.Key, current); } } + + public void RebuildFloatParams() + { + _floatParams.Clear(); + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } } } From 62cc41409d760df44edcd6c5d3b78c77be471128 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 8 Nov 2020 10:26:25 +0000 Subject: [PATCH 055/207] add type to animtrigger --- QSB/Animation/AnimationSync.cs | 29 ++++++++++++++-------- QSB/Animation/Events/AnimTriggerEvent.cs | 10 +++++--- QSB/Animation/Events/AnimTriggerMessage.cs | 3 +++ 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 1930aeeb8..727e6d5c7 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -22,10 +22,12 @@ public class AnimationSync : PlayerSyncObject private PlayerCharacterController _playerController; private CrouchSync _crouchSync; - private RuntimeAnimatorController RiebeckController; - private RuntimeAnimatorController ChertController; - private RuntimeAnimatorController GabbroController; - private RuntimeAnimatorController FeldsparController; + private RuntimeAnimatorController _riebeckController; + private RuntimeAnimatorController _chertController; + private RuntimeAnimatorController _gabbroController; + private RuntimeAnimatorController _feldsparController; + + public AnimationType CurrentType; private void Awake() { @@ -56,13 +58,13 @@ private void OnDestroy() private void OnSceneLoaded(OWScene scene, bool inUniverse) { var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); - RiebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; + _riebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; var chertRoot = GameObject.Find("Traveller_HEA_Chert_ANIM_Chatter_Chipper"); - ChertController = chertRoot.GetComponent().runtimeAnimatorController; + _chertController = chertRoot.GetComponent().runtimeAnimatorController; var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); - GabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; + _gabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; var feldsparRoot = GameObject.Find("Traveller_HEA_Feldspar_ANIM_Talking"); - FeldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; + _feldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; } private void InitCommon(Transform body) @@ -144,7 +146,7 @@ private void InitCrouchSync() public void SendTrigger(AnimTrigger trigger, float value = 0) { - GlobalMessenger.FireEvent(EventNames.QSBAnimTrigger, (short)trigger, value); + GlobalMessenger.FireEvent(EventNames.QSBAnimTrigger, (short)CurrentType, (short)trigger, value); } public void HandleTrigger(AnimTrigger trigger, float value) @@ -196,6 +198,11 @@ public void SetSuitState(bool state) public void SetAnimationType(AnimationType type) { + if (CurrentType == type) + { + return; + } + CurrentType = type; switch (type) { case AnimationType.PlayerSuited: @@ -207,9 +214,9 @@ public void SetAnimationType(AnimationType type) _anim.runtimeAnimatorController = _unsuitedAnimController; break; case AnimationType.Chert: - _bodyAnim.runtimeAnimatorController = ChertController; + _bodyAnim.runtimeAnimatorController = _chertController; _bodyAnim.SetTrigger("Playing"); - _anim.runtimeAnimatorController = ChertController; + _anim.runtimeAnimatorController = _chertController; _anim.SetTrigger("Playing"); _mirror.RebuildFloatParams(); break; diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs index 1a4f05034..dc2280752 100644 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -7,15 +7,16 @@ public class AnimTriggerEvent : QSBEvent { public override EventType Type => EventType.AnimTrigger; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBAnimTrigger, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBAnimTrigger, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBAnimTrigger, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBAnimTrigger, Handler); - private void Handler(short triggerId, float value) => SendEvent(CreateMessage(triggerId, value)); + private void Handler(short typeId, short triggerId, float value) => SendEvent(CreateMessage(typeId, triggerId, value)); - private AnimTriggerMessage CreateMessage(short triggerId, float value) => new AnimTriggerMessage + private AnimTriggerMessage CreateMessage(short typeId, short triggerId, float value) => new AnimTriggerMessage { AboutId = LocalPlayerId, + TypeId = typeId, TriggerId = triggerId, Value = value }; @@ -27,6 +28,7 @@ public override void OnReceiveRemote(AnimTriggerMessage message) { return; } + animationSync.SetAnimationType((AnimationType)message.TypeId); animationSync.HandleTrigger((AnimTrigger)message.TriggerId, message.Value); } } diff --git a/QSB/Animation/Events/AnimTriggerMessage.cs b/QSB/Animation/Events/AnimTriggerMessage.cs index 4362d38b9..39fbedde2 100644 --- a/QSB/Animation/Events/AnimTriggerMessage.cs +++ b/QSB/Animation/Events/AnimTriggerMessage.cs @@ -5,6 +5,7 @@ namespace QSB.Animation.Events { public class AnimTriggerMessage : PlayerMessage { + public short TypeId; public short TriggerId; public float Value; @@ -13,6 +14,7 @@ public override void Deserialize(NetworkReader reader) base.Deserialize(reader); Value = reader.ReadSingle(); TriggerId = reader.ReadInt16(); + TypeId = reader.ReadInt16(); } public override void Serialize(NetworkWriter writer) @@ -20,6 +22,7 @@ public override void Serialize(NetworkWriter writer) base.Serialize(writer); writer.Write(Value); writer.Write(TriggerId); + writer.Write(TypeId); } } } From cfcef86ea8ef45e205eb8b447a3406d174ec9459 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 8 Nov 2020 14:41:16 +0000 Subject: [PATCH 056/207] custom network animator --- QSB/Animation/AnimationSync.cs | 33 +- QSB/Animation/Events/AnimTriggerEvent.cs | 10 +- QSB/Animation/Events/AnimTriggerMessage.cs | 2 - QSB/Animation/Events/ChangeAnimTypeEvent.cs | 29 ++ .../Events/ChangeAnimTypeMessage.cs} | 8 +- QSB/Animation/QSBAnimationMessage.cs | 35 ++ .../QSBAnimationParametersMessage.cs | 29 ++ QSB/Animation/QSBAnimationTriggerMessage.cs | 22 + QSB/Animation/QSBNetworkAnimator.cs | 377 ++++++++++++++++++ QSB/EventsCore/EventNames.cs | 2 +- QSB/EventsCore/QSBEventManager.cs | 3 +- QSB/Instruments/Events/PlayInstrumentEvent.cs | 30 -- QSB/Instruments/InstrumentType.cs | 13 - QSB/Instruments/InstrumentsManager.cs | 11 +- QSB/Player/PlayerInfo.cs | 8 +- QSB/QSB.csproj | 9 +- QSB/QSBNetworkManager.cs | 14 + 17 files changed, 549 insertions(+), 86 deletions(-) create mode 100644 QSB/Animation/Events/ChangeAnimTypeEvent.cs rename QSB/{Instruments/Events/PlayInstrumentMessage.cs => Animation/Events/ChangeAnimTypeMessage.cs} (66%) create mode 100644 QSB/Animation/QSBAnimationMessage.cs create mode 100644 QSB/Animation/QSBAnimationParametersMessage.cs create mode 100644 QSB/Animation/QSBAnimationTriggerMessage.cs create mode 100644 QSB/Animation/QSBNetworkAnimator.cs delete mode 100644 QSB/Instruments/Events/PlayInstrumentEvent.cs delete mode 100644 QSB/Instruments/InstrumentType.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 727e6d5c7..19279c482 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,10 +1,10 @@ using OWML.ModHelper.Events; using QSB.EventsCore; using QSB.Player; +using QSB.Utility; using System; using System.Linq; using UnityEngine; -using UnityEngine.Networking; namespace QSB.Animation { @@ -12,7 +12,7 @@ public class AnimationSync : PlayerSyncObject { private Animator _anim; private Animator _bodyAnim; - private NetworkAnimator _netAnim; + private QSBNetworkAnimator _netAnim; private AnimatorMirror _mirror; private RuntimeAnimatorController _suitedAnimController; @@ -27,12 +27,12 @@ public class AnimationSync : PlayerSyncObject private RuntimeAnimatorController _gabbroController; private RuntimeAnimatorController _feldsparController; - public AnimationType CurrentType; + public AnimationType CurrentType = AnimationType.PlayerUnsuited; private void Awake() { _anim = gameObject.AddComponent(); - _netAnim = gameObject.AddComponent(); + _netAnim = gameObject.AddComponent(); _netAnim.enabled = false; _netAnim.animator = _anim; @@ -137,27 +137,22 @@ private void InitCrouchSync() _crouchSync.Init(this, _playerController, _bodyAnim); } - private void OnJump() => SendTrigger(AnimTrigger.Jump); - private void OnBecomeGrounded() => SendTrigger(AnimTrigger.Grounded); - private void OnBecomeUngrounded() => SendTrigger(AnimTrigger.Ungrounded); + private void OnJump() => _netAnim.SetTrigger("Jump"); + private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); + private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); private void OnSuitUp() => SendTrigger(AnimTrigger.SuitUp); private void OnSuitDown() => SendTrigger(AnimTrigger.SuitDown); public void SendTrigger(AnimTrigger trigger, float value = 0) { - GlobalMessenger.FireEvent(EventNames.QSBAnimTrigger, (short)CurrentType, (short)trigger, value); + GlobalMessenger.FireEvent(EventNames.QSBAnimTrigger, (short)trigger, value); } public void HandleTrigger(AnimTrigger trigger, float value) { switch (trigger) { - case AnimTrigger.Jump: - case AnimTrigger.Grounded: - case AnimTrigger.Ungrounded: - _bodyAnim.SetTrigger(trigger.ToString()); - break; case AnimTrigger.SuitUp: SuitUp(); break; @@ -202,7 +197,11 @@ public void SetAnimationType(AnimationType type) { return; } + DebugLog.DebugWrite($"{_bodyAnim.name} Changing animtype to {Enum.GetName(typeof(AnimationType), type)}"); + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, type); CurrentType = type; + _netAnim.enabled = false; + _netAnim.animator = null; switch (type) { case AnimationType.PlayerSuited: @@ -218,9 +217,15 @@ public void SetAnimationType(AnimationType type) _bodyAnim.SetTrigger("Playing"); _anim.runtimeAnimatorController = _chertController; _anim.SetTrigger("Playing"); - _mirror.RebuildFloatParams(); break; } + _mirror.RebuildFloatParams(); + _netAnim.animator = _anim; + _netAnim.enabled = true; + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } } } } diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs index dc2280752..1a4f05034 100644 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ b/QSB/Animation/Events/AnimTriggerEvent.cs @@ -7,16 +7,15 @@ public class AnimTriggerEvent : QSBEvent { public override EventType Type => EventType.AnimTrigger; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBAnimTrigger, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBAnimTrigger, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBAnimTrigger, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBAnimTrigger, Handler); - private void Handler(short typeId, short triggerId, float value) => SendEvent(CreateMessage(typeId, triggerId, value)); + private void Handler(short triggerId, float value) => SendEvent(CreateMessage(triggerId, value)); - private AnimTriggerMessage CreateMessage(short typeId, short triggerId, float value) => new AnimTriggerMessage + private AnimTriggerMessage CreateMessage(short triggerId, float value) => new AnimTriggerMessage { AboutId = LocalPlayerId, - TypeId = typeId, TriggerId = triggerId, Value = value }; @@ -28,7 +27,6 @@ public override void OnReceiveRemote(AnimTriggerMessage message) { return; } - animationSync.SetAnimationType((AnimationType)message.TypeId); animationSync.HandleTrigger((AnimTrigger)message.TriggerId, message.Value); } } diff --git a/QSB/Animation/Events/AnimTriggerMessage.cs b/QSB/Animation/Events/AnimTriggerMessage.cs index 39fbedde2..1945d5610 100644 --- a/QSB/Animation/Events/AnimTriggerMessage.cs +++ b/QSB/Animation/Events/AnimTriggerMessage.cs @@ -14,7 +14,6 @@ public override void Deserialize(NetworkReader reader) base.Deserialize(reader); Value = reader.ReadSingle(); TriggerId = reader.ReadInt16(); - TypeId = reader.ReadInt16(); } public override void Serialize(NetworkWriter writer) @@ -22,7 +21,6 @@ public override void Serialize(NetworkWriter writer) base.Serialize(writer); writer.Write(Value); writer.Write(TriggerId); - writer.Write(TypeId); } } } diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs new file mode 100644 index 000000000..06d7c843a --- /dev/null +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -0,0 +1,29 @@ +using QSB.EventsCore; +using QSB.Player; +using QSB.Utility; + +namespace QSB.Animation.Events +{ + public class ChangeAnimTypeEvent : QSBEvent + { + public override EventType Type => EventType.PlayInstrument; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); + + private void Handler(AnimationType type) => SendEvent(CreateMessage(type)); + + private ChangeAnimTypeMessage CreateMessage(AnimationType type) => new ChangeAnimTypeMessage + { + AboutId = LocalPlayerId, + Type = type + }; + + public override void OnReceiveRemote(ChangeAnimTypeMessage message) + { + DebugLog.DebugWrite("RECEIVE CHANGEANIMTYPE TO " + message.Type); + QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Type); + } + } +} diff --git a/QSB/Instruments/Events/PlayInstrumentMessage.cs b/QSB/Animation/Events/ChangeAnimTypeMessage.cs similarity index 66% rename from QSB/Instruments/Events/PlayInstrumentMessage.cs rename to QSB/Animation/Events/ChangeAnimTypeMessage.cs index 1884e5a42..83efd5623 100644 --- a/QSB/Instruments/Events/PlayInstrumentMessage.cs +++ b/QSB/Animation/Events/ChangeAnimTypeMessage.cs @@ -1,16 +1,16 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.Instruments.Events +namespace QSB.Animation.Events { - public class PlayInstrumentMessage : PlayerMessage + public class ChangeAnimTypeMessage : PlayerMessage { - public InstrumentType Type; + public AnimationType Type; public override void Deserialize(NetworkReader reader) { base.Deserialize(reader); - Type = (InstrumentType)reader.ReadInt32(); + Type = (AnimationType)reader.ReadInt32(); } public override void Serialize(NetworkWriter writer) diff --git a/QSB/Animation/QSBAnimationMessage.cs b/QSB/Animation/QSBAnimationMessage.cs new file mode 100644 index 000000000..4412ae78d --- /dev/null +++ b/QSB/Animation/QSBAnimationMessage.cs @@ -0,0 +1,35 @@ +using UnityEngine.Networking; + +namespace QSB.Animation +{ + class QSBAnimationMessage : MessageBase + { + public NetworkInstanceId netId; + public int stateHash; + public float normalizedTime; + public byte[] parameters; + + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)stateHash); + writer.Write(normalizedTime); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } +} diff --git a/QSB/Animation/QSBAnimationParametersMessage.cs b/QSB/Animation/QSBAnimationParametersMessage.cs new file mode 100644 index 000000000..c0f69a930 --- /dev/null +++ b/QSB/Animation/QSBAnimationParametersMessage.cs @@ -0,0 +1,29 @@ +using UnityEngine.Networking; + +namespace QSB.Animation +{ + class QSBAnimationParametersMessage : MessageBase + { + public NetworkInstanceId netId; + public byte[] parameters; + + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + parameters = reader.ReadBytesAndSize(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } +} diff --git a/QSB/Animation/QSBAnimationTriggerMessage.cs b/QSB/Animation/QSBAnimationTriggerMessage.cs new file mode 100644 index 000000000..e609e4547 --- /dev/null +++ b/QSB/Animation/QSBAnimationTriggerMessage.cs @@ -0,0 +1,22 @@ +using UnityEngine.Networking; + +namespace QSB.Animation +{ + class QSBAnimationTriggerMessage : MessageBase + { + public NetworkInstanceId netId; + public int hash; + + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + hash = (int)reader.ReadPackedUInt32(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)hash); + } + } +} \ No newline at end of file diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs new file mode 100644 index 000000000..f86c0b634 --- /dev/null +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -0,0 +1,377 @@ +using QSB.Utility; +using System.Collections; +using UnityEngine; +using UnityEngine.Networking; +using Object = UnityEngine.Object; + +namespace QSB.Animation +{ + [RequireComponent(typeof(NetworkIdentity))] + [RequireComponent(typeof(Animator))] + class QSBNetworkAnimator : NetworkBehaviour + { + private static QSBAnimationMessage s_AnimationMessage = new QSBAnimationMessage(); + private static QSBAnimationParametersMessage s_AnimationParametersMessage = new QSBAnimationParametersMessage(); + private static QSBAnimationTriggerMessage s_AnimationTriggerMessage = new QSBAnimationTriggerMessage(); + private Animator m_Animator; + private uint m_ParameterSendBits; + private int m_AnimationHash; + private int m_TransitionHash; + private NetworkWriter m_ParameterWriter; + private float m_SendTimer; + + public Animator animator + { + get + { + return m_Animator; + } + set + { + DebugLog.DebugWrite("SETTING ANIMATOR"); + m_Animator = value; + ResetParameterOptions(); + } + } + + public void SetParameterAutoSend(int index, bool value) + { + if (value) + m_ParameterSendBits |= (uint)(1 << index); + else + m_ParameterSendBits &= (uint)~(1 << index); + } + + public bool GetParameterAutoSend(int index) + { + return ((int)m_ParameterSendBits & 1 << index) != 0; + } + + internal void ResetParameterOptions() + { + DebugLog.DebugWrite("Reset parameter options"); + m_ParameterSendBits = 0U; + } + + public override void OnStartAuthority() + { + m_ParameterWriter = new NetworkWriter(); + } + + private void FixedUpdate() + { + if (m_ParameterWriter == null) + { + return; + } + CheckSendRate(); + if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) + { + return; + } + var animationMessage = new QSBAnimationMessage + { + netId = netId, + stateHash = stateHash, + normalizedTime = normalizedTime + }; + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, false); + animationMessage.parameters = m_ParameterWriter.ToArray(); + if (hasAuthority || ClientScene.readyConnection != null) + { + ClientScene.readyConnection.Send(40, animationMessage); + } + else + { + if (!isServer || localPlayerAuthority) + return; + NetworkServer.SendToReady(gameObject, 40, animationMessage); + } + } + + private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) + { + stateHash = 0; + normalizedTime = 0.0f; + if (m_Animator.IsInTransition(0)) + { + var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); + if (animatorTransitionInfo.fullPathHash == m_TransitionHash) + { + return false; + } + m_TransitionHash = animatorTransitionInfo.fullPathHash; + m_AnimationHash = 0; + return true; + } + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + if (animatorStateInfo.fullPathHash == m_AnimationHash) + { + return false; + } + if (m_AnimationHash != 0) + { + stateHash = animatorStateInfo.fullPathHash; + normalizedTime = animatorStateInfo.normalizedTime; + } + m_TransitionHash = 0; + m_AnimationHash = animatorStateInfo.fullPathHash; + return true; + } + + private void CheckSendRate() + { + if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) + { + return; + } + m_SendTimer = Time.time + GetNetworkSendInterval(); + var parametersMessage = new QSBAnimationParametersMessage + { + netId = netId + }; + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, true); + parametersMessage.parameters = m_ParameterWriter.ToArray(); + if (hasAuthority && ClientScene.readyConnection != null) + { + ClientScene.readyConnection.Send(41, parametersMessage); + } + else + { + if (!isServer || localPlayerAuthority) + return; + NetworkServer.SendToReady(gameObject, 41, parametersMessage); + } + } + + internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) + { + if (hasAuthority) + { + return; + } + if (msg.stateHash != 0) + { + m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); + } + ReadParameters(reader, false); + } + + internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) + { + if (hasAuthority) + { + return; + } + ReadParameters(reader, true); + } + + internal void HandleAnimTriggerMsg(int hash) + { + m_Animator.SetTrigger(hash); + } + + private void WriteParameters(NetworkWriter writer, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Float: + writer.Write(m_Animator.GetFloat(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Bool: + writer.Write(m_Animator.GetBool(parameter.nameHash)); + break; + } + } + } + } + + private void ReadParameters(NetworkReader reader, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + if (reader.Length == reader.Position) + { + return; + } + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + var num = (int)reader.ReadPackedUInt32(); + m_Animator.SetInteger(parameter.nameHash, num); + break; + case AnimatorControllerParameterType.Float: + var single = reader.ReadSingle(); + m_Animator.SetFloat(parameter.nameHash, single); + break; + case AnimatorControllerParameterType.Bool: + var flag = reader.ReadBoolean(); + m_Animator.SetBool(parameter.nameHash, flag); + break; + } + } + } + } + + public override bool OnSerialize(NetworkWriter writer, bool forceAll) + { + if (!forceAll) + { + return false; + } + if (m_Animator.IsInTransition(0)) + { + var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + else + { + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + WriteParameters(writer, false); + return true; + } + + public override void OnDeserialize(NetworkReader reader, bool initialState) + { + if (!initialState) + { + return; + } + var stateNameHash = reader.ReadInt32(); + var normalizedTime = reader.ReadSingle(); + ReadParameters(reader, false); + m_Animator.Play(stateNameHash, 0, normalizedTime); + } + + public void SetTrigger(string triggerName) + { + SetTrigger(Animator.StringToHash(triggerName)); + } + + public void SetTrigger(int hash) + { + var animationTriggerMessage = new QSBAnimationTriggerMessage + { + netId = netId, + hash = hash + }; + if (hasAuthority && localPlayerAuthority) + { + if (NetworkClient.allClients.Count <= 0) + { + return; + } + var readyConnection = ClientScene.readyConnection; + if (readyConnection == null) + { + return; + } + readyConnection.Send(42, animationTriggerMessage); + } + else + { + if (!isServer || localPlayerAuthority) + { + return; + } + NetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); + } + } + + internal static void OnAnimationServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationMessage); + GameObject localObject = NetworkServer.FindLocalObject(QSBNetworkAnimator.s_AnimationMessage.netId); + if ((Object)localObject == (Object)null) + return; + QSBNetworkAnimator component = localObject.GetComponent(); + if (!((Object)component != (Object)null)) + return; + NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationMessage.parameters); + component.HandleAnimMsg(QSBNetworkAnimator.s_AnimationMessage, reader); + NetworkServer.SendToReady(localObject, (short)40, (MessageBase)QSBNetworkAnimator.s_AnimationMessage); + } + + internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationParametersMessage); + GameObject localObject = NetworkServer.FindLocalObject(QSBNetworkAnimator.s_AnimationParametersMessage.netId); + if ((Object)localObject == (Object)null) + return; + QSBNetworkAnimator component = localObject.GetComponent(); + if (!((Object)component != (Object)null)) + return; + NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationParametersMessage.parameters); + component.HandleAnimParamsMsg(QSBNetworkAnimator.s_AnimationParametersMessage, reader); + NetworkServer.SendToReady(localObject, (short)41, (MessageBase)QSBNetworkAnimator.s_AnimationParametersMessage); + } + + internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationTriggerMessage); + GameObject localObject = NetworkServer.FindLocalObject(QSBNetworkAnimator.s_AnimationTriggerMessage.netId); + if ((Object)localObject == (Object)null) + return; + QSBNetworkAnimator component = localObject.GetComponent(); + if (!((Object)component != (Object)null)) + return; + component.HandleAnimTriggerMsg(QSBNetworkAnimator.s_AnimationTriggerMessage.hash); + NetworkServer.SendToReady(localObject, (short)42, (MessageBase)QSBNetworkAnimator.s_AnimationTriggerMessage); + } + + internal static void OnAnimationClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(s_AnimationMessage); + GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.s_AnimationMessage.netId); + if ((Object)localObject == (Object)null) + return; + QSBNetworkAnimator component = localObject.GetComponent(); + if (!((Object)component != (Object)null)) + return; + NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationMessage.parameters); + component.HandleAnimMsg(QSBNetworkAnimator.s_AnimationMessage, reader); + } + + internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationParametersMessage); + GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.s_AnimationParametersMessage.netId); + if ((Object)localObject == (Object)null) + return; + QSBNetworkAnimator component = localObject.GetComponent(); + if (!((Object)component != (Object)null)) + return; + NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationParametersMessage.parameters); + component.HandleAnimParamsMsg(QSBNetworkAnimator.s_AnimationParametersMessage, reader); + } + + internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationTriggerMessage); + GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.s_AnimationTriggerMessage.netId); + if ((Object)localObject == (Object)null) + return; + QSBNetworkAnimator component = localObject.GetComponent(); + if (!((Object)component != (Object)null)) + return; + component.HandleAnimTriggerMsg(QSBNetworkAnimator.s_AnimationTriggerMessage.hash); + } + } +} diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index 755edaf92..7a490009f 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -34,7 +34,7 @@ public static class EventNames public static string QSBOrbUser = "QSBOrbUser"; public static string QSBConversation = "QSBConversation"; public static string QSBConversationStartEnd = "QSBConversationStartEnd"; - public static string QSBPlayInstrument = "QSBPlayInstrument"; + public static string QSBChangeAnimType = "QSBPlayInstrument"; public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; } } diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 61f3ea64d..e0eb533d6 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -5,7 +5,6 @@ using QSB.DeathSync.Events; using QSB.ElevatorSync.Events; using QSB.GeyserSync.Events; -using QSB.Instruments.Events; using QSB.OrbSync.Events; using QSB.Player.Events; using QSB.TimeSync.Events; @@ -45,7 +44,7 @@ public static void Init() new OrbUserEvent(), new ConversationEvent(), new ConversationStartEndEvent(), - new PlayInstrumentEvent(), + new ChangeAnimTypeEvent(), new ServerSendPlayerStatesEvent() }; diff --git a/QSB/Instruments/Events/PlayInstrumentEvent.cs b/QSB/Instruments/Events/PlayInstrumentEvent.cs deleted file mode 100644 index 33bf610f7..000000000 --- a/QSB/Instruments/Events/PlayInstrumentEvent.cs +++ /dev/null @@ -1,30 +0,0 @@ -using QSB.EventsCore; -using QSB.Player; -using QSB.Utility; -using System; - -namespace QSB.Instruments.Events -{ - public class PlayInstrumentEvent : QSBEvent - { - public override EventType Type => EventType.PlayInstrument; - - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayInstrument, Handler); - - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayInstrument, Handler); - - private void Handler(InstrumentType type) => SendEvent(CreateMessage(type)); - - private PlayInstrumentMessage CreateMessage(InstrumentType type) => new PlayInstrumentMessage - { - AboutId = LocalPlayerId, - Type = type - }; - - public override void OnReceiveRemote(PlayInstrumentMessage message) - { - QSBPlayerManager.GetPlayer(message.AboutId).CurrentInstrument = message.Type; - DebugLog.DebugWrite($"Player ID {message.AboutId} now playing instrument {Enum.GetName(typeof(InstrumentType), message.Type)}"); - } - } -} diff --git a/QSB/Instruments/InstrumentType.cs b/QSB/Instruments/InstrumentType.cs deleted file mode 100644 index 126e632b7..000000000 --- a/QSB/Instruments/InstrumentType.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace QSB.Instruments -{ - public enum InstrumentType - { - NONE, - CHERT, - ESKER, - FELDSPAR, - GABBRO, - RIEBECK, - SOLANUM - } -} \ No newline at end of file diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index b30e5bb05..a09910d96 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,5 +1,4 @@ using QSB.Animation; -using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; using UnityEngine; @@ -23,21 +22,19 @@ private void Update() if (!QSBPlayerManager.LocalPlayer.PlayingInstrument) { CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToInstrument(InstrumentType.RIEBECK); - QSBPlayerManager.GetSyncObject(QSBPlayerManager.LocalPlayerId).SetAnimationType(AnimationType.Chert); + SwitchToInstrument(AnimationType.Chert); } else { CameraManager.Instance.SwitchTo1stPerson(); - SwitchToInstrument(InstrumentType.NONE); + SwitchToInstrument(AnimationType.PlayerUnsuited); } } } - public void SwitchToInstrument(InstrumentType type) + public void SwitchToInstrument(AnimationType type) { - QSBPlayerManager.LocalPlayer.CurrentInstrument = type; - GlobalMessenger.FireEvent(EventNames.QSBPlayInstrument, type); + QSBPlayerManager.GetSyncObject(QSBPlayerManager.LocalPlayerId).SetAnimationType(type); } } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 9efff9dd6..366c91c3a 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -1,5 +1,4 @@ using QSB.Animation; -using QSB.Instruments; using QSB.Tools; using QSB.Utility; using System.Linq; @@ -31,9 +30,10 @@ public class PlayerInfo public int CurrentDialogueID { get; set; } public GameObject CurrentDialogueBox { get; set; } - // Instruments - public InstrumentType CurrentInstrument { get; set; } - public bool PlayingInstrument => CurrentInstrument != InstrumentType.NONE; + // Animation + public AnimationSync Animator => QSBPlayerManager.GetSyncObject(PlayerId); + public bool PlayingInstrument => Animator.CurrentType != AnimationType.PlayerSuited + && Animator.CurrentType != AnimationType.PlayerUnsuited; public PlayerInfo(uint id) { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index b1015bf65..345bad147 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -131,6 +131,10 @@ + + + + @@ -147,9 +151,8 @@ - - - + + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index a75386ff7..231e0ea1c 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -117,6 +117,13 @@ public override void OnStartServer() Destroy(item); } } + + NetworkServer.UnregisterHandler(40); + NetworkServer.UnregisterHandler(41); + NetworkServer.UnregisterHandler(42); + NetworkServer.RegisterHandler(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + NetworkServer.RegisterHandler(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + NetworkServer.RegisterHandler(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); } public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins @@ -146,6 +153,13 @@ public override void OnClientConnect(NetworkConnection connection) // Called on QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); } + singleton.client.UnregisterHandler(40); + singleton.client.UnregisterHandler(41); + singleton.client.UnregisterHandler(42); + singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); _lobby.CanEditName = false; From 8548baa680d83d92f717e40a59d88bd6d683ee6b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 8 Nov 2020 16:10:10 +0000 Subject: [PATCH 057/207] cleanup --- QSB/Animation/AnimTrigger.cs | 12 --- QSB/Animation/AnimationSync.cs | 29 +----- QSB/Animation/CrouchSync.cs | 2 +- QSB/Animation/Events/AnimTriggerEvent.cs | 33 ------- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 - QSB/Animation/Events/CrouchEvent.cs | 33 +++++++ .../{ => Events}/QSBAnimationMessage.cs | 2 +- .../QSBAnimationParametersMessage.cs | 2 +- .../QSBAnimationTriggerMessage.cs | 2 +- QSB/Animation/QSBNetworkAnimator.cs | 99 +++++++++---------- QSB/EventsCore/EventNames.cs | 2 +- QSB/EventsCore/QSBEventManager.cs | 2 +- .../FloatMessage.cs} | 10 +- QSB/QSB.csproj | 11 +-- 14 files changed, 100 insertions(+), 141 deletions(-) delete mode 100644 QSB/Animation/AnimTrigger.cs delete mode 100644 QSB/Animation/Events/AnimTriggerEvent.cs create mode 100644 QSB/Animation/Events/CrouchEvent.cs rename QSB/Animation/{ => Events}/QSBAnimationMessage.cs (96%) rename QSB/Animation/{ => Events}/QSBAnimationParametersMessage.cs (95%) rename QSB/Animation/{ => Events}/QSBAnimationTriggerMessage.cs (94%) rename QSB/{Animation/Events/AnimTriggerMessage.cs => MessagesCore/FloatMessage.cs} (64%) diff --git a/QSB/Animation/AnimTrigger.cs b/QSB/Animation/AnimTrigger.cs deleted file mode 100644 index cae73f0e4..000000000 --- a/QSB/Animation/AnimTrigger.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace QSB.Animation -{ - public enum AnimTrigger - { - Jump = 0, - Grounded = 1, - Ungrounded = 2, - SuitUp = 3, - SuitDown = 4, - Crouch = 5 - } -} diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 19279c482..e527ad3de 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -49,8 +49,6 @@ private void OnDestroy() _playerController.OnJump -= OnJump; _playerController.OnBecomeGrounded -= OnBecomeGrounded; _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - GlobalMessenger.RemoveListener(EventNames.SuitUp, OnSuitUp); - GlobalMessenger.RemoveListener(EventNames.RemoveSuit, OnSuitDown); QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; } @@ -98,9 +96,6 @@ public void InitLocal(Transform body) _playerController.OnBecomeGrounded += OnBecomeGrounded; _playerController.OnBecomeUngrounded += OnBecomeUngrounded; - GlobalMessenger.AddListener(EventNames.SuitUp, OnSuitUp); - GlobalMessenger.AddListener(EventNames.RemoveSuit, OnSuitDown); - InitCrouchSync(); } @@ -141,30 +136,14 @@ private void InitCrouchSync() private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - private void OnSuitUp() => SendTrigger(AnimTrigger.SuitUp); - private void OnSuitDown() => SendTrigger(AnimTrigger.SuitDown); - - public void SendTrigger(AnimTrigger trigger, float value = 0) + public void SendCrouch(float value = 0) { - GlobalMessenger.FireEvent(EventNames.QSBAnimTrigger, (short)trigger, value); + GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); } - public void HandleTrigger(AnimTrigger trigger, float value) + public void HandleCrouch(float value) { - switch (trigger) - { - case AnimTrigger.SuitUp: - SuitUp(); - break; - case AnimTrigger.SuitDown: - SuitDown(); - break; - case AnimTrigger.Crouch: - _crouchSync.CrouchParam.Target = value; - break; - default: - throw new ArgumentOutOfRangeException(nameof(trigger), trigger, null); - } + _crouchSync.CrouchParam.Target = value; } private void SuitUp() diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index e43316ddf..2c3ac65ff 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -53,7 +53,7 @@ private void SyncLocalCrouch() { return; } - _animationSync.SendTrigger(AnimTrigger.Crouch, jumpChargeFraction); + _animationSync.SendCrouch(jumpChargeFraction); _lastSentJumpChargeFraction = jumpChargeFraction; _sendTimer = 0; } diff --git a/QSB/Animation/Events/AnimTriggerEvent.cs b/QSB/Animation/Events/AnimTriggerEvent.cs deleted file mode 100644 index 1a4f05034..000000000 --- a/QSB/Animation/Events/AnimTriggerEvent.cs +++ /dev/null @@ -1,33 +0,0 @@ -using QSB.EventsCore; -using QSB.Player; - -namespace QSB.Animation.Events -{ - public class AnimTriggerEvent : QSBEvent - { - public override EventType Type => EventType.AnimTrigger; - - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBAnimTrigger, Handler); - - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBAnimTrigger, Handler); - - private void Handler(short triggerId, float value) => SendEvent(CreateMessage(triggerId, value)); - - private AnimTriggerMessage CreateMessage(short triggerId, float value) => new AnimTriggerMessage - { - AboutId = LocalPlayerId, - TriggerId = triggerId, - Value = value - }; - - public override void OnReceiveRemote(AnimTriggerMessage message) - { - var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); - if (animationSync == null) - { - return; - } - animationSync.HandleTrigger((AnimTrigger)message.TriggerId, message.Value); - } - } -} diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 06d7c843a..81c0bb35b 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -1,6 +1,5 @@ using QSB.EventsCore; using QSB.Player; -using QSB.Utility; namespace QSB.Animation.Events { @@ -22,7 +21,6 @@ public class ChangeAnimTypeEvent : QSBEvent public override void OnReceiveRemote(ChangeAnimTypeMessage message) { - DebugLog.DebugWrite("RECEIVE CHANGEANIMTYPE TO " + message.Type); QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Type); } } diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs new file mode 100644 index 000000000..d440a5efa --- /dev/null +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -0,0 +1,33 @@ +using QSB.EventsCore; +using QSB.MessagesCore; +using QSB.Player; + +namespace QSB.Animation.Events +{ + public class CrouchEvent : QSBEvent + { + public override EventType Type => EventType.AnimTrigger; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); + + private void Handler(float value) => SendEvent(CreateMessage(value)); + + private FloatMessage CreateMessage(float value) => new FloatMessage + { + AboutId = LocalPlayerId, + Value = value + }; + + public override void OnReceiveRemote(FloatMessage message) + { + var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); + if (animationSync == null) + { + return; + } + animationSync.HandleCrouch(message.Value); + } + } +} diff --git a/QSB/Animation/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs similarity index 96% rename from QSB/Animation/QSBAnimationMessage.cs rename to QSB/Animation/Events/QSBAnimationMessage.cs index 4412ae78d..c1a4b72ed 100644 --- a/QSB/Animation/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.Animation +namespace QSB.Animation.Events { class QSBAnimationMessage : MessageBase { diff --git a/QSB/Animation/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs similarity index 95% rename from QSB/Animation/QSBAnimationParametersMessage.cs rename to QSB/Animation/Events/QSBAnimationParametersMessage.cs index c0f69a930..1cda7b52b 100644 --- a/QSB/Animation/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.Animation +namespace QSB.Animation.Events { class QSBAnimationParametersMessage : MessageBase { diff --git a/QSB/Animation/QSBAnimationTriggerMessage.cs b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs similarity index 94% rename from QSB/Animation/QSBAnimationTriggerMessage.cs rename to QSB/Animation/Events/QSBAnimationTriggerMessage.cs index e609e4547..1be48b7d9 100644 --- a/QSB/Animation/QSBAnimationTriggerMessage.cs +++ b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.Animation +namespace QSB.Animation.Events { class QSBAnimationTriggerMessage : MessageBase { diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index f86c0b634..228e3d3b5 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -1,18 +1,20 @@ -using QSB.Utility; -using System.Collections; +using QSB.Animation.Events; using UnityEngine; using UnityEngine.Networking; using Object = UnityEngine.Object; namespace QSB.Animation { + // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. + [RequireComponent(typeof(NetworkIdentity))] [RequireComponent(typeof(Animator))] class QSBNetworkAnimator : NetworkBehaviour { - private static QSBAnimationMessage s_AnimationMessage = new QSBAnimationMessage(); - private static QSBAnimationParametersMessage s_AnimationParametersMessage = new QSBAnimationParametersMessage(); - private static QSBAnimationTriggerMessage s_AnimationTriggerMessage = new QSBAnimationTriggerMessage(); + private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); + private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); + private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); + private Animator m_Animator; private uint m_ParameterSendBits; private int m_AnimationHash; @@ -28,9 +30,8 @@ public Animator animator } set { - DebugLog.DebugWrite("SETTING ANIMATOR"); m_Animator = value; - ResetParameterOptions(); + m_ParameterSendBits = 0U; } } @@ -47,12 +48,6 @@ public bool GetParameterAutoSend(int index) return ((int)m_ParameterSendBits & 1 << index) != 0; } - internal void ResetParameterOptions() - { - DebugLog.DebugWrite("Reset parameter options"); - m_ParameterSendBits = 0U; - } - public override void OnStartAuthority() { m_ParameterWriter = new NetworkWriter(); @@ -75,9 +70,11 @@ private void FixedUpdate() stateHash = stateHash, normalizedTime = normalizedTime }; + m_ParameterWriter.SeekZero(); WriteParameters(m_ParameterWriter, false); animationMessage.parameters = m_ParameterWriter.ToArray(); + if (hasAuthority || ClientScene.readyConnection != null) { ClientScene.readyConnection.Send(40, animationMessage); @@ -85,7 +82,9 @@ private void FixedUpdate() else { if (!isServer || localPlayerAuthority) + { return; + } NetworkServer.SendToReady(gameObject, 40, animationMessage); } } @@ -297,81 +296,81 @@ public void SetTrigger(int hash) internal static void OnAnimationServerMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationMessage); - GameObject localObject = NetworkServer.FindLocalObject(QSBNetworkAnimator.s_AnimationMessage.netId); - if ((Object)localObject == (Object)null) - return; - QSBNetworkAnimator component = localObject.GetComponent(); - if (!((Object)component != (Object)null)) + netMsg.ReadMessage(AnimationMessage); + var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + { return; - NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationMessage.parameters); - component.HandleAnimMsg(QSBNetworkAnimator.s_AnimationMessage, reader); - NetworkServer.SendToReady(localObject, (short)40, (MessageBase)QSBNetworkAnimator.s_AnimationMessage); + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(AnimationMessage.parameters); + component?.HandleAnimMsg(AnimationMessage, reader); + NetworkServer.SendToReady(localObject, 40, AnimationMessage); } internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationParametersMessage); - GameObject localObject = NetworkServer.FindLocalObject(QSBNetworkAnimator.s_AnimationParametersMessage.netId); - if ((Object)localObject == (Object)null) - return; - QSBNetworkAnimator component = localObject.GetComponent(); - if (!((Object)component != (Object)null)) + netMsg.ReadMessage(ParametersMessage); + var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + { return; - NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationParametersMessage.parameters); - component.HandleAnimParamsMsg(QSBNetworkAnimator.s_AnimationParametersMessage, reader); - NetworkServer.SendToReady(localObject, (short)41, (MessageBase)QSBNetworkAnimator.s_AnimationParametersMessage); + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(ParametersMessage.parameters); + component?.HandleAnimParamsMsg(ParametersMessage, reader); + NetworkServer.SendToReady(localObject, 41, ParametersMessage); } internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationTriggerMessage); - GameObject localObject = NetworkServer.FindLocalObject(QSBNetworkAnimator.s_AnimationTriggerMessage.netId); - if ((Object)localObject == (Object)null) - return; - QSBNetworkAnimator component = localObject.GetComponent(); - if (!((Object)component != (Object)null)) + netMsg.ReadMessage(TriggersMessage); + var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + { return; - component.HandleAnimTriggerMsg(QSBNetworkAnimator.s_AnimationTriggerMessage.hash); - NetworkServer.SendToReady(localObject, (short)42, (MessageBase)QSBNetworkAnimator.s_AnimationTriggerMessage); + } + var component = localObject.GetComponent(); + component?.HandleAnimTriggerMsg(TriggersMessage.hash); + NetworkServer.SendToReady(localObject, 42, TriggersMessage); } internal static void OnAnimationClientMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(s_AnimationMessage); - GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.s_AnimationMessage.netId); + netMsg.ReadMessage(AnimationMessage); + GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.AnimationMessage.netId); if ((Object)localObject == (Object)null) return; QSBNetworkAnimator component = localObject.GetComponent(); if (!((Object)component != (Object)null)) return; - NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationMessage.parameters); - component.HandleAnimMsg(QSBNetworkAnimator.s_AnimationMessage, reader); + NetworkReader reader = new NetworkReader(QSBNetworkAnimator.AnimationMessage.parameters); + component.HandleAnimMsg(QSBNetworkAnimator.AnimationMessage, reader); } internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationParametersMessage); - GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.s_AnimationParametersMessage.netId); + netMsg.ReadMessage(QSBNetworkAnimator.ParametersMessage); + GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.ParametersMessage.netId); if ((Object)localObject == (Object)null) return; QSBNetworkAnimator component = localObject.GetComponent(); if (!((Object)component != (Object)null)) return; - NetworkReader reader = new NetworkReader(QSBNetworkAnimator.s_AnimationParametersMessage.parameters); - component.HandleAnimParamsMsg(QSBNetworkAnimator.s_AnimationParametersMessage, reader); + NetworkReader reader = new NetworkReader(QSBNetworkAnimator.ParametersMessage.parameters); + component.HandleAnimParamsMsg(QSBNetworkAnimator.ParametersMessage, reader); } internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.s_AnimationTriggerMessage); - GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.s_AnimationTriggerMessage.netId); + netMsg.ReadMessage(QSBNetworkAnimator.TriggersMessage); + GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.TriggersMessage.netId); if ((Object)localObject == (Object)null) return; QSBNetworkAnimator component = localObject.GetComponent(); if (!((Object)component != (Object)null)) return; - component.HandleAnimTriggerMsg(QSBNetworkAnimator.s_AnimationTriggerMessage.hash); + component.HandleAnimTriggerMsg(QSBNetworkAnimator.TriggersMessage.hash); } } } diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index 7a490009f..9012f9a9c 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -29,7 +29,7 @@ public static class EventNames public static string QSBOnProbeWarp = "QSBOnProbeWarp"; public static string QSBStartLift = "QSBStartLift"; public static string QSBGeyserState = "QSBGeyserState"; - public static string QSBAnimTrigger = "QSBAnimTrigger"; + public static string QSBCrouch = "QSBAnimTrigger"; public static string QSBOrbSlot = "QSBOrbSlot"; public static string QSBOrbUser = "QSBOrbUser"; public static string QSBConversation = "QSBConversation"; diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index e0eb533d6..0f20259be 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -39,7 +39,7 @@ public static void Init() new ElevatorEvent(), new GeyserEvent(), new ServerTimeEvent(), - new AnimTriggerEvent(), + new CrouchEvent(), new OrbSlotEvent(), new OrbUserEvent(), new ConversationEvent(), diff --git a/QSB/Animation/Events/AnimTriggerMessage.cs b/QSB/MessagesCore/FloatMessage.cs similarity index 64% rename from QSB/Animation/Events/AnimTriggerMessage.cs rename to QSB/MessagesCore/FloatMessage.cs index 1945d5610..b0ce45a0e 100644 --- a/QSB/Animation/Events/AnimTriggerMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -1,26 +1,22 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.Animation.Events +namespace QSB.MessagesCore { - public class AnimTriggerMessage : PlayerMessage + public class FloatMessage : PlayerMessage { - public short TypeId; - public short TriggerId; public float Value; public override void Deserialize(NetworkReader reader) { base.Deserialize(reader); Value = reader.ReadSingle(); - TriggerId = reader.ReadInt16(); } public override void Serialize(NetworkWriter writer) { base.Serialize(writer); writer.Write(Value); - writer.Write(TriggerId); } } -} +} \ No newline at end of file diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 345bad147..a3cf17e82 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -124,16 +124,14 @@ - + - - - - - + + + @@ -157,6 +155,7 @@ + From 32da2f0cbacdddec6a3687235c181be920cc65ea Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 8 Nov 2020 16:13:10 +0000 Subject: [PATCH 058/207] remove newlines --- QSB/Animation/AnimControllerPatch.cs | 2 +- QSB/Animation/AnimationSync.cs | 2 +- QSB/Animation/AnimationType.cs | 2 +- QSB/Animation/AnimatorMirror.cs | 2 +- QSB/Animation/CrouchSync.cs | 2 +- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 +- QSB/Animation/Events/ChangeAnimTypeMessage.cs | 2 +- QSB/Animation/Events/CrouchEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/Animation/Events/QSBAnimationMessage.cs | 2 +- QSB/Animation/Events/QSBAnimationParametersMessage.cs | 2 +- QSB/Animation/QSBNetworkAnimator.cs | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/QSB/Animation/AnimControllerPatch.cs b/QSB/Animation/AnimControllerPatch.cs index 18afbe4f8..725702ae1 100644 --- a/QSB/Animation/AnimControllerPatch.cs +++ b/QSB/Animation/AnimControllerPatch.cs @@ -23,4 +23,4 @@ private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) } } } -} +} \ No newline at end of file diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index e527ad3de..eaf36ed6f 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -207,4 +207,4 @@ public void SetAnimationType(AnimationType type) } } } -} +} \ No newline at end of file diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs index 7dee280e7..f06f198a7 100644 --- a/QSB/Animation/AnimationType.cs +++ b/QSB/Animation/AnimationType.cs @@ -6,4 +6,4 @@ public enum AnimationType PlayerUnsuited, Chert } -} +} \ No newline at end of file diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index f095b2428..98bdca95a 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -88,4 +88,4 @@ public void RebuildFloatParams() } } } -} +} \ No newline at end of file diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 2c3ac65ff..559762cb0 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -69,4 +69,4 @@ private void SyncRemoteCrouch() _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); } } -} +} \ No newline at end of file diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 81c0bb35b..736596a51 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -24,4 +24,4 @@ public override void OnReceiveRemote(ChangeAnimTypeMessage message) QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Type); } } -} +} \ No newline at end of file diff --git a/QSB/Animation/Events/ChangeAnimTypeMessage.cs b/QSB/Animation/Events/ChangeAnimTypeMessage.cs index 83efd5623..a3b1fe905 100644 --- a/QSB/Animation/Events/ChangeAnimTypeMessage.cs +++ b/QSB/Animation/Events/ChangeAnimTypeMessage.cs @@ -19,4 +19,4 @@ public override void Serialize(NetworkWriter writer) writer.Write((int)Type); } } -} +} \ No newline at end of file diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index d440a5efa..1a4191f6f 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -30,4 +30,4 @@ public override void OnReceiveRemote(FloatMessage message) animationSync.HandleCrouch(message.Value); } } -} +} \ No newline at end of file diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 732398b83..4fd2d8296 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -40,4 +40,4 @@ public override void OnReceiveLocal(ToggleMessage message) QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); } } -} +} \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs index c1a4b72ed..ab6523b5c 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -32,4 +32,4 @@ public override void Serialize(NetworkWriter writer) } } } -} +} \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs index 1cda7b52b..4d34b97f6 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -26,4 +26,4 @@ public override void Serialize(NetworkWriter writer) } } } -} +} \ No newline at end of file diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index 228e3d3b5..117014e44 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -373,4 +373,4 @@ internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) component.HandleAnimTriggerMsg(QSBNetworkAnimator.TriggersMessage.hash); } } -} +} \ No newline at end of file From f425be060f00a53fc53f9fbefa7d5159ca9dcb06 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 8 Nov 2020 19:32:04 +0000 Subject: [PATCH 059/207] start of animation fix --- QSB/Animation/AnimationSync.cs | 30 ++++++++++++--------- QSB/Animation/AnimatorMirror.cs | 12 +++++++++ QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 ++ QSB/Animation/Events/PlayerSuitEvent.cs | 10 +++++++ QSB/Instruments/InstrumentsManager.cs | 10 ++++--- 5 files changed, 47 insertions(+), 17 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index eaf36ed6f..e349fee8c 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,4 +1,5 @@ -using OWML.ModHelper.Events; +using OWML.Common; +using OWML.ModHelper.Events; using QSB.EventsCore; using QSB.Player; using QSB.Utility; @@ -13,7 +14,6 @@ public class AnimationSync : PlayerSyncObject private Animator _anim; private Animator _bodyAnim; private QSBNetworkAnimator _netAnim; - private AnimatorMirror _mirror; private RuntimeAnimatorController _suitedAnimController; private AnimatorOverrideController _unsuitedAnimController; @@ -27,6 +27,7 @@ public class AnimationSync : PlayerSyncObject private RuntimeAnimatorController _gabbroController; private RuntimeAnimatorController _feldsparController; + public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType = AnimationType.PlayerUnsuited; private void Awake() @@ -69,14 +70,14 @@ private void InitCommon(Transform body) { _netAnim.enabled = true; _bodyAnim = body.GetComponent(); - _mirror = body.gameObject.AddComponent(); + Mirror = body.gameObject.AddComponent(); if (isLocalPlayer) { - _mirror.Init(_bodyAnim, _anim); + Mirror.Init(_bodyAnim, _anim); } else { - _mirror.Init(_anim, _bodyAnim); + Mirror.Init(_anim, _bodyAnim); } QSBPlayerManager.PlayerSyncObjects.Add(this); @@ -149,15 +150,15 @@ public void HandleCrouch(float value) private void SuitUp() { SetAnimationType(AnimationType.PlayerSuited); - _unsuitedGraphics.SetActive(false); - _suitedGraphics.SetActive(true); + _unsuitedGraphics?.SetActive(false); + _suitedGraphics?.SetActive(true); } private void SuitDown() { SetAnimationType(AnimationType.PlayerUnsuited); - _unsuitedGraphics.SetActive(true); - _suitedGraphics.SetActive(false); + _unsuitedGraphics?.SetActive(true); + _suitedGraphics?.SetActive(false); } public void SetSuitState(bool state) @@ -179,17 +180,17 @@ public void SetAnimationType(AnimationType type) DebugLog.DebugWrite($"{_bodyAnim.name} Changing animtype to {Enum.GetName(typeof(AnimationType), type)}"); GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, type); CurrentType = type; - _netAnim.enabled = false; - _netAnim.animator = null; switch (type) { case AnimationType.PlayerSuited: _bodyAnim.runtimeAnimatorController = _suitedAnimController; _anim.runtimeAnimatorController = _suitedAnimController; + DebugLog.DebugWrite("done suited"); break; case AnimationType.PlayerUnsuited: _bodyAnim.runtimeAnimatorController = _unsuitedAnimController; _anim.runtimeAnimatorController = _unsuitedAnimController; + DebugLog.DebugWrite("done unsuited"); break; case AnimationType.Chert: _bodyAnim.runtimeAnimatorController = _chertController; @@ -198,9 +199,12 @@ public void SetAnimationType(AnimationType type) _anim.SetTrigger("Playing"); break; } - _mirror.RebuildFloatParams(); + if (_bodyAnim.runtimeAnimatorController == null) + { + DebugLog.ToConsole("Error - Somehow set RAC of bodyAnim to null?", MessageType.Error); + } _netAnim.animator = _anim; - _netAnim.enabled = true; + Mirror.RebuildFloatParams(); for (var i = 0; i < _anim.parameterCount; i++) { _netAnim.SetParameterAutoSend(i, true); diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 98bdca95a..ac0a1b4dd 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -1,4 +1,5 @@ using OWML.Common; +using QSB.Player; using QSB.Utility; using System.Collections.Generic; using System.Linq; @@ -35,6 +36,11 @@ public void Init(Animator from, Animator to) } } + private PlayerInfo GetPlayer() + { + return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; + } + private void Update() { if (_to == null || _from == null) @@ -59,6 +65,7 @@ private void SyncParams() if (!_floatParams.ContainsKey(fromParam.name)) { DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); + RebuildFloatParams(); break; } _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); @@ -81,7 +88,12 @@ private void SmoothFloats() public void RebuildFloatParams() { + if (_from.runtimeAnimatorController == null) + { + DebugLog.ToConsole($"Error - Controller of \"from\" for player {GetPlayer().PlayerId} is null! Current animtype is {GetPlayer().Animator.CurrentType}.", MessageType.Error); + } _floatParams.Clear(); + DebugLog.DebugWrite($"REBUILD FLOAT PARAMS id {GetPlayer().PlayerId}"); foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) { _floatParams.Add(param.name, new AnimFloatParam()); diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 736596a51..bd2fdd1ba 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -1,5 +1,6 @@ using QSB.EventsCore; using QSB.Player; +using QSB.Utility; namespace QSB.Animation.Events { @@ -21,6 +22,7 @@ public class ChangeAnimTypeEvent : QSBEvent public override void OnReceiveRemote(ChangeAnimTypeMessage message) { + DebugLog.DebugWrite("Receive remote ChangeAnimType - " + message.Type); QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Type); } } diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 4fd2d8296..f91679d30 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -38,6 +38,16 @@ public override void OnReceiveRemote(ToggleMessage message) public override void OnReceiveLocal(ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); + var animator = QSBPlayerManager.LocalPlayer.Animator; + if (message.ToggleValue) + { + animator.CurrentType = AnimationType.PlayerSuited; + } + else + { + animator.CurrentType = AnimationType.PlayerUnsuited; + } + animator.Mirror.RebuildFloatParams(); } } } \ No newline at end of file diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index a09910d96..3461579ac 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -8,6 +8,7 @@ namespace QSB.Instruments public class InstrumentsManager : MonoBehaviour { public static InstrumentsManager Instance; + private AnimationType _savedType; private void Awake() { @@ -21,20 +22,21 @@ private void Update() { if (!QSBPlayerManager.LocalPlayer.PlayingInstrument) { + _savedType = QSBPlayerManager.LocalPlayer.Animator.CurrentType; CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToInstrument(AnimationType.Chert); + SwitchToType(AnimationType.Chert); } else { CameraManager.Instance.SwitchTo1stPerson(); - SwitchToInstrument(AnimationType.PlayerUnsuited); + SwitchToType(_savedType); } } } - public void SwitchToInstrument(AnimationType type) + public void SwitchToType(AnimationType type) { - QSBPlayerManager.GetSyncObject(QSBPlayerManager.LocalPlayerId).SetAnimationType(type); + QSBPlayerManager.LocalPlayer.Animator.SetAnimationType(type); } } } From 18f87b0b35b4c63dd70e94b0cf8ed9c6a73a5ae4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 9 Nov 2020 21:05:50 +0000 Subject: [PATCH 060/207] fix animation syncing --- QSB/Animation/AnimationSync.cs | 77 +++++++++++++-------- QSB/Animation/AnimatorMirror.cs | 5 -- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 12 ++-- QSB/Animation/Events/PlayerSuitEvent.cs | 3 + QSB/Animation/QSBNetworkAnimator.cs | 39 ++++++----- QSB/Instruments/InstrumentsManager.cs | 2 + QSB/QSBNetworkManager.cs | 11 ++- 7 files changed, 85 insertions(+), 64 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index e349fee8c..5d3895fa7 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -3,7 +3,6 @@ using QSB.EventsCore; using QSB.Player; using QSB.Utility; -using System; using System.Linq; using UnityEngine; @@ -37,7 +36,7 @@ private void Awake() _netAnim.enabled = false; _netAnim.animator = _anim; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + QSBSceneManager.OnSceneLoaded += (OWScene scene, bool universe) => LoadControllers(universe); } private void OnDestroy() @@ -51,11 +50,15 @@ private void OnDestroy() _playerController.OnBecomeGrounded -= OnBecomeGrounded; _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + QSBSceneManager.OnSceneLoaded -= (OWScene scene, bool universe) => LoadControllers(universe); } - private void OnSceneLoaded(OWScene scene, bool inUniverse) + private void LoadControllers(bool universe) { + if (!universe) + { + return; + } var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); _riebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; var chertRoot = GameObject.Find("Traveller_HEA_Chert_ANIM_Chatter_Chipper"); @@ -68,6 +71,10 @@ private void OnSceneLoaded(OWScene scene, bool inUniverse) private void InitCommon(Transform body) { + if (QSBSceneManager.IsInUniverse) + { + LoadControllers(true); + } _netAnim.enabled = true; _bodyAnim = body.GetComponent(); Mirror = body.gameObject.AddComponent(); @@ -86,10 +93,17 @@ private void InitCommon(Transform body) { _netAnim.SetParameterAutoSend(i, true); } + + var playerAnimController = body.GetComponent(); + _suitedAnimController = AnimControllerPatch.SuitedAnimController; + _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); + _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); + _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); } public void InitLocal(Transform body) { + DebugLog.DebugWrite($"InitLocal ({PlayerId})"); InitCommon(body); _playerController = body.parent.GetComponent(); @@ -102,16 +116,12 @@ public void InitLocal(Transform body) public void InitRemote(Transform body) { + DebugLog.DebugWrite($"InitRemote ({PlayerId})"); InitCommon(body); var playerAnimController = body.GetComponent(); playerAnimController.enabled = false; - _suitedAnimController = AnimControllerPatch.SuitedAnimController; - _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); - _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); - _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); - playerAnimController.SetValue("_suitedGroup", new GameObject()); playerAnimController.SetValue("_unsuitedGroup", new GameObject()); playerAnimController.SetValue("_baseAnimController", null); @@ -149,16 +159,14 @@ public void HandleCrouch(float value) private void SuitUp() { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); SetAnimationType(AnimationType.PlayerSuited); - _unsuitedGraphics?.SetActive(false); - _suitedGraphics?.SetActive(true); } private void SuitDown() { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); SetAnimationType(AnimationType.PlayerUnsuited); - _unsuitedGraphics?.SetActive(true); - _suitedGraphics?.SetActive(false); } public void SetSuitState(bool state) @@ -177,33 +185,46 @@ public void SetAnimationType(AnimationType type) { return; } - DebugLog.DebugWrite($"{_bodyAnim.name} Changing animtype to {Enum.GetName(typeof(AnimationType), type)}"); - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, type); CurrentType = type; + if (_unsuitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); + } + if (_suitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); + } + RuntimeAnimatorController controller = default; switch (type) { case AnimationType.PlayerSuited: - _bodyAnim.runtimeAnimatorController = _suitedAnimController; - _anim.runtimeAnimatorController = _suitedAnimController; - DebugLog.DebugWrite("done suited"); + controller = _suitedAnimController; + _unsuitedGraphics?.SetActive(false); + _suitedGraphics?.SetActive(true); break; case AnimationType.PlayerUnsuited: - _bodyAnim.runtimeAnimatorController = _unsuitedAnimController; - _anim.runtimeAnimatorController = _unsuitedAnimController; - DebugLog.DebugWrite("done unsuited"); + controller = _unsuitedAnimController; + _unsuitedGraphics?.SetActive(true); + _suitedGraphics?.SetActive(false); break; case AnimationType.Chert: - _bodyAnim.runtimeAnimatorController = _chertController; - _bodyAnim.SetTrigger("Playing"); - _anim.runtimeAnimatorController = _chertController; - _anim.SetTrigger("Playing"); + controller = _chertController; break; } - if (_bodyAnim.runtimeAnimatorController == null) + _anim.runtimeAnimatorController = controller; + _bodyAnim.runtimeAnimatorController = controller; + if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) { - DebugLog.ToConsole("Error - Somehow set RAC of bodyAnim to null?", MessageType.Error); + _bodyAnim.SetTrigger("Playing"); + _anim.SetTrigger("Playing"); } - _netAnim.animator = _anim; + else + { + // Avoids "jumping" look when exiting instrument + _bodyAnim.SetTrigger("Grounded"); + _anim.SetTrigger("Grounded"); + } + _netAnim.animator = _anim; // Probably not needed. Mirror.RebuildFloatParams(); for (var i = 0; i < _anim.parameterCount; i++) { diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index ac0a1b4dd..3fb87fd0d 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -88,12 +88,7 @@ private void SmoothFloats() public void RebuildFloatParams() { - if (_from.runtimeAnimatorController == null) - { - DebugLog.ToConsole($"Error - Controller of \"from\" for player {GetPlayer().PlayerId} is null! Current animtype is {GetPlayer().Animator.CurrentType}.", MessageType.Error); - } _floatParams.Clear(); - DebugLog.DebugWrite($"REBUILD FLOAT PARAMS id {GetPlayer().PlayerId}"); foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) { _floatParams.Add(param.name, new AnimFloatParam()); diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index bd2fdd1ba..53d752467 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -8,21 +8,21 @@ public class ChangeAnimTypeEvent : QSBEvent { public override EventType Type => EventType.PlayInstrument; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); - private void Handler(AnimationType type) => SendEvent(CreateMessage(type)); + private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); - private ChangeAnimTypeMessage CreateMessage(AnimationType type) => new ChangeAnimTypeMessage + private ChangeAnimTypeMessage CreateMessage(uint player, AnimationType type) => new ChangeAnimTypeMessage { - AboutId = LocalPlayerId, + AboutId = player, Type = type }; public override void OnReceiveRemote(ChangeAnimTypeMessage message) { - DebugLog.DebugWrite("Receive remote ChangeAnimType - " + message.Type); + DebugLog.DebugWrite($"ChangeAnimType for {message.AboutId} - {message.Type}"); QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Type); } } diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index f91679d30..32427d603 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,6 +1,7 @@ using QSB.EventsCore; using QSB.Messaging; using QSB.Player; +using QSB.Utility; namespace QSB.Animation { @@ -31,12 +32,14 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { + DebugLog.DebugWrite($"remote suit {(message.ToggleValue ? "on" : "off")} player {message.AboutId}"); var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); } public override void OnReceiveLocal(ToggleMessage message) { + DebugLog.DebugWrite($"local suit {(message.ToggleValue ? "on" : "off")}"); QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); var animator = QSBPlayerManager.LocalPlayer.Animator; if (message.ToggleValue) diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index 117014e44..ac5cd087b 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -1,4 +1,5 @@ using QSB.Animation.Events; +using QSB.Utility; using UnityEngine; using UnityEngine.Networking; using Object = UnityEngine.Object; @@ -338,39 +339,39 @@ internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) internal static void OnAnimationClientMessage(NetworkMessage netMsg) { netMsg.ReadMessage(AnimationMessage); - GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.AnimationMessage.netId); - if ((Object)localObject == (Object)null) + var localObject = ClientScene.FindLocalObject(AnimationMessage.netId); + if (localObject == null) return; - QSBNetworkAnimator component = localObject.GetComponent(); - if (!((Object)component != (Object)null)) + var component = localObject.GetComponent(); + if (component == null) return; - NetworkReader reader = new NetworkReader(QSBNetworkAnimator.AnimationMessage.parameters); - component.HandleAnimMsg(QSBNetworkAnimator.AnimationMessage, reader); + var reader = new NetworkReader(AnimationMessage.parameters); + component.HandleAnimMsg(AnimationMessage, reader); } internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.ParametersMessage); - GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.ParametersMessage.netId); - if ((Object)localObject == (Object)null) + netMsg.ReadMessage(ParametersMessage); + var localObject = ClientScene.FindLocalObject(ParametersMessage.netId); + if (localObject == null) return; - QSBNetworkAnimator component = localObject.GetComponent(); - if (!((Object)component != (Object)null)) + var component = localObject.GetComponent(); + if (component == null) return; - NetworkReader reader = new NetworkReader(QSBNetworkAnimator.ParametersMessage.parameters); - component.HandleAnimParamsMsg(QSBNetworkAnimator.ParametersMessage, reader); + var reader = new NetworkReader(ParametersMessage.parameters); + component.HandleAnimParamsMsg(ParametersMessage, reader); } internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) { - netMsg.ReadMessage(QSBNetworkAnimator.TriggersMessage); - GameObject localObject = ClientScene.FindLocalObject(QSBNetworkAnimator.TriggersMessage.netId); - if ((Object)localObject == (Object)null) + netMsg.ReadMessage(TriggersMessage); + var localObject = ClientScene.FindLocalObject(TriggersMessage.netId); + if (localObject == null) return; - QSBNetworkAnimator component = localObject.GetComponent(); - if (!((Object)component != (Object)null)) + var component = localObject.GetComponent(); + if (component == null) return; - component.HandleAnimTriggerMsg(QSBNetworkAnimator.TriggersMessage.hash); + component.HandleAnimTriggerMsg(TriggersMessage.hash); } } } \ No newline at end of file diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 3461579ac..0b8dd768e 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,4 +1,5 @@ using QSB.Animation; +using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; using UnityEngine; @@ -36,6 +37,7 @@ private void Update() public void SwitchToType(AnimationType type) { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); QSBPlayerManager.LocalPlayer.Animator.SetAnimationType(type); } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 231e0ea1c..7941437ae 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -148,16 +148,15 @@ public override void OnClientConnect(NetworkConnection connection) // Called on QSBSectorManager.Instance.RebuildSectors(); OrbManager.Instance.QueueBuildSlots(); - if (NetworkClient.active && !NetworkServer.active) + if (!NetworkServer.localClientActive) { QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); + singleton.client.UnregisterHandler(40); + singleton.client.UnregisterHandler(41); + singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); } - - singleton.client.UnregisterHandler(40); - singleton.client.UnregisterHandler(41); singleton.client.UnregisterHandler(42); - singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); From cfe5f0bfc5470163e67e303981ed729176ba8ed4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 9 Nov 2020 21:16:43 +0000 Subject: [PATCH 061/207] changes splash text --- QSB/QSB.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index cb3a76829..1310329fb 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -28,7 +28,8 @@ private void Awake() Application.runInBackground = true; var instance = TextTranslation.Get().GetValue("m_table"); - instance.theUITable[(int)UITextType.PleaseUseController] = "Outer Wilds is best experienced with fellow travellers..."; + instance.theUITable[(int)UITextType.PleaseUseController] = + "Quantum Space Buddies is best experienced with fellow travellers..."; } private void Start() From 8e2ab0607409949ddb7c98a359d8a1dc5f9786ee Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 10 Nov 2020 09:05:27 +0000 Subject: [PATCH 062/207] cleanup, fixed animation --- QSB/Animation/AnimationSync.cs | 2 -- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 13 +++++------ QSB/Animation/Events/PlayerSuitEvent.cs | 18 +++++---------- QSB/Animation/QSBNetworkAnimator.cs | 2 -- QSB/DeathSync/Events/PlayerDeathEvent.cs | 13 ++++++----- QSB/DeathSync/Events/PlayerDeathMessage.cs | 22 ------------------- .../EnumMessage.cs} | 12 +++++----- QSB/QSB.cs | 2 +- QSB/QSB.csproj | 3 +-- 9 files changed, 27 insertions(+), 60 deletions(-) delete mode 100644 QSB/DeathSync/Events/PlayerDeathMessage.cs rename QSB/{Animation/Events/ChangeAnimTypeMessage.cs => MessagesCore/EnumMessage.cs} (59%) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 5d3895fa7..d71da63d9 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -103,7 +103,6 @@ private void InitCommon(Transform body) public void InitLocal(Transform body) { - DebugLog.DebugWrite($"InitLocal ({PlayerId})"); InitCommon(body); _playerController = body.parent.GetComponent(); @@ -116,7 +115,6 @@ public void InitLocal(Transform body) public void InitRemote(Transform body) { - DebugLog.DebugWrite($"InitRemote ({PlayerId})"); InitCommon(body); var playerAnimController = body.GetComponent(); diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 53d752467..cb9235a12 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -1,10 +1,10 @@ using QSB.EventsCore; +using QSB.MessagesCore; using QSB.Player; -using QSB.Utility; namespace QSB.Animation.Events { - public class ChangeAnimTypeEvent : QSBEvent + public class ChangeAnimTypeEvent : QSBEvent> { public override EventType Type => EventType.PlayInstrument; @@ -14,16 +14,15 @@ public class ChangeAnimTypeEvent : QSBEvent private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); - private ChangeAnimTypeMessage CreateMessage(uint player, AnimationType type) => new ChangeAnimTypeMessage + private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage { AboutId = player, - Type = type + Value = type }; - public override void OnReceiveRemote(ChangeAnimTypeMessage message) + public override void OnReceiveRemote(EnumMessage message) { - DebugLog.DebugWrite($"ChangeAnimType for {message.AboutId} - {message.Type}"); - QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Type); + QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Value); } } } \ No newline at end of file diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 32427d603..816269205 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,7 +1,6 @@ using QSB.EventsCore; using QSB.Messaging; using QSB.Player; -using QSB.Utility; namespace QSB.Animation { @@ -32,25 +31,20 @@ public override void CloseListener() public override void OnReceiveRemote(ToggleMessage message) { - DebugLog.DebugWrite($"remote suit {(message.ToggleValue ? "on" : "off")} player {message.AboutId}"); var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); + + var animator = player.Animator; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.SetAnimationType(type); } public override void OnReceiveLocal(ToggleMessage message) { - DebugLog.DebugWrite($"local suit {(message.ToggleValue ? "on" : "off")}"); QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); var animator = QSBPlayerManager.LocalPlayer.Animator; - if (message.ToggleValue) - { - animator.CurrentType = AnimationType.PlayerSuited; - } - else - { - animator.CurrentType = AnimationType.PlayerUnsuited; - } - animator.Mirror.RebuildFloatParams(); + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.CurrentType = type; } } } \ No newline at end of file diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index ac5cd087b..fd4d89f06 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -1,8 +1,6 @@ using QSB.Animation.Events; -using QSB.Utility; using UnityEngine; using UnityEngine.Networking; -using Object = UnityEngine.Object; namespace QSB.Animation { diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index c4109236d..57cd35c1f 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,10 +1,11 @@ using QSB.EventsCore; +using QSB.MessagesCore; using QSB.Player; using QSB.Utility; namespace QSB.DeathSync.Events { - public class PlayerDeathEvent : QSBEvent + public class PlayerDeathEvent : QSBEvent> { public override EventType Type => EventType.PlayerDeath; @@ -14,19 +15,19 @@ public class PlayerDeathEvent : QSBEvent private void Handler(DeathType type) => SendEvent(CreateMessage(type)); - private PlayerDeathMessage CreateMessage(DeathType type) => new PlayerDeathMessage + private EnumMessage CreateMessage(DeathType type) => new EnumMessage { AboutId = LocalPlayerId, - DeathType = type + Value = type }; - public override void OnReceiveRemote(PlayerDeathMessage message) + public override void OnReceiveRemote(EnumMessage message) { var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - var deathMessage = Necronomicon.GetPhrase(message.DeathType); + var deathMessage = Necronomicon.GetPhrase(message.Value); DebugLog.ToAll(string.Format(deathMessage, playerName)); } - public override void OnReceiveLocal(PlayerDeathMessage message) => OnReceiveRemote(message); + public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); } } diff --git a/QSB/DeathSync/Events/PlayerDeathMessage.cs b/QSB/DeathSync/Events/PlayerDeathMessage.cs deleted file mode 100644 index 14f398b51..000000000 --- a/QSB/DeathSync/Events/PlayerDeathMessage.cs +++ /dev/null @@ -1,22 +0,0 @@ -using QSB.Messaging; -using UnityEngine.Networking; - -namespace QSB.DeathSync.Events -{ - public class PlayerDeathMessage : PlayerMessage - { - public DeathType DeathType { get; set; } - - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - DeathType = (DeathType)reader.ReadInt16(); - } - - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write((short)DeathType); - } - } -} diff --git a/QSB/Animation/Events/ChangeAnimTypeMessage.cs b/QSB/MessagesCore/EnumMessage.cs similarity index 59% rename from QSB/Animation/Events/ChangeAnimTypeMessage.cs rename to QSB/MessagesCore/EnumMessage.cs index a3b1fe905..6138b2db2 100644 --- a/QSB/Animation/Events/ChangeAnimTypeMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -1,22 +1,22 @@ using QSB.Messaging; using UnityEngine.Networking; -namespace QSB.Animation.Events +namespace QSB.MessagesCore { - public class ChangeAnimTypeMessage : PlayerMessage + public class EnumMessage : PlayerMessage { - public AnimationType Type; + public T Value; public override void Deserialize(NetworkReader reader) { base.Deserialize(reader); - Type = (AnimationType)reader.ReadInt32(); + Value = (T)(object)reader.ReadInt32(); } public override void Serialize(NetworkWriter writer) { base.Serialize(writer); - writer.Write((int)Type); + writer.Write((int)(object)Value); } } -} \ No newline at end of file +} diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 1310329fb..9f8be2f2e 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -28,7 +28,7 @@ private void Awake() Application.runInBackground = true; var instance = TextTranslation.Get().GetValue("m_table"); - instance.theUITable[(int)UITextType.PleaseUseController] = + instance.theUITable[(int)UITextType.PleaseUseController] = "Quantum Space Buddies is best experienced with fellow travellers..."; } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index a3cf17e82..64329e15d 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -150,11 +150,11 @@ - + @@ -182,7 +182,6 @@ - From bf61265d1582ccbc1ed3f3cb0a6c35ce1d6990be Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 10 Nov 2020 09:19:24 +0000 Subject: [PATCH 063/207] add other controllers --- QSB/Animation/AnimationSync.cs | 22 ++++++++++++++++++++-- QSB/Animation/AnimationType.cs | 7 ++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index d71da63d9..5715b76ce 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -21,10 +21,13 @@ public class AnimationSync : PlayerSyncObject private PlayerCharacterController _playerController; private CrouchSync _crouchSync; - private RuntimeAnimatorController _riebeckController; private RuntimeAnimatorController _chertController; - private RuntimeAnimatorController _gabbroController; + private RuntimeAnimatorController _eskerController; private RuntimeAnimatorController _feldsparController; + private RuntimeAnimatorController _gabbroController; + private RuntimeAnimatorController _riebeckController; + private RuntimeAnimatorController _solanumController; + public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType = AnimationType.PlayerUnsuited; @@ -208,6 +211,21 @@ public void SetAnimationType(AnimationType type) case AnimationType.Chert: controller = _chertController; break; + case AnimationType.Esker: + controller = _eskerController; + break; + case AnimationType.Feldspar: + controller = _feldsparController; + break; + case AnimationType.Gabbro: + controller = _gabbroController; + break; + case AnimationType.Riebeck: + controller = _riebeckController; + break; + case AnimationType.Solanum: + controller = _solanumController; + break; } _anim.runtimeAnimatorController = controller; _bodyAnim.runtimeAnimatorController = controller; diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs index f06f198a7..cc08269d9 100644 --- a/QSB/Animation/AnimationType.cs +++ b/QSB/Animation/AnimationType.cs @@ -2,8 +2,13 @@ { public enum AnimationType { + Chert, + Esker, + Feldspar, + Gabbro, PlayerSuited, PlayerUnsuited, - Chert + Riebeck, + Solanum } } \ No newline at end of file From 65792732b2909d750290152f005d7ea209def5d6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 10 Nov 2020 13:36:28 +0000 Subject: [PATCH 064/207] cleanup --- QSB/Animation/AnimationSync.cs | 2 +- .../Events/ConversationStartEndEvent.cs | 15 ---- .../QSBFacePlayerWhenTalking.cs | 68 ------------------- QSB/QSB.cs | 2 +- QSB/QSB.csproj | 1 - QSB/QSBNetworkManager.cs | 12 ---- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- 7 files changed, 3 insertions(+), 99 deletions(-) delete mode 100644 QSB/ConversationSync/QSBFacePlayerWhenTalking.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 5715b76ce..4d9f5cbbe 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -27,7 +27,7 @@ public class AnimationSync : PlayerSyncObject private RuntimeAnimatorController _gabbroController; private RuntimeAnimatorController _riebeckController; private RuntimeAnimatorController _solanumController; - + public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType = AnimationType.PlayerUnsuited; diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index a6b9602a5..5313451f1 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -65,21 +65,6 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) dialogueTree.GetComponent().EnableInteraction(); } } - - // Make character turn to player (if they're meant to) - var qsbFacePlayer = dialogueTree.GetComponentInParent(); - if (qsbFacePlayer != null) - { - if (message.State) - { - DebugLog.DebugWrite("start convo faceplayer for " + message.CharacterId); - qsbFacePlayer.StartConversation(QSBPlayerManager.GetPlayer(message.PlayerId).Body.transform.position); - } - else - { - qsbFacePlayer.EndConversation(); - } - } } } } diff --git a/QSB/ConversationSync/QSBFacePlayerWhenTalking.cs b/QSB/ConversationSync/QSBFacePlayerWhenTalking.cs deleted file mode 100644 index cc21d85b9..000000000 --- a/QSB/ConversationSync/QSBFacePlayerWhenTalking.cs +++ /dev/null @@ -1,68 +0,0 @@ -using QSB.Utility; -using UnityEngine; - -namespace QSB.ConversationSync -{ - class QSBFacePlayerWhenTalking : MonoBehaviour - { - private CharacterDialogueTree _dialogueTree; - private Quaternion _origLocalRotation; - private Quaternion _targetLocalRotation; - - private void Awake() - { - _dialogueTree = GetComponentInChildren(); - DebugLog.DebugWrite("Awake of QSBFacePlayer. Attached to " + _dialogueTree.name); - if (_dialogueTree != null) - { - _dialogueTree.OnStartConversation += () => StartConversation(Locator.GetPlayerTransform().position); - _dialogueTree.OnEndConversation += EndConversation; - } - _origLocalRotation = base.transform.localRotation; - } - - private void OnDestroy() - { - if (_dialogueTree != null) - { - _dialogueTree.OnStartConversation -= () => StartConversation(Locator.GetPlayerTransform().position); - _dialogueTree.OnEndConversation -= EndConversation; - } - } - - private void Start() - { - enabled = false; - } - - public void StartConversation(Vector3 playerPosition) - { - Vector3 vector = playerPosition - transform.position; - Vector3 vector2 = vector - Vector3.Project(vector, transform.up); - float angle = Vector3.Angle(transform.forward, vector2) * Mathf.Sign(Vector3.Dot(vector2, transform.right)); - Vector3 axis = transform.parent.InverseTransformDirection(transform.up); - Quaternion lhs = Quaternion.AngleAxis(angle, axis); - this.FaceLocalRotation(lhs * transform.localRotation); - } - - public void EndConversation() - { - FaceLocalRotation(_origLocalRotation); - } - - private void FaceLocalRotation(Quaternion targetLocalRotation) - { - enabled = true; - _targetLocalRotation = targetLocalRotation; - } - - private void Update() - { - transform.localRotation = Quaternion.Slerp(transform.localRotation, _targetLocalRotation, 0.1f); - if (Mathf.Abs(Quaternion.Angle(transform.localRotation, _targetLocalRotation)) < 1f) - { - enabled = false; - } - } - } -} diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 9f8be2f2e..f07f51406 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -29,7 +29,7 @@ private void Awake() var instance = TextTranslation.Get().GetValue("m_table"); instance.theUITable[(int)UITextType.PleaseUseController] = - "Quantum Space Buddies is best experienced with fellow travellers..."; + "Quantum Space Buddies is best experienced with friends..."; } private void Start() diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 64329e15d..93cd3d957 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -140,7 +140,6 @@ - diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 7941437ae..bbfcde082 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -1,7 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; using QSB.Animation; -using QSB.ConversationSync; using QSB.DeathSync; using QSB.ElevatorSync; using QSB.EventsCore; @@ -77,12 +76,6 @@ private void OnSceneLoaded(OWScene scene, bool inUniverse) OrbManager.Instance.BuildOrbs(); WorldRegistry.OldDialogueTrees.Clear(); WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - - foreach (var item in Resources.FindObjectsOfTypeAll()) - { - item.gameObject.AddComponent(); - Destroy(item); - } } } @@ -111,11 +104,6 @@ public override void OnStartServer() if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) { WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - foreach (var item in Resources.FindObjectsOfTypeAll()) - { - item.gameObject.AddComponent(); - Destroy(item); - } } NetworkServer.UnregisterHandler(40); diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index deed0f1a1..0a7631d88 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -19,4 +19,4 @@ public override void Serialize(NetworkWriter writer) writer.Write(ObjectId); } } -} +} \ No newline at end of file From f7015770741fa155866a6794475e60cf0465b864 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 10 Nov 2020 16:51:47 +0000 Subject: [PATCH 065/207] moved to different computer --- QSB/QSB.csproj.user | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/QSB.csproj.user b/QSB/QSB.csproj.user index c8a11e84d..ec6d119b6 100644 --- a/QSB/QSB.csproj.user +++ b/QSB/QSB.csproj.user @@ -1,7 +1,7 @@  - D:\EpicGames\OuterWilds + E:\Epic\Epic Games\OuterWilds C:\Users\Henry\AppData\Roaming\OuterWildsModManager\OWML ShowAllFiles From ceb3b77d6b00e89db29d1dba44ffa6135f953af1 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 11 Nov 2020 08:31:20 +0000 Subject: [PATCH 066/207] renamed "direction" to "isGoingUp" --- QSB/ElevatorSync/Events/ElevatorEvent.cs | 6 +-- QSB/ElevatorSync/QSBElevator.cs | 7 ++- QSB/Instruments/InstrumentsManager.cs | 47 ++++++++++++++------ QSB/QSB.cs | 4 ++ QSB/QSB.csproj | 1 + QSB/QSBInputManager.cs | 55 ++++++++++++++++++++++++ 6 files changed, 100 insertions(+), 20 deletions(-) create mode 100644 QSB/QSBInputManager.cs diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 81a980eee..4a7060fc1 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -12,11 +12,11 @@ public class ElevatorEvent : QSBEvent public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); - private void Handler(int id, bool direction) => SendEvent(CreateMessage(id, direction)); + private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); - private BoolWorldObjectMessage CreateMessage(int id, bool direction) => new BoolWorldObjectMessage + private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage { - State = direction, + State = isGoingUp, ObjectId = id }; diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index 2d442c23d..c04d023d6 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -30,15 +30,14 @@ private void InitValues() _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); } - public void RemoteCall(bool direction) + public void RemoteCall(bool isGoingUp) { - SetDirection(direction); + SetDirection(isGoingUp); RemoteStartLift(); } - private void SetDirection(bool direction) + private void SetDirection(bool isGoingUp) { - var isGoingUp = direction; var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; _elevator.SetValue("_goingToTheEnd", isGoingUp); _elevator.SetValue("_targetLocalPos", targetPos); diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 0b8dd768e..0a2a3e2d1 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -2,6 +2,7 @@ using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; +using QSB.Utility; using UnityEngine; namespace QSB.Instruments @@ -15,24 +16,44 @@ private void Awake() { Instance = this; gameObject.AddComponent(); + + QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.SolanumTaunt += () => StartInstrument(AnimationType.Solanum); + } + + private void OnDestroy() + { + QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.SolanumTaunt -= () => StartInstrument(AnimationType.Solanum); + } + + public void StartInstrument(AnimationType type) + { + if (QSBPlayerManager.LocalPlayer.PlayingInstrument) + { + return; + } + _savedType = QSBPlayerManager.LocalPlayer.Animator.CurrentType; + CameraManager.Instance.SwitchTo3rdPerson(); + SwitchToType(type); } - private void Update() + public void ReturnToPlayer() { - if (Input.GetKeyDown(KeyCode.Keypad9)) + if (!QSBPlayerManager.LocalPlayer.PlayingInstrument) { - if (!QSBPlayerManager.LocalPlayer.PlayingInstrument) - { - _savedType = QSBPlayerManager.LocalPlayer.Animator.CurrentType; - CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToType(AnimationType.Chert); - } - else - { - CameraManager.Instance.SwitchTo1stPerson(); - SwitchToType(_savedType); - } + return; } + CameraManager.Instance.SwitchTo1stPerson(); + SwitchToType(_savedType); } public void SwitchToType(AnimationType type) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index f07f51406..8cad180f2 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -16,6 +16,7 @@ namespace QSB { public class QSB : ModBehaviour { + public static IModBehaviour ModBehaviour { get; private set; } public static IModHelper Helper { get; private set; } public static string DefaultServerIP { get; private set; } public static int Port { get; private set; } @@ -30,6 +31,8 @@ private void Awake() var instance = TextTranslation.Get().GetValue("m_table"); instance.theUITable[(int)UITextType.PleaseUseController] = "Quantum Space Buddies is best experienced with friends..."; + + ModBehaviour = this; } private void Start() @@ -55,6 +58,7 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); + gameObject.AddComponent(); Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave); } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 93cd3d957..b474cfbf0 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -163,6 +163,7 @@ + diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs new file mode 100644 index 000000000..f32d70d39 --- /dev/null +++ b/QSB/QSBInputManager.cs @@ -0,0 +1,55 @@ +using OWML.Common; +using QSB.Utility; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB +{ + public delegate void TauntEvent(); + + public class QSBInputManager : MonoBehaviour + { + public static QSBInputManager Instance; + public static event TauntEvent ChertTaunt; + public static event TauntEvent EskerTaunt; + public static event TauntEvent FeldsparTaunt; + public static event TauntEvent GabbroTaunt; + public static event TauntEvent RiebeckTaunt; + public static event TauntEvent SolanumTaunt; + + public void Awake() + { + Instance = this; + if (Input.GetKeyDown(KeyCode.T)) + { + if (Input.GetKeyDown(KeyCode.Alpha1)) + { + ChertTaunt?.Invoke(); + } + if (Input.GetKeyDown(KeyCode.Alpha2)) + { + EskerTaunt?.Invoke(); + } + if (Input.GetKeyDown(KeyCode.Alpha3)) + { + FeldsparTaunt?.Invoke(); + } + if (Input.GetKeyDown(KeyCode.Alpha4)) + { + GabbroTaunt?.Invoke(); + } + if (Input.GetKeyDown(KeyCode.Alpha5)) + { + RiebeckTaunt?.Invoke(); + } + if (Input.GetKeyDown(KeyCode.Alpha6)) + { + SolanmTaunt?.Invoke(); + } + } + } + } +} From 486756740b375e4e614f810998a952348db2aebb Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 11 Nov 2020 08:34:46 +0000 Subject: [PATCH 067/207] Update QSBInputManager.cs --- QSB/QSBInputManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index f32d70d39..fb3bf7d24 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -47,7 +47,7 @@ public void Awake() } if (Input.GetKeyDown(KeyCode.Alpha6)) { - SolanmTaunt?.Invoke(); + SolanumTaunt?.Invoke(); } } } From 6fe621b7916ad068a40d312cc8bf58459dc45802 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 11 Nov 2020 08:56:03 +0000 Subject: [PATCH 068/207] add exit taunt input --- QSB/Instruments/InstrumentsManager.cs | 2 ++ QSB/QSBInputManager.cs | 28 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 0a2a3e2d1..35f3e4f4d 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -23,6 +23,7 @@ private void Awake() QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); QSBInputManager.SolanumTaunt += () => StartInstrument(AnimationType.Solanum); + QSBInputManager.ExitTaunt += () => ReturnToPlayer(); } private void OnDestroy() @@ -33,6 +34,7 @@ private void OnDestroy() QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); QSBInputManager.SolanumTaunt -= () => StartInstrument(AnimationType.Solanum); + QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); } public void StartInstrument(AnimationType type) diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index fb3bf7d24..8ffe8cce2 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -8,25 +8,31 @@ namespace QSB { - public delegate void TauntEvent(); + public delegate void InputEvent(); public class QSBInputManager : MonoBehaviour { public static QSBInputManager Instance; - public static event TauntEvent ChertTaunt; - public static event TauntEvent EskerTaunt; - public static event TauntEvent FeldsparTaunt; - public static event TauntEvent GabbroTaunt; - public static event TauntEvent RiebeckTaunt; - public static event TauntEvent SolanumTaunt; + public static event InputEvent ChertTaunt; + public static event InputEvent EskerTaunt; + public static event InputEvent FeldsparTaunt; + public static event InputEvent GabbroTaunt; + public static event InputEvent RiebeckTaunt; + public static event InputEvent SolanumTaunt; + public static event InputEvent ExitTaunt; public void Awake() { Instance = this; - if (Input.GetKeyDown(KeyCode.T)) + } + + public void Update() + { + if (Input.GetKey(KeyCode.T)) { if (Input.GetKeyDown(KeyCode.Alpha1)) { + DebugLog.DebugWrite("chert"); ChertTaunt?.Invoke(); } if (Input.GetKeyDown(KeyCode.Alpha2)) @@ -50,6 +56,12 @@ public void Awake() SolanumTaunt?.Invoke(); } } + + if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero + || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) + { + ExitTaunt?.Invoke(); + } } } } From 521d70255d59c9c11a0bab969a8bb4c6fd325aed Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 11 Nov 2020 11:57:25 +0000 Subject: [PATCH 069/207] cleanup --- QSB/Instruments/QSBCamera/CameraController.cs | 2 +- QSB/QSBInputManager.cs | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index 793349f55..1dad97a0e 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -32,7 +32,7 @@ private void UpdatePosition() var origin = transform.position; var localDirection = CameraObject.transform.localPosition.normalized; Vector3 localTargetPoint; - if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out RaycastHit outRay, RayLength, LayerMask.GetMask("Default"))) + if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) { // Raycast hit collider, get target from hitpoint. localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index 8ffe8cce2..61dd754bf 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -32,26 +32,25 @@ public void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) { - DebugLog.DebugWrite("chert"); ChertTaunt?.Invoke(); } - if (Input.GetKeyDown(KeyCode.Alpha2)) + else if (Input.GetKeyDown(KeyCode.Alpha2)) { EskerTaunt?.Invoke(); } - if (Input.GetKeyDown(KeyCode.Alpha3)) + else if (Input.GetKeyDown(KeyCode.Alpha3)) { FeldsparTaunt?.Invoke(); } - if (Input.GetKeyDown(KeyCode.Alpha4)) + else if (Input.GetKeyDown(KeyCode.Alpha4)) { GabbroTaunt?.Invoke(); } - if (Input.GetKeyDown(KeyCode.Alpha5)) + else if (Input.GetKeyDown(KeyCode.Alpha5)) { RiebeckTaunt?.Invoke(); } - if (Input.GetKeyDown(KeyCode.Alpha6)) + else if (Input.GetKeyDown(KeyCode.Alpha6)) { SolanumTaunt?.Invoke(); } From edb76722f3ef9e510cd75200d330729964c0128d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 11 Nov 2020 17:20:26 +0000 Subject: [PATCH 070/207] Update QSBEvent.cs --- QSB/EventsCore/QSBEvent.cs | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 0d4062cbd..76b5ed6c4 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -5,10 +5,6 @@ namespace QSB.EventsCore { - /// - /// Abstract class that handles all event code. - /// - /// The message type to use. public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() { public abstract EventType Type { get; } @@ -22,36 +18,18 @@ protected QSBEvent() _eventHandler.OnServerReceiveMessage += OnServerReceive; } - /// - /// Called to set up the activators for the event. - /// public abstract void SetupListener(); - /// - /// Called to remove all set up activators. - /// public abstract void CloseListener(); - /// - /// Called on every client that didn't send the event. - /// - /// public virtual void OnReceiveRemote(T message) { } - /// - /// Called on the client that sent the event. - /// - /// public virtual void OnReceiveLocal(T message) { } - /// - /// Called on the server. - /// - /// public virtual void OnServerReceive(T message) { _eventHandler.SendToAll(message); From c04605b3af8dc44f0c7e5f05dde75f98f5051404 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 11 Nov 2020 17:45:28 +0000 Subject: [PATCH 071/207] cleanup --- QSB/Instruments/InstrumentsManager.cs | 1 - QSB/QSBInputManager.cs | 10 ++-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 35f3e4f4d..6e4e02104 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -2,7 +2,6 @@ using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; -using QSB.Utility; using UnityEngine; namespace QSB.Instruments diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index 61dd754bf..b305e155d 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -1,10 +1,4 @@ -using OWML.Common; -using QSB.Utility; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; +using UnityEngine; namespace QSB { @@ -56,7 +50,7 @@ public void Update() } } - if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero + if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) { ExitTaunt?.Invoke(); From 085f659c117c837d08360d6244d4448b12b33947 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 12 Nov 2020 08:46:55 +0000 Subject: [PATCH 072/207] add esker --- QSB/Animation/AnimationSync.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 4d9f5cbbe..02fa1f494 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -62,14 +62,16 @@ private void LoadControllers(bool universe) { return; } - var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); - _riebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; var chertRoot = GameObject.Find("Traveller_HEA_Chert_ANIM_Chatter_Chipper"); _chertController = chertRoot.GetComponent().runtimeAnimatorController; - var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); - _gabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; + var eskerRoot = GameObject.Find("Villager_HEA_Esker_ANIM_Rocker"); + _eskerController = eskerRoot.GetComponent().runtimeAnimatorController; var feldsparRoot = GameObject.Find("Traveller_HEA_Feldspar_ANIM_Talking"); _feldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; + var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); + _gabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; + var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); + _riebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; } private void InitCommon(Transform body) From af51ff4dddcd3a79204e7debb621689a865ddfeb Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 14 Nov 2020 14:12:37 +0000 Subject: [PATCH 073/207] add controllers from asset bundles --- .gitignore | 3 +- AssetBundles/conversation.manifest | 12 +++---- AssetBundles/debug.manifest | 8 ++--- AssetBundles/instruments | Bin 0 -> 2567341 bytes AssetBundles/instruments.manifest | 31 ++++++++++++++++++ AssetBundles/network.manifest | 2 +- QSB/Animation/AnimationSync.cs | 13 ++------ QSB/QSB.cs | 2 ++ .../Assets/{GameAssets.meta => Chert.meta} | 2 +- UnityProject/Assets/Riebeck.meta | 8 +++++ 10 files changed, 58 insertions(+), 23 deletions(-) create mode 100644 AssetBundles/instruments create mode 100644 AssetBundles/instruments.manifest rename UnityProject/Assets/{GameAssets.meta => Chert.meta} (77%) create mode 100644 UnityProject/Assets/Riebeck.meta diff --git a/.gitignore b/.gitignore index 9ff6c303d..cb9fb082b 100644 --- a/.gitignore +++ b/.gitignore @@ -357,6 +357,7 @@ MigrationBackup/ # Unecessary asset bundle file /AssetBundles/AssetBundles* - QSB.csproj.user GameAssets/ +Chert/ +Riebeck/ diff --git a/AssetBundles/conversation.manifest b/AssetBundles/conversation.manifest index 6cae1daa2..97537df4d 100644 --- a/AssetBundles/conversation.manifest +++ b/AssetBundles/conversation.manifest @@ -3,22 +3,22 @@ CRC: 3469869292 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 86686b50f40f37c15d0bca36dcaff7af + Hash: 55d90dfc169d4fd552679840c1474222 TypeTreeHash: serializedVersion: 2 - Hash: 6ce89620af51ba381c9e4f226a2ebb1b + Hash: ada4a25185647e82d8755c81f5cf6401 HashAppended: 0 ClassTypes: - Class: 1 Script: {instanceID: 0} -- Class: 114 - Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} -- Class: 114 - Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 115 Script: {instanceID: 0} - Class: 222 diff --git a/AssetBundles/debug.manifest b/AssetBundles/debug.manifest index 45688c2b5..c5b57b237 100644 --- a/AssetBundles/debug.manifest +++ b/AssetBundles/debug.manifest @@ -3,10 +3,10 @@ CRC: 2815158869 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 81bbcd8775249928cc67d7ff90ff9047 + Hash: 5677b7876f2afae05c0920067ef29e8a TypeTreeHash: serializedVersion: 2 - Hash: 4d6a73cb377370ba69c96eb5da1b5028 + Hash: db9699da20a38563d48dd92ea5fae0ee HashAppended: 0 ClassTypes: - Class: 1 @@ -17,10 +17,10 @@ ClassTypes: Script: {instanceID: 0} - Class: 48 Script: {instanceID: 0} -- Class: 114 - Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 115 Script: {instanceID: 0} - Class: 128 diff --git a/AssetBundles/instruments b/AssetBundles/instruments new file mode 100644 index 0000000000000000000000000000000000000000..ecd3ae37d646025c3e00cf153bb05658df5b879b GIT binary patch literal 2567341 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

W4 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

    oo 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࿡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

    XLAuYF{290%>d#-6Ekh1W>D{ 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ℑpo5<{KR<@fnfk#Vbyzu`k=~c>6Ejufh|SW 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�^wxt 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�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 rH(ZcJ9;jbqKqK9MEnMND=2USBA^pHxD-1XqH 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�~^DMF)Hs4sAOCG&A=J=M=M8DfIP)aDe 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�#)axyP{nm!(L@xJG-RJv{a3 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�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

    XdF}$&4;-CK9QeXS5!dj9_jA%gj0I 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

      Um z-6Cg<58JM}N&5On1lVN;Kq$`OLj@FrxpCs_`oGo*m+e{#QP=@pz9Nt;qL@UClaUgj~hvdW(V)h|Y0Lp$_C!1#Fj}vmT19zkLqSBX})FLS^mx zDl6%?Y)=Ow7LGp5E3^32v^Tg9T5Mifxf!35dr!8uRyd!Ie%nM|`kuZGk$y^>O+{0Y7%Jgk@J?=lxP^v+<~|eSwb#G58!lCp$0#1nc&7x*gw*ns%zs;#1|- z1(PPOg}nNyU)< z)yo4GqZhGIfT!M?mLdCsZ{g6ldVG8UU%j;QSTwQdT{~XI+h6={5!yj4Lc&jK`~9t9 zFSO=K@x0cA{VX=kHT|y=xB<~^Ue7I4+z9|kK)1i84*TG=p1_6seX@jqBL*({eLzE+ zZd^U`Rxa}nJRs_B_(b)kGdJHykfFfU_m|--B~;MP9S}u=!BIa?K0ougc*{YRfWEw@7vBSvqe{#IjvNIjMU{k)iobQk?Ml@8AUba!A?RIhxwG3xDh4 zIQt@(rkUB@;lAf)PeJL{<)v$<$bgkv5RlsB2NRd_`x>~zZXAAzf#yhKecq=A_}FtT_T*v zrbt??Ezd0fUwC4*6)AiT2}kbL_jY(wF5TuNg#;1ulx}hhriQpf0wtFH5)qE0AK`3o zxlOe-dQHWNiH-s+(T?GUyg7H(Xl{}FEV(%~)qyMwLW%tg9m`&chbL4t*=v)+;N>Xm z#AlX8tfi|-N#k&T~WeuFc!abh&^nT3dvdBQL!UN1CRDvg<0gtRRo+4BI(r!kK9Pu z!tG_6bStW0vlTc7dXnc*IkaL@8ps0eMD?zoNB!Wi9|$3hX+N>Aa<#?%T7XoP*HL$$ zXFrMKQ+=PF=xd0}$_UXW-C84R&8Yl93epx~(FxZn46+q1WR_USP94Twj#8!G-8b=t zHr!R48AMuKW7%V07Eg+a{yW9&n0C*-W9(qb_g~ zYtE|KyUcI^ExG34QaySYuC}YO@1d4s9*Cj%MqxUc!mkNLuV+0_jMbCU%+LDkl7GwQ z^Gd7EHOGi7=2e9*OyZ#rHRyy66o747vd{iOfg?B`{o&r?(;6KpX}}Zn1YFQjhcgO$ zuwJSph)UevIzX$K2xeU0#nHjf2}} z=MdFW&w%rQCsy!ZLrGR{>kM@SVmE8vK#^*D^fiO*win(q>v)iQ)h$^jWMBO|$lqiy zdXtugT7Ls!jqnyG&HM(g*8obf_00VqSjX5Hk<62NnyvD2e92POP1TbsZ4wKb!N|uP zwPMndsF4VQ6_=$+Ror5Sa>nP@jR$Ke?aj6YQFN94&K6M5is`^JStnem3Dn3roAAfK z?iCLc4tv#1RvuAWiyp)zOKVZ24Gm&~NL;aA#q?vkxh6DRDU^l;#9CVMZ-j0p zx44m3!9Qu;AeV=}1?kWyiP-K&PUn5V#tARM69+639mso!Z2L=&VD~cW(2QB5MGX;{ zKwPXWs9z2V*TLcJ0Ixr!&g1CtPC2HW0MNox3O zDdNQm^?f1VF#06`)GG(YrEHZCwWtbsBrPkE(!K0I4ER7S80x0>P+yGH!>st%16*TKoK-NnL!F~G{TcQE=#qJ}=++98d6=yNyL<+6Iv%NHK% zFK9WO7lzwDhg)Ql5I@$Ur6)3R{8u7%Zk$|`wLz~p0K8!Fi)^{zkw1xQhhmw}x>lzd# zX`hoS=jm{V2qGR|zs51En*$z9<73ZIN!Sc*ksA3AJ=S1J$qsO~)$x}KUJ+y!FtdUF zIYNdf){x{l5?^0u08_UKhcVGziM_onuKd&>XiYS~44u~F=jE`=0yeA2UG_pE6e-X7iMIZT_k-DpX)|5KH(pRA|j3?mo{4BKv z*Mu_~G~uHcQ0}q(l19Thcgq`Kei^|av4IC)4l_mxRerH9>89Qn@z$yPSTHZ*u;G>h zQ<)8b!5>}SXiegXkScY4nU))e@H&DFJ%A7uiMBO9e%1v44(RFG_SFgJJJ>{DcD6%G z0+`QQkW+kL&BEuY%uwxp=xL>q0#3#VDnhTLEG64GKQdg9ViYs!OxDWxqkGBz1mb=+ zh(cWs*aJGBr^POywWOAri;!j+^tLGd3ZVh6hpBDkECn!AL)IdlbDCfw=r*LzLTev6 z;OdZ*@y_7;-^e10yS%!8AxNJql5k}b_wvYCLbNZmCU%lZt>w2CeUlx}iI+mXNpxWz zF&$wcq|bEOYCO8aRfr-u0D}^OXoX;`csT-cGDxowb-NA>7@!d`XUeeDTLg#DA(yza z9a)wc!Hdw=WrO-(@;}X_AK;@s7t)^nr-5;+9wT*fm+M^BT)dMi^L8<^y%11AfvSMz z)?wg81-=#4xdN(QWKC^Ad~CtbnSq=5P4yrd37B7e(j`9ajAO7WK#@fGMDAEpEal=m zEgc}mxHK*;>v59rcG6549f7oWCsb2cJm1ZLcE~bj9UQevl|1c?PS<%4=&&Cx^H^-f zYgt_`hlj9tyC@)sDA>s=E(HQvPqx;op;_1-?exW@usv&d+1*%Zjie)cr^3{bUee>H zrGsCpEvI{k5zhF5Gm$S-z3j!E{6J%>DI>@?ubV={Keb&26&^!7YR-!AEGX_?5BRl<7o zh1H*>I(_$mHHwB{BigTb-n?lv-yTOWD^xHzTWLNw$}exu$kQe;#*(b=PC|gafTW5` zlIhT4tdXBraNDp*$yZZO?dyU-TgMO1t- zwK(2RptUB%`fM^^)Q!>d6&3%$#ok_?qJl!}?~xC`&+Cp!dxL`yrlD5C3q_v`{*q83 zy&Bq*J_?O6Ffx3l(qxcO@QJxy&OmhmU9;W`vnhGGGR^%F7(?J}&F5CuRo&aJ!UayQgc2Y@< z+`I#dEOOzbl5AC^-&2gC+=L;a$8K7JIPj<5;(oNFWz)XzSF7~wUK2`~y?K3&zMIZX^u&0Z!|!w#OJ`4lgKw6RW8g5H5QI=;ZTb_ib` zt3+{IAwGoOZF^$p#q_m%`8enO(Lmdwgr7Pn27O6nLH0Ap8dg+ZA@~f|n+({gi+hMu zkvYX%eiM|D&A7bag{B*m@Al@%ww6~KZu76b=C^Ak^gRV#dD-BO0et=xEV3pK8^$&< z%dY3jlAgfVSM|KuBCaWgtDP^Q}I2+chB?&X&|RuROHprPwZsy?z> zksuhu#*1fw<}J*q%Uu6mlHX7^j0gJYx}`Wr7gxy$H7mrLvf#fdm}vgu9JTw9_;Rje zJ0;ZMELlp_Y`Gf$(E`n3t$*AsKDxTcGrV-KwURj#t6$mF%Rmen`b@gbyz@)}*JhuG z55|LRrls%*Z=*@8~jJ5pIF`JlRq5tVQAz_eK0*Up)x-i!<|mV!}E36x$PQ zlhBOqluK6Zx3lQLgXQALgMx@Qy=2>g3fqoCVwqewJgxF~QIkEbjz~Vrq6x%g?#9-1 z+JBmuE%Zmb~>oi>EX6RG6RQ%3 zOID-u)DdTYk*Am%7L2Op?oi+P3+o2n#B~x^wzTiN_g&0HG9S=pp0=|gSr!ckXC(Rg zDt2HPbq3D1^c5vwQu8UU=ksc?Cizh%{;B);`?@Kjf3C#n;M7leXfZ59ARR~sQlOw5 zY3EHeL+%AI^or1~@!~LT2@Zc3Lp@-TjQ9CpQ>@O20sC=9joH}gCC|8WN z9}r*QDEgz>zZz_vw~7e9Ir*rgUBaO}@8s(_O~`btOXVSEgvWKy@NViU!atR>)71G}#2y`>!MNALUHz{4N0R6k;t9bx z>ybfmu{3ED76d6BG7{VfGP56DDlsp7F;~wlR&=l7hc30bA$Wt()RG>Xx;;hNG_dQN_)_*vL zDb#|>9=;reGb=yY`%z0`KWpDDy;g2XAuifgUGZ=G`AVXDg#E(T@xOwDMV#LwBW=f0 zvJ3kf*E>?JtaPEms@khEb`safq1CB@sRHi4x2pj8{eFFauLsQP%|j^XBT`97HRKKE z3Y4|d18zr!V&-$;-r@hxszo)jyrP!PXBGmidNM0Vh35jTWDfVIV1xs@r*d2r2H!Do zu*wFdl?{pX#;FFx)R)_8CvLPL*sBMJiCEs*q_3S+z7=r&8oV@?iTkc%vf)j6Lt1L* z@?CZT@V{*}Us(Oi7C2>Qqik%;Sa0hh(l9vIIG_MgS3Y|!0rW`iwDJn^G93LJZS5)kQ zOz+@FJIj*s*sx!mL@p&s5N>o%Oem;<0Y`yaS&;XK+{iz253b>v#w+(gjILpdmg z3n`j(4GSvr)Bi3e>1Ay1BI+Z1^k0NT4+I|~Br1E>N8d!}JDlo3XbpBte#^$zSpDF0 za-skX8An41(M$(BL~*pXl=xZ(ilDnU+zw`CYZ8fI9@^lm4Z>o2VPImu5;Qhw2QuQ` zfqTb{obIhAMMG1PA<8GVO+1|!=kBFe>y+~Ky zG!{dGw|9NaqB8A7Q5csdwu^-j!ZNY~r5(9|>_{>a^t_((AoQ*tsr55bN(xjit@S7A zW048KSQ-Za2RKen;vIS5iJ3QA7n=rE&~Ao<(KyyWxCi4FO8%H1^ytPs`wY#4rt*+W z#Q}KJMrPy8`2Hvqb#)W#8<&>iq6K*BYhkM7x0;vURIXvGq53S7&Y-F(<0DT1Or2Lz z+9WM&J;8K#TJeswM)#<(h6Z04Z{F47^3?5w#j$QQv+P=$TD4TIj@u=q+X-y9QT;|@ zjYq2XGy*+{BTv+Pv>Vx;NvoKapHLK$(DA+`yzSrE@&W?X#H1H`gG@+95{*75g>k`y zg#+`p1G;(0kNnS(zEA4~PoxlGV7Kz>!U8CK_0YX<4UtChV4^vUh>=}3fEifxf6zmTQoRL zEj8hrZd>KkN$;8g@}@b?j_{kI5^PlKhbdtJ<6B!*>R&G6l(me8c7`EsbNqK2-S!3{ z?{irQD~7|;){I_(RlJm641!~3g=jNEIE+PF{=UeQt%p=N z8F-dRoM;@j(0IR#5WO5y3Dvl0q?w9^z77f)^Cj>2p|`xgy6J)na= z^OA+dkU=I#N(12*D$Lx+qhfY$u8rg1^&dFNOd5skndq+~&J8unAcxWQy1gM; zW*TK|H?F}@k>X+i`!!zVHtPKi@FPaDxzBbgH!F2P=I9#VNmBJi>7fKpCwouj|@h8VNUL(yur)z@3AFxsx(?-3rx|H{eW$jLT`KJ zdZ@QQV-g41+HW-lp3|Y21z1Fhlh-7DV`UA2*o*5wJ2WU%e-vzmU=Dr0Bspahhv;Ca zw_@&S$~Z{Uzj4b2wbYdVvI8a7Etp-pWy5u)F_aM?;St7gaqo@!_9mJP46=Cvd6%rydlrn@2@0wx#MYp*ZEop5gA`uAR0)1~WvR9mT2Aa6i5VvhLA9}*;D;wqqka+rQ~S9 zLw?I-tWKVJqo*A)dd?G8=vV6@fKHqCUer&17i|mk48F<4^568EsTR%-2H}P%ikY7i(!9ZVy7nexW)L^#xR#qtqovW zs#_Gia>qOvV`^LbpYvqa)^%MNPkTr2D_JIuDxKm)9v`$9uwm6#1K%Ga~Dk%!~^$`*SMnIM-da|H?&*JAe7-*VIM)J*2M4r_Y z$g~RY4dPn@{yoW9Aghi~TT;4vz2GVTT`Nx^w_5v)Y%f1;x(d3N>KCI1v`h-jJ?I9D zEEA2a00@q{C6f8;wL0fwNk#Rv4(t;39Duq)K03Uu31e3;XB zQxq);P#kJb-^~y%o>`RH{W1GZh7}U&2H;-E7bPR}$TPPUCfY_Yu!{8KsuyjHl`uK2 zY^YA`kgzp{pvyyuMgDd=aQyG*ZOz}%EXkw~`tJptx3%_v?`A8+HXvp;Ntu7`?#r2T z-vO_BF~R$|1g*0j29YM31D99>gSYO-52=XK6Cr_2^P){L4TU|p2QIgZu1da!(YUZe z1+o)U-)Xxx^mIw3>iORYZ}GAx&Rho+=yORP_$UU1f&$Np3ATDm`HBb3jdDC`;rO|A8wMCa%2 z4YYGiHhTRdTIV|2ZcRD8K-NgI6mPAb5|mHEUZGT=dZ}MZD_2v+B-yl*m@wB4=weeF z8#l3}mg#r}91t@dy4;Hw6_$(5j5nnPy3G+rZ0p7zdYsEwYNz-L+Q;^`;d@f}6%?Xv znY4-VG&mkEK28aCH{zWlcjKN0sqCo%o(Azn>xDrTHL@Om|4 zH$0y!SStWYP%sokWsB1x^n!{;&aKy8S7V9LH()v@LG(0mbK{I9qB0J;BNFpI7owhv zms=m#8V+rpgW63+37Zov49EFrnJbi)L?KvAw!b5=fV#&mGSHv@N;6-9$rbr435w>( zNHNUblIn|y#mxP8(JnTwX8i&}Ii-@i!CrT5&j3&-T9AcWwOG&rs?xY4DN{X6e_U+&T- zbSx;f@L)S8U36nM%$~^%t6+nQGc8j@xBF(8W#AqpN4{C!C_Td@T}Dlwq0=)tbY^a$ zecp;P{coIDF8*RfsR8CoSm-PnW`<|Rew|R4ka5)_L}MM46Wwr=pdT6rthb0V<c;M^B7T-7+ku=qDFjIIsvi;;7Tx-E5TvyMo`=1->;^9_54H!SXFVQ&9P zD;YGDY@vR)^(5ZF%5v;^#W^bj#+dqcBj5YznxABydk*BHS~Re^x*{zup--;=dAX4X zA=XCE15c32X4CKO5&weH3OEx(yhR~N5}oc!N*an#mkI-jI^NzA;Wf^C&5hmKx5l8( zA_<22sajR*g6jY8JirlkWTf`&X`gtwjBr5DFdclQq$f`7K3$KTOa(n5H6@Wet?`Sf zaBrb9buU*c!byk?$N*6Rv#d#&o}W{-Ir|*cDnHs<*9UR5Zd3JUO(Uh-Ig`NT?;Atl z&r*c4Zf???qIR{fZI+7cBQM^pi?(c;w0KVEPEnO?29CYizT)4sT9OGtiRwR9+E=Q* zEMT|iAuYXv$3BJRM0Ef(NnN^&M0s4pXBBDgSY4BlEUE-!HM~qXMgx~gRxHt@vdu9f z7*ibxfWjO)33i9U0jl$WFTreSi}D8a21q(Kd@#0~+3+Ul;^uOdLEKB5GQv{s!A;9J z987}>+k`NhUpTJah1BM@dK>o!Fk7&W7von#+R?0cM|&ZZK@CEf*q-|KWk{mOE=?X_ z2$!o*t#WCE-ON`Uj8H02P0>+!Cqaa!+}bH%hC zdOC1s+`};_)T0y)8+DP6ue?WU)pnk^+cBOnML5Q^UKl5(k@Z$h1|v81A7b25VGaoH zJH!OR6K*C)2vHsz+BsJ+Q@$*QNZZ`-a#Bd30i<(hZ!k z)AuH)O&}QOy*jLlQhRgbsQi7nlimUhZrc3v94gvy76gv-?kjJ47c1hZfGxrS5Cw!@ zJ8RfE?`vn`7;dzBt&Q_YXJv3p`AUQ>6F+5WS$FV1vfx;lN>Zt`*oBVV(vEYE^1^YE z3W9O{@_ccziv}Qm{g+2eCh|Q0ZK-$zO&8Ag;-SExcj6`{SRfmNxHt!D#876uqJyqC zhN*|lS>yAe>~)Yo z9R+L!1mtImNaC<4kJ3Vwd8Rz`+N-C>0l}b4D57x4JeZi^ya#>l4Fi1S_{ZL*~O+yi5bUaG&9Y&)-^fXSF;*i%a5rsj<&AT{fA1c;R0S*TZpOUZ^ z!O{o<`vfQ6qTOD?P=ni^e2k`(spYf7tYwzC9GpMwTaeN?qW}4POgd&G04c8svWlZt zhHN=0kCHzPN)a`J`kM>yUzhwsW*Dp!Sl8s?o}=(|bZxni z2rcO)uF>_mQFYJITgrU?G?;;(YG^O@Q!)=S*Sx%zR?s?ZRo7NE;EE6iiqcII)2sCS z<=o1VKqy1_!4DL0zDlQXA^D=T+m~!W^~#fdB$((Ukz{zxI@X#*e0;s+WP@z(6uhw3z{sZlWWd#d)x?>48^x4*j04YhsCfn@!RQW28NnTcPB##r9Q7l(HIGb zA`RJV_ct5IaV|PbX(NGt`Zc$iN+vx+gnmN4)K7v69hHe)YwW|xGru4~C5vl@Sbc_? zhA9#+g}@m%*EfDl7&-d|`R4WEhNh1o{3P*wXh(e9m=-r*cZp8U^|fva2BNUWo+dU`~c4HRCx*}Sm}Tz2NRf2Un( zQXzHu4rV`^!Q)QnhP~%DB1>#D9t8$X2wgd#()0Jl|9|F4S)hQYmBhcCSDdGeS&{`k z0_dKK$;)caX82rRbt*?o%y56;D3Djiqv$9l_A2inzx=O+Uy_RzQ%X4Jie#yqRp6Nd zuv*eNYgxoYqpxaKoE60!gkm{K&w^>S^FYps)8WRG!1|>I5sW+lC50IvYTK`+b;#>r z8OFr}*N@>C7tJ}^gh({Q5kqFYpYT}m9Gge z&7b>SECJlo&579`Xz8vZ8@0Uf;}I~IC5{C;m@`#7ixeeO4TR724JNQ?6{n8Lwe1g98^f>t5p?Yp!!2G1AQdltZW`S%(vH}qc(Y&Y+CyQ)XUFP)~;`JLzkw4?5$S&fThpLqd! zrGJJkbmB+o49xR7(B_~BPRCa9%V>l;^F+i@((N_cq z{yeBGM)$->JbbJw1ObERuevUyH+)iSlOgNQJ_}Tg#vW_5zYiT<8nV%%kw8v1 zl8F#!OQV_~M~bBRfG@q!I9dU7#7?qDE$4V`urk7DjJ7YQNt_Lt9?8?rKE_s5!~ViRLJtE5_>O0i7Y8Rdu$0eiAh0Mtdt_=5aCT^shQ|USk2i;Dw8ekv~WwVXYu!NU1 z_iTb~)p7hofEhyn-T)c3a%}F_2g|VLM;K5&SYH1Deep@e8+({vVHOXhG(duFveU5F zm$BIPi_I?Qts|6k_cC5XCJhLm%wm*owM4~sQ6X8r%GBwG^e6=wr}P!#up__$rnEv` ziTQk>7o(pTQxTB-g~S>FI)1lmg%Yvp)60f%@FLRrQB!*(=H_C3Vx0a^%N|Ho1VDOA zi&morIKugQG6iiUU@aSrKla+YV{-VvXfAlvUT2MXgqh~rBpWIiHzfrU>C+v`2R@k| zAn&!WQGkkfKhgtO7ahcU{TDiY0~HiAe>|rxa+lo`iQ5CZW^)fKAAIMV=&C-j-{$VV zE&ke!G_7H3JSDsm?Q#mA!x%=xX&4xRRFE>7Ty-52TG)vybR85>0kS#X0 z&0*Lv#nL|-%U(8D`63sm*gtrU;;i4U181D7!7ve%-Gj1S^P^WwiFu5@erSyQliHXc^*;WM_B zYi^06j34F8@RXF=$8->)O0~{kQ1jdLrP)EUOJM_lkwJ_{JlN)j|d!&_Dxn0DYRX$B-ui+&iGSZ+S4$=Q_5;{ z8Z6Mpv)*Nk&SP=z!H|FGv#}$LY_cT0zZ7nD^y%5ZdONpVXD_@b&B#w2mAwcLnxy~p ztMV7Uw4K=BjDWH3rr)fSU}*9ZGAbLi2(pFvAi5P8xLaE6xSLjOI~q=F@QZh0enJM6 zl{xH+3788~%sfky7JpOMEJdj?G+NCUrOO+dvF=-qKe*wMl)v$wna8EPw6i28{}(>C zwI%ry_=o}o`O(HCUf7#>7H_Y$>@dMjq!{einp13Wqn*=8q4Mikam+4Z(v;OWgg}qu zP2b@ryUZX-oOYE8V36Myr;@%h_Q-s_Q5^K6@iO8OIqVoX?5zOO?tnP2dVs>JfDtry=$*%mOtJM6;^e;I@c0trDL$aIECv`Zw4054Y z^u{2o_wtE4KyX)nSV_clAw$HMGP?{XTDc)3yyE*>m*Ji94H|XPC!mM9fJv9;-K!%1 z4&e|=U7x>bge~ECf2mOWy5>)%&$WN5AKPM^>e-x;OV!*}Bg0P&7^X=gus01w{?6VR zW=RYO=#;_5w7PD@OemHsbhV>M))ZK%pFvtpQ#RV?VYH_s)oK zWtTu8?4;iRFJPx!%uS*N$B`d?R;PQ(>JBA||6WyYfUPh>&E;DXoL2)R|NAU7DLZk>zGW#n%VXi+k7x zcc6MHtBp?mCa?Y#)BB*?y|gIJH6Su*@P_$ro{LqIbB$fu4@Aa*66h)yxm0oXI(h3` z`$+5<{|)Nqb@?h7dj& zoVnJ1HW3?8VnfW1sbOwa@Ro7E|JUBNw%A^s(NgFjRSigK;w%MBGu3Yx!g1}#H4#T< z{0y#!OmKrnWdnk-PJ2Mbb(-LwFkHSUH}1!&b@M`iLNkfTHV2?=3Wl&^h^WfEEX7o1 zFzYlEql+irF1y?#M-6aulk&L%(nH{R#V;s=5x}A!0C+M3=? zJ$R^IL^qOP*9nC8rSCy*5eWFnHx)&$!A3EC-EeAAgNf=JV-baCA^|v*nNsJ*caaqa zVOr~|xIFd)HGEh|1|5#c5Ql96YHE+tPQy+XWpU3$J2N1Px0)xB`i^I~D>?W*ZRy2b z#I*$~i--;7+2)IXHWl_TVLlc;&Dnyjn|R3H;(vR)V@LHhgcvwgkt}D*bF<+b#-2jV z@PLY&dbl|8@JFujX+{gJfnn0x_TBl-{ZP?#L9`zJiYvX&sYuR+nG1E&6l*E$O&2U1 z;T_cw`&9b58D)cv z-x%0MKRZRE=hm4aKerDAqFn4o@sr3&%JUD~N#G1RA8%a_d(8GW6zfC#$8_M+L#4(y zK=#I>wL+0&3BD3;-{om$YR&Sy3wyXO^hhKnzBtv!c=l6917*?9cJQ1QBKJ4fMg3-C zPsq8$Lr?Vgf1!|@D|q92^)4zhuB=^YeT9hCr6{&= zWIETpz!r!1wKZ@aR>Vn`>Uxushp`MP8$Jvcun_;AC_DAE-H$2xh*fg^aZxPs&)|Ew zIllIp+i%3TCrKpu^0V2qIaYvjJi`f2UHJ5U@+QrltFnNfVdB>6c+qs2Av}QTaAK3Y zj2%>$_@D?hY1`8_0Q4b#Oh^`5hQ<68VmkfH)Is^ra-&8kZ?{HryVsxH6s3jb45b&k z=1ij{+`|3c2&%2-SVtpSKcO$_2`iNv70_dJf6j~RSinjm&S;ALmjB6N_6Dfe%7 z)I?_wMZKgj%jY>48aOJQgCB&2+h|%36EG=CGHNk`C&B(%%z|kgH~s`B4ob{d9e^rC z_GdABP_t|wkCf>66NovP?(P%)Ka~=zttp142YUNl3oZv)i~{8)XO=C<%27eN zM-CK7u!8x6)VX}Sc)Y>Dozs}1<`iGiv z$1a!jSHm(iG_lok0O*-XFrkv#E=RUxHO@`;cn661iJtYu3OEi5i6KG`26Cd}WeQ>?yC(ADV=v}ByL-hHAs&TUXNki`|EQV#4;;T#Q{%znb_ zwk^JZr?l%bARTzsL4-|HQb}K$Q>NW(y|N|G?jp7V>%9~z{U^$hk<|8ccM5yFW~?}u zsR@3p`AYvvHd##|+PK<5;+2r1c!gw*a|>r9X>P~`_*0shime@17h7)O50YuQ71)CH z1J$(4eHt+3!SD3__hj%JVL;t)BOn{6VdaAh8a}tIXqv7M1n7!QZ$!HXT;zH)D3kUq zS!|X0AMf&L3#YZ@-AZeSRYfBEflbf>%dNpiAjl-fOu+WbLaOcDO7-$sU7@a{Nv|cj zx3;y9(c-Cy)|8O82cxpFmyaOcW*PG1Ve#TB(ddnQmF^zsV$id=sq<%zDxEO&UZg$~ zaLO-Ec$o)_6gU&YBP*}=`PgmO$1!qr)m|B?OY-H$28_}ic8I_y2_lW=JfX_)>>=Ni4RQQ1Eg0$EHa?$Ou=tZiT znRj=uMJh>AZAT-HVME1vi{fD%>iaVnt>j6t@+>8VooM_F5)JqJ_} zQr6s%)h!Ly<|r<@LDmIjrBvUchkfm=Uq+2>vK@!l(^OACbGZh!;{Yj`1cUpr-LBHV znnYLuOvM1uk$X8K%LX?mDfTW*>=X_C{Ko3p7I~i0r<9`2_p@21fA)!j76~d_u{EHG3>x*R*5Y)_Xxf}pOaO0DC6}$OQ?P>lsx`wJZWV8>_md16Mscv!Ni~>6KurR1KZkdtCs>U4vA0 zqn=T?YOc35h0H=^^0MuKw`N_|L}lYnFUe`Le%MV@u6Lod@}uWWS1Gk(~}|d zdXx*EbDD5NBa!s21iTg!I5G8rW#H?yNq~tj1Ge?8=ZYAl->7EByjX{}ipz_}>ar%+ zd>puHtsCgw^tkul%UoC=k}3qVKFW!~HJTjx54Wo~ca-XK!o*4+mC*%h=sY27AgS=F zNhpQ0Qfrik$vwVGUZc*B-bvj+ZvD)Q|Mc$C6Wtv?^!R3{@!*hI?YO9GsB-@|1jwc- zP#WhsKDNWWo#V9~VbTkVlQh;7E=>!(Zi7Kj@M$Vgd9#%CKjYj}K%7-lAd#-cJ0Mxk zO_8(1TgUd~ietsvL|DZLQbih5@Q!@K<>+2BOE2~0Sy{{*NXkoo43zSX@kxOV>oE(i z1r%BlZM$URkS%++`NV-z-qUQD!NSINs4@GL<3H9(qH6i_06LCGMf732&NjypbX;Y@*_$l+EDb z))nu~c(n#fI}<9Ic$^};$1CeoPkxG@>z-Ouf?$tqpBd*qM^AWg^8N<4T4immPMauBg5N`*;UkPj7{>1@z5eaG0 ztugN6Od6u~+;iNkH{Rf(i`Z9Zq6x0D6tL3>^p+`M&3yCQ{xSrogdZYfWJ{t^RPkU% zal5^Y1s{|mV{e0{s0Mz|Pub z^_?$TN7z&0H}aiSg*FTcX#mRqHh?&Zy@Eig?7c6_eRAV=zE=8q56P+8 z`w?UzYule5jS|H~!S;n1oP_h!=SzJcNUS_c-4WTnQazDqGNAm^;;9}2Ac0fuC|~wM zxBrKF<9CG3J}@;Vgk3Rmm*oTq!Pi_M7`Vqusr!1ro8hB6#{*VKQilYhH5cVh&4y?^ zy*{;vjjtFgK<^avRLFD=080H|ZLr5t4w8fh92EKMc%lB+GN{6Lv$ND!CdUENIY;8~ zB9GYo-LQZ$E!^rm;Q}v&mm?iKUxf#CEkEe)!4HP(>s9;E4%>XNUV>f+10(JL>cZS> zGy0z~afq@MULt=1++#e7INs2tHkioDa$sTn5AWKvw#H_9R(c=A4{}XY%AtToL0$ zaI_;KyX=0fGU(?iGFpkTH}h&}U_glv-tobGVinjfpezj$X#-k}7_eNnd^J@_529~| zpm98wIGa204Ty2tV|?7NW;|NjmJ>)%a^aPRMIw1>8M zjR>P%mrx^@2VGt3^OL_E%MxA(`qEIJCHf3fdVHWm#WE(*r?FB;EGU~Zi?dvI{!V%b z=~C$tU1WV=d16zYR25DYgtOTXytU5Lpz0%N0g9wVYpMD)N%R>hMSh#PlqiY~_X1&{ z!NQ?=mmM!SQKTa&c0*9M&~yN$u8j@%&=t>~D#Le7J&24Ovd| zk!uPd~!AE~NQ79O6&mz_`8r3 zMu2uM(@lEY__*xUr(K%zVhk$f%47aoe7Osvux8+71PFPbg$;T-9&bF1zRA_WJx2P;&aiEG^Q9=&M|&!C@V^^hy`itk(InjF0Sm#q zwsAux05ik3WjBY$la=Zdk)%dr1eTH-`F9k@4j-0T>t6~>Ee5{GkH%jn9NCJP z3==cf$Y-Pif0b#fO#Rm0!5-U7Prjz{hVC@P0;p@!B&e@!9~pP{nWniXGBZNls&8;a zpIa+1x$+~l0I_tT?|-xgYlvNQdLJ^C*Q&QZ&Y&coq#vO%Zlod zQ}@guf4ehK>sDzzEJ9uDvNAIkliV1_FrX0u+nI@Eg7<3ATv1>e8&W$yOw~FFZioY* z=M!cCIY7q01cc(^R%U5s%BKE4QaHhq-2q??E(D*qvJj|zhE1EQHP8QV)G}bapx=Xl|*`LN8CIz>o8G7e=vsr`rhDGDK!BRn~l|72T{3E8TA;P zQlzBzl>n}^n{)QruG!$QR_}8lu%$6n!_i=#dfz67nd~H-H9|!NK2NyBn;5!BdNPW= z!t5l6W}9C1v(l=PrHY}xs~)hw)~*p-KDz7^lfTNw)1qGv*M)a28R_B535hd(KD6}K zFn}>LaBE3kBIzvQ@eb4CZS9W@LCD1<5Ietj*Ctsi|0(Wn^D}e!Q@lEd9LChGEovCR zlR!HQIL7Yr;NxWOoCDJJ&n~q`pV(VQ>4YzL!934p5#v4Ut64EI0r%;u9!htS^&KDr zc1@*a{PCvECYPduBhJg?HYb2S6;Gmt;XwmGdO(CYz2=3!h#H+1_fM0xtwRn3zQ?tL)kP8Q^QzH(gwq0 z?exs2?78XwJLUh*8Ld|p(a!jK645wcZfKr(xj|L&dy&@dWp0W$FOd-k>qDQCprj~5 z-1mH*^S0;e0G!CtIXpZ&3Sn*(!%o5H6mU6 zVQQzwq@*O<9-RNft*Axok-Yz-1Y;H>u4r=3!g$?GBY1*Al(0)p0SaOAXnKN2G~30H z{Fr1R<}pmcvai5@`=9{&(nOie&e9>uuqnb>o7sy?mKyOYT5>vj<(R0Db{1l!@zT#g z?iDx0iaaR0xCsxMxYS&AHh;Z?p?eAmWAQ~J2#7m7nxdnztBn)8_zP*wk#BykYk2AM zSGomt95z=#FOy|#6HXP#82-d9%6}3j(Pa1qFh%LE!M@HM`%7M$T9SR_+WIB;hGe(O z=C2G3NW|a)IkM^RBF;z#pcN6eo?^j#w@i3tN#U~Bl&)=?#hwY>`2X1UP7wyN(_u`I1G7#xdH4(Ex-HiQ}fh3riXD!*At~7z< z&RNIX(rbMs6io9ov$1Rk*A>M?&wYr+0vor*DGP(d}JML z1A@v8)WEpM8_5U5Cyt@=G<7WSG84imCaaBRoU-koGyDUu+Ss4vS(Y(mF@xn@_2U4q zJi=gWbXSCKWpzm$Wbq5mZt76{?wYvszm}cD?$f8~PVeeE93D6H^LP%!U6)1)Pkw#D`oKlktS;b5nh$xN(wB$ZpXZJGwdQhtY{YKa*18F(#B{d1HJSx3J$GUfh2asu7 z`<;D~wx5-GOE>7Xqe`xtW%FY_-Hci9hZ@AM&Jd8+XNk1v`zfqnV3dfCA%KY=I0f1H z5xP|le$$%Ho`7B6i-l2+UM4a&(R*wG}dZAlYGx(mzWsd?}}=c>E+Scig(31Ewf^sgXL zraY0h)dVoMSvhQye3tfOeKWL0R9N>brGa%9-t8Td`mh?3B;gNqBNqjp%yBcAU9_GB zRz1Bh4i-Di{BR@WsF5P<46a(l_?^|O_u5thQ`PuTB(oeUGwafJe)~K*3+Tus_Wx8p>U5YI zl8)R+dEdxCQCW9@b?ew;%Ce=Rxfa?~@`re{{L#K{2|cDKp_lS5L>i70c;)BM zpDLmCPS2p8$>nAP&uf?8)2Sn>sQ(gSbl-m^#kRjb+6@6pf~i^o2vg-ZwJl8Zzo%c) zQg%w7IHMMP+#@SSe+`rz1imO~VTAds6#PncTp;JI!ty;z-EG=#QEf9SNX0Tup&rD& zR=-SI6|DnybVWh;fiOw3`eVbcO=05Nq(8FhD77>10}jL^i@~Le7pY8MKPZPMg)n_cOQlvY{Qa>3 z33tw!OqbdGeL7uYE;K7_q6n4KWk*~nEGg_vsuUb#g@pMS>3(t;BSOk#8?jGYf=eAm2T|2BXBvApndwEqR8 zt1TPdaS=W3;}`huK5X-Va{;-+lAqAt|M0)IjO$X$m;pg;1qnkUM% z!y4$1k;I(8L26K9t(u&W{NBc&bChlF!N%nEIU0l2>o3$`QG#JcYE}~w$vc_`HP1XU zmRh-q+?`Xe^F@=bdvqmP4+eK}z+J00j366jU;N3_;<8(ZN+<}6~z;-G>lvBZ@#-jf%Ka~e!DDGrwAPq)z5A+ z;l)&EvDRW0gF=|nUkiPXixW6|8q9YJdzj+HL_UtkxvBRsFuCFN915>I@!u>aMmV1h zDFM~fEqs|COp=5JWG7`O#N-vZ7i^-tDj`O=8zFM!8sF1>YxsKVPi@yj5}Uj~OYbOH zX_KYJX^k3n%?@%Tt?=(het(qV!%QoB^0*CN<))l4G8b92Tx0b|fW`Yu`TC-cYlNo& zeT$%bJjl<0{<2k!R;CsQVok-{ql=Bzkoz=fXj(mhc9;+oJ=Aw16^Wyr>I^>6r;s%J zW_2BD*KgKTQkLDGE4ldc9ec;>9^V5`l&v^G#czO zc0k791$Pz(Hqd)KOcnLB$Hsky{SG+ZWR*R32Ct})6v^m>cf!)wOQiNE6b}<{qMyIf zV&r9sMd?}*MQAYTl>0+q6XsjL4s`;*gB|Tk`zA#EZMu142`rJOgKbZUpq|Dm;!p1! zP^D;;2VHf#G;wrpoUi+7T+$3QY7^e4E@;g^djS%`N=xsw3Sj}rFc%$6UW!k@YcZnE zg;@uu7Ss4m1k8=k=-*yD&;y3s%FY(r{<6mz8<{}Bv`)oVmeKAG1431xyXsc6!{E)> zeODjsKlsDx3T9yZ0MVh@+^BTVPwjje*$652LPO7PbW(c&pCpA^jG^Xf{A7%z$%K#n z&N?oq@^!gOJ&w4v&wL~?81_hhN0m!!y75)l^7tk``4RCKq}43ez8Loc~TCN*6*_KPu$|r(1h?ticRx9Oo$?E1It{Fs86$DK2-1BVWTobB;h#$vKimVnED72 zt?{jyA=rF*6W4v1bBSw>@4l9_%Ad@kbu>>{{u>o@$tfbB=(RVUdbuo%teH;>Dd z#12kq>C&Ag#LW=s7>XECiuzi-A$d^myv~MBgI=yFDT(=Zy%eq7s#vaxwYu8xZjLGG z&*whOkLcwLo^kl!iZ{p_=w}43YP|azOTpJ=gNr@F^`YWw`$V8M+Q9MYvfvDlv zJaD=8ZB5XfxFv5|B0Ms=B!R00|0WOeT>0wCS~M~qf;HK=QISLvkbu+#tcSvTW2Bp9 zGotRT^0xXj4S2tu4Zqz2Cv5?#^u9a;+su@=0OtOzHAu!`tX3wR9Ba*QZ)<+#@OdoF zAiygOUhmn5rv#f|fF?Fqq7a z(fyu?ozzXFMTn$J9vxvKW3M5_G7l0vkL!qP zhFw10OrUZuQh%*6vI3uMFPG+~uOM=dNkl+YHUh|$6{zN9CfJPLE9oJ0w=IRe4M4r` zqKjYVwqm-GQh`B@1tvkYlUU^(p!jK>L7*uGNzj{@d`r6jnG|d^_b&n)JUismjl>xa zZB06vd0>L);u2fM!L}9{6uu$Jl8N7CGjX&%hd<|vTFy3*de#K86RqVS+N1mpvPO^o2F({kh zJJHjeFPf>pCaSUBwwjcyDX$?*tkLSlB(75}7iP1f!^uHwpxe*Q`Fpr<-OptbKSs#O zb@;>XDs9$s)upRf*SyXM#|>2lV%Bob@<>-1mH>Kw3I>@QZIVZv{ZVtx3omm+!&NL} zqktOy4XPp>um87?gFTP}(7WX703wK!eQ0n2)j-$6p_cor&hSqmw6o{D;G*7Gojc0ozE4xhLT;^n3`^3uH%@~uwB!SU7> zx<&tVuhU0~jJZEqJ3*Z&q`P(s6p6AdM%l2(ImoYA3Rxqf(4l~mt_4E#&dHUu_d=lc zABNA|2kSJIcB-6-VoJayK)gmWNW4^a(aYm_4A>yt*gtV(2BwC!!F=lAdSy69p)+2t z1iR-F{_F`4lv}PC49l%3OZEBbI!ZA5l(nD>Pd4HvHv2mlhkp z>iY^u;+k8m#XRGhOwut?PB9Ctby+Dr8G#r``0W)4ZPJkM1;TNxIkiJBhn#wlDBEEt zx9w9dC5;yCL~)cM2lx7>K>m<-QY6%%0$k~QU)E1iGq{tNm8HuX1(t_rph0X8uu{Nr zC(j&rxAYeQ6u%Ykwiv!UbK(wF=;*q6PhTjl(K%A@g|yU6ovU6&40FQm#iM54e~iT- zKj9JHEfvCe(1^1Zy%uSuLC76_Aosas+RC!sV?S>7Tfcdndd>2Imzh35yPD zb^qL%ffTe&71L$aF!8U>&Tl#xeHSG#P;N+d8EysQgB_jRSYnMtZ}YL;(yf}j z7q#nv7$(I?$&b9(aNORs65pKPn>5@ckrV$q61Ay7fWxu{+UXU7+Z#;zHr{C8gQ+EZs_v4#f{I9S?OvRV2Qw9T$bIJp0hIEjH%6eVsnaY@_$_B^@G(GKu72m z?Uxq<%rL2WP$x&N^6ltv0Uj0CLUk>y(@m>j`lC2 z;a%o7{lYkEMm&nXQK&>N{_~GJ3^8B(kTkRi;}J(z44)b!pdNbuY-QCvi(=v+@+acn zE^=We;@l_g?McBtse5q|0X4-;G7pywPkR}pDzwp4@UE2*KL1)>iMr)kNaNzP{Zqf4 zk0G30Y9MWu8&wx2yShH^ObEx{QYMuoem-4B3LnSu>GH9}2q3MgMV^=1!ap@v=!vUv zi1$swV@!_w-Z}&wxyHPGsKM~bULrP}xr8U6_TMMqDcsQD4GPiR_RUz^CRUb4yzn-` z?|(Z6I$3PnDgjh3yMPTSj5;#HsfhSQoIb;}u()Ey(h+oi40HqSt>=`qtb*G7h$k7< zBsAS(m1P?zz!ML!{@u5?P>w`YNq2BytS~Cym?}`WSyt$A7{MP#&m0C>EoyLDS_H!3%g%U#|MBCz)3{RR{)&&b#6K<{VNsew z*+!{CG4k?SEhZhrchJ)vC`P6^Ptk+^^vn1mibG)s76lM|=1hiL5ojUI*7$VTQfa7s zJ}W^GYX`;D9@ryh_&e%JsM@?W^S4ohk{BR?_y1U(6$^WiFP_lt9mZBd}K4GPoiKr4sileKOsfH zQoPU~dvkrcNW_}^iJQjTAjTqhD&Jf4HOgzU7jCiR!`_PY6ulm?CmW>)fcW?mY|KQrkBwA*yVy-3z)+5+`|~+ zjseuC1;;djsu^vAE5*&^ciV}WZ$hw%)(?&^v=J^&*i6y$WV2*a0R`rg0~KO%Ao8!a zSa4>)!Bq!B-%0xD#1^=_1Hoq_UMIj_$}2_7{(JGfroh79cmU)Gh^_eSaOs1O_+3`x zs|?%J-!ICU&^k?&)vwSn>toQYCnrzb+FQb%M!>*!6x(+} z4k5ncGug+@^FUoMv}u(I+LwbyMGR=NSW`X@r&+G&ez@V@{s~2YVOyKFzCmYt=qNwG$3 z&r3^pgo=Hudjd)VS}FnGzXx229!d>l{gqlx^6I*q22eduA{C8`?EK z0NmjqiG=VlGj~!2NavE^yCA{chviVHibVN?BlN0#k%_a+Z9+IM|$!2MbL+mA0hjk+*? zwuF9VB-r~IE83w)7&%bfD9fiT@;G9O;o$4>MuE}~Ppeb4K(UZC7lK*6Y>N&u-hkD@ z!^vuHiU8F_-iQ1v0k?J4$`B)YHz>8X->B~GFUyUIWt4A7p1tF4%F6ii0$Pz)GoV+2t`}#|vpQHpB=RxqNP&+sR8N`#OV>$P3eEc3Ci|cD3aFcoc`TeoU z^bzc7Gd!~(W8_lsmjB{W?VbA*wv)IqIO!wogUr&I1v$$(3}FGR+FS z%IjLR2iE$Do= z*3}8gnqKBI5?Umrx17f4Vh&>JNrtETXDkC;YfVVZ1%^#;lyQ)QH8f5=Wte8EKhuO5 zefCz%Y3-beJj{bK4Tp8A4DpTkY-U&KCsR;J=pyi^26q1V;+>mREjnM%c*FM;1+l)6 ze*+Wp!DWSofg|3aBP4exO)fTFZeu#hi_uD)%UX)4k3;~r$zNGz|1?fR6-vY$&>}oa zIo6r5(#Pn0CN zr1M0Gb4Idv-rIk3L%&^@4^;B!%!@4pWFzOHq-(Tm?&2e~CAOJRb#a{?CJJ^ZNSxA0R zh~1symQ^1`VCh_omJiT3c_(q0`g>tcik_=-|NYL%XvS0nXDSQD_*EL_jpVsV-L?qn zq-D!u0jSrfip@Phosr*1x#wBuh)dwG-UiI{kh3BpSwY}mVey_6m@sdKFOk%%q80~U z)Db!JUzl0U=4ZuEU`C8a9C!L1RPTy(^{_<1Cz-?^104*=rq^ALwApN63g`5xI88+1 z8jvEskF$UJC5*=W0uVFufn@_})ET_(T7-K!UQ;HgsD03MG1zi~!CGv6<%0HIm{Zsul74K7UX5GdepPE%UC^6Xn*JcnyVol^w$%Df%J}bt%n15X*oGBlWl^ z3Yc9HQxKLdio5!qWJgLN9^3PDsT^{D7!c~i62%-5>&C)EZp%$SIFAE7m7`#jsYFLa z<=#&~xY3^3ILpO~jdG&;Klu*e&UvDW!|H&&DYF=up{RU@UZD&jLT0DaNSg{UtDNxV zJj7II4F0nmj}<0@*CEUpv1$UNBb`!w*F93x=a2?q6uKRh1%&segi@bB3ID&Y(a4jN z2AnoD)Fh7#c9p;%1t|?<@gwaafe3lvo;9uns^A{Kg+#s}nqZpJkqSY}tM-=Sd5jn^ zi1&aAoBm(i)`SHeqlL?D?AOJxN7>u+?|J`wg*NjWM0G)aP5M`P&Q66%Syf0IYgS*g zklB;Z9G7ffQDrA}|4|}IwI#}FLo4#>KkQczh)TeU))l-7jY`UYZ>@vC!)p zcs#0lusNfQn?aPCv}kb8sq{%ogAne(F@~)~N7Vk%bCcvr4_-QlD2s3ij+0u?#zoY7 zrDqeYPR|vza0KRH*HxZmnh%L=9#1VnN<|ZeHsBI${5sLCmfrm8P)k39OZ)L4U5NCos}3Qk<=gaa*nV09oOZ3n zN2;y3#9*5OsDW*3SoS;T@JLPKK8?2`O2Qu1ueQiE3(5I645RI&@K=rrFcCckl#_T| zN-Iy>Ii7WRb*GsJgB^MJB$(E?&q&77u!g#2rJpf z0xu^{=RR&Y{}J5fab!InJjNmiL>hSs#n&EUW6GM?kk*xD73ZP^5c$Qn?*?(EzbVIjHwSUPN2UKh?NmvM^~R{a{gA82fVPb!Z1xfq0xeNCy{u*L3k zY#%#Xw%KU6TD4RhHbLEZ2HXIsvWU6;MvVS zg*J%f(Bb1%o@&T_ez%*s207#?P#=!X(d?2DpzJ>Y>R)fCk3SH4$PgN68MpAsi)d^m zq-mNt3}@>!2Ux`gGR~lu#xR{z`qA7#xl$wiV#%)uv|cg6GqWB+kC|jh?l5(YIDTrqYxLN zC9>hpKm`R;-p`8e)3O5VGrY(F!;W)GoZw7Fz46LP@&>Vb!z+)nC$NUt#L7%j;!FW} z(qsipi&CnaMJ#7q+voB`%J)BYm~H)rE};Sgf5GeEr*aDx)CP;x6)6(r1fMX_5}ZWj zO|3ip1m{Mh|J-KBXy0wWgcDWb z#h!b~MKt`9-X0Tc#)){$3- zHZ`HgOu0lJ>GW~sMb~ZKSoOn62aw6IL$E3ZsL-0*wdq;svGW(MPQMi&Ie#zc4m4az z@uW%y)4o(H`$`LQ!XsG5s!(!mhL#y6XcfA3l4KbMScH;NxG>ns*m-?BHY$oqJVb`E z2pl+RfP#ua(VFC=mKHVL;X6EVeASq%!l@G} zK@|aB&&)H1Z+0_8%p-~2RJ|P;5Ajpkg>d>(gW>jdp0rs+*N((^kV&xaYhhEcd@esh6?l267m1Aro2}kI z$VCEZBSUFDVXXclsHcBfT`*Y0sHsuui6O6tRE?&fQ7^1brSpQI3`(BTQ((0#7F&4= zTMLR7qVlf)Pjr3PieZF4fb~mI1?8$>zq;$mPhe;;Y{({AClr@#xjAF2{ZiEKAe_j+ z2C?wjW;Vv*Vlv%O2Js1Xwi+zhy*UV`e$}0`fjC&-`jy&704!E4y@KK;0i#KW zeF#KUZ#%6l%3E)6q(*-#>RLRda$jh$dDfVnk)k`vfm`r_fAPtocM1Ak!-KAl>J$Qz z5)$0mGN*GYHv2Bfy&1*odvZ03&GcGm>v(P5zmNNWW{QUZ?VKs+=s%(HCu;=>ZsRR6 zqV6?-Q49XB;ZBAaq1p7j;9Q@Hf7Jf7O^m#3;mpOlSO9jLUUc1tDb&cwBc-cPzS*wf zmXx`We90TM>!;}J1*hDqnk2j(Ck`UmOu`$7z@hpnKQefXF*YSD@es9tKx`#$mKPyk z`117Ao|@vDzNyiLFYPLPiPk~i@2%xfP*8jO67wtvT^dy~?a=Q-;hMFJ@K!<}B#*y- z`dqW_4pdDv{x-!bkU0sh3Rv<=Y0Fo)^bI}x4I0VK)k;pF=>%Sih23YB-rG8u`XDp5k= zjv89Ip`>Kuuvy+xQVE-w z1>TqU9OK~q&0+ja@zjLR6ots-<*e193EsA>iX^K81<@}iAcTF!oI7G0PXidVVL@+1 zlUVP3#gjqVJdaSOD)Sz{kM!PvWv`ju%oKMrD{A%tU9&yPl6n&Z)wwYSu5YT1r+Ta@y#4J99K}qaid+hBHm}>aI3A}5W zb4^D796EJtJt|-XQ-sX3W0KMWwMy0PBJebSH;lS6o|{U$`qhibBJ~%IJvNCa;KBn> zyXKrMaxUv1buOPx#ZsQ!NS3$98vXl>?|Dau@E250FQG$u5q`Yi1n@1a@wMY*t$gn_ z(oVg(y_ogC38H4DPA!@R0xT9mkL1ziK$@TmO)O&uhCvj0)E@xAVL>}uIG|-KWO{J1 zd<9O`fl9%Dytk-u&GMczMGXjW5ex0B?A=N&>i4uhxF>~J`1u$l4Ptd!l;G!X=jZuD zB39Ga3P6O9eTNon6-4JkMdzrkL325EU#&)IWk$Svx5qSPtX{jO7;M+{iJHO6bTXezIqrRgbwa^;ogAA|uY!v<`xi}>6sCDKC1z|xt46~6=33lyhgN)}B7l#CiES*zXc9g#RaV!awq#CAv&<>tm~z!9T26)uCFSF zN9npgv8Q4DPhH8(mgU+>w>ZAF6iCw%b$uW=&XiHORq6mZ9eV!H1{=8j*;T+W8k zcKH}#^(CDUOrRti_=1+9UPewavBh*dbrt&(CqS`tomRgTqZtzInqWHU@rej`p=4a? z^=tS}V7vd8!8{}HQ&&*UkGW%-OrFrR5G8t)anj}4yN@*9;x7)fy^wbF8roZK}i#hcN7&erN;QN04p#EU%+7h1?g}3F#Va{7^-06979q!92{8QFnt+oIL2uD$M>^+3?m4yjWHO+iMx!DqG?I@Va|EI`p?EiQiz^> zdqpDkeCF)agPgNLA)ygqsRD@wFArw2?}oZ?dc^1AznnnT->);Sv`+{V+Ok8r_*DA0 z{!C@V(_++LZ~^IwJy4SLp409Wt{Dr$mQ_CvBv!tQGbbLX)OvzlHAWhr>tuY%WV5mbl7#Sv{I?ub&^hNesr}lx{LQd*DqY5;j$n66VyRW|WTtP>oPtui3LX5rSsR`p9ukLTR{VDj> zHnmz^=gm@TwoxQ+sE|m7Pf}$H&~VKletd(;l(qc<<{&%5!HddMJ@=`Qg*`2#3FWRY z-J@@t&){;42l)t{43r=`;O8XBmXn4NZ)#S{=C8OTf~<-XI8@F~b{lw37;BqtaD>E$ zt2d+Ol45Y=V0p1$hFi?$vGb%4ILf6pSMb`Hg>ju8`*vFppOfk0V=ycoOTAbDCb`k3 zb~VZ0HCXl(QSAx;lclm&&N-fT?c`Mhd?+!tJtt{%^5xqwVbBwGgO_~na!*46He|!D zi55t1TlY|?V%pR}8Bk1E%{##!TqOundvNnmKO_EI?JvGjhvjol*wu~W zI!MFm-IaH;5;9S!yZOyq!EqGwZgMMzi}(yTn9T&vDj9DgGvW^xZA2c74IkrTQW$nI zFoZ{(MSmAm{c<4f!bh+!F4}sr;yp9;SZ=Uiggaj5A-FGC<(pw3v{WA5Sz6>ce%YVC z?3$Ddsn>N0Le!iEVMPe0d%mVGlToZPStQn(Tm6`191Xi~P*zqg%eAedyvXZWmVJ$E zfLavG1vm9KTQK|BExiG4nwrr+qc#Rry)I_!%n-eUOS(iK?VNs?fcPx>Md_ZBHWDb; zj?0e#mG6%GU*ceHF^QlJ&Qp4ccAOti1l1%={H;bDP+JI`EjnG%{@jO$3y_UwA6@2EP@ElHc~Z!DFlW<)E=|C;22sSW__h4l8Vkr8lGtTk(;pRYfZwhBLu~+)q;=pd(hM$}zAa63=4M$% z_>n42CVsgb;9Wo#faV>5SO^}{0rjyDY9R1YaWX}+V=Rbv0Z^qtI=4wxuLKzUR#LWB zp6OQ>daOdzmfrVZO&wi~)nO=g(133z7}u+du+q(*)_AIU?lgFzkZOGX70pgeU1x4l`Xsl5mJ zAQ|)$d9Uir#A2i{c7%Nb2%64T$f(bQfCKn_i-kdTX#hb`%3*Ql0PZk_(UHJ6_S(X$G)>H~5KgAxruK~>cav*#3ZAnFH4grq z7|Tny3A6!-^q8+Znr|A#{Nd}{uR=A0yjMZos{<$O+2(e)z)!w%;%X54!xNNs1b5z2 z>^7+eIBz>{EU#jAYfxl!EZ14lqY-1LnNa|MeaB-F__pFQg~g)Ki7=al$CpnNA*#z; zA+819_ka)oB%^%~rtWK1!5El3%MQyOcZMcjR>J2NI4UH7Dr3f_M#997MDvFU=x-yz zuk?|CtvlQ3Nu-EL5#lFW*O%JBE%~?FI>EY14oX`33v|7w@#&&TCs7a5?(3r7Xpi0Y z;d(B@X|$IO)Nm4X1z4)Vb{YkBzfD{r4Xo-ScR`32D>m6=4YPv(KGy%qcKn&3$%5Pg z{R8?eu3v#`OtDe>%{6J&FVL|QUFGsxjsbA%59CcO08T<=oM{VKV2uR$QhW2wk!10Y zLy;c=y$fpmJBegj1Nxh(!=XvsqNqPq;}UEAf zx-D2pSRiXMBDEDJ%*A4+~C+jD)AZlD#4*6<(AP{J2#&Y(iq|_B*4y};q-KQW; z=;}Lbk*P7IwGfG~t|PkkA?wGA@wthqL#qf)0d`!=Hav^6o0?*c%nA`ks9`M^>RZOw zj}FfTj0CD*+5(T_Y%9}T%~$s4sKd^Kyah*sJZ;3ln`)T2OVbl`M^X=1=+Ep)v?j*&w z_Hf1Ru-WG2Xn}!_9gHz0)UN=P1&P6t(IH?A#J_&opp$kim0mEtgqD&R1V?>{u*Q2R z;e(+YwfqgmIM-lBZz?AzE9y60AqV+t%8O_#Mowtn3v&pXB|4E@)0t>kp9b!5yc_GC zc-axbonm8*U9DQ_=L5UZ1s5J`o3_7L906TaDiv8?LrS-L<~gDt)yBGu@-TDAI9k}_ z`N6715+2PAOQ-;?AJa_-(vkL=fVYKf5>akvw>PUl#6bf{wRc3S&BB--;|Efpu_Au7 zJ1|Q<`BPoSbUzO1;8jAi(VVD|DF;m_KahSAdDoovky_7J9QKZAv;;TzLU=wPZ~U+x z*6C>fR=1S5PF#e%P0b*l_k3{`c|Ud~#*i=4Sc-4YL%`Kj0WJgMyl~nv*zfH%^Cnw6 z9our_%B{Q*&bMZFdWS#T#fJC#|=oo;AsHs(_| zT2w|f%DslAD$@X zTW<00AvX!cBD|@%fF;xtI1{;K2<8$eLbpFWFwO4&-q>S~cogPip4u|Bk%E zm!A7}ymCX`gM8ojp#go3Nx}jAxoGPItdcaf*&Wk3)}wwkDb)Z^$#2BeQm2G!u?6qS zxg#pdfJ$*F9_8$%$KL!0Q#v-obdUGUL<2pHAf9oJ8pTxLAcxuXb0nIoz$8{SKAPDy^@#3LGT5dvbn4d&W8fe}Z*;l^tc7Wpj<^ zqhr*&;eG|G*A^nSJY1cy?zS1+$@&cN?DF;vztTc1>*2P zyawT*Skg%!GXR9wVtFte$~d)Oj8hAm(}(;W%>0e2)6>oWo*4t%rlNBqutUIsn2|CU z2#_I{y#B0LQ#YL*1(n2tDXuM&xXW)M?gvXBNJIkq34pP~omW!)hX?x*i_Z2BI%PhE zA^ycpFrzn~(%ZtiV8kZ+%yo4-sz-n|Z#B-)v+Q#6+ljp0*WJe&P-W|$l*&q)f)tL+ zEuiyZa{P^s89vO8Gaugu8BIdG+Y_Za9KW5GozLe@`Ptu0zNrg9Zc-2M9RdLeIwbAq z5#a;4IbGjgCTjL2u^iT03hyRatRV9aN{XMM&xv+vsIPwu?3R&nSmp!v48lyxP~bh0 z4e>-yQ{(?~Pu$sVWygGp#2-;&_B{D}CLhgXp~TwNsJBUk<;EafU_?%D{zemYK?V(6;oRUI`KB=(FpLKF_uep_FA zFLA|6TyysHIJd-B1vHif{TsiZP1(Wu6XGB!AZ0pox#=n~aoVC1_DY9Y>-4ug`g5)J6tx4z&QHun;X4S$OU><4PZd z0H3Sa>v^#8TO*eCIXg!$?F)&!>3?o9zP%#e^~29>@Xu}MpL#*6H7gtQIci)H>RY#B zLqHX9Glg3>p(QVP3P=YA>4Kwj%aZTt#~Km&_I(#o7s$|WhxoW$9I!XrLrIwZ`+o{- zE{xoKsXm)xIAX>Ag;x6x`g75!_jop&K$|X#`M`m*j^+;Ocf6K*0MVl7g2@mJZl6nb zqL!ACve`QWt8a8*jxOp0g@XCfKyTe6JXVJJc`ZBe(Pnp96-4)jTO*}8ZXR!({Z#p{ zF_dl~>lH@g{dQj`+mo4LP!UJ(`MNT^U^h3*KrHOHhkU-twj@;Y9_P^)q+voqVLRo5% zynu$h7Sd&zTK#}E$yhcRZps>=w(X6~;C}tZ_^^4X@#Rj$#V7GjBv%Zhme|p|P1*Zc zBv~Yf1u|6HIwWzAU{<5MQonk7*4*jm5PHe%I{7jZ#eK4E@~d>57losO`}@_)EZ75vY04cp z^E-^vOES2XcgTbg2iHZckLS)2lnRTw(3b5RqVJr|-+Y%ZlW&UnE_ZrOdoId=Mu#D_ zESoh^C3f5P`MQ2;+P5r7O+1oC-(`wm{l8>%X$^c%W=mUFsa7_Dm)-xPPVe|LcO@79ZeZ(iSOp|OdgIkasD)qB{pbq2lo?BJB!7j~k7!^V zkq;LO4MV)ZX$zzo+~j}iE|)Vt)XmC+UFClJwJPDcdH&=o7nTa$Gn{{??M(Z}>?5@4 zxPG&e4*MrP1r8@LuKhjklY7cVry))#qeGi70n0nClUJOV>+&07zq+tK<7i?9EH8sC=>d~s}A){ zYMk`~LSwQOGTn8f=#x?xC|F|ZQ>t0E`6b+=`k!QP#fw!SRSmsN0uYhdHZaz+G3zm3 zk0^MR=xL;wm5g~y$A#jQ+C&T9Sg^9u= zo2qA-fZHGARJ$fvecRnM^M8XkItL_yo;bt%NP^h=1l zLiHUmnuMe+zh=lRy$h^DK@i5ZmvMhO=w>N%dH0DYi#Lpg6=V;zt|aN8=~5?R76FVt zY;+~T1O<3b$MqXb0A#KzppeKjmt~DG7#9T>xeXimtrV4rL($vrmu`=F(I{PnQBGWD^2d?;i4cXv*4V6(VhWf*7O$Wy&7_1Pk&H0A=i&Ol&<_k= zkiVY+=qln^uh;xt!eYd%FHlY#la6^mFz}#S?K&XjX+>#)yoqni&t&Z041?C9cOepi z(&gQ$EHKW4B2_j&ph>@wV&*s{IUAt<$ zNwRuq&{Fn$%uzOQ{EF9bc=AqQCs<#G{nOIravcf2QIw{>=R49&N~~yASLSyNzf>Bw zGl9jy)2vf8Que@*wmpVUcbxpzODy#E?_LWVfTjIMLtiwBo2WuLvI=<2ADSSpB*KCv#D2oIqbUB?ZxpD4>*w3g^*7`-Wa{SMslFNWR7$?32x6}Ju`bTz&}K*s$-#M2T5n*S*(z5f2zO$ z`WsE3?94zMC#>bKhVs<`k)t8o*MT_h8;fk|f=MR%9WAe_fUP%d@+5_<2${*-dn0_q zrU@BWV%SX=V+{VG_xQL5J+=%qR!?3>2=;=vg!#HHWXHNnrwNRbPnD$P)+i-BVn(l1 zHr!lC^)}cP=~Xk8gyPOdftVZd4L>0ANNqi_y8WQ!mP8eDT7=5%Gkal8|ta!bw>IxRH&CD zo(IZ+3r(r4aO20o$v;sPF3F03;3;%#c6=bUNS1yNLUj-zBe;d zb#2bWizQ>`c%u;jpHev~yZ|^r$G@FbL!eVW4im*d$w4WDq#?7eizrISf8k=d(2WXj z1Z;!A_+h_CQxZR`rD4B*i>bxsxk}N$`;ObUXY_y=IsZMcCZ0sUqPy*4Aln2)6~)Fx z6|p86`Fu|kyr;^Zq=6CqV{yEP$G#Nj>A4(dfT|tQpZi*9gB43JYY&hK7hGs;h0-WB zOg$~Ae<9K?xEnLOoqdt)GqX*eRC!r5R0px?%Wq^rL*#jGSVL{=angjNT2(lXSD7e2 zlSEpG6^7riibr$(u!mJaAfU9}$FE`CVKd%!N!VHnz!RnXpb46$Sw9zapu1z*QbCW0 zLe(8Il4%1CC^m|<5Im*=LU$*1MqTZZr&VpN(%N5nzrIWrYyemX4_q$%P1LIfPGrTu zM1K=z3)G7OrwJ}5r84yx~JvzG~A=<`h6b~9=p)_T%+ z^5@z)i`yEB&22P&lv#*DX)D>B;}7o87Lgmd+i<@z`;8|)9oR2Fg+qG6>p9GA7$a!U z_MV+b?HDd%|1TAs0_zIip1bltHGRz5?}rmbxk&ZgB=r_HP!q(Mo0gYu<}omg z11WpR*#~?f9@CtxlPHEirZgabgV1$ z;k6i7l=`RG<=ZyU&Bw%m2^#ZP5xZa1B_)&%{=BPRxCUSlzN}BYXS=+{&-1CMWTaD{ zv%5+gIKGYzg?J~cP@o2~cAXX2B*03C?gED$J77fvvz<_h!>NAKfybL6^!Ndt;^H9X z=lL3SLc!acHUsQ!*lIBzTFMhR^YR`&66tq8oaqZe$+Hl~!r&RtD1u{QqwCk3_@jc~ z&A~If%cACu!_v!?{Os}o%-X#uam#)*#aGf@&L};Yo24jor~BF&r1LB(IKBly4V11- z3n?~|4G~OlI!c^UZ%lYBBy79S_s=iLcyd!XcP$<;VB$ko#*_5x$;V%(c|Dw0rXp>b zIEOHX=Ce95I0BQ91%9vL0ls)bn@hWghjw0pJG@rl1g<5{(CQE38L5GqH@g4Qwui-^ z^(cAYYm%snK1Tghtcx)YnCFeOW=XQ$TV+%A^SoT!uJ?$Py%uar#2nP84%}4!aj;GM zaVOuGAgEeA5FOFCV&HD|I)uHa8ENo|Hs}nSiZ?Bh`YCR5DXP*sGPnq^O|J?PF)Ao8 z4qi~XifZ=}8^!sWfGLL@@f;Z0uqD68m!%&*AHh^z7u(d6;I@0i^vEjU-><%(sR(Rj z2cqRry6}%#0P=a&8l|KlXqj-g+v3_}b}e7ETE(y_-7>Xd>;BghZpy@$*rfiEo{~7! znNV%tIGB&=M;kdUJNR(%ONG1;#&wkyg4~Ns+i!L-j_xzMpm&F=kTT);)W8Le!Emk} z*TF&SNV>s|Mh}y!GuJz>n+4*wTn~_`Vdg9H(-^60<$hxxMR{~<-JoO?bN!Kdw|`1aJ{5@YD2w9&N-zfZ5u=_D=&>PWn*n?JKJ5=KQ& z^Q8clbCTG*GchwRKn=L8RkwINXp+ityM`kKYD{7be=V%8#1(e>22b#jijuSyh-k86 zi1r^_4tom-X%WhXFKjW9mexi-MpsCNd6K3FK4HZbR!3VP5rX9l3`OtXVN}DhUd6>| zJEN@pMg-HpAaTG9-as}A-a_2eN^k$eH%(@f)Ii(<0srddCF$!w|7?sG2Iqu>vtnRz z#$q=7;D+lY45i*yV;pk^6{c>ceR{Yx(zxRb3>;D?t+Y*W6}`^gepBC@H9@@^{Q?8; zp}%AamQUCQC%jy;Frg5=4cLfREg*4a;^Y3VT*T;TjtjQ?z8@v`T z{!PHCi~Rdx6KVdZ<{*byA16Q4=ZVPq!yH3Wp{FQ@Q`429Og>E?q7hPy55}O#Q#&>| z)_$kC(E#!0-h^Cg8028(L0x*(JBc;lCuop=NZ3sUu?pn4=GknDIL(vY?r^>gL8zSF zO{b-TOak!w*?~0bMjQK*_9{^U!sV}m7h1V8;SE(vA3QjJ-K(%M`wuFHWp6_O9|#-p zDC1rV?v=2hmS)-r!PnX7u z$Bpw?$Yc63NNRKx2hL9$nqP8WiiJq$;Vv{ z-(5Og5_KK$WfEkIecrm=g4jVw!b5?7BD5zuE#Cmc5DlLV(7xcVF~y>CU|5Eb2%e|q|YiB>$?0-4Nc@X76k9k4;)lxz2hWE&j+|; z8!9n`-M7&UwWx|=8_Qo`2P(@D&RLgGv6Irt)3*|-a^f%*qx|7|_xaC{%r zJG6YVUR|d;GN7ngLpNFV_HfkiY_Ob5Vt!z7=(3%3kK5Fq9H=?eWq6~=dSK^%EqSJW zlhMt{#MKoLh1i69*{~l-MiN}hWWW~7&v{i2+B4~_%}pzP*_0~k_+rAC4F9a~g**@q z--4n|>#BggXUy<*<~8f}g`*-!SZS2mVX0sPEmku%vs3;M)B0>AxtDmO=#H zyxtES2TXpteOA0&r7_sV4-D)r{|6R;8(xu=wemz7BX`$U8oca%O8}Z2O<@2(!^|5# zwVube%fFU6=g9cQrlQH*ztRE+Elg$&NPhb6vOnjjEqKM@Y(X}+tum?29 z&%;muSkkQIy0*ObR)>L>@Uzs?Q!aI-{z)9h0vO@;j^s#o`qAUVhaX+sTaEn%8AbN- zRG^0yd*VWRq&fUD7gc)9Hv34e{SdvnFaw`2>pX z3?uIwN3>U;n%f`&n*!dMG475re~%w;0XBK->ubG8FN=(9kCDTfz{_;Pm>u;xD9=&a zS^^&Gg`+gLj_ieM0UID8P+S+50W*fRePy1%TQ^J)G^wF&>4TZy+d*ybk zw7IsD%jVYEF&hss_KsgXAVgSt_2j%dfPDexV0PS7azS&#z&l=gNEz_<;x#)yFwjZ6 z{QfXKbY99`Tcf_XCUmkvqYSVNQBMMk>Pw)^OWrAC_NgNR0 zJ7HBIm1O7OQZP9d`{mc&zcYKASLgyy-tDD|*DY_1=-aSB?;9|=jgIlB56S{kT}s0> z;rwkh%uam@xLi~&xl<7pEV=4l4FDjPELgQlXP3(7jI!2TZ*)OMS!{z}16M2?yHv*u zX^ZA#IUtEAO`=y zBpe~KMVzi)n@~IT_0)zdtzhaSnUS0omuQF*aZ~#BxO*1y3jR19r%r1BYV#IO{ zkl1soQ&n?~>CRi!_EiNX5dqVTeBq`nAmU-W5z4gX%9o|=>S2N29Ur2Ph!}~z2?*p$BsmFyCt?7FQ!7*zC0)iWXrP}gV_D5ORmxwRzNgo=x4;$ znHHR@+UgVXjD|B=IYw^OrWcWRKbQY()2`h7I#r(c!-9ZzS#-EqT5O_lPbb7~XRCCX z*|MyHz3%wz8G%u&kg7mhoPZuNj{7*go-*mOm<)A;{Wi#IXJK1kEZvCi5u+`W9PQI& zD2Ns=vL8D|KF_Z}qSP#CFS$s?{n>E0#V50|$l!k5thcx}_vYZrRdKEBx^Mz|vY7h5 zC~{T{rz!PAaQw@M-0~xmS{KOoIj#Kod|7}mlu-oj)#!6P#Pj5>_ylPSk0WhDTGZs- z1_ahN$rwck@u=eiZ`+5y%r)tMS}ZE>tY4c*kgC5cjZfP&1YWQLc{Q*IK@zMFNvKG6 zXr&435g8exa<;^A!;FyjaF1cg5Ryc_^ErHC30=nRVLZ#z{v*Sf%P-(++1|KP_Qb=E zhlGGvf7u4bE~juX@Nflk0_&49+mr9TdH&z}q7A6rKsmHI0)|T+x{l?7@~hX^1QRR6 zOtgb$=DxOcEkD?+zKG*&AEbo0!kZid0 zls*lafVLOrWR@fc7~TVTkLaex2ZPRWE*|Mk5>US%tlspj67nP%iv!%6HBn9osKxHJ z>;SuG!iNLMn%q!D1k>s3FwdAfX5&Gn+e@V9sbI{g8IG`GxB&Yr7X2L>B`MKW`I+3Lkc>mFFtSl z7X8Tz&cC0=Ir!sD!1CJ;@D{65Pcu_)78r9QL_}E0i=q^EQ#`)p7&CK?F0Klo9Pk&M z{s*I>3#d+-fQei6(|lWKRPU#q;DzAHp8zJxM+qPcxG+i7TZ^R@;+3-zLnh%8RkRB~ z6UHYL=3JN{VG7b08Aq&wJ(O8qN(+1n5~uq4x|;XeZ7~C$H45fvH3n!rp03P3VNtwM zWct<#Q$*2!@|@E5gE7SQB=*16at|g{nGs)G0FvP+Sm?jkWC)O)KyVW9y|Aa9SQ{yW zC6q~5Y|OEzv-WBqb-r0Qp6OaM9!&&=UCIKLB0@1@Ihp*=kBJ@xaM%nM;t?o(y-HYM z#0c;OO2z8)^ru^k$K~km8PrR0AtM29F4M7DJwOHbwh?h)p?q4tW*%%+_ox(IR;tXJ zB2sJ_D)+um=O?o%gCyRiaY=QuHlR7EM%O>gAVPPP2U&JE9l^^;D45e_o&# zJ}C5)qJrC>U2%!pX66Mp8DG*q2yI(r#k2%%{J$ZIdM^cX8~vSVs5kilCEoLPzh4y| zrD&`|D`19QaaAi`LT-xRa;5oC8&5t;+CG=5H}pJWqVioN6r!mp`BGMW+|_%>*HRA( zro_OwwyOpq^Wi8!n5tEVtPPbkSHQ%iihQ@~c@s*R${w4jqiX5{q43L9J=Xx|{EXq7 z3ChVN^{3K6hD61)M6_OQzLot;j@EO&>Youcjy+;7$LJ?5sf_bZxqag5-|_{>H^lyI zn)2)f^)yB0P+^7Q>59wvZFQQ$&o z8FNyK5`~ffIlmT6lyF0;nH3aWNV3DK1IeQ{UFymo0QEn$HS^+mb93Jswfhs96{U9q zyi4LV<1~2q`8GNBbt*Qf`_U4_S+CH{SvMSp=*JusKJLbVvOI&J2bcQ`%#};4=4*kB zq+6sVNa-LJ1#tElcxX}Wh&^1%6Hx0LGHtVOMxF$0_wlLG&4I%eA!EaXKsm2(l=$j~ zoK22c#!aWgBHbTg{rI%!yukw$w^J$ZA6sI!&S$hlE23M7iB3w0ZI+k7_A-m%W9AFGq48>rr`2~ zTmAC6IMH@AI_?tAfkj;PBAEncsh_UW5o`{=8!+>*Od&EqLwbz~#G+)%z<4<56011} zS)!?=x+HTUR=6*U$p25O2hv52g~%lxd_x~XQo9cJ&Ge+=ai1e&IKuvV3~!GzY%ga?fdKLf%uTGrT=|T!kj{PQ$Y1!OW%iyfTZ_6ry@oktC9FF}PKlfeV{EW&Ldf$*%W-tlGw0 zm>>jwMLUJ})pHAQ2vW;0+V8!@!(dIw=J!W#IBhMod2AL(8Y;d#e4$K5Y0xR68tzO+ z7R!k#gc+u*kY^z5znjgfSk4Rf_LbZj@POva+JR=$)?mQj_&*u1=ZTP0tEDxHQm*PZ z?=FZB{X%@K&muV8E!xo^7Lr3Yg_K&1o4Dx1Oe2H;HmDx^C3Gz?MEcB0f7RMCMWO1u`Fe(}~$%}rB^_Nc462pkq)?BKl$GuMo0YKFut z(~t2Bf~OaV1*miHF=MdWc_bC2z6c~l%R0qms!13N?b4zhr$H9gw1s6y1BL3MveVu? zY>Pw|Hu_3iu_3x7Mo~CaC}+z+Wv#AXl0k6nY~Q~z!T;jBA%(4Trtti4b2la9+sqoJ z?-y8DM5mnjcV%N*$+uwnf|pztH~I(dxn$ou&DLiQ^VjhI7P2U`CReu2YBW>ol8*b# z&fGsXanVo3q&k?|VW_Paq9Z*iWLSD3YZ-;H0=aO5dhx~H9G(HelcDd*!nTua?Y2M2 zVtOSeES!og3oG*C1siv@8JO{+Jk=e^nSQ^<%W>^a#JW&;?oRXIVF;-lo_6lx=ejm( zEt;Sgs}@=m$@lfEwlecAaab8WTbUfS&Iur!z+py*C>i0WXa=o8?K?@v=3@uGC@IhY z*5a^qi<4FR79sU-5pf{CJN!Wk8M^OsXH7l}Qqm0tSdM>^+oJ)2I%FXa!}29%rRi)H zNRJ~H(QapmcAJl=(-@byuT1xepPvD@8?IcqGU6SNp2j#_{_kQzd zt~C2sByP5Fxx-0VTxZ`xYb?JC^SMI1PulR~Iym>y=w+Cq&Dx(Yuchor4FhVyj^bnz z23QwxGaSFuj`!TQi7q+c$i(u(@-)pac25 zq)nd&#OkXDjklCyn+w)!2QAYQdrOyV1ef6F1=t${9@;X*$@(<EngAN-t0CXyQ=ZQadejHXEip@Hm!io1?B-m4+Y8T-D|`hrF`jf^ox z1S}4}-&#!#hn0e2e0@A^qFTJU+b{YjX+BDLAQCHfNrAJVfY%H;%d5n9puXi+%;e+Z z%V1q+l8w{-5`)wfHO^C6!pd0$O%w*V;Y39rrAs1ho7|jc+*W5wer#B&lE_*Ettd)EC9!Kzk?p?s zXQC&dhsvO_sz(c?J0o>r=aYLibgLW;vs?VkH{4M(k;QA6SKru4am)nWO7?_w$0!rP zo;nL5;$D^|c5+*yMFBmGZhWynW5~P90?LAW4yXoW;blkPDXd_o0fGWZhRxbTb+3U) z8`K?9XnFTP*($|LqTZLi(F58Q13k#SXGp&+ON{<57E1_@fx^e00Qu>`j=1Ux8*8}& zWZC}thd_{rg@&B}MmL5HJVtAIzyRxkSellhSN$)iCpJoDnoJXqWRpd2wgc!mc$h&R zTfQU646krbT62U{JQ0K(Nbg=Fe-6V zIu4)Oby~NPUU)wZWY24nMD3GQz#LV}C{cnxL#*1t|}_p^TD{(>?46V>mk!u`vLRZ41<=odLrl zl&;`(P%mp$A0ujXZviN?m?38%V|Zvhx|P;KRh-9EikQE8bem$ZO<|HvH;$Vi5lDgg zXPlowPYK5c#2Cf^aac1xB(e|3-dLrkB()}#RJXy!F2`}pdRp8ny8(N2A(eKPhJ#77 zFz(G^*1*BnS{Oa9nGv4;GgROlegLbM3PG&GXB*Qk?f;(S$@z-n%L-?T6W8(hLIbBN zBgrjwPqj3MrfFaNMBvGunhX%bi=zvgEetW?p0nc6Ce-}uM%Wn}n&sJ`gBr5@N*AHa}I-IjZ;44UI+aHXfWjKC4RgHwjw zn?^yeEn3HBZqNDsT$zR?*;@!0yIyR$B+!I&0&O-GMECe!4a3E!94jBSBS#e9QXpL{O=!#yWN(nDe#M7bVpu9*5)T+f@Qvs#Pu5YHrZ6qnsp)@Q*kxtnuyq;9*Rc{S*AlNC_X>U;DF8Zlml zORI=+3=VshXk&&fdiL_~_?>g4xHG7^*QzJ$G!9kPnFV+?haP>tGmH)0CVufqnM^L%o!0uay{ty8F@^;5mxXL3;j`u)WH-rR1dYKJ76H<>){P+x9D zNo|}D+`8*eji4=ld_y5LpM?+36;Bvs2Zs!rJ0?a%FV`2IA{ z0Wa^K_Okr<;KnwSS~AYm!_5#S>h+GnA(LxmZS+Hkc4po{?cezq(1dvGdOq<%rmQ=r z5ngKz{kHFrEmd5;D*%s0)+c17>OprN%ygCCv3$gO;f0Npe@!yPS@=@$uV9M*u`rgk zQhIU?7b)HDULO1!vBzU*d@cgDr!bkkSaJ1iVlV5ovCrn+0grHa%;Wj$pfnS2kOw<@ zuT~qIhur_(n7+&c1~-oK7^|}|dwoiDMG3adxgCb%=biuVLgWg!#*>Uz-qbnNAT`sh zNW9e>m%x(3vOgXKALnJ3hkD^JO6-Jh)E@lMMTh2wh;)#LAkS|reXt9eMhtTPKwI2Z zXG#Sf*C@4rYdHs^<>kpuL97(&M|A?2DoF}~J6~+6O(}ItXJH4}_o84ZR#uY)aGS0% zNMvJ9PWI$7RXaE5d=6OJyapP9VM3nZP6d$yySl?%Or20eWDF%~7v2j9<)tYr9)Z3o z&ScALf>2o_!(orhSRYLy#M!5s+)M=37Aqn7lbN48|i;c+9=n(iK3uEDjoJq4{f#Lh6S$l z(eJ!{lrnP3|JLm?d){{OmUfiqVWXqm`^-)nG=*sQlJc3wJbpyEY)ClE8qU%qjlmzh zZz(!&L1!!f@RE+%afd%HL1$)jT6e=6%$^>sukhi05`^U|STg24x7qTtJoQn3<_p|J zx%eF!Rc|%$epzvXcWV;|DZh3s+3ZuIHZgvD&>fJP?x%YusZ9!W{P6KCZRH(>0_lAy zSFlBYq((bwmt)?mNoJO*6wk>9i(bTBOuv=}wdV zT}bd)zu_Z|zJG@4z8or(TtVYJ`B$fzS})cN=^$J)49EAc10FB2^7vDFbY!khZnRJw z8(mocOXaqgh>A(H2Yv{|MXh)zJ_D?D&k^pri) zFyiI!4Jsjiah?Dsq`?2f1+%w?Ll+6Lr`w(-J(L=TH;ZRFX<?$kJI&|J%X;)7qWhK;Mn*DcN4O}X+ww$#d(j$3s#UjF7tMhGGt zAT9Gu7fCSj{3134JKN%A*RR~M&giy@_G7#q?9stpI$5;nFue+nORhvOq40-zTDbX!T zJxB(tDNyMxC

      4&gk-6*()3jciyp=kM+V` zSP+ioh|ffS7Ve?;wy+SO;rv2gR#lOJ(M46idwBSE4))04^k3*l?=Hb?q86Q9v~oN| zA#4cOCX21owVur%z@r&(bJG>6k8{X~^e-2)j$%Xa_AZHG0<@Jd=Z>#~{`U5twu@dq zsCgxlX(%8(aY*GyRw2+2Qzu;X5J8~WYvY==q$xT+7V%HI^gW=e+{xU5fGXMF12PX! zF(PAyT-kF(k2~38b3~4NtE`QeFg4*Ob&uJ`zoqI~2XyN+<_HnZBBzT#rf!;pT@1U=(mOA^I@3IiZCO zddBa$ZKgKKtEd-%m%58qXbI{qK9}@h9vUkG|3oR}!JIQ}8}d(Z9*xyTFyR50V?&&q z+DeS*O6QUWI|lg8scc71sO?)TXb7Sna|X90#%^+$8#`|t`=1crDM|E2Ihb;citU{u zA%_kP>wp7{_={qyR{2*6G9f;v4yc3CZ@Vrc{*ZkM=CXQmV!KBNM#d<3&9u!PD~vgI zq9aAa4Xd$!04lgB>tzF75i`dq;j^H@kXq`FqyOd!;rjp+q+NJqu#+hIPMI~5z z{8^y!c*hFZ%b#-pFU+Id!qoFp<3c=B6dX`Xl=>-JC-Xn>iyacvDmq({;bN+a@|j{O zyA681KZk!LUFdDP_sIHDE9?w6ldD^X&A{6oPK| z`!Hb+odUw;r|Da@-wYx9C!gu7C{*XTXSv5p=nrdT4_BP9mp#FTKnGq&x$J_Lf zaiJ2NzNC_fa(%)DjTAu2!ZB3#_(it1iW{ZlWSmbLy=6gAeo+{?&5V(gHnLX(NamJ@+bxxZ^5A@VgmHNuDqAg@+1frO2F(I z(?=NHuOuqrnpvqS3T74pKW>NrcTk^epA@(@DvUG^SjosSCugI{x^Ke|EH3EM_?=Jz z=Bf5(_Ade${z*Au>L|iby=>||6|d-+E!Z|Frn+YH;B3U~ssl zZ?>}1c%}MwptI^lg4ruDB&vvfsFtJNjig05!`q zEU1LQYoH7zo-e)C%cawv&W8ZiG7lpbVVt-xs^B3ZlmB{#Po3M|5e zs|y7WLOjDHz4dH7&2sqUySwUZ3G2~B;wXs{H8CreJz3bewb>s@ ze0rTQtX`T4_4!29Ofy-oxOkl-kD&F;XK7vMBAJ-ftU0G+c_o2_Z>QDK)IC&>iCeg< zh`&`(oL9C)6;}YLo*j=dAK7)nZjqsQp{^E)kJv`uLdbKpAnpU|uJX>p54ykz%U
      jyy9=py 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

      Y- zn2cw#&{CRHk?Un#bQK(!I{E|&TWkghfA)^EhaY6q-*!#_B-G55QR)2OmAO%3l~?4vtOiS~rf{kYg?I1yvlMrkSO0gf-f_Yl!r~HPzXL(a%4`1MEL^ zKGd7)G+WA~rb%J4TSfhCNp?uei0xUTpf$)*`?~U>z)#H!=fW%7_4^0VT zQ`u({;gvs{r5-TpMG)2>lk_i_9OOfO3=+42Te5OIbin=~v5PU)#{Rl4<}m*(YV8qG7jjEIB-Q*V)cMwhU*F z0HO_sq##4EQyu)>Qd^5iClR5f%qc8P^VgM?9rTRDgFS{lC$+DKcbbDI_8kJTSyszB zUsIg+nhUaW$yTC)p#e|#m3(nFQr*emIY93Q#rnuN==J=A_K z(~EzLMXI5WG-JoSmxsUW;S|>QzR?wQhIJ3ue|kQft~$>A#XG4)PgPI0ZdDZ_1&(0O zrJ18i2ZZ${PmM(&1_`oKJ2a(T?qp!~{5Bs%X{33g%mn6%n~;KAjE5#JE-XXnRfoy{ZkuI1#g6Y(!r+HIyaQ2k=A#?dR(f3-9H0>n{yIZji+DVBb zD4r{_S!Og+N1(rD(j$ajxQodRegE$Qc2yutz~cQD+oWiG+EBZ@@GtNaW`zmrT0uZQIJXM=34bs?5HwVkPFWJB+^of^$-;J>Yh5sT*6m7vy3^vuf!lC0}02CB<0UJ?rbn5;tBGP~gw z0K2$!en`pmg~Xova*T19HxNGuY`OCNltk}sdNIyr?l8l!I%b`j%^unIZWAOEfW$zb z7Plu)Majo3bxlL8!m*}Tfb8+W>WKCNFZWR3_o1yM0#|Ch#bYv%7VaAoBoZ1ku3ea-%}88*3H|rh`SCC? z0|3u#d-_HReGEi0(NKZpk>OGt=IMpc6k@=LByOuA!(R1@B?8dkM9EfH#2EcD_2Mt? zEcmD#i%DowaiYTIujpOzA|tRK=jF%=F9!TGma7(|)_n&$B8h8!P)bTF7?@sdhSmnD zKH&k-Wa|i-1kB z3DL4(`>&abZS&!gijVLG`X8&MYxiO^T2(t{f}Bh@n_JdV|B8#wuhb#J!66taiCiEb zsCXObEh2G`tRc+$fe+L_vrgQr*dMLxEzQK>kIXz};5VH%o}DB!M+s_0h2UF8C~AJN z#PD{G5a>RQSSCQNQ^!yY7lqy2QOW9XVeAgyY=?23$!VN&XaSvleMes$;ihVQswC-I zK8UZKm%mND!yA9wNo;3V!Y53U=<`OaV_-?x8np-aEdCDd2d->oAH#YoG#)m(5`Ml- z=tAeao6T2Wzhan&{BVoMe`C!6Hm{gQXSN3+g%GpzHddVgKJ77o2�Lx%teiJ~tw| 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%0A%2ajmvFti2hC_j0Vh(De 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´J<~F6s2As2rJuKw#enhb3m)?ai&vbjp^6R6b zSC`~J6kcwKh#s#l5u#6&SfEu`YYH2Xjw1BjiXFo-v}E1Q;xTRA76LaPT7kUU=a+GCnDfUVpMP+i&X zoExbiZuals-$TIP@UhmpWpaVIRBje2>A}wJJf0w}*5!*Y{y?xIySh+f8qrel8P=x+ z+;~nUn@krKs4Um<+{vjU{8i$J{&g{(yTp+=AHoLSyVZyoYy!wq5t{u(l4~P&=0G_I|p)xG&|`za=giR_!R5 z64sC>-)DIc&pSX)>;ksP2_Z=EK?(^%rs=6cWPN37qNGZPMl?vpehAESPSFLtAiB3MK@SQnh+O-R+Lv1p1r{j!5Oo9bv8u&~?^UI2*#BABKvTd9Dc*>M z+!Q`?AIUPa`^>rSEBuzE@D9l1lK4=v58y9+IN#OKE0A^{YU47qqn!EAMy;lo`F7(A z##OIC7Y%TrK$7v~1J+ZdVSQc;&RyV(IRAA}OA|Zgwq+xm>kM7oN{n%FFRNBMKI#8F zEbnWU;tm!EJruT&r+Z$NMx0aEnNs+i>v*9sw=exA zfR$96HZS(g$-RsLHJK2h|21VeT|YLZju07-XtZZHIqCPWgzG280LBZ5csV4%y&3}O zk0bR#R|^65dpVFthBevRC*YC0L9(!51ni!s$cOrl2Lg{TQ=LKr9Zg25@4PlG(m$SR z6_LsJXP1r#?Y~k0M?kp0Ht%fm1bcO@+khUm{FeyaAe&~6hi1q1iMH4WP2(6LER~TP zVR^VfkR&6t{H%)f;glhWzh;*Y&fBdv*tc{Ep3>o*;Wqj)Qtr4fx!-o%796m3KPwP} z;F8CG<5Vo6kjjWZ{64ra_YkU(^5`K|vaN|`u^5#~qJJyaoMH6K4Oa}JA?Vmet6%S( z`9cRq2_GrT3lKR^KHnOu^$Aa|lT;{&Dww-{7BXjgv zzHpG`l_a(@zEC8tzm7eccKzy{BFjNxFsiehU4+H)4V*f(%30mdHS$iaxrmbC!IFnZ z4cJ3yc@;=bnd`(r6_og!W6m5!jpkrQgpX^~5^ob1#A!pLL+jS&ga^-qHi!fgl8nwIt8S*^%dAH-(R62eXZoHtF% zoMBZ(-p#aH_om2v|9@q+*TXr~)gtSIKx|u(r+CHW=C-LHH=xOeqMcVcBmj+wA5E$= z*c~SC-Fc z*1twDYr%*7PeCLqU3YhKh=OX*L}B8Gg@NNAu>uNR)wx^+@QKSC_EvAj)2otJMS*x& z+E4zcz^0k@M+GyJ=X>7|6A z28@T(i$Q(Re#V!CKksV{>aIp6}^n z)-!Syl0~*~N#zGm-{#t1tcVTgfNzggx=|}QmH(XotF6sqPcJegAuI;X{}F99g04)RWF^;uw+6OfkkZ5_?TZB8A7Yp@>;bp zf?BIxDdX_*U4`AZ$+BZb^T?zG068`H9{a;CxHQs~!0vD7>^+@RzDY5N0_PDV*IN2O z)^bs+QjTwuSqQ%y?)})JHT3oH2kiw10pp9fegY)7bY6^;#I8-Ut&J-uk72nnCj) zeGZimiAq1+P`(!nDMU%OBt!y_yK5s5~e8ug9? zhp5yVr3Y1t&(!HyEypoME&>l@c@=5FD{6NN%9a+o{u`=FcR&&tj#$w%N! zdSnWP1G3<4Uz^L)V>1#R6zDzXr#EI)g(N>hGgrX=A5G7{q}q_8;g_YqR?9a27rR#y zj;GZFA28KIMRTKU2F>_A7Zt(44P$z??>rP|(3 zme3LykZ$+0n;~S~m^l5vxB~HC5A!hR4zNH~RVo@i-+0U2p(Nl~jPJ=MUV863cVma$ znx17z`|1&U7`gU&7+F~PB7VDga6a0*nYN|b!sa9HFi8DChMD`Q9bn8(9#l2hZEa|d zs+Rf}@FCI+EdvQ`>B8rb(fmY~NowrO z6imou0ho5|eLZhwoSlIJ}V-Se2XK*oRNhCh!D&hG2;N;&hhLc42?+X;xqH zgm-uf{carTkOOFjbDjFS8N3pc82KvA$-DZ9^0FCvuWN{;I&{Vzv#{cHI&rsGFMldq z4HgoZ(1Cu>v{T5o&Lo&i)sZzJBhug1z*hYEQ~fv@JZg5PBkj(rZ>zsg;*(P_0woen zFu+^{6^pbL9^)bqa2D1joe32snq2BY>^z!|X-%cO!z!dyK)({A?s8Mzl1D}uN|O}! zwX0#JP-??Tb!*YDq=L|g-o;eI3D)hto7bX4G;X`WV`UFwX);5!oUX{fT0&f740|pV zEb7V+t|OH_ux%*HLpwGEBF9i%(-Z1u1ag2?47sMS z+^8$3j;=eQ)>_8VgulVtXuG?W#&NoQ)|NXk5XyhzZhc~FrjupmK_wflvXb|;jcV71L=x;gP?jlXGs@ZKY$;L-B1jXa)kbl4bH8$CP zk{^=A41PeQ81L4gJ~En?Y=OYiVakVD7{dBRES-m z%qe&ekcgi%v9mm%3t=RQxGL>XHo>XeFd!0w5V04`H>7$@?7nq>G%Jx0GL!tF!&G-W zBIR0Qdu5Xk0uTwU%&#zuQ$u&#QdWB zgxr_xX~G3$g8ZV%WsXgY3d8alTvR1|8T_z#Ur&7LWGyQ$P@F31z4tl!O^`J>itiyt zqB$>}^MTs%!Icx9DCwl4bAZ(IK-4{updQ+y9+n)jN!#$&I4~d<4WK6X8jkL?wO0Uq ze5%LY>4<<~O}@h$hbAwLrm zzWla#dF;y;BI5KrypvD((B91*bT*&B;U^B z*FFAk`IZoA4BqlEsiiK9bH#1f{goU+8Dmd9Kkq%(bq}6qA@#k9F-V-t0v%@^F`$M? z4QmtzBABrIe*DRU~@^r4RX&2jKJd>K>_EC znH931Q{o0J0h6<&N(8w!k`FXwCsgJ9*&dYGYhj9_19iU?bZ!#*iCdhklJYNYd(`pe zCi?e*!ClnNh1XYH4(_{hCjV}~o$J&}tP?D!s{m^7nEA4?^v?43V>p8yDr z2dS~_A^!`#T_u6R2Ekn1#fh|e6q-DAq{orbf{9a%#zCI)X)0@B74_k7qF8FD+;*ZI z*SbBDXbJkBY8dW{G(G-vX_l!lT^>$@0y^Ru-Rad_M&b^V2_5E&H-2$HAs^&pLv(8X z>I3Sbeiw{p_2C^G5l{@9i3qc@X>ZErymz_j+S<)SjYW5{oBj+u4owihl!XuVBxee4 zHS9IB2d`m5BbXFunkd`bRAeY^Ty<|x0#MIlx>l@B*WClif zdX`vPf9!ZIQoaVLgdwrowKjI&@yYgMUfX%wy3^*zEc z+ia2D2=*y`AcW}ZW(~XgzoZFtwIGZObelKK_NWeeYju*0nNLGI^B^GoMLU2InXxXRNZosL64v7t|+BWYn@j6*7n;#@qa zgneYX;_~kqf@;QeLPZaXGX{u46#!ZV;dVJf{wLJdQ6BN&2^UNjQm2CEGDLW)yW4E-f`+wGvl3|Y%5pZ;qeYDNa* zf?&TkP|~tUaM#3W$ve=K!NZEE(rg>m}8S0m9lS3ZNTkE7DC&zC9;4Gh?05f6{O6da8R6jW zL0pU34nwm>b!=?|K{zKoUX04UV^gT+MFA9& z0>TFfb|wPuZRwut+Svxt17D;~8R}mR)|UZ?A~_Ri7b3W#7s@F<6uCFUoxuL7@B8i8 zn=k}Qtusiym$dKASwhAB;*th~7|app>uIkN*6Pm2N?J(~x%hZ75qY9bRZ0FGc&jKN zYj14lZN6%2FhwRFVt8o0iFeL5OlbTx*BbacAC8AP>oG~ zd(qaoVX@TLynNWv8&A`kdyewQ+SaSqx4+py^s+F%QDy+4%25RAOH!gh05l(wcuR;1 zEypmCy53t3sF&eyR7yzGoJ*t?zgmf2a}de}9rBiTz@e*s4&VvYCpAP4zk<&X+e1J2 zJFDHpdH(q}*}|kMnsu{j7zZ$Dk!ZD9 za|Zuyk6V76GO79nBIbtWbL=Vd8waa8`V5yZf$QG?ULZ1BuExW$z@uop^HdM2T76r6 z)FyS@uHINAL&c9j_U(jG&ny*D1)9o|jP9pMR^x#X3vEX^;x#8#H+bZc!H`#QIr{AJ zh)@VJ#JgWYM+<||K19M{*Id5JJHnZkw5)SqZs&$TGQN4b)DqSDDKLb(1OJn_5WJ-= zd6@l%MY;8k;g4?7S4Fb|^BdxpzHgB_(5=t^c)RLAh-~ zQ#V5#uK(Vnn`tEn{qE1xm&+HmPxg8lY|nWpn>`3a-0!7bVilMEVVSAbe09}gtC8C< z*Lvq<)gAONoqFM5uFkRLLSDZcNw|8aF+TL{&Xofd5+c##ZS#iO zvdfmsymazN{Bp3-0QhaS@~X_Je^9-&90yEuN@_2cNh=no^8;I)R3_4lA)M?`4b!qq zgc*IQ#>5+ma-~zN12;8qL`zIRM-G}SMDPyj#LF=k1bJ1775E8m$$G2BvCq(WQVs8! z=0Ra19gJY--fP7%$k&MegMnAWAc{LyScF5L*w((-1YS@>6WVMHvGx{3^54xEUHwQe zh+jdTL_IoJZcE{n(>NsGL?(SC8;nANRgG$H($hhX&tM*T0imyaP?53hBU5hv{=dTQ z+DUQ-ucTE+Zjv99f~z5C$APV(-cYm*I--s(3s@Y6$f0E3tt3kxYVWeN$04G$^FZ%T zx3fo9K!9!m-PeLO@%Vo0dPYk!bomKNnkH2it~N%VBoaeBsU)~Qj) zONJW|7tP#)0390F#G8UErURUDR>$4tQ8`Ji^In>HXqcCI2G(tjBP+LF*zL` zd!@mj=gUV>DoHnkUAyW!Z@CypCkgE>W0HT^)I6!~Vbb55bSOSvVq!&_%_c+V?=<0T zd;0idoASWz8y`3OeOFmbm7JlsXV6{yd;|4p1Pv>niXH~L$jiW5j&2L zO$iZ4rU2zNVB*tFX%wp4wre49tHm&b)39!UVfvVXQczo2tXNz~ z?dw$7;!Sn4& zkPQ&J$FXr)5UF)dLDt3e<(OV%>I#kHs4jOy4zM^chXy`StX(qgj}HLRydHrHdOTZ; zYu4r&5|fihXAp~J5Xe+p_Z_=?Vw|!S7=m66()wNh+pc9P5A-SH*|hfYF}wD(3lchXgSUO!S~0QYKE;fj}e7u4e|}`ydGK$0jb4x9|yL%R!= z{Zn%iY&y%+uIWpqNRZbyjoe(U`#ru_%mm}-4D<^9$8EBXDLk6*?E~>dcJVUpbXgzi z=R6A+mECI&-h{E}yB%~;7b}iCzAZ(K32p=N@AJ*DX8jb!zrlc9UIJc{<+mAp^q( zCm0)Z#~`#`?koUCwyamR@{@6DeT4ADxBX;@UTKaNvii6<)}E_?jc>LuRClzp4Af*0NUcOTVk+I;0MPwT!G9v ziSW^jW*D4(Ss=y3(5w6fi~P zWXwVf=Y6TIXv&y@@lLk7xaj`sb~`~@RZz9a`+8M{K|Y&r@Qyj70#`JFmW!6!W$X-n zOSC0`L_WyNC98X*`?tNu1f421ub1=$KMkE39>Eb|BoGd*4G)|#Zrd9|SaMIV-I$Qg zQPl8Yz;|gBPmlshm3tFez51Y;@+a zj1QEzy-0h_pLf=T!$uNcH{h$}H}ZJ59^^!3iNT5^WH76j}3nZ$ml8!I)^291IBcStm< zSfKQes8EV_z&+HxKiI5T*Po3JZ!6s&4>y|^_%N}CHryM73~7kGYjx=Z*=GeX96-~d zL;vz7uQE^XY(%rH*VSE3D6A0nMY-ubTi@#P+QI_ER)?luX4u`a)w&XHYEM$s*AftG zE)IHV3}vZ%4driUf3JVX6x^;60r!3|Bsy|KNwd`bwuFkD)_-iFpH%qu6sH5puuF%o zdk2y9L55uZ9>k-A*S^HaV}&jWtP3a~>g$6F6pr9;zK6qNl|1u79)YC1QAg7=eN5RU+6#o{zUC>vzCQu!VWZ z4#>1eMELmpVK*MAsxSI^3;8D`KfxbZ*pQ2{pZd6=0MDN>kpRLhNdh1hNMtzXZCh^p zB&ya=wzcdfP$Y#ZZ1wvzxXvyc9)k$)J8D>ASwkkL;-ICg+=(Jwpam?EthD?=t+yq@ zh+{F~JB4!e_|~0Ss3cH+y?`D%8V{SUVMxSC%d1=k3qX;Qra#u`PAX0&R2AW!TtymB^F6NTfOzsC@BH=P|A-o%e`qdsFsI+|Pnt&`>rTt#Bfv5;> zqHI%NU;6oD)1yoogeS=EN-)Lcx1%iDRm`1{)2syuMK&-JW)|%xIP4_A0r59*vY^%=RuOTlY?)!Rnhzjse?+7%`^lc_ZUVLBc3bEaaa(bJ>tS#!a~Ota1)Q# zG4_xk*<;+sC#aGD^(!Z1>|{TtQ;e^9x|EU@r=IzCo_z2IRHXQx#OOj2Rz6GGS!zGj zQ%ZT$!}JT5MQ_{0ltkqYR#n6XXU`7zig09c>(di+5wSo%{O(E>xYrhmZ{S4uLJNm12#t z%A4#WWCAFa@Y_MCTYO`LE~Dv%?%3W0PAlf*ir4c0oOJSx_{HV02bWqDqO$PsI7OgB zGGCM@NA)Z)moJrJWpl$5p*fW0%y`0Y0R;- z&F?`WYSX)O%w(*N7|lm{B2vICrcIAW!4`gn`%3|)S6;c{LEf;Qd4s}Yy&qrMW%Oa* zYq{Od;-Dqppl;x;dxSrjYk%Myqs^CF9^y&CpX?&}&q03P)`b5}8BdE%qNJyj>h

      ztX90vW9baHBHPHgtqjMS8T_#ONzkDA!3^`Zkk7OBh{2NFz=6mlvvc0? zjh+A)-;{82#g?^JKPOo!>l5p4&%{cBLq@f)3!ZC1RZuA*VAwV`e^4CfSKkBKvz~@! z*i?NMw5pGLr&8B4w0KE6z9_`v33fkyT?e50K`9_8<^ys&!?yte$^XRSb{GH;?6iXc8uwH%CJlhER4$|uk-si06oQuyteIn;XQp>` z%CH_WbBg{ff&%unjz&)^c*km=z^V@HUi=IYez~{fI6BaWRlk4)YMF(?JbYUd6yM;3 zA{uQ3EDypkAt&JQoYi}iO}){6+vTTG)D|>(EVR(bfEZ$fBLxZ2oUl=qCRX@vj3t9! z^X`oC7~JIrmu}s=oMWq;^IVh=aq5I3KFDrDh<7XdIjRzM`Tc*xA#>x zMfw_kGtTSpVv)b#tm2Q?xMdh5c1o&-YAbCZPmIT$h%nR-=&g^#Q|ar>Al80|Lmsuy zjRtOmME)(lg(e5BjBYMlw`7cw`*M4%s$_d5XVq9OU3JSbx=VN?Tt8s}RRTda?=v?c zYAMVAi}W^uy*A{}I)j)5f1cTu{THD#(5EmAp}Tu-2Xpar&fYuKJI z>SRHBnvr{D#!@#3zg|pW3V%F6>cyBtE$oTC$fY}@vf}>lh2O}=Y}0nG%MjQN8u*x| zz2QeG(+Gx66v zS);G@=ZUQl70{i`rLL-YmR?V8wMZs8E8Vd*w)k@}WTN77=5yq(0`d0}_&|Iczc~Bg zDtnh6ryd(G=r(_BF))F)^Otp>&4KGeIxlK%KA_Zh6)blLAMTkGey#Dw=*gPx6 z(2bPb9X7Hv->Dn@eHt$DUo4@vRR#a`7>Dj54@D__CxgXBs_w&Afx!)qSNM|xlVD0V zjqZDolKEX(&vxm@E!BeGY^Jo&m3cv{f#qV!AOdx7i>wb)yKl;85R2IOS}?vkQ*S=M zz4xq;ya6Ba221oi;S1AhBaRim@YM#~wVm%0O)C(|?hVHUTcEH(p?jrl9S!r3z`fC} zYpRRxMwNuoEC&f)@5N|s^eg2=m$RGIHHSIdz|xK9+36uRJInPx*u{Xt4Ax6tA?jxG+A51InKk9=D7j&;C=-@M=%~(odwRAOdNmv4 zxEB6|P9wpss*r*XaG#(xn=A&eW2KHJ+83v{*}!~V-nMB(mm?RhBg8Ekc}rtBx@-aM zQ)OV9Gtd)+Y#Inl7#iPW7KOTI!ze`cdw?A~t3~8yH#@?R>tzBDuwVNlTCRRLkF-w?K6@(b&K%6A@E4mihO`VCXBc8(t_~zU^P1i=UU9Pf{hQeI{S!R zIE{f{U>8PGt0hbHOVlJeX4lF`n9x8e&dCnTFc5Ywng(;{C#WN}+znWTk;^V$K*P@y z@~d0Bt}84#KjG-Xzgh-x|H0_W^}C~(H%IgbzD^eLB#%dLyK{HiL8Uhi&57pmsh9&h3A~qD$O;LY6c*Ai_P|DE#!d*GD=#lTSMNDj>>Fllt3#Fs~6^htH><39r+1M|mfjdC04%#-}+ zQ-IsS6xPSJY_qC6N?>iK3#IAqUC@2#Ps^9JbOHFq(wm_#me^p@#nZfjX)bBhHtPQv z{v!8b|Ju}%0vPufanNAOUwYeM0^+M>9x!t>A`1ZmQ;Bw#PxHImzC4gw<=&G1BN=PlR~jHYBLq zdp|8pcOKr*H%Jeb(V1!B8b})f8G>S@#RRc+fgE>=DpwJ?6>F&mE3{MW8lW=Z6o?kb z@;?fL42`8&LhTeazD7T9gTU5>Hl^-drq2dK4PkAbruea`X} z7s^RarnM+EGagtF&RQbOa-V`lg?0`{{szIly$?~qh2O}LbB)3CeOTTC1FN-x6 z2`Ttx3c!~B=Z2@V?y^}zAOXb7bs{nU!dp1#!jvT1{Pz4P(xbW`hzE5!OJ1MHwZeX$ z!s3s66d}iQffn=)OIG|qxK+S#6>mgU@&bA`_#o-c-2=^N9Q`2jMTgS#nllSE(Ohs!Y={taa)9+$P7AWtetDtsPiZ{Pm7zuMF z#ou1lJ^*$NELdnoYDn@~pqnyifAayo@(!OJ5TglS-@RqrDU%z_FQ&(ybiwFKiJ<~T z(o^QS0MFHPQ*_}%44vJUai0S&ydLHSIhA>d_mz+E%HCc6k?C1w`cy>GHiL)v1OrEU z2P;P>bMn-vQLX#Tm4Ty9G4B)8M$hU&@GXrWK^ewOlWy$eCKGopiG0*1F{A9WF*{vC z+gvFN2YFHSD-yl7ORrU_s+101uyX8iFr0a+XqVMrT*%62vcMQ#rGOS2r@Srd{+2djnV6el z-C+$zJ7wr##)2}|lc%BS$KQK(j|ELF<8=;$e~8lp6m*gl9T0FSD)p>i%5Ea8L5r)o zRg#a!?blFEJ~l$fh4=r({bEb=bW$}qFHyxa2Pirxq~hIt4$C8ji@UDw$vdPz47I}l zd02E{oz7>{gJ`dX+At5)@?8$aKIkU{PT}x^3CrE1OYzbu*6J>Qt)|YHf^0#mL)8 zdOB@j<_9N&?raPC0CY;$h0;2GZVLppsbk`DB*b@X6>S?VN#zr|m)G~faX^-s?3Om^349>Y2M^E>h_i2CiRy9^15Mr;&0R(q?x}d~6`cZ1)%c8g;u&>XW zUDr`emb5}0woysh?`{T%eIzPifAN^d0|;j5K8$BFZsdaJ=Ty$)CbFT>DFE+hNG1o6 z7yvhRTLF+IGz^J(fO$$JGhO#AN(|@|+9K)QbbqpX9lP#Njamjy5oz1x zoZ*vNuj$z#sk!rG&~6MZ^Fo2=|CGsDzDRqaH(q8C2?q1DMVxPkNYdCnHw~o& zq&xhDs8<_kbyo#H3ae-Pcsq;qB?Ik4*l2m)VBzVC*JqHu0V}w6g}$P&Vz-eRaW_dg zzQnzA)Z4QMT*ZgTVwUqa%i|@Y)#2Q&(NO{#X^iFBA^IYu0IPRQ@ToMPK432ZVyqT8 zWk~C}S{d{~=Bpzkc`(Jq(ZoZ6qP=c2QVQxEUV9tc$xn9Y8gcLt!wM`N889?dS<(*U zUSb<>`(1d$ab8~_`ua(R%WaltzT%EmX>8`j!o}rKlt}@Pf>nULS#`JM3s=fc2OuHK z)a<8y=B8<$sf-o#4Q*&Fy!U!%0>XG#MgF5aSKs=U4tS8E=HIT`l7$H|Nt(E`6^Sta z%VWh^;jm&r*uszr>;@Un0!1s;UuhP#ak+ST0pf1i&h55QG68r&H9Fy$#||C|*K^O@ z2S$Zo~SL1NBfTY(Cz36sHD zMbO+H7=lz_may>#{FH!z#g!b`Yr-ur9Khr0fV9_WJplpFftf1T34jZ<^1b;nKJ%D(IFwxPV|9 z*qVH(s{f$h(7Kl(bsvq4V@^pgNz0KP)gkKixx9}uN;zUu{D|d`^WOt%28C;32#wDj zT49r{_^BVJ(q#SG{wO0$C@`E#y|>3o#sGoGtD(gSz0)LSE&Dxbf>~nd6Js3MZy^7X zK=Pa~#vtr)%U?OmP&&`K>n=;)4+~}TrDJ+(`dV+6^j)(E37_+{(V6QlfTRz}-agO3 zPphyuJr6=xz=+#*HY%+u0+SwaAd4b_d7x8M&MOCiHlC64>MnI+WBMww9i)OE_;@_v z8QkExGqw5(U;KP3aaPKkh$4ME)9jxW9{~0=-%ce(Cu-3b z{IET@T<~l>X9s6ej$R5Eq&U5>k9uCY2tVsyk}42Cy=qu9WIO{sju97l3#BohR1X8Q z{k@5>$$HEuW>KW$>Frzpk&aP5kq+P|3Ldsjbt0Vswe^K=kT|+CXclLn8cXSsZa-22 zeXS7toZa^htxmTL6bUY}75S!v6AJ7WkNCdHJf%|ofMFb9W5G-$>4ZD4G%Q@hjTMZX zHO~lpkJ(=*ofyml=E-Gj{wyqDMDvcc{GP|CFPRKalo1mQ!EI+%s5-97g+Eb?XJs4W z+(``e&Dp=ZSig=jX|^Z@FZ${BeC_sfeD>8IvM!<(sKJMiX0{(b+}5ZFNcv2o9~(Om zh4SwFJPqVPG$K=wGF?`w61PT{&|#q*hGf3H-ej&yi2Yuwe6P;BVDmi$A`KXrp*ox@ z?#?H;dSbT@bt3?VTMnuw5G$>_TgyL-3+PkM+iXJN+)fdbp@4S51LV$zb6Q*F9w!w( z4R!`|26cSV85#KePzyMGual>S?B- zUo7F4O0x5rKy40x-?1ukU%hRjhozn%jG@CC?j2~D1XU|`j1b(oOPkZ6`YQg6w|7IE zOiZW&Ug+QoDPoY^hB7ggq7v!P_8EBE@DuJ8KY8WTQFDU{Aam#iu~~SR{Ue6 z!Bh&54xiXAyyghDIfPm70u;ci!_l@m!lVd-cU~wD*3j_(3RpG0zq5AT7B!8z--$Nk z=N&;DMjW&4Qq$v6IL?%Zz8%m#WsvR2-5N?Ax(tho(2NH$8#@Eh10l&5 zP@}|1)(eKkT*e?+(lei&nI~=_Lz!F){+pXfLRdFHlCUaXBDol5ixfh|U`~z&?>C}V zrWXz0gGdjjA-K2y41tQsvRkb2SB#LnJs%@|4-cmtn*3sH8j3Wvd)n#m-;G|F+~6)~s-7=@1v$2k%+|Wf`3Whe-|0ZGx)!j4SD7a|Y60?2dGc;TlWf720@oD&OPmDBrf=BeUmb=d-$iP6{kX^C7sZ$Tj}GsY5u8YIzc! zX#9z*gr?Y3`fe`l^x4BrpKo(+fP0@Ifp8>Vc`|A=<*TmEn|hIVd{JX+oVzo4SyfaU zvCUx@(j?<7=Mjg=Lrl2HCdY>mJQib66=<;u@bCQ@U*R+5#%u29f*h*1PkC}YHT?|{ zGuJWDEUjyW)jT+-rA;G~kY-DN#R!=C8YSJp0s6&w?zX8zEiQ(xsm@FZvd&tl$mN&9 zY3AV;-lIvR`>uoO<6+@-*5PNuPO>g8)-UTUqhD43buB}Ur!H8YUnR!VjHxrgsl@-u zKoTe&4j&RbaeMJ|u^Dx+`3U=#9<$riQh5%f?4QRSmr57*=w3J0!SIGmM=9lxfCU^@ z9H*IGae?5R)2c8^3-D8Ckca!Mn?Q?yJA8f2t#To+ui|=tk^QKUeh z2EL2O0rwN)tSEz+%5<8GHH2WEa1ltLwr^KT5-fyrv)p@!g`f2C_Y)sds5u0TCOGzZ z!a3$s+*NlfQ~_o?IFYR~LB_alm3iQbM0E?(%S)g3Bmr=;D*UQi#br&T4~=VF>sK2n zYsSeh(ifPw#17cg&gEw;go;c_;Z&@d!s;k#o;mzrb!ID`Y`l#N1M z-)5B-ba(pMtOO!3A2>gdachDzXEEWmRpVYFDm6zNL!cL7(nchG#XFq}gDg3K;gJZM^C$2? zIp0pp2lHA|U6!voPfZuaGr{ZVUoSHSSKWRPLN3PloK%n6c4wSek&u@8-v9P($dDrQ z{`BYuj-)RVMP9VpLd8@s@5parh9uhWG+$m%y`LH9%6Nc4!v&{ zDHsJRNQVO`fhE6GBd&NgH9(@puX&cuR|~*}FCD}p!HP8AE!F+c(Un+)u8YBr49L{1f{X^_}gi=s6XrV^d9tm=HGg;&@!q zF==-CiAcT({hXO^9ZlPZYJgfd2-xfHERNVIQriP{lakxlUnfx4E{rQZeTH9(`Fc`d zJ!zS`Tpf(yJ$vIeX#P+~8I)+?{h{!2s@(a8C+vB>j1P#HIy9U9P#S+TmhC>8X4`f0 zB75pIkQ!b$<*$cA{yKY@EMVNquv%$ZvDU^Q;20e!Fk64twC1#qQ2CMO@*nN`QA0{6QO`F#WdmcVHgQ9F zbgaGz#0&KgaKVyJ_~ynm9KkVI!iXc*9j3tbQX8Em#)xy(eZgyxb^iyE@r@KZzawNt zwn(0bITr25O3s#i4;ibR4|m3zb5Q{%1jfrx_0ai~nEz{NR=<}03Jw}s;ZX25q(uos zLi9!tYIks8#E;?l-DJNnwzZ7V41j9GA}?oPoKIzJ=zv0*#SSj)V*-K;O?H!BvoxoO z=Np75sw{ZbHW5POTjMXY3u{cP??mGKD|ss^JmI2lni@9uu3X-WBYYqS{J)y9C#Inp zwyKV&l!i`9$o-n|5os5+QPfB_HnmeboHbkN+E^pNl$8oQ2td_!f`1E(krX5zUq{Wl z%$i`(!1L03)4r>7$Ut5QTrrle6S8EnC_Pr~T$yf4=)cXgi$>^Q{Ld4As-m&BK# z14AKC(FS896gh{&qZv;R(0jWKcqsE@mqOLwPfpQ6>IY9tFm)9L{VRc?T`G8Ha+>zP4&qoD*n zBq0*6wNeoTPFW?~#FkgE`QJ(Kg5VE<3zutD-Srv{AIGG1C!}qbP~vaZNd!bdooMBx z^Ez9%E8vfCOPJ(Hpa}hr3SY`Sa;;IRIndFRVTH9o72VorZnhZU6`v#wZ@C2lwudgz z0c<8URK0ILMlnHY0+bg<2E=Aobudo%NeUarisXrvpbq`_7}*&ybz*7+!>F@wZv?Fn zQ-99TdyLPv%2O|Ws(Rm4J&}EJ!D(7Rr79Sv)QF4riz5O3#W9@Zco};(rp2(Ub~fhd zG)L16^GhH2A}`xGS;NPz36OM``hrKU(j|{P#;n5o1W#}ey=Io|6+ac20glG{CKgRF z6vxjuD%G5Q*KsQEtNWuW2+$oB*4Ply0;1XEmxBb&-*tZU;)?o+#oJb(>|nJW9ND6; z1=4e3>mQzJ-`ZFVw=~K8KMcFh34IP|gHb>D7X%?N*PY$o>R>3yGzhY~ba+;fQK&a~ zyIl6sxrD$~Tel8)SIQ(pIC?3lV0SQ%6h);X&#*kL(8Gu2<58`2%Q^cNHB9jE{r#WH zpVgB$%Zf9X`a&|6?hY}cBWzp({)P#OVX z$vBp3V4&`?Ia1pwdB>w1}YNvp;}8t z9TiG_uF*2aR5BLPltxk@QO$GKBn8T?>M5%9P-=meA?9QczH%QZK~WydKOh4&)EtEJ zxb1C3Z^gZ!cV1xBIsCNd4niaPyix+c1!XUiG5#5lD%zb^M>;}02b-w)wv%*ilQH;l z>K$p#rI7MN>0|~0r(+QNR((#F7Yp%c&AkGGfMy^CA)5r3I@P* z*ww;hm9EU!Mj#op-y&99-^_**;deL#?&{g0qq92qq^0SH`5z8ORd4<%##9xg9!Bnf z0uAxTCiIYTmz1K#OjyW6A|(rbQEUApoYpXz1b6erc&-fO7lckl0wb!e5UMjb>p-Hy zI+==lLMD9(uf}aPV|KVJz~AFT4NY{slJ#l2TW2nN5jl$#z)?93_SMtGp-OiarM_(d*zh`>9nP z-t>sn*f9Z~l~R?yLs#}i_~@t0;gvaDE4ZfEd*ZFZ!W}%}J%}KUriHR$9QvACr9$I~ zf_W*06YE=~(^GX)ecwQFc~a>X_E4)i1)!~Qrp5;Kd2|k14(!UG)I2C1qx@zPN3d@C z1m8qpZn5#px+UI2lnsGWe^;IneN%t-`o?hyfeQc{`bw<>V3?h7GB8CBy?>h45g6#_ z4CNLCW_$W`;kD?;C5TaC?Z*yr@y4m$#uh)2b^W70f?wOX=QRF>_gGL!&wt_Lz8t@# zn?}a~kJFaOo{F_qO7ZB+h{tqze!K=-Z3SebeLm(0pHcrNtkj1Fj!U*evy!df#&;}J zu0Nc_75C{iNrRZ@l~t(q|*BsuC?oM81`u;>)}p%k}ptU+Z{&DJ|a zpLFsg=2PbscH0WDVIKADCq>X35pkVbR47go0z+V^b7S}^1gIyH?Bt0>nh$SDKXzeT zYxzm1?4If>NcfoT=6D4D^=tXyAB5NVwKysfvyjf z_2=8Fn#HN1XG-0Sn^@j;8aO-8f0l_Y%;zqzq3wCx16(MA$36_&qBEm6J)n1*G~bQx zqNglSZ>&q`R%9G|atZuzLhB6l#z342Hz1)Bw^j!uOF@OQ5x4YanAnuiQhtf00VRpe zI^$MaTn|%P;&@KhQDqDoydo)-t2}Z?g>&V_;!Qfuy{);8O@JpC{0dH4oXL3lv<%hT zngkc`{>%yJw9Qf|E~3WZEO&&goBw{=KJ!>;!F6i0vCOR?QBN#Zc-2ZYf)GO}L?c6- zaiB~|jVDztRT<3b9km4RSaI8h7*`Bk z5Nw~E`K5E1mY3$7)2fi6J(XEkku;CpzBt{m$Yr_&V^KCR_$%i1O3@?>TtK#Mr0YSt zv3c>OIPMj18Z);o1esWB&5kZedR-YErYh~`duS08c3U;~$BwCCD|kcjR$^VdtbUYv zrf$fd;mvqRCHkiRm6x>-wyt;@;fMz&6ZYHAU^$zx7SPKg?+h*r$Wd^dH9*fC)Vi3@ z7jzxE=z0q<6W)8N+Ni_05Zp^voIif(~X8i(=U46AV`H8)k3pesw$aUXmhlG^mlsti-=R!MhdyatuUF_KFj0<8brtV|Z> zxD(^CQWo`t%U~0pyCYH%PT&=?2}Ir&kY00^+T$H-G^9e?kq82=o(}sDFS_DLhgOc^ z^>8}>u2pUpLwGJSa1X>$(%9iyJT!EJg}BK@xu22(4&}dYO?&*2agL3M3}xM4GDFeScgBfDd6+oJD3~gogYO59{v|6pN7&l z6GXE5jsV#yD-;qMVR6L^plHX0k&m5Hvx-QYI-e-Q#jl1Huje#;QfM~Sv-|Q>tl0;R z1<~nelgR2^u_jpK6V9BHzl#$Q0Gf(&^Ew0u8c0CZ4A}&aJvkyk5^)dxa+f)z z_c9CrY3gaf1U-NZzACLAuX4q-upYx+@*qtRf=SKV)xT>Vq9d~VuN!(O(tjE%kafh> z=ZO35J5rKpG=X1%T!sFNXW6zm?sT)%gTY`ef@=EVFaP2dq|T>eE#&IAQOKQvx3_Hd zR-S9>5_kYCUxN{<=hTy=!_;%|oyY)_oOPpqX$`XRGfOfy+JQAsk|YzvO{6fJAgUDB7aD2#J4lY;cn=h7qx+?|*=#qgNS_*gJ=)=LtiVW5qf zGC#RElpQLRUR~xR5aF+avbiU~1LV@16UyM5-w)mj^_}i6dlq%Hs+d%@psDD|Z z{X%3&IvLYSO4Z&%=&8@VcO^$r4MczqjW7R`+QNbVBk~`MrRjje^;j*-h<4kY zC2vkClFl_cJg4%(j75@0wf-?pq;7G$MGg;NH|?QimDm@5TdFD;caM1IoaG{)dYY4qaPZQ>+tvpDi4cVp7`#S zzq84Qjq<4eejLyPoN88$P!XF0l)69dc?L(D&-{KAB?i(k9I;Jj3=H14B(*9>uBeA% zfd+tz-a>{LFq6ibnX(6v*gWp&uv?!R+~`rR2jJ0KZX5_%^P=6{=%2xJ>QHSrf~&!tQU%8_ToWL8rxrTy<%}y3rFtkox+RX{1j-A7 za;1bN#tp^IhmC|d=`3M9@l40mdB~AAI#={{%k{73?>i?;H6bcpe3imr3gec$zRi<7 z@;eBIsYD9+kL`G?_O>MG7YH3OtJbc_z;S%{dw6@groHH+HxqMO%h`wy8yi7|^Duv% zIC3k@g+ONE{X`g##)FliuEM_LN zY>bj2@EGA20M)ljE8mW840`km-Z1C|#p1e!klEAsKJzpkEL~L)Gs~Xz;(ho~+NQum8{N9u-luwX!ffofcOhZUaW zS){Uik`_n|O10NVY$aVJj(DA3)8hm?TFA+};j1+F<{m)op*%&+{D)eBUs(TDGH%x5 zsu*XZ77aLCs9^z~K_r5&IRI}Ai~a*46$Wn6v&3x9_`2NAZkwO|V%wbOc@oM zfc#%=`gDk|?M?}=B*NUFq&wU|Zv!(VVv>e1!A&(FF%D;w-b0|7 z72Seg(|Ry-bdHdx=V+zcmYt9&D^k64nMo^>G*B3TP~jD>jn*XKr6QXz=L{p|3AK5_ zJedXHc-ctuSGOtS+o6i41Th?gja79*Mc=fH0xuh;f5kv*Yfw?N-ce`pDYGZW$GPwQ zvM)%9s^C-6^proE!B5q@FoK0_M&6zdR*(LM)99WXB*+7oire0#vt2g8(>suwpiNmV zNaKw#mfsf29sqrz!YgYgJz%|fdBW^!yU%Ja=HXGSJPqyGlB%Pdw97eqE#_&9AS9acGa=uT znRxYB_xe*9ZPJl@jMU}krbTYj!f2S(@C4~g8i ze9rLO==;;Nbuws2x|W$bR;NZgmFSG)ugX$hITE%>{>waHYEJYSQE!DbylUy&Fbc&f z)i@vuFLhXh>_uDe9s5MYu~L=IhY}JNlNHkWLLW23vJB9pjm91OW!{kc8dL8q-3c~k z@s2Lfx(z#~(lrdA+0qUst3OO|vOTcfNXBeoGfy-SyS~?!b9kK5vYFn2ryRQooG(z_ zj<&>CV1NI8qNvZiyYNuS^@iB#i?zIX0cLf*1*s{8T2>KEHPXZ!2JJSo5q%t}nOO7~_xKQ@oTV;`Bm}Mc5wwTn2lC z!x+x%h-^qL)E@VjEn@<9V~j)tQtv8)sjppPqB1{d!vPpjUwuF`#$&kJ#9F?2H$2se z_Ikj@Rp2#YsN78VH9gn3QBGaMC_OA$2r}GgE{0>TxG%32o8`#w>3YXczywfmr+_*b zy1hacU1*{gW=uzZIK5L?Qdd2bLz;k-TM7u91)eqATmH;k~aSH1|#(AC_M25cP2|7KQja(cGmyf0Bp4oA<3f9U~^pBl}Dx z{9#=A0?OJq6csx_AjGVLqu9s|b3Q3^(2h z{|Qycp*XHrp2L-xe{z()0X9zSU#|g*c$^b?B{k%Bq86YjS7LG{l}%;;)N6t7$NBPQ z(8D~rhmx`6?mk3@Z9DrUr_cKGmBl@@$dh@g{wbRSH$1CSp}`_FWChD2qi9lZu%oE; zrSzhi_bW9YTrJpXX8AnNPcUgv+j0$k)8W=SgL2ei?R&mqRRmec3|p7xr2S{4@{7;# zPWf(o=7qU~Q{Gc=R7m&~^YLOR9VuLrZzU1=O8z4a;Up1AMf^WDD6-QkTGNE{X)v5^ z5qC{wIr1x&%Z6`5{1q^6!G=wtoqvhl0je_iEt_Z>9-i|mol6z;^Djok&rJRruB^u! z$(N9E>d<=@fV`@TJ!El2(qx`%|-jr1Pv){<2%UyALB6&TcQo~ptuwC{~^mv zjq7)w8tr)41OFENfJCt`tJmqG7jTA zs5L*76rDqkb`80`^y8iwc5^gcL2I3L6_3m)R@fF4z$Kl3NL7%nz;&6IxQV2D5YC{3 z@1&DilIyrNNZjH=-mGdqZI*%&vavPF?%eYD78JS*1@y=}vb>y7!P3yjY_0xUq&dFI zu0&)Qk1qOwq5?f8`6i0rXDUkIzGwA`vAw}$D2o*l+s;w&LWzt%%*rkxV$x7Z9B%5o zF>6g?%5a6InL~@_qA%CG{A+^9$<43aJfZ2LcKkfC0J~u0m>W@vvCy7Nz~c?zQ!5AP zwcq0qA#Fy^*60rr3K*RyZ8+XD zc-ZB1D|{WCG7ig*nMf4Po?%-`bK~GeX1^52mqG~vsA*7sLYt!Gto4J1NkRHyf@h2;fTD8Ge4d&q*^M|PeCj=8z4@6Dq1i#OI?6#L^~`@d+FQ zoPbVoFh>?&)l*+^(bK`p~<^_ZlD=e-ANfHgmX_#$m@Pj^b605 zSG>n}IrB2<;#i?tv1l54k3RT8m5n<%uTd)&kIn^0U&L1drf}35m_kHy#Pe})xa8~t z(9wir`FNO(+f~p(JJre@8~sF%@0oogX0r}c0@+QEB#I0j_M8PikpWA3!+X;Xc6Gx8 zax%$rxc6uZ!XKUOpXWd}8$Z;UScm&kz*jrNt1mH5dlazo-Z%9kBWb5n+`$pk)K%3G zxMmwrzi97~;LlBQm{vV* z$s!YSGC)>KCILS>v7h<1WKDzAQ?SqUvQL@o_aM-!iKy&$LGRzU)b-Q0-OqA<4Z>|ri=0R_P%W^-& zd|wiZTV0ooduRpIbn>`UN~I`-Z-k8uhu1X6#zlej2)sDlX~xp6LBmBB(Zglc(!sxjBCGk zZ=8QdOPj$dK2Q~~jd7c|LaLA7-m=%Gn<)xaWc$b?M`j$WgCOs!E*8QwaBQjgR!M!a z%-q}+^TXJ}R)AqxIjhTp#Hf_$7b(`ti5EpOZZiF^DDw6O5$sBo#dPHCPH*}aFHwEh zc|LVe9_teKH6!?E+`p}Km{1=p?8~Ie#lbR!y%+d4j$YUbBvnXjOQ+39X*dv)`z0BL z6kSRQ-M5NoOBOO~(zGw8Dkm+#b$m$!rNAK31qb5B1{?B0IY`fg+?xSjO||&z8v#SR zs^ALTpMN7~CIzf_OBP(`Z+k`ap}>vH)4}&zo$g?bNd5(wUJ@zWgxC78I?cy!iRF1B zNiEJJ8?0qTV%~Fk0Jz;Z*#yf>j@0xdBJ1iK!DyIyMa0{LT&G{{5sh@6LCo8LUhAiJ zNprws=!(NJq1xB)WYu`QN76i~m{4mf=Ic|o(&^V{mB8+E)vyZwvIeKZ(<+E3i~r;H zgrbMq&+%o7LL+zmwvEw%Ws~A1wA`MDAakrAV)nS`V`ngtvRRiA3@rHwN zjwx}JDGoLqg4fAnksB{A{qf{)R`iJ*?19r#PlPy$*ofXv#S6om*3*#75S!JjrXqr7 zR2}J%nn^&UauP#|;>hf9v>=7k1o$`~N%@4TcWBBjX!64TqC7t-<|-og&YF`fC=ejW zR*Q;5K#;VS!igF_#>ia7s-F__G>Ez(0H3RJ_lH_9>zTEe)}ke@dkWg(A$`o8qr)nb zewgAgS4Xr5m`Q>!$CQd7Ts>900yhj*&X1e(M} zNYUwOur-NDy2Q z=2f(4KTTTs;9-=&hVop@H66{bG6lIWfND-cE=Jp9Pz4D)-)e;~tY(GUtVF_m(cZ8eI~tdMz$>KT-j2W7 z5ldKzkfwfi?s}qJ5aD#_CCTKd{Bd$p6DCU;pj z6Dx+M3`4Ep1p^!TTC?&bV}IctCIl6`GisG}6DQsJH)9~&iG`o#-xsPGsoEZ0&c= z%Gg_4o5{=+&jJ}8f#@q6UzX2GEmN{r^~BWiUdPDV566aB=dO1k-r?GiH~Z z6M?HTV2wM#-u|XreZh4;1Mv$cJOs?e(>tnqbCUwDXQ`XxDT>jZZ(|@?B|591GDM@{ z$vmav6hl-9JZlx%(u7ZgJFDpy=ZYh*N3@V#=Jq0lQ0sjc$8XqMnUW7zJ1#sW2?suHfIHem;_UAGYC`W%;g6lXK`_VL^ zIpECQ!u}mz0_J#^mnufYt;LYo7}F~(`QgY7Wwko8Fq23N9dglQ)SS1|r-2@Lo5w+{ zU2Aq}DJ9#svI<#y-|5w0`80J8WKfpriZSWn%L;3Q{Q@OxW*EQWsGoV7qDIfvdZ$E-6%O%tm}XG6l|x{W5keO4~@4KXD3I>HlS#tlUQB01+eIES)D5 zk7@V!U~}9jt7yn@OvXeNMWbIJLnSckrQ6812*(0kiI&)wSF%3xzbOtpEDZhc3}$=} zNk-{v?5<{T7wjU5icI+n-g7WpK0&nGwos;a({RPsr0a%&h3HD%k5!48*`x66>lU^Z z{e!E3r$x7ML4+UCkF|FHJ z-YE-}pzp$LO2J@M3u2|Tn0L#~qRJhEg+*-th@jkt@*cQY{36!{ZS5%=v|Oefy_w_$ zKDoA_HZ2>XQgckgn(h>aoO|V4U?#RdC649qRf-3&m|({jJ}hfv)$ee*TRLL})NMx? z`ux9F`yP6bZJ!F)fyZqvH6RJO)~{kzynFHwY#(R*SMmQShKfKq=jlCTPv!ktQLnt( z6*b~zdPP?xfT9ilhIeX+>-Tm;uqqUh9$?Hw4 z*v)FNO*VDw*HcFUTtL$V-7Q;o8>41)PTn;7yF;kUFAZCwLT6dewBx=PtQtL z^gpSmd~qZ}1pyVLGV$1T@7N>Ycd8e(+3IuH^8ql{akPCg)&=E)0pf(`%HPeg@cC6S zylCp0+F!bLfeOc4wGypZy!l)n+7FkP=0YKYmbqJRlRbwtQZ9U$Y_GLv<-__OkumZn zo}t{c`?%bxzC>8UHTp>LElvrP!48_M4E=F!W;z}t`TPnd3|T?>X}7PonW;fg$-DAE z!jP?gliuTtXZE`_`cBvxdDp>Vh+IC@HnMAad{>v|^XcGZ?hx+5Sql>XQPfS!L15L! z#~b<{|JZw{kW-;t$X<4qG(y5ZvhR|YmYx%BGa|M~0xma|dDDDucv;poa}9T- z0!fG>wz^{|jEu*=;L_e)r#8S%M7{w6A^WIihz}T7VM0ruuu&GenYp4bUnXc$CeAwD z=>f^^UQw#%8`&NxW}Q#kF3=^3gk;{t#V)TxJpQ4Ir1kJ$VL1!6kMW!2I7X4EiYq)? zLZ9_+hZ|XeSC_+?b6r8IgZc&AwG))cilD!?1B45_D(oTOZ}SnP&VJ=GU}|9n<(AH^B8^frq_D0Z|aui`ja8Qy!ClG8_v` zdxFnV|B&iBK6n4k!f5L@1^R5D@4;KF1f>@vDE)E$z8 z63d_=ciR@M(!r!j;v~aZJ*ZceW@HOh|!Z`XC$~s*jDEs|&!1SIw)<@gPWm;U6BHY|}AXxaV8= zPC#^FdznnZ)O2DDJ5r%g#9u0X7UZTzA=fzRTJ83k#hAH@L;OKC)&ab<%lVhU0V7D{ z#xxZnDj2h)ot-@|)jR`)O}+&YQ1L0JAiauYPOwz1Qf}QO!|%08=SQ9*8bePhvN}VK zXVZ}ppTxKxMDAl>=Oj=IrQ^B6inBoAa4kb_L`$UVLJ~|x-Z<5Z*3~^on^T+15{*y< zR&7f=7xmP5Wo~aWkc{0ftZ6YgnT3IAl>mXV;6~*(Z(j;W&mbGf zVzR3RKf&{=lnT=5ZKlS(3n3B!B|@r4V6=`^7&9%V?93#ne04WsHS5G%V->KX!-WyU za69LIx%;_ni3-1=axz3LP57p?Yi8W7Hl2w5{(uVRp~!G2>8Ppt(^-93B!5=Oscaw(Qe*x<7l z-gKk9zxo7Q|1WQgO-2#wP@2cxbmw0gyMl+j)}j`N&n7peGxlxZTL5v_bsIFXq<4o5 zpR?&9TXfae^}c~fEx;oqGA^77e1SW)FBH~ks(zetZNrBl zB@Y^gr_>5p3p8<+(bEumJHC~9@8E4O+xp#Gecw~9MrX-^LkPDy?nFh7qi%A=Fh%di z@Gjd6RpPsJ+m`XrazvOi20`LqI^?u3rIk7O33EbU@n0UIrQ? zAssEB`m(UJwvmVvdb2J+Jg7dX1n|Q=cg{pu*d8*|;cL^qkz0^Pju}hcu5q6vhc@)! zs`!@8N$92W?C-mR&cmR7MPEUMWMRKgSp?&W9jwMe3ktDfysmbSMczmHmnOt&4Jfqu z7+7C5bbCn_;U`={^{_JKjQ8dL8ok|-dpMBhaWSKVr!waaV+Flklk89TZex_oF#g2k zUX@nV-iMu6KV*&NCuZ@}FtvUz{1Uddbo0`LFSx2Fsn<9C{YU$2xAJRb{M^C4urzFfbi}T-xmq zZv@RF3sk;I*U_5T8`o7QmC9_IE{{3#ibk9?4~qgX7`oY&{MELEBP^HR;EvRdjR4oJ z+V&a(?8ay^SgT>e%1C+4&Cr0$msX64F2zuV*UI>?#fJ_luG&e>CSMGK}F(X`v*|SP?Q6E`)w|_v&OwVLY^Z zNUDNo=^=oG$>r^F2*~WLwA*06^t~BvLe2U4&vtwyTjC5k%a>5}Vj@^3OFppl_aLr% z9?{uH4zctci9|$cBDwPayxmvuN91l=&@VR^qReu#C@18xZ1l?#2uIA);(om{?9)7^ zp+Pz46J>6 z1>bhMUn8R@5;0$_fK!=J4AbRb<+htms&m&LpGRnVn*|9VqgpH~Pz_L>|2Hl0C1 zm|QFOv&f(-sVAhOrq&O_DyD|x2GJwAVfJ`+xUQ)Y?z`*T)&2LL6#$4A%-kMZru6px zkMB8s+JO{23@efQPS0*Ala0LBzn1QMdzUo0+Gy&CQ1yAgA3w5Bj0}@^1wcJfeB?li zTp1s}n?2pI2>jsFW}lB-?PyS>z)>JNJO1lREe8_M;np!)bWU4jeln8=p?*tJaJM$Y zm~l4%tk=E2Lybjv&ouc^!`(xg%Y`bqs5<`N$h2fli9IV`bY4UYByU-G&XGW&XoA!x zua+-lOQdYI7H(SO&*j=|G4ln-A-XMs)*Bnvce0=4KxGTZrs?U#%Ue>r!^n_?LL2t{ z$t&_`xzaT_12{??xV6)+?s)oY%&`&@$g+gl8j7p-uj%*Sxy!v!?*g}P@t7`o7sLaX z!V8{Ck+F%h7fDhEy%sa5#1^EBNUvdf-!o+!PwCrI(THh~W5gjpVk4sy!OPS}xsVq>Q_@cotxQ;$~ z(EGgNF#f&~x1->6mF6PvQRTVU&u7wi+AVi=)qm~sb+7KlPoU>PLwx(&6kF%4GzU2c z&Tu>N4ZCax`j1Hs_HOnC9yC7ZZCg_(mGQ}x3XzdCZQCts4uzir@eV6PV#wr5Uv-edsW$B01ZS1qp3jRnAcz zdr^?+)@?rw|1b`QbM=~GOp8IJ5swzwA${qGvRelIBVwCaRWCRv!}B+>tcu5iCHZBN za|-bL|Bnl()cBmu*)xrB;JU4+rkQO!K;p2nFb>GvFgC4d2LLMXnSQH#r6X|@DC`qW zX&?m+D|c8~ZNK{A;U*j+t6@*=+P0wf6=89qfh>cI%`E5YvK2=FKN5KOPl4(Tn>~|6<|i?fg$ht$ zk7;`rUq@=~X?W4h{>gvI()(Im$6oPj;c+aVyua4zrnr)XE;*A>i5Z1^WNi$A6E4Ax z_tNRv^v~9(0%lhOKNBO@QBbjFiyv|c#`cei793yF*OuNPUgC0L@*{%k^iqhvp!LU* z8mCk?OFcaAxLiF4!GbC_y(U zAWs?+f6@WX_1E8!Dnxr<44C}kFXjMBzW~>>eM!E3&d*zGd~jP3foVp4^aq(=(!zyF zK-sFPt(Mt;R4ma6?bf)E8JNiW0pTco3o09~G3e(imj5_79oc9t(nPKaMY~2QaeC9zp~S zG}o=@F+-@Px1BDQnzFL;zY4X>9EQ2vS|upjs+E&)v);GQj*dp6y^uBLM%!IHE`x(w_Ry0! z$o-d*mUNX2G%3_9Kj`C+EEvK7HNpiI4tA6Lp5^HvuOIb4(c!yQ?#npT%*+qtT|6OP zM7S{a4F;;bV`7Q;k^0(ySUA}>1dyYF{vqV0oWo#qen1e^gp{#Ur|yG44p1kj zY$eU9UEn7Gc_>D>W68bQ#_b}OzS*kvZBrG~ECcT4M< zuE$j}m^~XCT95Rb`W)#%;2#T~*@sinmK`)Rg$gYNTQug3G424QuNUyVP7BgIfSUi_ zP9Q8o4@7uxTeoJ+?idsNUFxo8?OPb6nASt5BET7O!uLfYY{;uuT$+F^;je!>5+=FQ z8$_rsFG-*ZL%yrDYA|lRDFW$3=8f=ZP}uf}*rn3G$02A0TEz6XjO#s+j^P2=VT)}0 zEJh!%2JmLK)_arE7K6HVsTx!$uKGwrALNNk7()Y+L`t4HHasHc2on*+7g6P!gj2o{FlD7gCmm8h29=fiX8*c)bkPb3roY_oQ9zt z0~p)Whz*y}uEh>{_p2=zJf+2*^-#cQAknx-Lve_N0cJJ>4qF@Np)2qnLU6&mV#{VQ zm^mZoPEEJ7M)K;kMIl+D^;?IU1bx|-2??vr=@zW!_8F^2W2Dg#E}}qD=0+LMwH0Rk zd`1w}rowX0Y8gnZtq42iiWtqTzhwDvbl}q;@px+6n=x2SzzXd$9*mlD3UCnN%XC&9CRx_9eBG6 z`mMqb&+rS5-3x>)wikoRf;OVU#8yxK9Z*4I!=DUdMQ@=M-@@oqrCPhLttn0uNpH;$ zRO$|K%+!+0_5eB!nM}MLE~>ZNZa-`R=5Y2CtI)LrwT2<4-6X?}!yETZ4{Fim}_M>p&nTj6O9 zHeR}EL#*f0=qSXVPIJMw2~q!7mJ8C6nkXT2;dK!CWMUZ@AknAtx5`NBm5E^#AiJ&~ z@+ zZk@jf3*&4=)iN_0*J90k-fm)iE6#c?g=dk<$SQ|Wfxq~<7QO}YlMdge2Z2T%`w-I9 zi69iQ2hA!gPu_yZaxs@k06KSsI$i3v!N4&&Wn;Xe{lPJabP(1~9J2yse=DfIkJz{A zG++6yPq^OXIXsSyy~nxlF?$6k2b3BTdx?>=TM2k5OX~mvclH{=&F9)KW4HB!{iz&{ z3)WFTFIU(Xl+^UdIe+EA6_s;JA(z8bm!Oe0_8Z_yZKAtpZ}t$iV`)k4Suq)il=aOB zlR#nkb%KV3-mIP|Hi;b~Zr|z;R(un2$Xq-_Ynhjj)ZuW=3n`=ot(%J(+ z4hyLzTL20QIu6IbD{=Q!hClhY#P@uu2qkm=fbO(?NPq16yM> z<2>N=Ln83*pTPJffNT05z`@1PLMzi9XJJ4u5vN6<8k_H~;Q`)t8RAC{@n%9{x2V!X z;e%avf(b7UATH2-l5Y`{rS(ZL*8VkbKV_7i2PSWC%;A;hQUELz_l085Ng_Flo~)&Y zlm-UX#RPE-H`ta#C@CWLkF(HK?Zv3h4OGMX@T*9 zPoW5b`t@JkS!2Mn3JkIYGVQcnCYt2*MNt>LV_}JmvO^cG}>Ey6e zY11Jg`eWoW^3nDbis!{kTUClCPi-Dnp1^eESSg9m=)1sGSUuv3fS69kr8=+X$}z7-(xWmx z9l)m&2Rxo8@76i>gx2^!{1wL`d&FIidFgDMz!!G>+y0Q{D9n%Fwz*6&M${s;-bJbm zxt45S$yFjp^KEK2=NlUz!^@2g1-}cXiQix7TW9hns7E(xq8XjHD^zP+Ob(^$+%LC3 zRc@yOwxFMSdf-`3q~4;|CkXLhSaTIc@`G*g@{75a);R4&HMd1$dAq4CWz@8X@{8Nm zTQZ6MF(*@l+2<11eKefl+6UdBw8=Fq(ZwC9?Ag9RWk^`D@9g&8zipys^15j;DLodP zLo}6p*e~aTjRD<*OkNHE_fczB9C$BdI)rTxdh6O8kb#Yane@uJ7-TB!p!aoyDH)AE zF6K#gs1vEsp@6R=kkqS&Faq$~VL|P|K=)$2DA1lprl=b0QZoCVV+9C6t4Ev$1z#Ot z0f}{yN91RgWN72hBQ+1-GXu+C7{lXl9KRl%1SB5R)B!OrKg;xJJ z2Hmje&FA~2*qyP_U72N7YXis}+beKx0yAPG5$$M@@HL6-sM;~7B1I4EFei_w9! zI(aFvL{|{U{}nwt1aHi?M(7oiwGT$aPWfn1f{Gv{s*5>hBXR#)BWd^gHNRPPF=>56 zxsT;MG2d)hBF7Mk8oN->r&mJT?x}Imaj4UX%We}Eh5Jm$P~#cPs$@mKJt?XUlI(#H zc%5apEO=#%j1S!$6F6syn1y3f)v)#!Ta|F5ViFC(){*n{4W2r_%uAI9038iobs(u( z{j&%Nx)NuK0Sx5zM(*sYRRJ-0izD3`u;hU~A&w2;g8K!__8K&k$-abE? z-8)0S#E{l@Uum9WplycK5J*)c8KEiM16m9oN5d}UV zA_)6z3*_trWgEhKQ%GRHUh90(<_DU(0v_MHYE`~}uNtq_d{PxoVt-{w-sss+JChT- z`R4toD)6aH3^stq&hXnjfvjm)$^dHzzz7#2SWg`p_!*ZLOm*`p6rAZeYIywPou0O=SgN3 zuM9;@TB_^UsZz=%MjptE?_ogvFORW2*I`Y@6PcdPSud)37*COU!gCT~Gu6d7Bm!E^ zXthBO<+;`I% zcJ;A5hb@5F>CE0LJl6v>>KIa#fZF-fwvS99d!cAN^_U+FpMn;F{ zXdZaH2FZ4Lcn_IUcGOk>#~g`=<@qaYqu3=AkUAjwt8mCz81rx6h=8!}Xwzu9=x7~| zT#SFhOCGE=9e=ZYs9_sCZz=?TkiflzpS?3P;X~s8%y8y1x4#u8`DPuFZ!)}FC@iY- zQvPT_;!m2@PRRV?(SC)AQWH()X=`iSmZ`UUk2cgm{rG9jOQ@=-XuN<_NYr>SFG{(a z?QQQ9ilp8`MVK8X1CNT=FxY53>b~9o3`3f344l_>mW~my4iew@_RbZTNhz1~D$R*6 zJ++GK>rx0#Zz~7v)PC+)0B?YIj{b~Opqkl5W0*SQ%dq)UQ$m+y=8MceLqz&aU1Au> zDv73@=r%)?T@HEF#X@a@UAbQum$(^h2g+hMBUCqmjAWK(IukL9}8LZF;78sE13PP&aakq9S z9q04ztaAORL3<{l>700Fn$pW%USbRPpr-ch>@|{set6!{EtLjs=&AEGeIY5Mjr6QMMq`E^| zHc2my>tyUDqu*pg`hNYjxdE{C&aHqmP(ECNjkApSeFn(jF*f1%jTDw_WK(nrNoFIw zw*$Hjs**F#b0?kdN2+(*)H13R0Pwb?5+!EorL>_(n3hkHvmr#M3Z5Y)->uJS+uo2G zY6N^f?NoQxil{bVWq(ksM#@Wp6-Bhz4SFMgn6+$pfGs~&cCs!xw@5=2MrBNlKQ7Uv zspI7uRRLl&7$=K8@Vv-pZ<{qWCFvJ*O-OrGFLo7o7%ARBbQnn`i*(LqF|4x-Z4ZZM zlRE8O<}qKze?i8c$Cgz*;6<#5&sByOIyYsrTfLe=)tA_n6)mMXa`q&UBK5&i&GXix zKs)-%{~>aPR7f-D5deTFf>>I)zfQQ!ge1uBApoA%+fkTR!!PQavYHW&5g7VQi{$lM z%jlPT9Luav_K@a}Ya!^d!QxgP9XJ%|$T5XX;~6JX z0ldpo|2w_$cXMC3B<2eNjYE3Ql6ePOqK-`+Jo>H84e25Gj(M6II!}6=STedSHGV&h zoo;>USY)wcV-8!(ocNiSSh36jm7Iy{PI87}PEbb_2NirezSK}sbBX*^TLD&JVsjNzPGwJH*ow z97#wthv{>$NUz^PbG~qFy;%p775CP(a?F=&HzxSu0Sm6pQIVOQ&thSLEB^zCOBMTx=~i!hkWU_W^O=(3?7N2B7Nxa%>tMdJ9}+C!AItdW*JBX04tF=#4sGFA=z&Q9c>+A&k^z`-1HZ!>7|G!Jfm+#8faMPp_QsGfzFldc^Dp9(h< zkRfNz!|4&C3y0N;IV+^=7;*6(*r{=F3>{aT6+t;zgEYE0BumtQn<#lEpagpYt^%*CKzrpF+ z@H#7J%-!gVAjwK{$Uh-C6M9H6YY(_cvR3RD+x~M0Oxe{o6}@dH5{6Xqk5}{FbN}6{ zH$bM}dRDKi%v)dn*xw9OsJLZ=YOwi?AbX~6O`>5E-yapI)Y3=?ce`(#ArUHwxY+g7 z2Jhqvf@xE4_#SdF?yP|BIz%v2eC11HWctHhlB~+?jad{IXg**c@+PDg&s?z(OqiWl z%JAf~Z+3FxRZ=F1{qdpssl8@Ryx=`$=FHxtIp{iWr)?b#k9h#|zzxU*+S8DP14~Wl* zsn_pL>f8@^E20Bwn41?8;@=tWuLd&KYb9lK;aorB5}QcEj8=Y_U#-fn_h zLeb-kDa!KsjrFeZXp@vhjKkWn;}}3#2_%!;Sq0#tCeT(0do5-#U4Gq5nk!-9^2V*1 z4G&6o=>zYj>HBvkD?BvuI(>&&r$;P`v&yo7f|_`Y(w#GnT5mw})yUs}SJVZ;0MkB* zUn;_p>{l}6&kQ zO@ZzTi7(<(Z*0B=Nn86G9-Qg{DVqn3<@PIzTW0GR^^yG-pfJE!-|`6gO%1m7rwnpw z@D2akh2$cN4aS%Op)WQ$?FpyJ@xoUfw$TDDa!9TaX`K=b0hO zC0kydsESd6GW$W|n*P{Gm9YWv9rdga!wErcsM^n$Byfu^io*HSiLIFxuymNS7mp(ndEVTXb{6Fn z>CPz-28ryjE8i_5Yr7WyLCsm4PXEob_Ghm8WHg68b%UM=TCT}apj5fp9g@@u z`C;%XktFGXYJ+aL4Efg))s)%Qgf|l%3zv^MH+4P~v{Ti!-OME*zSnfRDop9Y6wATM zIXIP}wYF!YfV?qW5)WDWk6DQ->fkc3M5i%{CZ%U%R~-kQ=|PBaKIZ_>4-mfx@BCnY zjoQ%=x%h7bJ?~k~m4t)RKUIe5oeKG9YXbv!u>GGeekbG(aCH|gsZAA@`XmRtE#u?2 zN??7bYwr5E5RsGQY}KIFSPovdBlpz6p(Qb-xLH%G#}_wOTpi)wZhAkh|Ng8EUpdsH zD?9n>EjrV^GTtU#cI9W)n|~EX#)#y%Xk;g=xR<5um2E4N6d&V~$`ACZH8`uDD2~$>WyQBPrI!)rG|emI}QQ# z5za82Plbe@Jmf11uSJwX+PPqYBsLqh@jH^8>tAfG=YP+rQX>YrT)F@HtNbIMIh|DL! zgV?X?fIzMfX7QfC1E|xke{6625|8pjBrP7l&vy2}MBtY?A)QwEbzjc<$C6WmbnRM5 zkXQ&@@**I%ypqcT+8|)~%x4}VkSckIfP$@5;p=)}@AcJ%(?$9DjuvgQ&LJVd>sgkV z1&IN96w1rB=BO+AV%h3kL7o?5n}@KvuBN+L5M#eafqbn!UsD4O3RjP0$?GIb2rRx` zd%{B#>1P9^kqj?`jgcr*Dz#{fy~AV~9d}WJr^q=4?Eo5=_#lBd^7h(fq1}vaqQ_zj#asiTx9we%IyeVvSTYU{)?ira%F$ydm*MLSIsL7uNkt^~d z`kqpGh!dokbq0LChs^@>a1WYN651k~k#LEbUH|p8TCfmnV^r1@-r55coRNRsgu#de zr9lNk9V+@Kb-y{9YV{auSqN)9H*JI=39lne_W?hwlO5Ne=%>Pjm86v^#~pX5M0T0C z`dT0nV0K46SrXD~U+dQs>-K6ho9Tsx2hvfOkN%)K3~^UN&5eSAtUf%W>7xP-RV{se zYi?&zGh=`+pV+6fZ|1z@C?rTdqj>|soQNLBG9|J%7q5BCbVuGIPP?9cUb7ILv%A0msF42Y4|LZ~ zdcu_&moyJEOrF?W@q3$wf|dqVLuDa53Ts#nsSbeJkTycNf8==kY5_Lw!63XjfDOsc0mDCBdKs26}71S)?IelKG^DGeeMdOx(kU$Y+`bUaHP1CbFy!l%;< zS|T80(4+b%PCKwtNipEQ8B5oVkZ%@ z^*VESP=l1U0gO0!eed%!ZVDoUpfY*ZC{jPn+3C!1wk}Lk`++rv4x~A)x}Idj4o%Wy z1jg1MTVAoc*WAbmABIQT4QEm%>s?|kT^4}~A^vP5#+rsWl8&^fwP>dnD{kb6zrEt2$|Y$5~k zoS<;0sLsbe)gu*+ubhA7_EB(vO$)Q0l9TyAM7-m7)S~caj`~0V%i8<3u7`TboH^LC zU-@cONM442G9k`z0l`$+o5mURRc>pLYYuZmMx9S3%(f&se!?` zrxDK`^d4o;QQsxdAz{CKMD+7%AxBjeJtcGP{;RYdPqjQm==9P2EZXG6uR`DCe?(q2YfaIRC$+3*^z|1tZ?o}OIXi*_vFP`_ z!^wFUflx`GDrvjkcoS(*`6lXq6NnA$D_95#enggcvuZfy9Gj=@Sr+q}HDaDE`(R!s z1&)FPo*jFs`+CCf++{SW+n_@`(*o#zVOyt2{_k`3vyl(op#8WU&mB+q(`+nr{yj*; z`zMk<*&zmmsfK(>K>v%(+Z9~NqYd|e1OjjIq3dsu6UPd+PtuYR)RB;V&cl z*%E)S8Dj8p)7nPakRnIx^b_^letN9s0iz7WGM!RhCeGI|XMsIohuHUlInW*}e$5s7 z>+)Cz7ZFATc*&T_ey#fMfi-6pSQ=qdCMKfJEF%QK19tRXFs+_QW}y{|LszAduN1BL z?qocvBF9W0?`V6CC$I&b@Iq7#gUOeB|*?v9O4_L6f zOldA^{mXQ4XuM$3U{F}LzQUp#EbXyu6FwXf&Sc2JfdE*Tq;nSxj=E?SmS4lREbxmH zKx|g@$as){3QYCKZl7Q)`l4eXXo1}O1x|Y)pIl!{7th%%d{Tj!uTk!LObF64!6;~sM+fs}W34=g_NfKG zL>_#nK8%=bwuLO(Ka;vC0jNYmioN%2tgz}_y&$Q37T(}Q%%T`r+B+Fv)$cG_!#sxb z;BHOgndsS200h6Npu_drgRcDRjn}0+$0^;VZ2!q6pK!i%BItIsr55cu@KEFfxV{>L zvFJKTt1}>_Qf_1c=v zgOhj{6ok`9Dq^Z|`d2NDTsV#V=H5n>;U^>Zw8GRJId1X8(yUA%5AlDX*cJpTvX*SY z1!fwKL&Vy=?kxxILCD-0FGTwTz35Ik9v^6y4$HS`jX)64e>_&E3T;Z)7;A3a3QOKF zWAmF@RsmR(HRJHwKaV;GAMolsF1;3*DkjUO{5iHWmuL|qUe<|U(&}pnXcXdn_feTE z9%{_c0eBTU1QUETmoi)t9DP0-x|&4&|68q_%hXvcJ z#;35Y5Bg$cTWgKTLT&FA#|G6>c*Gg4)|23RO|6AWe*%=|307%lv{~w0P#(MouQH6N zcB7>C=jpjQUR7Jo^~sZtC3mOlg-5Mu=n7mF_|FjE#}_)u$aeD0HB$Jo7>NZYgLiVh z-ORnx`*QOB#PmY7ohQ=}>&H!zB;%EJuvtpR31tlFLP|*=CV7esTOoPsHA9YW+eDF< zEeg)9Uu`01Mdo3wj2ra6I55NYlAlMlJip&fT;hg_o8eehu*(33<+yz%3<7N7LwLbw zbQI9GhH~H2S$69v)$HFp$~@h_rUKMh*=FGWu#NKUy7dn^mECIr|QY60C(`S}B zA>Mp1xEAfi1a1=uRmuh3tL0x>=wS*3YWwl%Y~rsv(0@pECCNa3M?7}sTZhy_l%D=) zC||cG=qo#mDr|G=!w{D68GAO#H!rh0Y1`&qdt{Klp2MvKYs6UTppf!;!NjE`x7|ClxeIN@DP}j40%yB`(3#pu80fHG*gV zg|qwyF+iz7Q8gG;6s2HS;$3ZJ_cP*R%dyYj!W}n75EJ7E&!IZ>vP`e}z*I97;P#I< zt{GTDJMZP+aD1(Ia$nr`zwB`@y5VeQnNYX#wol5}4wz>o zG5~Gb&3*+Qg1kg?E_>>DIk)nX|6)TQN90kkQKy(+NscufH!rWhoFra$tKoewoLGX@ zUA0$%E#`kZ=V%2JXJcl9F3Yq6pjFVee{FfhZU7O_Qu*Zexk#7H0~{Gjb)g5^{qwv> zi3MKXr_TWmJUYe?jfuli`kdUY2w{DSKmOm!rNk5JCt+7%?xKQ~kYcVv4pi_@ZS289 z3ZfewkHCs*u+OE4Azymt9g*xo`kCU1NBABWUn<99*AYV9J8wnJfhUcK2pZf<*mep( zB^#dHz;Lat!!r-m;>KgPY~&(=Fq>VqV&B(+YPNs#_L>e$-b4gW zbcZXS70MbwI2*oKAZ%9Sv$ZP(8iS^HsfXe zU1E{%)!>C5`E((~Oa?$bc*N(MeaXkukb(4Zakre$=YX~=)-Lkt2)+i%t4QZVT9t#s zq|3)_RUw&7`o$O$I5mA_6qX^bl7b!DEVIrnGHAk+8j^$L^gU-YEdfmiqE%$}RD;Ep zRo(WYgk}aa;0ZvYld-@E=WGaBBe0;%@ z$f&Q7Iu0}i*`C_;X#6SR4$=THA!w?*dRw0jnr>y&JkvD*ugsSfB#E1C^1?5{PQC3( z#Ca&t)bf&BBKNT0k(K+Hy2dD;UckAhTbrZuTlSg?7yew-lY#J1$`&rUIVDk$RZ3?T zgiLDe$dV3-t|p2zULi)0lX)HE_I9rw_9yiXG-$iIJzB)Mi~GfO)d=ew=~tG!0#IOi zb_iU^$IghnyoqP%7dlWAN8}zGC-AUrErlm&KCSH$AH(3UQZFhjf}9`YEgh9E=4P$zjjip41!l81bob~g#P zJVWjW5OA#{h(b>@Yily+I{D2zs7XHesSCw5T?w_56}%Yn3yxzJc(pKU{y!vxFzBbD zzDivx05Atk^}Hf1PX}{i(#lNUpl?GTxYhTCNR^I#tA_U7Pi7PfSs9N!w0vrhQg#+? zQ|_pFz}!I{kMYMkce-$!Z@aT&8|;y)eX{r6ebM<*d-Yp59jiA5=^bk^@-AGf{I@E| zmSUWCUj9DErEHstPOv<&r^F}4LSxqK$z1i#WCewpCb3U+(A&P(j6`c8)#d6e+jHuL3kDyBv>vJ^+U0<<@W(<0${l;?kB#Q8Np89ZHf!m z7`97gllHu&)^Og&8cyh|(A^R04+xhYV`x!J=|vtA(-)qR(`7(7@)qHEPE)m-p@g9Nv1Idc)cp=>T9?bN~)(5)2D^*BDivg_+-Ruha% z4DDqR^dk~!d5@ZgO60*N16`At$r5hMk6Wtw6JZoR*+WExDL#%`6Zd36j+e!E_#%Gl zwKnk)FpbqBTZ30%2oMES-Z@^Nnr^wbD^#_vv9(7>qZ%y8POhxiZD7H{+VSq(_#=4-Oe5Apu4ub2GFYUW^=YbWgm2GJb6jQY0WC&q z+I1}R?rq@=x|iN?W1uNQK0iecz6X5RkPG3atVX3?WGiW}Xen^zvHPw9Uo%u>hD`%K zRR)3O#>pRpF(WuNTL5*_%57bK^DEdtbyIz{iRXzHD!3+bEEO<6P1u@!wTx=4;+gnxurq$`R*0A^0H99ahgZ-4 zT&K_S_q1S{qz??>NDjW*8#?%GV>P@C$8s9paG3mZ-BEJWVaGN_kDst z3D`=>XyR+Mejl>*e#QYdY3)mOZ(nux&faQ7^p4$ki@z0csOkY;;>YoE=#2YQ!|oZ$ zD<8V=9;|cLLD-%??bqiI1=v_*W^uXEG$`py1NpToT}X+H146lfRrhkO=ROf87H8j5 zMqGbd<)%iddAKptnwDKMZYXP(;2J9r zx&xZxTXea@%u*OFi&8bdE`FOl$Ejkm*C82SS!T!?u z3d-lnnw-uPu$ke`V8+os-?js_3BpTv8a9glQ3?TXm!WIiA~}RLIbVxN_IlDb;-#XK znWMA!MvRNfZZx1?iKFR|EVpkV3e0*KH&9o0qTO{cynG=Y4sFJHgUL6qhvJofVdgoC z`pJ)rGV2^~FBFUhzO$2|E)sv&`ThyrAk;?>$HplkG1`F?=n{6ga2Z3=bEwdGMQW>z z`?HX~G`i6A%Tpa_)5@D^+|f3MWFX287~19j9@(Hu4Bv5fOwKprVduMN<%DZ~pKuhS zqSpx_0=Lp)2MDRLEKh^dbp$T#!M6)TS}9R^e{{VdXd09s?b}%T(|}hWx>Q;@zmVZi zy2NpOUojYeXK301;ca##DKU@e_4BmqQmj%0EaGH?z+v?#WL-QEPvWU$;X-j_?syMC zeN2jj1EI|&GW)2Wng~UO4HbL9lUy2?0|FpEo$Z5p4{SB+g=|smNBoc}`lPVDD+h*n z3)dU;8&eZIg9nR8A#=n{O%(hTIAU~zwdv-FNjG}TS8R@~f!sprs#&m?@q$z<4#`e3 zAlko(v3&LP1RcYT*J1Z30%0O+_=EcJ>%B=x|ucNM3} zdoIN!YZac+6mg3gICr2Al5>*7G7H!6U{MFHjkV(lExLP<%vkpk)F{_OhwxS7~5wCW2WO=3hANFhrJ+XYRmyk11y$Z3bfi+8Ql=Qa0^cltX~w>~(5mNf{#F*cqh#UU~U;9(wniJ;im{ zq*7aAE@dUmnYKXfVk`ru5{67F(W%%jsU*2+`anMn%(n%Tg=U+7m^T9*Fz>H!I$iZj z)lH&~0z)P@?vG{*g!?#$vm6J5GS<~5*Eww<8q|PF#LOiXMuhwTFkADTYTb@#?Co*I zEw4!tW*F%F3d^kLubq4c{y_VqadV^cl6Ij>s3HAD3!+p;3tVO@895l^%hPZF``RXn zRV_)Y7L6E!(+5rP)?OLU`R@<+8*UXa95@cDwe2V7oV6m)HOp5gPEpyR_(@VdsRHC9 zd~$sI?K(EOCzWPP-x*{#S_zTI_wtqAU0VpGVLkPft9%86Uvg9VxKZa0rzH*YC_k`0 zV-*S6NYO=${Zb(d!ubhbd$jjHo2>=3v5w$aH4KL4g%TuKJvq&$ejYi2u@-_pb+HNV zp4BcnfA@cr7V3~)Y0gV3b;)B7Rx#K3huc>!9>bC9ESN<-Kf~)5Hxgd)5B*tl zeMouv8qtk0eW$g#E!~U|b{Cn$u>z5o(kIf=C+3wxbRbfyDi|L-p75(`nns$4o8PB& zETXy|i1!F+o{qVt4A1&n0g9#_iW=R&!?xA^!y(vV&`HKq{5ZA{34Bf0z|cER>y(vqaeEq>fHY6`-yBGcizfT>=mH=WxBYvcXxU448Iim2 zQK zd7ZYl(fSHkn8$|P&;2uLp=Tgug&W@+nJgYN4W}|%WI*#VEp4Q%FBBry~7Sx?qvOiJ*SRb}l1iqbLF7gT0Qp!LQJ&3)Jt zjvw=izt-XBVFShT_Tiks_qN%h{)%iq_}j%ZEH)#T3cX7*Tyo2JaQ_=OXG;SCFmM-8 zC4Pfd^}de&Y+{D5njn^4y4`rS2A?;a9bAQSx;0-LLWFI`%^?FmBhe(CNja*ISKW(^ zTNe`=#4taRaV#uV4G-_Q5}lpoH=E2*hs2DPaMHCXIlCBknh&UbM2-C`mjZ3Sk%=8v*IL?CAg`X5S zFySc*WGYT3H9L*9b|AS2S=o@ew#3J>Xzp=yUbai}Xy)@Kt^F1Tt8keQ+jPLu!RpC_ z*Y_k<+Ch+5$Tc~g$oapIteriJU*K#+71nR_TVPAFbjb^K)5fLw&8D46t0fAH;URKO zl!}Z&hp#pIo)UBvXs9}D4Vj0w(8j&vO(w)XWN7J+yQoZY@`k^ZIgH?=H$JU-#2k4Zir7;0lK_Me4b;1%8VEA^&>EU<%?LqXc5oQlF(8sI_7Br(#Rr{hc7YwFF^EFD za}f^V^ZX?=BTwhA0N0?7t4esUaR2?vxOAobdI=SM(dU*nPnjuyhxee0le;Tah$Huy ztS>N4W5kZ$rMJ(irNa~A3!HU7OGYrF*s<;Ix_};ij@|}(ip+2Xrr!N(=clDxW$k0) zM9-vRsCP2mF(8rm%=%U=4mR2dUwmSZIzmO{Z^Ir}m}PVT44^I3oZZ}4I|>~)rE12l zY|O}$c6?SAocr!JP@3LOg?cR2A#%mjJLZ9#yTkv7@*(_y2Ed^I^0|hG)}R~hT-H^k z!Ju*(*U&^_y^4k1lj*#1y?9?`dW}+at0fD2z{4s{)hy)q_0VVhcOWYvk8_}qrUv#U zZxNoO6mBQO9SlFT+`@DG4wVv)*K|n{sl%nz*g67_>X(P_WE3ngphkQ>v>ylB{> z9`(xwjE06)wv9jBUr(75i>9RT$zGr>q^)0Dj&<~0J_SS(N3lCHuzTVpEqA36<7y4K zM2K=G*9dHMlY%(o&n;Nx0$}vha^N_Q!T06x6%x`sNW-E&WXCi~&@qJ|nEn@n9_xxnF(g+>d?0Sa0fLUN(+Xjk15rqz$jcC+yToLd1(f(mY z>;+@Ea1E~2-ZTo6sq|ij;h*ZYnU*bPQuQNuwfP3r9Uq|KNG07cva%uLXPj!)WjD(! zGC%7HmF`ozFinf|9mIXK1iWdit$yt>kgQ7N6qepEE=Ar!r}pv&av|&5`x+hs!LS4H zanZUF&Bo}+)(tI?_#wO!QNDeNbl$0w@8r7rpDgTfeN=#r`-9~D1J z2r~c(YGSNB#`VJ@-9os8ul7q|?AkFNAF8`;m8-I<)B(ZI)=f5CWM9SmY5a&&$C$W- zjR{g8+7=4!bwLhI5e6xUFi7sZ(4ID?glg$Zv!OQ4CdQtQxUux^+3yPe^r$`><4&Y zRA{&TYh=0*)nC?Zujx_4esPm0#ZD-+J?lMB?iH0+(ooTsUSA28{(dw~NLn6PO0qtOrsaVO@S zN2JB^JkH<^@vUcqp#e(EA-a58%qNP|z8bNwWdLKZfxP-vOk81RP!bx7UN!g6B;5oH zm!TU!{5^veG92NFWz0UTm+O$)_4ZFb`+6xMRlc!1I~d7TRu zF@lNVmk6Rt3a?%vuz3y}T_lh?rAaH4@Pi}N{Wm4Zw>!2fA zWpA|M%s&o`Ew^(e(a`+3G+TYqZzE>DIH@hY(t_hs5VH}%qU|E*V(i#KQAV_R)Jq%) zqSiDSyZn2SmK(aTBTrEuRnTN)bix zwE-$^Qh{}`)nQ8-dUfNnY7#-N49NzJPpNPqW}G$K3~%QtFbn#uYeP!>#J`M5*kc=! zyA+Uo&Ew20K(>?8$^@`7Ojd>3hCfOM|73JyG99Qh0LKL2g3yrGeI1|H?6HXFZS<>U zsi;=9^1)Fi{l9b|Bz*+O-B@=O+p(v=^GX>sCf;%hvj=JUOUDp}7qI3tUr)z+5* zwoJbQSMlj>Io&ah?Y_SWufRD{Ld*$(h$0*#k#%7;iKN*mGg#O}GgK=AjmoSVM;YqE zwyCCt2@Gg&0*B8un~h7L+d^?<4spI~L;yg6xJPQ4)!$hM6S?(ojj>^0S@HtzS$L@V z`*S#bDwhnPbOWLSfO;*M3IH@*`~iq;wsv^tx8I!W`nBX(i3m!_G2!Nqv(}&*1|8z! zg)|^!}bKc?jhaqd*>UN zkhm`nYe+Z<9nIwvHHv?yJ4rCvrxey`VyQVAp7H720lyhGq%a|x#_2x^oe#~fwlGZ| z2AtVpdvEhHk5`kkKSKOmRd0QMb5=yCP(v|Oh_sID2JS|RNsH4i!DSXJn$)IFXnw9n zEIiLb5Qkuu2F%dqeobjdTKZYTwbQDTE}{ho;EZ|w_Zx+Le`}p;;zxLnJr8r}77wP? z#2|FK_%5T?Xvj^+3Xt>xx!Z`n5*ZPA>dqd+>epFAqES1Xi(SCbjH83TW*tfhrK`u! zPa~2^Mt!}b4PYo-0(`lk0XBl7Bo{tBO2*zVySWO&;V#0iXtr)a&_M&jO%2)%L9--O(ELg>gVxxZ# zCbb<>)mP-wbFl*pweYN4m1*HJLwe-vqy%O%S{5xQ{}dyecz9md=`({{{jQ?QK6imv zK$x;Q^cIe|`qc#t#yxUt{qN&fyjz?FF-BEcup^}ck|vbhe4e- zZoJ0&G9_+~sn5}%7+QF}pz_Rp$;hjT9X0|B&(iJmG%;j~ z-&OUN{DjzBm(w!p(QH9T!Iw*LGIw#6$uBaH;$xQ|1pau~18v6Ray~He&q5)saxt0R+ zXtp&B)eTdXPbfv5tEPgIw66Y|g|mdDJgmO^*Qp({tz8p4%~@9}C=O>>D;;i@&_9!j zcQzZy8pd9#{~fbbgN)h?JQo;f=Tc>LUA!zygsHlz63jEoZU=BDHY$`5B013FtBEoh zP_)bHbK}p7EBsF%%|`jwAj{G%8CS`%K4Vr4hWq;e*oU&!MCFtCo0oIs#l{6S(#%L`ljTs%2ip2 zBWT^p#`V5T9rY&D2AsMs`6;~sl|OMz8>hTr#=zJOM~p0BOnqi2D}_)oIN|48qfm>F zz!T;V9G&OhUy@9>t`Z~FCdkVtFMh>#IET|B>&7#ZiiC~8K#-l4fo7zEgMAZX{x$2# zgVSbW8IbEms(YmtJkL+*w-S+{N5zZ%^KR1D8_As1bZCFoRqVCv*-wxsV=#2h^CCh} zskqhlDA9=rt~Jh9ak=Pw=veK29p?nUJC<*VfvFSMeNxTc8=2II0fi;+yDn#b-fw9a z12JJLKzPB5VgeQrOQN~e64=7ppqP3^x69ZvW(egYq%*}FBqi(yTx%TcIyYVR^Qm61 zdA3p4dEe0)U0>&)#)+v$k)Z>d#%6LeF7^1|8Ze_!jIYwRULjjPutcWw3k=nrlh+I< zOA@vIfBn}!jVk^8XCnykhFS)HQax~|rW{J&A*wpGFAHzC4v~OaEp&rjf)ZcIfbd9_ z*5ySkBlo;wJGRP;k|0s!`jt^6;sUBZ<9XbS&G_s)?(`+O3bSGMsQR*OBFH?o*z9_q zxfp`YWzZ}E)Tcwaiwm`x_m3KZs0cEY+0 zNvG(CmSWnt#65ka;*h}29-3g@;rZjW`wdNP|B&XztJVl_;$uFKpWn1vPKyr~_1>>{ z?o|cT4);hct}U3LRDBBSjX;W?pBE7%Zjff1UOFc#EJwN97wh+Ke~Y5swlu&}s%mRC zHKG)&h7Lm8MTogv-vBGO_h~C8V}>gKo|fkU*JAWE&|_0f$kym{(O`OR9ej?xi}@a_ z-)+~NdKzEa34&Rh%5*2n>d8z3^oKJkyV%EXRg}sAe~UNUx-J&}WQu{GxGOqaj}A@< zd|Lxz8=lu}>_H*TlE93ipYH-Wpj}Yj zirCUHU1TO{vNO*x#xSatOgjqiI<0?|=HLH(&?Fv0$QWva+`W^Y&RPpZ?VZ}q*ZX$L zz-l?)2wz5{oS*UpXnxy>AYYTqi>i1C{~RyZSc8$I8ff6whSZN7AFK@lJ(WYB=a05t zL9nn}?`?;_W;0^O&Bs^lS_!gZmz85Yjmrp7<#%XpLxWc8I~pI=bu6}ph(n4nje-AB zxO|jzzc@i5HBX}ex&sW){)V(i+Rs?jx?iC;d;(1-w5(zb?)ezmu zsb&HW#)a+TxdrG2&!s^ycz=-nEDE@w}rTkQC*AbusN}Y-7pvsar&y!a{xG?W}7n{4rmC7__8& ziO0ksGA*xS*y7Y@3ay-(cy8il@%I;SdQPa)!gEC<>wSpiQo0b1%&ly7>I4yk1ioCX z4G}B8k+S8Go-o<5MLyVT;&+N~uT4cka^A*qH{>Z^HcL;}@6^+{Vke^Wh4&p-z#VdU zL#!5upiJxjw3OUXIh{1oyiQiX*=?1%;>UtNnwlN#_Z;Kf@KZ@*2Oc)su?g(*WE+Ea z=d>Ywpx8rZ2B=>n>b?ZW^qH2|q4;gEP3ffgdy3{K9KuT)Bq2*|JVzmmam%H#6cL}` z8sA~-VN^GeXhmS16Hv*lcQUQ+O2_YWjAG`ax$kRktw|Jn4QxsrDoS@5v0=^oh?R6F z_~MP`t($h9#$)@0Owwc)>K+OQkef&wTD?_hdu~T8VipXmxToJeWgC9FfhvOHG>C4N zty_bj==F=Z4X26{zl|3lgT26kfDp!2YKr$Kgj=V3TGa~|=ew!!7q7GjVyqlZy^>BU zesk)uII{P(Wh;tozb!WZ8MJwWWvY9EGt1Ig0_DIq*FqG9n|wJiu4%E~nXaK-vUvz% zgXuJdd#$R>)1&+`qxThh!?%IFYJt5LMD+J$O9OO@`;h8%@K>w&~(Fpm^TSD{)fk_gI~5I3DIF!HHi1>?h%jjeQ27u6o0|8llUD9CUC$P z0iSSHcw=Fi?R~@WYcut)eNgEAy`raby&jIlV~UdX=&=x_JN!;-@MJ6`8!8QXpL+F6=B|q@itsZ z-w08*kHsPF$Ab_U|WOogt%OCzwK$BS;+q z-IE2S)6k3uK5K^~$3(?q+<>pyp*0ci?9hZP!US2GI}3G57)COqa-c+hklR!i@F||Feru$RJ#RqjIQ3yVt>~<7+a%d+$mVFQo!E6>Uy!GEs)#X#8<@HW0NT0xiCzi;2#FSV-R9 zlWxAaLjQUuBX%`$i9|6M!H4zx{xxB@pG;dmrapJ=EW%xF959<+rL34Dga&+$9v3{h z(Y!*pokVa=#N~9x8G&paGq#SKyorgM)an?0GT|r?OIR}t-2#J(S4>P2#9NKBXF8ro zU1b!+jSQE(Trvkiz~#iPRW#dQZ-wq%3sRgFMcBry{kHf_yG z2bM?=d;!Ttt6qh9qO>4(+^W*}3LFgAYi6U`^uq0vlQgg+qz5KJw~1t%SnGTYk!HTT zCWxk&7%au<`S3I$l-N@(^UyT$wak)+EW=4!D!t>#P-Lik95C;pRT_>ESs%cw1I@O!h6>hLatQ!F~``+Qvx+4u$<1#)I zOs3X`iyGewSDo^n_|0f_7G56Rko#WI-F#oBz5rXLN&zl@!Ul`m=R0Jx1V^E1`aE z$$bF<2lky9Rrvg2=Bg7JxCcler2e0|%vuw~pUy%-k`wIY9g=SU3vjD%UKucv#Y?KWWWk_tWvo z+-&EQmoa9k0(#$n(F%JIBO`OIG3>Dw!#Fpb&8}}`yP6EYJED!WRMKYod^kun94~Uu zvOq`zs8|0(Fq719uxY?N1K$)7Lc$GWiVi}2q>i&~YZ;Eov`Y~Ow+j|=o*W|vNcRxJ z`{z}Jr{eY#-;u;ofX3XRZXuYw+J^{#^%ZajA-KOWRbo&oh!~A*7f&@UHG#6)+A?)Q zIAF@leEv&^;q|oeH!`sA>zlj1Lz2^MU2MvwbC=TODNaquDPCh-x7dOt_m6Yl?xvYN z+93vTuU!m{q7-y%dKDN{qtI3OdfN?>H2qOdB_U}T-D&>F`7H6DcawbByes0^MMvsxPnHaKyafj_p{L!Z|Br zETZ#xm07L&dL$u6H=2hBaXC>rbu^IxvGgBB!tT{4A82{)$YUIvf5sHz)qE9!OVj7d zz}-=w51U`;(b6U=WWYI%ZztbEJP7D_JkNO%dI!HNBQmmSK);&qvbvb_Aq|qvhNo=OcIdCtnB7 za<~eu%T2m#Y7pc8?^>>H&=)U;+3MypISn7Aq~}2-4dwrMn|8VuGS2+Vvd=F`X4t(B zshp-`AO`Whm(QBu5G3BxuX^t^xH|6A9&xCj^vRm9ifV@JfH@OAPcPGuZvMFYTNwM0 zBp5poV;yptBJK@uvNVPEkXLNu$uEDlOR)XXVz40$S(M?m_P#a zKVZ^KdYecw2Ujd?L0V-ON<0(eInR`mDjKtclNlAJav8QmU_*r`e9Mt4YQX6K2uOLn zSH|IO?){{}P=euSVXo}l5qor*UIeS{gOf3?0D&KSdMAX9RJ6%@6o;DxQ?tV$8Jv6c z?n}glx?gWBcxQQ-OoI!aGj=He+u_z{!os}*3ZkXb#BBH>qi_hsj?ZTfw;SK;xlHQN zuB&sFe%Sr77Ic%R)I`gjNg#B@V5(2Q>%Pn8xglk z(X^oO-w=M0(LNW|4I2!QUL}EG+y+e(S=NlX-%DOh0~_uGP0NoSsd--w;iKZq?j=Vd z(*oOJRpSSIS5r0}Y#o{yF?U26TjB(;r#AqA{jh#&(uFsM@?&J^I9ZkLaQ_IZHP}A2 z)Ulpr%CyRSUIzn-;+IVFIZ#F{o_GhUd?Q+k5(q;33z`z|fmI-KtsTB3u!I!78?3>c znPsl+(ma8?WfIg&Omq5KhN(wdayfzv=ow~#-B!i*(TF}-1VcXi{+Y=GUeBzTI%(CU zzh!n##s$t`N@p=0T(T@f7~92(RR#5-AS8^@>x~^wH)sv~@^ER|w0$~Xp?@w|CR+cn z3@Ddhr-z7@K0mHbrLm%@)tZ|1a)g&OLpQ7as%;0)D=jX1APQam>y%0gq&SHY#fLp@ zPS-Jt8(P2u4>gb_ghfD=?n||~Og`m*O3~#tg^&ct>V>(Q;0n%4Cy*q`J61YiL!1yqe}qU$djDL4PLSf=j?2ak<}Vm8nI9?=wo&XOVn z!Ih9XXBy1Zu|<-iIg}VFLEksBf)|b-;vMn_-kaf+dllK$tXT>a9Q8^c<8F_cu>d)I z3%YyGPYihK$-=9fY)Q8>ZI-P+ zt$85sL)QQ_Qwd6PcnAr%8Qnp+1*wRq?Z8gA^O~y=g=R@BG23`I52{*}k0e^j`!DqPJCm8i?IZGtD4GR(sbRzh;)|Xy*5=_JJHKhUhJr7AEb1&1Uc+{Tx{GfwvQ4Tjf8-@6GIi8Wj8T(+EPuEV|}#cG%5xB_0T#o`S>;|vJgG_ zB!Lyv%$jDV#)viwGi+vEjvR%2`uofGSe`NXh{A~o4}^ynHBT_{yAot(50dB-B?LMc zV|Cg16dzs}BrhgU`;NI1#7QJPj8VUv)_L8;E8`EaZy^S4Yk8!LNO8EPW~;IcF$aV#0H{kK z;8e1IOZXVj3n0CGtvqAhw+w4fC(08`piK@LVj@o{3j_NT8Vs3`Kd zapSNCbwC=z|CH{=E0t{u7m(aO!X8fnpw8KPlHewhM&VJ_OkPJ%27C!=xi6Q*uUUM4 z6wXG9Jz2w9Q6#vlp-W*GXmOFh;;CsSs8@6*(FPJ!^v^y>hZ;_3Yn2kro3;O zlyJJ$JL%2#CA5S3UrO=o!LMizOGBYP$*LK^wI0g-V*pa&`$95<6yb7*q1yblWFmaFq&i}v6!(K2F# zhEMHFz9$6%M1VaP1bsvg8#eHoc#mC>Ha|E_(_%?BRZ%5q*$r%UxiV4K*whr0L8fGc zA;~{|a1cn&sMZ8e60#z-#z~>I3*Z@Csl^3Adi%L?C+V8d?@1e-!lCyLx@YbfA9ye4 zAa2saV)`O$w2bSvkh$Ncc`+_VVbtKUCf@HfgArIfThkb?B)Qj7wZ0+)2uh}1`s&rl z%0P|rTFCRPP)B81aNWhIa-)1sGd;+sNnE6gDY|I7+w;k2Qf%<=$HVR% zL@O>rln2rW7&)WK#iQ6|)|D)}FF8pu;#(ts_eU#^Gyv}VM8|!?7YJZGUM~1}5xgO> zDvs5A#2y=>tQjOW@3$91p5jwttldcTn@fPo7=!-v(H?XJXIjt}CF`DA5_8wi=Ivog zJEV4eF#`vV19gEGMHpD^M}ZuKYzIhs%-Wk!q?ULj=wqHKw|D?#A}8Kc~=bt&0#9Sg15+*cAx_Cl)>^Vx3`eNHEP! z*{~9B&7tINVQRU<4z(L zVP3|?CFT3h3Z#QQECswUpsE{`$o7YBz4f)^!{HDr)(-w>51Pc+mt^xpMT9Xs4JRX- zp7^F<0AyiCP1bV!8?jxxW2kh3rqdbi)~El`E;bPxmZr@L=bAl%4V$X5EKGG2BEvOI zAU{~W;voPlv(`E&63mwH*a2;*(w^;jRZsDXmPztCoNHaiALJ9rxoTyCfvpDSuH!yS zdN@IIkMUcC){=(m?BxgaT>DYAX+mF+6X$Ud#;h3ky6V|>7@waT+pXjp8lNVMS$r<2g0 zA)X(j!3$&Q4gE0aYam!$IN3L$oUD7kyEvu$Sp5H!9p8Zk-*wj>U{Om2*Qr>!Rgig! zD|oO1f+YXf0X+@VkGo~?F{*f6-#~@fn0PosGh#c^wC!2p2^88!-~@SuP$qwTp!7l8 zwI%TZO2~klt0C`j(a~c>QObv3fUBKH9UG+DfwEp**awN|TAx|Td&hgmj_OW1JE`thhfft72CMD>lLVk7^jCnx zTLq8l_rf;GZj*0G;DI%;v5av1C;1>~s5#RaBfBrCrWFR;HGXf9!AF&Q%XszX(1+U3PY717{{IXO(;H;)`cNrN%i@ zvkNw-VIEjWy_sgO;2E~R4;SI{=h}|5viessqK6&EDLXkIZN{x@3*8#sblJ`tmhLFw z!5YqdomO`~CO+aRFq$dL|EFuX0z1+@{(F%oF&g#W^wT~gRotcZ8_Kaao@mMS7@SO9 zcNY@r4$44HYftbHrn*3ZDK2$SfqE%%l4@xI5lj*=_zwc)m>+%n bqqNtsXS*uqd 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 z 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.runtimeAnimatorController; - var eskerRoot = GameObject.Find("Villager_HEA_Esker_ANIM_Rocker"); - _eskerController = eskerRoot.GetComponent().runtimeAnimatorController; - var feldsparRoot = GameObject.Find("Traveller_HEA_Feldspar_ANIM_Talking"); - _feldsparController = feldsparRoot.GetComponent().runtimeAnimatorController; - var gabbroRoot = GameObject.Find("Traveller_HEA_Gabbro_ANIM_IdleFlute"); - _gabbroController = gabbroRoot.GetComponent().runtimeAnimatorController; - var reibeckRoot = GameObject.Find("Traveller_HEA_Riebeck_ANIM_Talking"); - _riebeckController = reibeckRoot.GetComponent().runtimeAnimatorController; + var bundle = QSB.InstrumentAssetBundle; + _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; + _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; } private void InitCommon(Transform body) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 8cad180f2..08c08faef 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -22,6 +22,7 @@ public class QSB : ModBehaviour public static int Port { get; private set; } public static bool DebugMode { get; private set; } public static AssetBundle NetworkAssetBundle { get; private set; } + public static AssetBundle InstrumentAssetBundle { get; private set; } public static bool HasWokenUp { get; set; } private void Awake() @@ -41,6 +42,7 @@ private void Start() DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); + InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); QSBPatchManager.Init(); diff --git a/UnityProject/Assets/GameAssets.meta b/UnityProject/Assets/Chert.meta similarity index 77% rename from UnityProject/Assets/GameAssets.meta rename to UnityProject/Assets/Chert.meta index d9ebec458..db8176b65 100644 --- a/UnityProject/Assets/GameAssets.meta +++ b/UnityProject/Assets/Chert.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 25ad0d403d7c13b4c9eda845de42a823 +guid: 39c5ab079a5cdc744a27fce8ed2490bd folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/UnityProject/Assets/Riebeck.meta b/UnityProject/Assets/Riebeck.meta new file mode 100644 index 000000000..cd227596d --- /dev/null +++ b/UnityProject/Assets/Riebeck.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a757ec354503af14c8d237815b85696f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 6732b1aae87cd0e8abfbe5bb5d1691670995da06 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 20 Nov 2020 19:50:31 +0000 Subject: [PATCH 074/207] fixed and added stuff --- AssetBundles/conversation.manifest | 10 +-- AssetBundles/debug.manifest | 6 +- AssetBundles/instruments | Bin 2567341 -> 2694105 bytes AssetBundles/instruments.manifest | 9 +- QSB/Animation/AnimationSync.cs | 5 -- QSB/Animation/AnimationType.cs | 3 +- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 + QSB/Animation/PlayerHeadRotationSync.cs | 11 +++ QSB/Instruments/InstrumentsManager.cs | 87 +++++++++++++++++--- QSB/Instruments/QSBCamera/CameraManager.cs | 28 ++----- QSB/Player/QSBPlayerManager.cs | 2 +- QSB/QSB.cs | 2 - QSB/QSB.csproj | 10 +-- QSB/QSBInputManager.cs | 19 ++--- QSB/QSBNetworkManager.cs | 2 + QSB/TransformSync/PlayerTransformSync.cs | 3 + QSB/Utility/DebugLog.cs | 2 +- 17 files changed, 130 insertions(+), 71 deletions(-) create mode 100644 QSB/Animation/PlayerHeadRotationSync.cs diff --git a/AssetBundles/conversation.manifest b/AssetBundles/conversation.manifest index 97537df4d..a496a95a7 100644 --- a/AssetBundles/conversation.manifest +++ b/AssetBundles/conversation.manifest @@ -6,19 +6,19 @@ Hashes: Hash: 55d90dfc169d4fd552679840c1474222 TypeTreeHash: serializedVersion: 2 - Hash: ada4a25185647e82d8755c81f5cf6401 + Hash: 6ce89620af51ba381c9e4f226a2ebb1b HashAppended: 0 ClassTypes: - Class: 1 Script: {instanceID: 0} -- Class: 114 - Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} -- Class: 114 - Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 Script: {fileID: -900027084, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 115 Script: {instanceID: 0} - Class: 222 diff --git a/AssetBundles/debug.manifest b/AssetBundles/debug.manifest index c5b57b237..906fcb0fa 100644 --- a/AssetBundles/debug.manifest +++ b/AssetBundles/debug.manifest @@ -6,7 +6,7 @@ Hashes: Hash: 5677b7876f2afae05c0920067ef29e8a TypeTreeHash: serializedVersion: 2 - Hash: db9699da20a38563d48dd92ea5fae0ee + Hash: 4d6a73cb377370ba69c96eb5da1b5028 HashAppended: 0 ClassTypes: - Class: 1 @@ -17,10 +17,10 @@ ClassTypes: Script: {instanceID: 0} - Class: 48 Script: {instanceID: 0} -- Class: 114 - Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 114 Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - Class: 115 Script: {instanceID: 0} - Class: 128 diff --git a/AssetBundles/instruments b/AssetBundles/instruments index ecd3ae37d646025c3e00cf153bb05658df5b879b..0a4958b0b4622ed3ae6a81bc523c3f87617169fb 100644 GIT binary patch literal 2694105 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

      Mm*#Zt5ApoPJTVojWaZoLYkg*3 z8=9HUL@-<!V`&>CmtKna+MTeno1e6w3`Z)QjXC10UNa0> zYfaq!r%yK)&|~fBnFOwic}mW>H6pJQHV5B&aAPQv-dSUeB|oU+cd#c(SK~MRzdV^m zWJ7xiCX372mn*dd?xmP+&e*$jhh@b$ESn5U1q(3Du>vLOyp!nU&e6_(DrW0-o!j~- zu^M7v6R@0%?C|HW)D2Ea0;Jco(%#}|%s4;~~5RZEvLTBc2*QS!jlIcBr zYLs+x3yl9iAw-(K#lT|me}-99mC_6$%)V-l;ZFX2e4{UDv~1MO*NSkLEeRN(qm?MC zNdLJ?3bQp+7XF3zuiyhoQQ^e(TF?|k4PUv^CdXcnmz@XAB%X?lsbGZAT% zv~4j^mDz>BY=d?ThGqD7m#Yp9o^WCfVgRC|$`^qtPmqd|IHZfpFJDyQ((-lIm?DB4 z4c3BG1Y;7rgHz&C)XwD8GmsW4HK2_arD}ENTODEdm#E9iD!T%)Oj!*SM>-872G4+=LKw4-RVw}9&G1rA0bn=pRAU;^pFkfK zb=r^1HF+Ef=8mz;byZaGpEyx)X~T4#QX+{6De7GZgw5h;b(N3pld4D`Slee8+AfY4 zhcKln3j~f9Z{f}?59XcG_D_j6STeVgB6~GbM=}7fFFgbjW*6NC%QLKl`L5S-5~%Af zT0{-XbBfbuOQ8n91BZ6^fi)3O4ch9MM3ui#eKrMFS~6Vd<}2d{u|`OwbccXsA8UYac_G zhQS-f$F1Lc3pYh#7pemEq5E9j27CR^V4F~T;9T8o7Op?!LArIyt}5pv8=#hT!dU++ zx=qStv~HEnYYk?%#Cp>*mgSoiX0#wf;xRjolEGmkEd)g49!+i!&H8cK7CnHrhd;TG z-(VfKfRXq%IoZ!&5V;pPqXaq&K}=OJ3D0g{E-q7R9ejm)PQI~@kC92^`Tmy}L)|MF zYEeLLWv6-kHWGmKew$&@e7a@*L6WvZBaCB{=t-0@`K?<2{

      uMd8M+3JIte%T_^~? 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

      BraK21e`$&=mdG&)likfASO1! zU+c?eC>p2iQIY(z=k961#E0mwnvj3_@152e`45yB!As}|GbSB9USY(}I=V|cZ@*l) zli1OYIL3M0@)a$YCt?cQR zh%4tUT-7yH>TDIr z(0K-b9t-0}*SD&D9<@XMF1cF7s5(fJ*;o9YNi^-Mwe;-wS*L~#0TKlAa_Z|+Mfx%h=gS-%=o;zS7o?vC2O6cyxwn|5$~%f*3zuDkGGXb zhivUzebwswPe~I(i&iFN`4p#(k9`kC7y=fAmWavlt_PKU%#PDeNaT%NQRRB`x0w64 zZ@xWJZzCE2XCDq_6~{HZb_1^T*;^Pk5SeyLX>l7Ap0m|I?J@V}@YK2KQsAYr#fO_U zTXQdydZN68-6#N&`=F}LmBx%LXLc3oMw;==Hoj@>xvXEuk}Snn6G-cSW6kJAZQ<@o zl2!pk&oLBaHXQt419#9}sl}Bx=;K1oT;m2xm><(R#(cTlL8%%#i*Qm=Cup(KeJsU- zKM75ihc3SEi0qV;@n6Q`BIAqDB)lqL8~wSc6{TxPjd`KTm=qn)yBb}60M}bfD$2V- zhRM$XYqnE%7h7QAM<8BNviW8zJ>}j~D7P6JYXv}3<`nm&QgM25TfY=x-c$#P<1~i# zv!rP5xa3#%3Wc6{7uuk33)*#0-NUmkg}EST>XL?TelOb?rt&^OHwNdBmwbjX_un@* zQ*R!j=(`asOT7A!w*==Z3^Urmp4JJ2EIaWGTTLj!Od?|gODgP&T~Bjo7B7w>zvPVVjd9F;OPU<9n#9sp!A!cUD1{Y$u$IMQOL1towf)jt1c7n><%D z<{@9L<#zA(bBz7|sw6lW?JpGp=6TPU?g3JSGY4CYs|`A!iL;@7Q}c~O5}2;BY}$y8 zT@kMMFtap7yHY_sEC>=5y4Zvj#nPC@Gt)sw8x5?^?KDmeQF+#utFuEjKk-jQ^9QXbbT zkLwwIwozQF@E_>Q^1=-IuqMGfe}8cL3n#a@#&;F0QT!a^P#sm^Rwgm#y6=L9oObrP zY4#}`tny#)&nT_}1%({c#i47X8C(sRq~br|M1ky0z;&VGDMl7DVN0}D(a+^j*au&l^O{0D?OpOm84zJBY5qC@fjPL>Mso03su?cRDl@4uX~q-y&3fEm6;r_! z{s>{=?$KEl(u1NVj0k;Mo5`&NzN+o&$$ugii_}#T_eBC$@-!ovXwi%X6~|Moawi$; zFhr8JC|9boU?|KT0e^plXU~VWH_9h+O^NL$G{kGjT zik@R^M28k+QmZ!6U{;Xex?NTDQL56Mxs^$HGlFR*hFig-9!X75GHSlgSGCiF)~0Mt zX&l)lh1RB!W2`g^;D|k$vaWq(9Ny*IBs3(b3umS)8;B{sO_jP+rX4S~KaOuG4+y zp<-r=24UM7OEojimG!(pdMuueqA+M1A>X;}aHm?qJh6q5(sY?p8Yy$wk;1C}Owb6H zD8eV*r_fdgsqsgsK>YCfagz z+LG0Y+lL+18JHPs&P5++&uIwip<+&#jj#uMNwr{A-)AUZ?T(9t1o>&brGXI0M(BM0 z7>d99Fs)a;uAR~&P`V)EF$AmF#nrD1RL3xMed#=n?B6fN>D#tpQ40&tbSV?wiuw|Q zn>y6?O4xJM@K9?se3u0N0Ecu;y0(|~<#HOsBJ5DxBm&HamW%X07o8l31Yr%7b~@-X zZh?4&Vj65nS}X^tvwuZ50&8xY#!|6WM43c>p_gR@e4yvhm96u;TCT9`S_XC0w2yW2 zMfsWdzEg^n&dRf=R;H~f?<>lm%%y6aW`=$Tmns>M(^uC5>Ll>Z&n24sykb*fNlTe& zH<;R&x${lhqJRQ)=(_hO(Ut#fzSlipBy_ z+I7!mMvTIEj7K>Q_Qtz=Qp;N0g7n5b3Z`Cer%i|><_R=-g{SX6F#7u70V>${Ie6#` z$GECWS0D@7*=`vE8N_W51O||}c2EyciUKj$=+oSS@n%W7l)D}IoM4w?UO5YdYw%EC z)qC0-g@~zH`DnvD`@Z zrgFsd9jKWsJK}pmHL*}ms;+M&qQ3EQ>SoFR^Q(M80?Lg$;+Jt%FL0VWN*SN*{ay-CG+J@kLvOZL^*8K$Gui)$nsK@hrhl7Y z;uVtX1}RSq2hRZ_McNSZAVHa@9puw<9r;1mYdl!F3KYb z_Xb~;2z_m&gV6{NHx8MBm zY&^E#jNcUDx0SlVm9b9;@lKGpNEOoeMtQXkpKakVa|R_H9ksyi{a^bjamJ zt<<0+TMb$T%HF6X1Kw#*Y%@s@AQux-tYJ%^rT+r&!F>yxlAqHTI;@Sk9}MdF3EK%r zbi`4OUDMRt>Ja?$_eLLMaFOGi$rgjB<1ye5@7v1C58hhJe$=Ou3X&uTx;m}DdB7*I z;1W2ny*v2wkx7<|$>Sq0q;)t(g8Wq^afcO&I!MzO7!QTV+Mj^*qCqbA3Szd=UW1veD2db zY%}zHBQ&tQW|w4$rmBRovz<8&!7#=R^lw-kuq3+@a2-tRhU+O2$;V9i4Lt0s>ooe( zD3U`{dH%p}Q!D91-x)MjFkMy*o;4@q2CoXB2XV$#|loLqN7tqS6 zWTl1FCs4%cU+V<#%>4wE2#*%j}5a#-bty&|8vsv4m8v1CgRare2d9QD% zTkXQt*i@x0sKmH`d|&9fe}b%EVc4`~d?0t77wDJ}-~m@(PFb4y2{lX4h(1NA+_eyC z1A!)D-LFo($S(j6oXDUW^OD65*89v!sO7$YzVH^;ww*Ls<^@Mi1!3h<9NO>c-rMSz zy_?{UO?`bAl=pWS89RQ-Dm!I2Cn)X72=7uB|It`&3z8E|iUGm;5I@yQ910^k?4H0j za`2%^ACVWRdBX#vZ|K-wmE}XecKnu$7OBvMc}0d~zBSk)-2!-6chhqXZ^z|s)Dlo1 z;@Bd~MO7@pC>yQ74Ka72Xn^#$zDG8q`9$V*zLdzzS#|EiNEIx)nQ=$l(t+b3I(V$) ze8=9J?-F+amjk`+N3kvEKA!-bu?9l44T%$!U2hP*n8QoDNEc$a**7@QF;?Hdd@(W+1Tb1Uei7L#H3>fE)3i7sDJ(S!pQFdQ zp#)4irB}{CEW8B6;R?rzt05f1r%a$Xyc09@71q$>7S9uaHEI;tr@i1%b_)NW^zS?0>>%pL0Ett6H2TY$xOBuXBU0+lms}F(W z?*r`{y?On@Q9ZXOZ&=aw&#spL-a<4%jt5h36lmw7{i{S+87_=>GLDx)G^F|zAs1FI zusPir5w3T#A5YbUnn8&KWs!i)lHlTVXTKbfN7qWg+nJjQzB115sM28gUplSs3Q1Uc z0e9ct!t3<)%4Nf?rJM2_Rx0{tD9)vfnT36xC3y~gaR=TD3)Ver-5goIY=p&O1bGJB zkH5ZTZrXT;Cf1;>l#vMLQf?jMye+4f1S!HDz|?AKF1(bu?xwabR>})~`I-0zE$K~n z(Ucq~Rv(}EyB^JcJ*n+rYgj!*kgWeGbNdPxuQeugwKNuDGMTM>(k=rQCFH|j4CP+1p!#?=$RCMaM+XP zKY_8eBI6sus^8S_)cvE7Q~yCFU|+n=l06pm8kkH1v0Zo?Bw+ToiGG_Zoi*cvP{8+v zB($gO#pe=eo2UZ?Pp1#C0b+ME68j+W|cw(;N%g?T-B}WxmvCD;AqnFk^}sQOmaq zXP+u!nw-bs0trIwCwJAH9p_xTGS_mTKFTrcI1RQQJQ2&J?Kf%aTh2JLsPLMnaiI{A zkM3#@8q%7|4fZ+Nk|cPh@IN!Fro#L~eQqcuh?V@@NhRq4(?h)MU;*NgKzmST)vBVU z^q^3h>G-bUIIDvNG)(*Dqof`wkME}Bs^BGkU{qwrV-|uvV5f^gey6UHsb^DsZm*%`Mn<;{$vV#4;f{@2EP>E4hCg zJ%@H!>LYw5|8TBt4{1Gva5j=->oPgqC$kaVE<52i)mPSU4Qyo5=O5V)Z35wYP3C>w zoPe6BNYk^=xlHgJqfL ztOY<^F!FfSPVCQGk0q^ZA;kD?9Gg4Nza^<1io*ybZeLW<(-{Jco03WxYH4!zuy~}U zTR}MN-Jey=+VJL=J*3+2!qlsD2E|WAMn%unS;#0z_ns{sKa4tf#LV%gts6q5cJ&k= z-D3C*7SoUOP$Q(U`im03q4_m@1JQWZ6QhXrCy9JSUnOQ_j1BMdi&oB2 zEJc+d+MD#Uj_M2tqAc(1$4H_sU8wdwbP0=SIdTgcD8=|m^FyV%8rYQLrd%~%!+DxK zDB6fSA@|6m5HI8qr;yG=JJ)G zCmRq!^1Ti$j)Y}+jUXA|64EPByY)V!!I&&|HesX6S>`s-3&eVt#!) zo|R}(P$XB4+M0-2$hdSi_NNNP-+xGlS;F)RzEGX)5rB!6^5t-cJC$mVPp!P%pTgS( zK^6IRNRsI32;Q(AqL%@>k^ko7YG+u1(PV3vg%GRxKQ5C|+GHIn1*>6gkTtk12_yOO z;Ea?Gk>f!DU#R%In+Cbf`(zD__2q1PE-L5WNx%W{&v>ejEL?GC^c7860!~UuStUhx z*O)0z1i*)LdP=EqVPkKL$9#$_H9jSEKodOkWzJg^+sHK-%ds&=j%+da;5MWUR%GkW zrk$^NSqocuVBq5B8y{oxEAL38hyH)mJ_!o5NSWNBwEatW-d-SEEohIhyeB9WL|^YU z5IQjGTj-p$vOC%_%_{umcYOqxZItjZAl&RT zfUVkpMAh;})iLn4KR#}ov|QTzZnvhFY#krbUXlKIK=3aooJ8+84t^*(raU0_tO}Ga z5ckE)*I-(bO(qR{CR+yD11vHPs)YgLMH7eH!_)!i_GMi%E2!1XCGSN&@gaZ^&R{Vb ztBC!P1fVRly-PIwyipJfzfhN)k*NR8JDLIrNWv@KWkWG~pF(g4;@M_w1Ph>ev3pT? zzw!`!$u&tV9G3zvtvd1)TO;J|1F1C-bFtOyzV*$33<0^^ce3AR-eOd!*ejs%kTHWF zd3HDkJRM0e{@*bIZ)CHSY?lfx5r()k+3lERb@+w*E9D*xga|m1OHZX5B^j77EZD_V z1hok+5$7W8(8sdnAQTGPik*kp-dZTQL*R7O@5m0{p%x4OGa%gQ_mTa|HZWz!ESyL? z5PUNfF%55T)~?3sIBmntZ#93BrbH-@|&kS+M3c{v_+SVAprNbNeD_mYChH&DOxkhIUJI)yyLXPPH+rUgi1D3JyO z{CwSxljcvvI2Sjf0p9PpKA|z9_qF?T@TEOTTANDlFk=+wOk2M87xW3-zh1qV`#w}Kkt~~Y!uEn#G}LI zQXi^Rt{=@?oi;1Q#;G+=r9l_SqNmfF0yvB)LC^~9ewN0$QSJA2)(=2VZD`Zwc)Iu2 zSJ~#uW4>SEyF?ib?WEln>22=y6`eKu#?7^FNN1F5X0`fjtAlicY9U$VY{wv^Wa|EE z1l*2H(_|WNCjfR@e;>-Udw9=&NQQbob=u}?+x;TG=2qO{Xb{wV@QnCJ`dBKq-`pfe|Xsf z><2rWSnW4j2&xKI6??Yy!$DQqS|>miQ{62hcGDrJeL zV34`QFN7h1fX00$T1=}ez(|S(H*xLOX8x!XZAcu$nX66a{C3p& z^t`N-_9Q(q8UGd5^xhqdDqx**nzQ%ikf9bms-*7fNS-Uk~VqN{K+->kqIx)N0yF0_`ylhE}dQK8Se?CXVunC*07Mg8NU5%=gB zBClg(V+=OIgVJ%fKRA=3+5-pPi3ZY6&Pa!Ljr+%3n96a(Dq6=!)uTd za*?$fta9R@O{)h^?`)twIY<>=-C$SbjLV%nGUJ^~@M(A^kSNqiqg1^;XQ> z0WOF=XrhU-5&-hSToO0{ioiV8GoCGwoDn!M2&{sgFYgw}*ubpmb(Q^`aTcg1F6c^s z5iV9m5e&i!-vu(q%{Fjo&3zkE)XZweM zpo41BI+{j7+ZnPZWYsc?g6$7e5#;J-Xh1){<+R|{CiTw^mf$m8nBSEY(>w68to{O`wy3_^npEzYka@ZmZP3QaOh3G4HqBw+Uu1a^_))9LI< z)JU*wmwG`d&L$>~Y@vtyu4#>MyMNnRiR@C|^O_1`QFavNnPg!`T+?%M@7+K*G2XkR zgaUZSTn#$+^lgWlIq*@@^43NU#5MnUqxtW3TGgDoqJVBntsAGsAXeIVlZ~KI^Pb`47JvCZbi)uVG01eoezO2 zJ+ZDjc9^#oLZP-X^BEWEt%P6X*}2}ZsXZSFPHd80i-#ug{#4EC#cKEG*Wge z=~SAeU#GWn1b9sT4^cwU#9GjTHDk{VyTL8jeS1Gb{g<`L7Yf3t$7wHB1jsJMafBR} z<^D4H>GqJcH1ZyqQ=v;91i*QT_rg0Jh46sF9KZdC42`lYSba=l21~dl9HxNk0Ql_X z3wj~fS||0p5g1sc%CpfnfA!FcY;+hSf?}UX*7LpXjlezmI?`TmzCy9e+5|U>`iB~n z0h&3AO^k$_R5FYgyw`dWjNN@EcVmN~N$e610Exj?=wY+t9?152SP$3q@?BBHd>wSw zNv?1>oWQn`m6A!CEcIN>&+VOKyNMfDwTtu~&T_`xCf4*U!oq+orY2ESs?z9@>*_%q z*3y*E_Svt-AH49M9)AVEJldaQw@vQpa+CfxG^c;eDeT&k)DJ zYz!~RW_;Q~D;_zT{p+`^)pI!`1TAskz}y*ZJ|x0A)-Kmt`ueP}*;2#0Qy<_*{!)RA zO1l9{)>$Jo?}hjbGDk4-?aeX~m&@T3l2^cqDV()9MTXBa-jq|V+@b5NDVy8pQMcqv zst6aJ%Y+Hm{G4BNq-P%XCm%=8+h*fwWSKH|U=8jRqV^)2I@T9zawEyz`wcRbe$OjH z%NYv1%*H3!gF^A3YxXtNxyH=*;@%cWDQCw+$P<>98C}IfzU-|)1hez86Aes#o*$T$ zMJ3#FU<88zCqUT0odq^!ZlX>4k_SCJaG0%Tt<}W>+ZvC@3}VwK;)Vt~;MV>lgy>2a z9*KJ8a757!Xi=jgTa%riLRAktu!}s8M?QKeFutYqgiZHVNOZG+d?6a5hwDiX&q_*w zv z+@VKi2|w;I4t~ZwfGCwSHR(Kcl=+e;b6RnX@R3?nsD-)YtE(bPR*@MGA30OOIm)LR z67#{%7;rP*eU^?~JU>OOI)-Mq&2n7b07rO9=3a~aYcLHy#w+@RsV{Pw`pj|K^mgKS zmvk1mp53c=MT+T$RYk8LB0$NWJl+J>d4gkNo_To$ue%Yq8#dO%V@h{X$p$)O%b2dp zZcZc`Sl#COqIH|0q_du}7R{u?u_(Pr0ZdLmE{$Y)70FP|#l5@d+$|R}%;Ejh+LC)z zpG<4b0`^l$XqWSSTw5}KgWvDp8x6maV zEBN76iAKkCOqtwqCHkUk9l&rb2P4#=1U7_$GUBK?L}T$*dK$UJ{VuvOCc_4;=@Gt6 z#9P;IQptM7g{M?R~L10=JWROT?s7vVIV^wT@eVkX21rS3kLy(%^_*o z<@{w<2QjqnNUy=GF5zyYK_XD(4EZA=`C7;SmLLlsbbfVyZ$0a>R}jx)9f)D)5wVK- zmh+HDXUtjtdXUvsgR~8iQf_PhVF7sAS(73Tw#r$MMw~2UHe1*Y4RhLN?l*!5vS7g~ z3hG5Whn`8#-)p6n4|fFlqCAT>6$lXFwX^>1IHk;>rU26#6|T-pU8|Oc(zIQ9hQKye zL^Cyuq5pP*_kE0O)uR*!u`Rc*DeoM(7O0bG)%UC%VR$ya-!LHL8;rTo(WiQ%-3Tco z!_mc}S=_0S5rqUpu*4!SmFO?d`)75Poms+{c`K=&MG(~_C&oCvWsyPnpOGkXcfwNv zcGv_jsZ*1(1S3d6`dkCFk$-x&@x;S2@X}+R=5+MyVL9eBvJA9L zlTO4-sYX7Be$?vL!5a2KJfas(4qax2Z`ta{Grn48Sr5(mb0WU+n`Yq@Vnx~pD%l15an9k>K|NrK30 ziP2H1<+F>N>7JyiFI^_Q;lej8y4XB`uh&g6QZF=k6cG0p4e850B+4U1pMiC=XMd?z;a)jD#|K*bSSmkIR0FotL%8 z=%QtprglIs>zq~0>AR}U3-V*#!{b{J{0kk4WGe}X`5>v;NfW7Ob{}7nmh&Yj)WJ!u z>|9YqwVV}DGhp^EG zfL9-jJDm}^$~^TpId?@>xbACYcz#-@#B>a5uCyu4CBoZl+I*#(B4c-=Xk|5k1B~sm z-`Q%gWN0U!kk9S)E4p}iavBrGiVodyxipiWg$k+Il+iC+G_M!`p*V(1it(3jG1f_p z++nz&%gMeH9mpB<{Yiyl77`jeq#Tah5=2%8X!&_`NGhH0Jn!#V#2PdINis-*y`D}` zvS!W$(CZqQ#sI2mYoL=02AZjC1qADGaTze&>O9TK?x@1$mUV9?;|H7G`{D=jYqV>C zv_GZ$>Lp7z*Qv~B*c@O|cTL~sfVd{>Q$?Esb`;~Vr?I_6X~SeD=0A0+6oRNg3hY9q zpBfE5(JerLq)#`CbxmwIuEDeSFzXGNiSNzC%vU%?BpTL)`E*tYyXW=#2BRlvs{Sus-ED#c7}Uc8Lu zTHwU%kGIcZb2?)EC_hribaIF&P(~n0$+6)9N3`c4zpUepi zNcZ4l0L@mQur_EY#Tx{QFZC@?YfR^u2jbv|Gi$Dflx1_5=V3Mnw8JA zVI%D*p0Cku8}b>nP<%Z9QTehdCQ9hZVT=NOS+!7WwlGOXJd2?bilVEGyZiP;F=Ub6;ODn=t}LM^NF_B$kp~2QPg=uxBFNmZ9AL z&qy5d{gi;YmR7dj9fxkg5qFg1ssUPfnF?CZ(w+rc6W~aNd*0tIG3OqJ(LXo#% zbdhyJZNh}K82!c&fD1fGN!?Z1^%4Z%2lfAaEq!YOU?}vU0_Oh@;p7La>c%}KOWg+> zTHPb#ykIlFFL<(!qoeMnRxplB5f}i`DOg?BIG3#Soxi+X2|L5YpzQ*-<;p*D;pHR1;}mIg!Nu!N)rUzpU*IN^t`Ep-z-|Q5$f~lV-@tt zhTU<(p=t{j4T}duyYnBI*3Ns9$cYiG3J{P(yg_YR#}8+0sJ~}!6oQWS9CQsgdXa-b z1t-keDXna~y?!bw0aH7`v4wbEBm$v$kh}^UCwzpAnIeA&E3i>@%7-)IkHhnB?6jq@ zxI0L6B*{Pqj?N#rU$MG}!dW-D6by?Nt-RM}5i#K{fufvseI^H88|%*1>KBqioxxj`PMmHcohIIJAFm(*N)C^PKN0vK8bJ_kVg~7g z31D?T6;=*zSB&xsER}|x`F9?i-@|4-$`MU_%MEx)dIwC)&L}M`RW3y6cw})~g{n2L~ zfnkS8DrF~Z&~ybb*&A#nZUAEE)F6RX`mC1Y@!r8?lAtpG5D{dwE_WJAYZGq;=W1kk z^4YzgpHHcTrP0QT-aG#O3`x8Pg7;l7JdLDzfco>qv|M9z0mW;<&vGQR?O)9@csTaq zJ^8RAktV#%3*mu8Qx-CXGs|NA&9B84n6gx;xq=<7x~Uk?JE(Qwb|+^%aWS5VKnk&# z+85F{)+R%zlvt(dE(#5$8*{5E^zigwj7ZGSK+6bzFdgNEkhGgXU;vqY`d!q$S02g) z(cJ4vN<25joaRm^^rIk~5HOq@prd+`V`u?g*~#auchuD{4Fuzg?BfDQY#*MtVMmAQ zOqAfpwS6*+pNB0p6@gjHE6W~>UXDI1^V7+qzF#B8SZDIVieV`S*1RNGX-a+2U>_!f zV>Nt$61rUZd&`5W<=e|-+L31Ye9Ue?CKS3%AeEw(SG)s^v256x9V`5r|Fy9V)yyS{ zrQ_Q0fiO2B(EBp1YW!=*t6j03r*J!8(>6t&rkRPoRzMp~P#v@B0vzzeao6<%( zOvfBhlI%>hx-@E%JIi9v-A)HDshK|<#@Z!2N$p@;t}zoNBB(n&LnS!Yc{b9fxq4Zc zAOBMA;|lS(m-@m1ojb+(3uwJZEg5FJf7dF^m2{Ia>-p*OJp-T6^dnOnR_-_cb&!Eu zlwfl;dd8uixZ9`IvSbQ>2OsGO0X?NsWc&h<(iKG%smg9xG{wXbk3eBXbFmU>E~`+- zEQn0W42oebBJ@X1v{I~cj8tPcgn5mrTSMK;9to%Xssecp-e^B`^r4*TkYIrX{4RHl zH*I``fe)HqlL%H@QQLs_%$IYKm%wD+)~jEnU9hVyFLHp_U{jd=8_t2UdniHMi~hi`HiN2oc0BRkdLAbO9jZ(^|v^P zmkgDH)@DCyYbkE@kCBvs>cgCbYaN{NvISVCC62z;8DXl<)Rtso-w>2CG;y^wN(4DrA8{_e(U5~ zb8966F%|9NMR;vKdAb@Oaxyf;ra$bNx!6|zqY>@4BF-O=g_k&l=S+q5aze>H6poW@ z4{S`&)Q;~8{f!Z);J>EVw+0xQWgCp*7#IxIg;#xhy^75>CpYEDd1&^{dx&!FUOX!R zH2;iPjN!z+DEB#3md(#)a7IJvPG>#6VJ}wxuYE*;Sb}7%uyT_i&@fJo5&u+_%*4vkUP3f<#!L}pVTYgw)9*oc!&e#_d?6?;^s_Bz2EVDjZy3D6{ zx`DRfA%T{;#ynh)w7y0S1}_#vpi$+keu+>iqSlcON5B~r7Ga3NAO?Fxm*A+kIp_Zz z`Ql!r(ABJG6!rmw%U>;&7K+_CLvq9s`#1X;Y^hL26xWSm3z?x!g4qj|V-1*2h?(#1 zd9BHi0R)$IK*05Ri_ilL1JKP`qGhlC!Kl7V?uv&9W`EEUw~F@%rq`?cl=YzO@Y#G> zBCSh}hTbBR-N@@Yi5cA59t=4QTUR8;_?34ky&?Hn5{ahTou$cjl}i7kXo-L7TxI_) z>U^k9y-z9h>T$tS{$@*TQp!56!!{k^Y=O6&Od7-%#4r$C%u|{CtO-r(qMQ90nk7?4$NKvr(bLRB{{2ahNKEN>lDXY~H~3S?XrkZes}Y@Qb2oo!ZVfrakZ zC~(u|Bsw99y9EGOe6GCH#Cg$hK{95Ow0YQ+nj|Q|Zn6h3Hd5XzBm&SBb>+PZV=HON z@;?eBl=vJhAt^Trkli(?Gp&6Sc&1KeC^Hj1U=_$(-OEVGl54g|MXkb}^;1s~3QPD| zDG_cJo)!Y!3mDyzS}}!ckbCj=V1zV(!KQnn8;}3n??lc1Dv9HbWm_bk|NcP zuTKQ*W1^`%y(TYn#L20s!vHYq+{RoaADJo@rC2gVZgIRqKU~WVkYU($ZyqX8Ez_|yuRJ4_<5<7iTZfL>QA8u=IpsSx)2 zS&H0I%;AFBz6Wtv1k*P9@QRhjDS=aAYvfJOo_l57%Nqw7OqzGDim2WsoDx5DOkfGv zK(m-fPEL>%w}X*FEdJ7tLtWiPny_XF`>xVDbWJ&zh`1`@G24X z%|&afZ0cW>*rQRFQR5ux?EJ*WQCtF8D|P~owmQ2UUK5Q^6QFo+P-iSqMa>e1;IJQk zGh2Xhdwuu%&Hci0D%yZaGPwcHZFTkI*uF#2k3BE}yrLnT%sty=j`_r|&Iyd$t2M3*R4o3|$eI@#|or zO-&VO@&oM@N@u!+5?6LEy2?;67Ut%SsEIeB=7b;9Uk$N8OE!7Tq0-K1Ry{ZmydEdY zUs&!&bp4aH27Gv_&ktF>5OMn<~zF4{YXk9k8oN^c$}f+o_-pAZfDx zu&#Ew_Azn&6SfZ(u`O@hba5P&32#{33c&9C7W>VyBD+zz_Y3cJYv#R545@Aja}zM} z%LUWK&uw2@(WEmR_HiK=MotO-1y8AW{z(#h&*T?|$ZIcy2~z2a@C)dVm-adT0ru2{?&`2qXh%7c=GDZ`Lr}&a?e+qfY)tVSkoF$w_Hil z$5>vpC+ahh^RRpj-nU?smp3vxkK54W=DD)>g*MDS>2Gj#b?IW0Xh*(!jArBexRrBq+RYDV{ypOfxVjj0y(~IEU+|x6nsMlW1cA`7#BWm`(h8F}a z+k>Uwh0FjfowJ%aFffJn4=XQk_?@7qI!`;=)to6?!>x2$p=#wA$0f60EF=kUWA`8t zpaAGpdX{4`)0%SL!5&qcX3Tp(@GgV+!s)Sk&JKM`>u^$0~<`al=7>}<;Xt3@|a)2?hMgndC|H@Ba<^{V@P$Hd8AG(MY|FVW?VKG;%_aZ~$*a{yj z2WpP}+Z(}y%r3*p*_H64#1}W}Q6K=|xP^_@O#z@juPrjq*ZB1vn>DIZ{n>iZa{t(p zkCH>@i1hAgvNAZ*n84vy)#6R~oZBqHZ`ZVoP8Ma2=CBifHzlgxlF>d%V*;{cBa(Qm za3Ony0C6&Yj=q3n*AB&U;~<}_0)SrJvY3?DZ6)$JE?C&EI2tWVC1}D%mQ$SIpn`Uz z(#uq3ZQsQ<##&Lo)X#3Yt2)*;U*ekk%ss%$l&(D0**k1$|9W6hC-PDFt`RF^kchrX zXT6(n9w*gB$O^8~md03*ABvbr>6}NzB|Sf8>1nkGYiZ(aOvbP`sGM zYH$jUAY5{Ca<@aXY~<2)o*;2uJ(N0sFAsW71xuf}IdCQ38AWUXnga_V+BA9xFvJu^ zl#%ZsSRT9gOmKf78lFa=GSKiPsqW@DDXaV%SX}-K=}A^dN;Lthidk4t))?NR;;fes zCq$sdZohoM*!CT0u&a-3dpeIH(v}uwBHiy;i3CN9g67KB{^GWwl!r{K0Hl3ucOTlc zlTP}OZXjF)8{ymeLvRvr!1fzm&|oBH=j`E9B&kzRLYf!kTm6>$9VUa~8uR4ck;!$4 zhbK$!^X!0(0&PSlpT>KH9}dRWNnFzMj^P2u!Pe*?IUMGx?EYZl(*Z9N0FC_l8hku; zOJa|P?mod>Hx zm?GHZl+K@RhB?pe^i8IuBsfKBEZzhj2IPZT(f#MU#;7dRd$x`(F_P7DDR>i#>PWuDI}X@8-Ozpb*W3`|sgIqoQdA(00! z2)#-i6&Xl(X39pF1?73Nomt#`UT9tax9w%LlMhq0##BwV)oIcZ1hvbW5lx4U-a{C1 zALko$5O+$@ES7Rs>nn}Fn4 z&|E#GkWz#EiEI$%r@~{-Y?=O=$CM&?u7JzYuGMk-T?{_&4Vc|*;JCMb`#%b}Sc@#x zpN*!W9y1$~bzQb}-BR~#c+HTl7^tpi19_KG5uFy?IEUWJ|GV2iZa@q1=taH0F&Z7w zoW#{V`IkzC$#N%UHWkiz0G62b!ky&+v8J6mC|fl|!9!>@+-uC@s^NwMN^2+mD7#TV zmR=S&z3u4?Zm~eDZ04j6|D4#^hGT%*B zSYIjz@kLwC1e3EdQXID5hx769HHbvsl>l`*eL1&jL7tSAH?lVnMB@aLXAb$D!L{*Y zm~{(t^&wPT&%2cgj#Oi86p?~pwdz?xjHB{(wtuDUrUoH@2zZ>&ho`)K9n&5#*1lo} zL4b9_CRg3I7ew|DFAkh;O(ya;_GupY;qhEaqpveOy#9R!CIznt zjh}9|jF>tdol$boA0V|YU$7&{colI8@W=CwBNiR+15>QdY*pPMV(Bo?;2|6(w5n{o zM$v*Ct_TIIuNv%+k%@{ki+B5$Ck?Vg54~hjNZ>+$iT!4WHd)V}xn%9xKn+!Rv2oh{ z*5JGkPAfgV?K6>wnF-d=;lX$y@W$l#3?t7&K%)!rcn*1=PGLwDjwJ$#4Zv_FaOvpf%_|6 zi0iExRTo_76+fY5&rMy=^9%UpY_YbMHg+{q8h!m+&d#>5v%-v&%3K$Tz`lIbdp!tJ zizwb7c;iXS)0*t0BBYlGzx^1FHADo0dLsHbYIrn)l*#paE1z5rmfhN}9R8M2b;tAJ z?Rq$=MyU?!NS6iT2ngEGdiZSUNI(R_8gp=JgPZ4$`1x$r-%R z_J}022>4aSgxI40O>g&1m&gEVT|tLa?oP={xBl_KbHS`7VS@aPt4zNDkHuxG-h{gJ zh;Ly1(%tc8SCmZ}6!Ov?cM=zK1WwDVAwC0YEPCDz-d-n`l|4802r)ijh`@PqIE@$e zNfZEwUJ()69C-?yw`+!Z+auGDI}OT+l4WlA*IEX zSw=8;_-=!@JPOW~rkH>_WK+1t(Ek89i> zJ3Z|qsz}bGL72065k&^(>`E_0=KshB#82*5!K)RQb7&M#68oZoeK|vi_FW5IdKmcM zB@?8g*d5tNIjc!AbW+m+G-d2f(ha=l6`5lMD)iX%M;LABYPWEi1JejUi@}gy5r z+e~o8fJN#Py~Tf=$dk2kfk%FF@>d9nSkf3MhDpkDxtpgUC5$Z_?Srzo(Q|CjXsp(l z&Tb9H8E!=pU8mDiPz~Jj*QL4>hqB0ZfkQyN3k;&%vDk6@cR$zG3N9G-_9}tpl1%QQ zhS0e#uO=oD*6Jmi_JT^!STmW#{@gl?K6H~3A95=u7sjqP@MymXZR!Z(JKgH2AwD9) zM-O(lcJzM};pFI!IKL1yXKYWbn}+ zEIlP#najM(yLZ+cYf`VhL6ckfJTT=R?(lDvjph#YD$)%^6#@S$Q0B(!0N0PlvHFp0K+S#@d$zp~-nfM9K3RhU$PM{E>ljq5L$G$6In9qKmZE89$<`gwga<)2D zLh}u?1wgh8`nPwJP74bKjecnileB(2X&}0Mu8sypd_unlI3s^@lq;@pQ&7pL_I7y3xu4Xk&imOc8W9GjRQvCTv3SRe+6%OU4zB zE$?+!aDlXJ^v|5v+0>f~jOX)lE-Ls`#gQp%vI=0Jr_UU>Mrwu0$1-O(5$k`tdI4j_ zFC4k$`5}LUydY<}T;Rj=5&fFv%9+ek<+FH$5_=FiHvi3T1`+p>&^ui|^RM%)pV`h6((2n2an-#_Q0fDTZ^(PFp zoVkNs?C-J>*%g150g-^W+ksoG%__X~mMx=G_gA6-`?{DRtG5M-xn91vm;sKUjj_cx z=1?n;21P}z@P)%dVsQKk$C6RdC_J9``$3I3xoRLN1kEPBrW8g@s8Tk+Z}ulLh0FKLk37v@k2J8PQ^jf0g@eDp_rIwLtIrw`Gj61`y`Kdp1}X zd`i2l)j_D1cCjq>hoaw3T*b&@O|zv3uqb^(8y69S`;kG-^IjokA;aY*hCvoSj`2YW z7g}kVmJgJ6-jl*gvF2}-R1{UD&Bpapi}>?9H~ooS&vn;z0Mh{HN*Vj{pbM8b8)f?| z=iu7nO;#$=Td@^|sx6$xdK4qj98Vuz86o^D-EaeH8wq?Wg0 zdmXk?nunYz_!q$jR*Aqd3R)jqf{SM|xhg#nb7r#b<}vH+Yz`e>vzBhHJF*qxT^W}o z=}IqJ!%w2D9kzZlW`MFbjLL=hw25#k4~5j*PdNiZ9W1xZA8$`XaU~ohuH}jV2Foem zxV?_A%Bl-cL9|RRq*lyJBofc7IEDZzFs9tV|47zM=Ly<&BCtMJDimD7G~W_nnhe&j z@Lx~2d(4dVC9|@v!)BOff?};YAsQr}U1T4!-CISk$g2BrKR&`b5v*Cz;tcQ`o@RaL z&&jKs3HZ9R@h3wf93j)WXKQr-H%;m(WbDxF*vDSV&6MIuE|{d%M_O1rLaX83~o2ciDLcsr<@2|dQ@%@I-;U_%$Urd~8rv??!l z>lw4%Vjq9_NC1%YTo>%K0>>I?dV+^|p8+z&_o^8-&KK(5QyH+fe9Qhl7 z7J}bA*IB5Tqbt_N_4)4>29K5d&#J-ZVBz(?&y zZ9gSj&+{*sCaP89dN!xhDlkH@ha5uB(7eP#u4%i34WlIj2`nEy8Mbtwi0@~=H}K-( zA5)~x)i)KcAb}%tBLjPcd$QFaQ^)S;$#qNVGIC z^N_QKpRO@h8jR#4uNy`OC~~kWAwT)#IQc`_Sz+xdM9ZWK5 zM|*3(`tPaxp?!q}COXI5*{VB9FA10Z@U4Uv*Y`HO@g>|f02atM>CRi5Gg`{iGf_f^EY#2Nk$6s^1$ zxGgx1aphOOL=>0)_dIF%oA~Bk*fMAEn=u<`pcbk=ft00{Sz(e4tWP`{hvU7e6FXz> zCeBxsYwrTSm$GM@?}<$i+qF`bB@wQ(8wL#s?Dg;P4$C)P>;c35(2XdjzREiQyEiXu zTi{Iyf(v}SLRClW<%jh8+Q+HGT_ah+$hBof?^ zqS;?bD|}tz&ta8nGb8P#jv8B=<=v3)k7II^L`KY5frf3Vq};aTwmD-%c;=F(ooF@_PiSLX~Ww}e7Z$$ z=x^*2hQO$e{C*r~o6@masn3^6-7My3G4s=&VpM+G8EltkT~k}1GsF&9Qm(iigJ2~e z((c{Ekzd?RuhnP=4_j@8pAm)?ghw@i6a{0iy@*AB=3vMoEv#h$PlIa@Kdw(Zq^&^R z!JPwnkY=3#&B7=dE$ACgau&Aew{@iM)!!U7ZqKT(Ym%jz% zE@XhY4eBe~0#=7rijzcw*tH&si`2d^#yZPBnsR6G^`?2^&)?#ZZL0l*ty5FEwAq#M z0r)^>#jRQBSY?}r_=ozOdzMJ1d5q_2f}dc*0Pd!q4b6t)d-Siu(l64$`tVB&{2pT1m4%ey3o2WmH zl(dVQ?~F@8ZeKFEEqxW7Zher+1st2ikX8&8jM6Y z6cE7gAZDTF@Tljrtqxhg;F2;*e-pEA!JmG}M+6sf+X{=cv`uC`^E-**GsRkzGEptd zIrG__(H7rjah4D{9Ld?v zZmsDwhjpq4aVle!zfZ~2cMO8=huPvf01kG zBp2gOOFD@iD>jnCjBwRvV%!_mPm!DO<`nhq*U{2W^=NnX43twA)4iXY&x8Ks;9(yojioFNhWn?FP0WWSFQZWJ-PUYcK<)SHkSQ8% zref1DpPKM-hY_xGoFge~;-}3%GC9o7akquT z5vP0O5kMsWAGG38ZwcUm0G{|DihDK8r`GOwpqIB*Zw}GG}$kZyPTvXuw7gc}cH-#oVToq{b8=`NJjb7D`|I?l* zgJfvTP>v|R(Y<4Nl&XYunBs-$1%g$V%cpwRu8$FzN7ldS<6UFM78w5`QBZ12?uE}y z3SsBlyw2DNe7s|p79q^o@q_+IMcn>Nj3Y^>y4ZEsoMa2s=i;(Sm|-7C*Uyi;(p=_O z2(80cr_V{9cx9{kqYmonBIO+7-uj)ACa_%jj>#zm1~@b;bO`E z*;Xb27qdA5jbigS#!twy!V9_GUI#}2_I*BL|!wD1uF06#&am~!A1&Cw;P8RuJVL1YmI0t{LKjA zep^NRW)kA}*i6Sc?&ea+K&kk)Wh@X{tAAh+9a!4cnb*wUBe9r8%LJw>JHyi$w8O7k-*Lo{~UG2n7fNJiqa2 zrDjQ{>QT;WpDTTE0e2wh>h+5el||m~#4!!cxS1N)r^lJaGvTd3P~U>_R0}TAEqvXT zPWlYkz$22arI)n|DI39 z`-8#7(xeL>y2yjYn3C5!+*__Tjv{y;7u;V1v#QDkSRJ#D1tC^+I}c;6sq6&6gEJK?CA29A&HQZOoF&EbSJ3LUyM) zoJ6hLHC+EQweSnqBsO2&wy+BMtK?GVUjkQO&1B0_FWlWz0&HMrg27t0QSvX^(?Qj% z)L*!MU30%w<4z{ha16-De1-r8(vRj)cZz7w-5vBTu$ESM80qaY{=dUsw5p&d*Fcm} zlZy%2oiY4I?*pFdli~FZ(>19#5{$F4^?Nrs-#@#Ub1SyFZ22>%4|>KAvm~zwmXydI z)%UwpXI^rh2j`3YJa+m*;Y1qw#ui@6>lA(G`}nZ`87Uauz4;!}ZH0~O0=RCb?ebE^ z4HAAU4Lv%_4;|S-xaZ94{ksd9gt`*})mm;Ds6=zNHibYuL4VMFQmzzCAGVhg_tqF6 zF{XMgD|mVooZMJ2PNSe8O?$@vnoX5b5a6kA+Dqs^t%W}8EXZw+W_a=LyZHy3-!kOl z+bjudlB8Ku0+AK#O#lg{abDxn=wel-7qBDxaObzPPOLl(UW0N#2w-g@GU?!vb!d3Y zX$mv_w4ovydn!E#YQ}xbF8soRB_X(!OH%jn&9w9kz_X9O9TBg|# zKBEQ3vgRebLS%hc>*ej1E1iC9 z!@t}@H+l0LYp@Cl3ZURv-47$VWOG-+{v%>GSV#Ge^{C=?;4^$VMC+TBP_b}}hW_u^ zeRz59LDfY%Z>_S7K9oVGr`yA81}!oLN1d_>Kqv4;N{2^o$+XEfQ&TpFEwudF9dqCW}UhXy|*YCvV8HW({Y3#JqNS6J~l1T5&%6bHx&>ltq= zdb|{xmbb2}Ck2Pq$s_d!Lk~`XjTVzF*|XL_*t&t^bd616;F9x;@AkGF2iK`S=o81Ev%Yf?^Xm}`4)5k zlZ+uC2<*t8l_5~1Sz|NdXmO5y;wFJGy2C*&kPYW%x#kCEcIbWVCVvgGQ9`zsq7Rtd z5Z^l=z;5cOVRU}+ z;fs6OXhR3IfnA6-l`9h0JA!kE+sW=qZ@}~)ipgfAE4I3W`yUX&_Tb%1urVOw9be41 zzRM?Y7GX&@+F8eAl(e2snS=8^2H>uoo(7nsOw)eIR^ho^We?PiuONQiW@ojsRKwe> z-P}g5Sn85Oew8_|1=oBy6lgW2`Q%MT$doDEC8Qg=Q^erI5Eaj&;?y>9`Ybj*QBtt^ z^x_bgJEh16Uyzn0th`mK1hH&ILMn@L$;?1n+Ps$0|2iW*eSSS4le7$RmZh1>r*U;{ zgE~b+WVhx+#tAGdX83|M27p=)XlL=Z>|?CM+Ufp2E@(**|Gu#4ZQ9$_A&O{Ej&ax{ z9?jvKWr)UgXjt0As(z=HzQEGKommfDwwasHDbMBcb3lSqu#cM56t9t z&6B6UX^K5p?ADT};4o<~L3@$u=W2(%>x)1(l^vt?vA~Zpr|Z(R=M#9;g7g=%9hE=- z4^Xb-5kC0u1JT`vqpL(ubv9(_MYuY(lclSpbW4h9V_sEq|o>rvM; z9*KNC%%;y)oO?-`8qjw6%G5&4@GE8&rV+~PwShW|Ld(l}yf@7ta7&CCfa}K!r$S+G z1d(w)75YGr6Ow=-wJQM=MyH4Fn6(wJ-M)jtRpSNRs~lnY#PBO#F*$G-PKB+R$}=q7 z^4ZPQh?QS0Ehq#Wi$_j0H*%yAK?(={F@`QDS4ErUG{_!fha)+7YPp*J-OjNS*+tu( zwDiR&$6nm>qW6Jqlf4h-O$o4gY7m4JNPgsyDu7Qt0Dko1;ByD?J)UE%ye+sV zaF99+QE31mJoIwcHV|y%}03yaD|2+zr9EUvf>n%IUqrcjG6pS<>hh za$FvfpBbT#c7{LFR3ak{7pTA5^4^4=L>qZWt*W|GR*( z7O4b*c=ENcc-#Z|!3~b}zt3Rm4=Z9I1|XYwUQ_P;=k764*RpMVV&}=PcCH>2HB)%- zjZ;vvCmupeAf$4y-ZpUxmnk8)VK_*0zAUPY`ET-ho)fpS^~N8@Qy_)O9V9;E8qz_pYH2nxSd_!$v{bH)b~Jll3&vxND+51cdM0pZp% zghJOQ$b{Fpg%W+qi@&8!{WdvseQ+2%L_UE`FUDEy1sCBTdhW8ys+1oHoM_O6c)#wK zDiWsWaNFh69uaJm6ry!2SJw24iCD(#5H#5Ch-fJ}77BgcS;er(NO(vPkJ_=Ovp{z! zf9@2(H^n^W*!1y({vi29l5#W%cT2PvT5|}o9p`1<;Dp+f;MYG}y+bmM*7t)we zr~D6GbOOgb_I$jyc^k_cY)I8q6cU=v412_^PFL*%u?t7T97xV8G)EV$5l*I*BVe6g zq=u=D-?l^hTFhxQJa^q`i`{OC<1h0})@YJ-U3JR%I@wdFsPt*=E-a$zRN8Q@)7Tby z1Izx)Jf*IN85j2@JtT@A#puhU+~sze0?TWWU9bVqF$hjvy2$F+=n*CW{2Lm4&Mzrd zsLjSf%qdSW)K1UwwAG|Q#DKy>HXK<6-jm}Pjlw3zP6|joO$dv`7XaD+A5s3< zW>KbCZdNsN2o=F3Pftw(mDX-uK8{6y-R|hFkZeoSg2euL&O-Ukm(+~y7h0wMafImR=1A_j45BMc7z|^UK|5;rj4id*Av$yh1KP%<%?FQP?%Jek!V@u0cvJ zkO!5I{fQqV3re0}%5KnhIKG+7LN5k4+Mt-~;ErbkG-L3kn}rYvfY`6FoB5vHxX2XH2D-HBYP|% z#V+xC6O-=`3}W~WmZl#=Sp_fiR-7lf?zqcy_3FlFC2e#B z+fA4lxxFiBasG9!`-hsoTqF4+$NP=AZ56a2QR{?nOooN5w7$XA#0?5AmC1&g!&i?N z48X*TECpJL*S)E?;~DKXz4z|2` zPQ@neQ~mSr_fHkIX&eDi0r4sZ-1$l1`P)T6jE{lpebYL%U1yH`($v^SM=Rz!h{mft%IGH zcN7k>bLlcsS3uiECZAldu$c9mkm(qp_kF^EF)n%=X^XZtCr=WiifDAY(sGzrqOfK2 zy5l3nYzBj)l7kF@_z>J^mTI$x2u7ig0AA=n=NRHcj<~DBfNhoFvjc~u7X9(0^0`3_ z5{t=8jBF4ayZ~5+9XQ>{CqdbnnqeECZ6^0omLHWH8^v@&Qj*^WspCmw?>ge-G7LXT zr%1=6vR)uaoMncO_whOD05YLkQx)LpJ}C!! zr~yZrD0owJURBfS=ap^GH1Y0sap*kpG|LIra2CO7i{RsgyIZqbAczFeG&m8X!hogc zwJYw1f`(Ms;s-bIldq09jXNcigj+nnpFw-%@YsE4>c6Y{ytlQC%g@@^DsaTw!UQbk zGRy@wvq8pzh;;gjcOAM%h`Jc%Gj*+_N8_=C3TZVhy+aEnUTiHyOYb(WoYmPNWsM-k4O&tLJ+xoG42`d(YtS!s}Q}Y1JT<8odcWB`F z(ts;yL|-7DyepB)b3>Df56(p%ZCq`wVYNF=!S5W>_Gj|NYo=wvV|yG0>~xb=`cvPZbme)wxb^$1$cR+Oeve}%3Qo9 zMI`LcZSs@3ZLrihA*{ijSFh> ziA_I-+y;`w(hA^Lrmsgk{W!1l%1H5#v3oxhvr*}|L(f_ zQXmDd-ZRer)^eDWVq8eT2P|G_eW>glMEzI)02OYVBDzJD<}ahPf)z^Y1xV=DNnYP7 zCQkJ_@83e#mMPXmM(0-d2FXT)_Q{V@U7ZZLqa=9S>VR;*1g6mPy1Q#nAv$Yti1N}s z(+SBzKPeP30PrarH74_2t23P-9cItC4uRmGFwBgXRd%FCfo80;D7YwyGWnZ=XgxFt z8Y1o2IWl)Tn$6T5i&t)~pa+sB6}?griv>3%lnEp|d#kP4nnQu^45wyNTNInmrCMr@ zi-fbM2I*FkO>-sA5{AoWrB~@5q-@oup0XlLm$Cp?Mg3I+MNJ$kb`KUU5jx}s!-re1 zX=bh$gXL905P9m7Ozuy0@5xp#8IN;ZVs05x4gghMqfsp8d^I|L9X{S_OKs(k`z&T6 zyppC(Yo!f{YObhSsWzbXvZw0ClpBrZKN4lzNcBpA-^= z-N`2#Qx##Hds)mI{qWp4g;+4tzT*;_4w>fqtm3w?L$?xi= zLok=T^O$NU;zdsw^z4)W?I#iegxcE|+q53+2 z!D0&D3FVf)Atvxbp*>&p*tk?|EYJ1_Qm*GQx{2we52Ru$A@aj-;pmZzP;qxlI|R;g ziofBU(pTp(*UY7!@BP%WhgWrd>UJ2Eb#7dkK&|UYb;_xrL!((Sw^tzOFPX@=^^7-` z87U(If-;vxHhJAdUSi)TqEmGvLUJShxUa-D6qJ)GShq9nh*No6UF)*MWOjVKDKK1n z*2KC>W1ADz^|Y}7%R6j>IY*?;ht|OENRfe`9h|HL3K2Y`s;x(x0~m}h$KbCgossoR z@)VV`NJ>6Bc@n2WKL_?F`%Lh63(Bx^DA5dm1f!DVCojZe4NVk=m`U!nF`Vb3FbprC zDIvB6*=Y`hv3^+HSZ)aXD~W_rMSnt0evqrpw{rkVYFSDu4nQ!Nj2n?xyM~s@J*X{Q z+oc&41^4v^Z_}M&>s$zO?3yF8W8Nl$i9%+K4vS?XBeKu3q~}5KG?YUryC3}s%@=HD z^XTHG`)iYp4Igt4JCQv6y9cDkjEd#eQzfz~FFQp`rz4_P@V4Z6DKE)J4xEg9d{u*e zR2=-O*6g$~)XF=9^Oz*q_HX|4xqLcJt4NU1_XfoN#%FO5_USK;O zEgs+mf?N|=IV1g@fy;I(Wnu?!(LddTP$;;*OP#V1+ii zP_mt`BWiYXm`V42P~h?v+BWW0E@a_HtIC?3$_k7Ne-sHq+)d=TOWoab+9?Z*ID?Dr zBuw#6<$wff`+tzH-KhuUvZh@)*+#r{O(0qvhEPMG!K$;%Gm~ynh-Miz_~Y#&AS6_~ z0uMwmR1KF=#+v5gU*vYF+-EljSLY-VT)S+Mc#(>c4!Mw<*3Aq4L6`Vfkh%P}i7D=Q zCV8x1FALCA;UHNH@Q+Q~QC=&uDHg{gU|g~!wX;O2@fH+j@2+W15HS_-c}*&{v`YnA z(=x#L`}zSSxAs|SMzr$-1zErm&0C&Wk2Y>t{gi%tQi};-u9-q6E6VW2nr4g9YplS? z9yt0)5g{qjL)*W`ZF1HJfl;}@^2z$4%?hD+8t@F4n(fW8CfEtncX$ilCt8`x99oPQRD^Y-PQp8p z3usly5-yoFBpTqGf3M_g^zm6lS?>AEJl2Hhh$9AMgbCA9N}AQ~Eb{AF*D_7IbIWL^ z9hULPA6lbh9?>o(tSNlLuux7TfnW4nK(A zGbcVca_N6}VFLuTw%rWzBhET9mR2!F#iOLkVAzu z4LZx+2sz1qFW-1AY6jG3YQ1uXD%xEw$_HjdgVZKw9t0OVguOU#`o#t`!!;y~BcQbS zADoC8q5v_L1WTh00U)V{aFxHhoHb4z^(GKautHu0vZp(VP~BHG{C85q=Z;(dMe1S^(JsjpyQZAM{pMBY>?mn(N^BX)_wBl zNk*%5voLJu!CO^UL<}9HrTgCGYtPSfzJUM`+35uMg0sFc> zrW3C;G`prVXj{@0aMX*Xt1_DKY^XOlEeFkoXP3wdWN->cA@BoSOk?&+fsT}(hS#K( z;T*5xJQ!mu{R5Ym)3f?ybdW8BR6NPb39D_1M9)0Irj1{HrcO45v(#+0%J8$=`uh-k zeP#rub{QbFV{{lTbQEhve>Vz$8POQI9R$w}ScyBMaxxd`{7um1p-#a4%FWl(Nj=FF zSZ|KD3seBVZHA@5ea8&auqHv^(w-gbzaI3N+&*n(t7R4Rh55K%@s60v%0ODeuDY7E zsM)|}uKukPLgvf$Ril77`FA6)5T@lv8)vkLmZ{pKEyrAAX~rx?tpAfNX_KV3G1eEO zhSe!xG$$Fz5nhT3Cb6PKauu*fET^}YOCbZQG@1w%(RlUge{h_rkzY7TMd=BCcFu*7X3 zU=bY90gKPx%Q(2GB8H#NTJt*$%~CVOiz`JBhtGGq$1Ru#2?~z}mUl&K-#^)16d~4j zbi0;h+;~CM_2>3=s`SQFg0 z%o6l0+Tx zZuF=V-c+g?UN`n&XYRcYU25Hfkt7a~0R3emR+37chF7K(zYqOA&fS;xe2cxm%fyh; zj{M-@rkIEv#}bVw)Ni~Zfs&%G1LXK+KyN%q=@^&gJNZd`?Qs{$H0~hB_(>2_XJ4MD z&!h$UHR}hLYMGDQ#a`#3RL)^9Cn_;wk+&XG@@Qc|DFYwnyV#rEeM%IEh;ULfR%vrY z+-HmIA0gIdpFfj;MAHjY3nu<3!;!f|tLpRU(b`L@f~^^k2V${+>$+*Tx~+?YEt`|kEwG?73{PI&5=Nv-9wLqZ%Qvb^1)``LQlX+)T`% zM7o`F2;xT5}+6Y6#(zi`2Ppo%aT!T2ER= z0k}5ZWEa=~O-G(p+kc7`w(QEY>F6w)=kfoI*j8?I9xO116A6XVnF@l7Tnnf`fo!yL znA1NoZg7H+I~u}@J&?X2h18)Rw2iQUBG{4bhoI_|J2KrE;p{#UdhYXe8dqO|noy7y zb~OVFIVDdx=;35c1B=l$V&2Ky7S@1TDNa>aG*4C6IizmSD?a1B=7V2y(c1hOndEi_*!mRXGw{1}3M3Eg_kG-(Y z6{Br?>vN4%ZFa?fk3?&WBbS`%x?guN7mqcBRg4>dF{n*X0%F_oFnTfPpN6DNWou3s zKAsZTn|)uoW}B$=MClgX;=AsQ@Wl+$`19knBV|B9im9^)0qD)y?No|Xi*sC)`682U z{_V5;`{cIMRgH(D&Pr$x+UR_zvtVAo%iGF(QWHh*zo(Fyn|-IQZK#07GjUFe5r=y8Jt>KIB8nqP?v&nqMT7J7lb#+y5Oo({ z{q2s)usRdH;v{2`xZ`0*_O1XODs2EzIQvp^7*y6I$coF2ArkjkRK9D#A6N12A@+<( z>ZXCspz}E4GanW(S&TGpLj}8x%TmiyQTh5BbYCM8K|xwun7)2rp*Xz^Td)tMVrjPs zK*4L?!rPNdF2$H>%CK)+t2pN`6w-4ru1yL9Ai%5Ck)KxzXm#T+lzLrYgjhR>y`Yr3 zu6zTRu^#HZOy4#<@pvkjLUqU zPX;y9l5>3Y_q2CSQDUsbBsBaxlybvBka{y`!*e1>i>0y?K=E14Qrpa(Kz z=c$ItDbw_XTTmSlx2Er7hu^0hh~tock+v_nj{K!8B20h_WMIjUxT*-r0_bCGmH z4&}Dk>wWbJ^;96r#+;!if~-DhlooU8_$dYT_fNVA2JFn^tkt*CVZue$cNb%CY%PN5 z<{%to3UmFM?<>jlCPaCi)?Gi~_Vfi=dZ=Fz8Z`|&5 zRPByc5uWVcgT3!8&v<12@KFYjGn~g**Ns$ccy;AZlKal|kXEJ9-080zIya@D_TI|T zR`L6*G@&;1vOKln@?;EG?s{ALn_UvB8Xv8f;;xA-Sxo}5%|QkSplnk7BQizNugAGYfT1|ryKI7p?beNunQNzNkUfk(Y@5A3Y<}sV3pzR zx(lISu=FL%z!MxVYcH6*@Z|81iv}ldKD(Q+?`PM|9+Ss{#p-~U#-a*;S1=Wly=!uZ z6g(ol*q?%|)aKeL{kpOZF%-yFBae@^aGOr->p9EGP+;Ydd+Ke{PiZZp`B&y;D_eCV3<)dJH;K!@wS zrtT!(d;d%qdDQVxkh?K*xz~Hhv7N!5qYnuUh%UzW6Z>ME()uPHJ<5^xkj5rbU+~CYVa}m% zHps7cAiBgoL33%oi3Xv@A%BPk*V@yyn|Lbmi*}^9F%IB4)S|-f1pSo(lf7chVvStN zVCN&P`a?(dW$eGF;}mWW3v5wJr?W+f=6o3rI+9xfeI-U0sD#4m@Ci6Yh=n4O*S%AC z`+MUAfI0`DH?4j+I1%6*F2DAXf+UGYXgInMRC^pt8Se&WP^f$u# zPM^uty9rQ#Y7!GXCse7u;L63~%ig9{FRAVUN&oyjflNCh8*=a{w9k7P&D*vzM<}Yh zTA9cYec0M=RKKfJS^W;ZD^#@6bOw&Ze7tto%C2aMC{xB(XjBq2qoU>MaoAREY`UmW z7RTJFT`47FB}$U0rZ-A=eiKP~9zli$C)#onSC5!klI!4*x-#&@8=6%bkR%wemtKDU z|22)J!@HRxsD<_n1MaLYZ#YQd;aCNzQvXVQ;91=M4(%!L*yYSkJDs5+M0hx=%7fhA zwMB?ZGiN=2=~-yGdZo#JPxEp?`tpkspy~AWA|qu<{PR6)lLL|DnjUhkLN5Z$bI3*9|0>!8*B@E`lHgnr+fALcF$zmXq zRlcoZZM#ouG_O$4WX^KR-CA}j;3(!g1PE`amrs(o|2@QWE~tC}w}bM)n#!~Aey}dae@k4r}vJxM~yPZ*B_;fHt4@r;ak8j6A5H( z6p%>z;`s~zYh7rPUTfo=NQgB#S!u}rmymUL7|Il1TN7CUB}RzK zx#{A&3v$@?D+w!)jE`(F@Q}oxw!fNHbmrHv?Z@Bho&rhXOH5QlwG^eHE?@;kk0L`T zIA4HwPy{*w?Zx8!gHO3=>IYC~R5ciIhKr(t=y*P#7xN+sE09KFjkQg@D_up9ABnQ~ zIR*SqVZWg3dMJ^ zIOh!^$4HgX#y$xdye}aO177!zd^wJ4@IwWKPf1fnq(qd@;dy!wQ{VNpzJB^l-gD8( zW$xovCpAm|vFy9hpnllS8KT#RO8`MF6Bu39qgs0uNi2+Wccvbe1GA5?maJoNAKNwv zzlGqO&fJ0)(huYP<_jb!)7j~xd({EkA^JSHrK#5EQx2UD86xi?5~9g9nhN^bo+t3m z$<;fPmy3L(dNKCoRhMqW*NCm~K5V(uuH46bsB2s^iFxb_m~NX(N0_EVobG+9eKed{ zcu8sHz^Xk)=5Yrb32l!vCNf282T25&#G*w`v1oM2oA7tW_@W=ifxh0vm*g0@=V9UV zwenX~GVYzgt@z!P)$dfUS}aD zr5!gnv(Q@_$ZD~Xs)> z@m3eTpUV8&*FC);E}ID<(wBFtNX<#}&4)?V1VmB~wtP|IQNe;uwA-EV_QoV3i|61> zw$XT<8xe`Ih1rtluD`+GuipA|2b8Rt0)@Y#<2328Qp`mgOiH!i}Mfnx(m|@)jY9Q@UB;g?%-G_ljPY#s{kS^HD71DAI=|Wrqk8- zg@v%1X771pS6+{6%0v>mGqS+i#@{5RsQCDhRQ?8>JN|1cCI}_4;1{`GD87<%aTzn! z18AQ-M#ZGL)NMg5l1QJULfR=vGLL_3b^$DZXjbJ-p3zC~f8m}3Oa z=Vjf<$!lCa;w=)|>uQRmQYfr@FI8n|2!A>Zacw}iEc1!~Mzf#O1iZ)VBzzftcegDC zB_wdI`pGNBGNvimE|!Cs0$4_M>lW$%lJe2%AL1=p^bluXJIPw~x|`BV&0vV^)LT!( zXCDnglbr{|%Z?}Ud)$>dG>AQh%f*CG_|uAJz}OU#!mctDN>d25THQ)|XR z{SD}3Fz`&t72~i)19=S_W5n}#R|5q!7H%IZsBMdf+&ioJeRpAbDut0(dh9flUcR{T za$5bU;;_}~r~nu^Mx_~F!h!PK^WZM>r9iV#(D?tzxEmhPoMhBtTMP)KGWF)pJMbL8E3tR(veq9?TnjID?*M{20S&9lmu7KiR@pf^MOx4zC zput#rq2;u0ysh-d#mm5y~8N)nA946JcGFYT5{9vRi--t z5{p8-?C0GUwW`<(p&I9U^G@EcelE6OF`E6SmqMnzbFmMj(@^oy$sU$!lul)VOtiG+ z{S|qx`zU>s9OQwP6F1od;MAcw_G_I3MUq0T3#df8*=8 ztPi46xW&Hn{M;SD0=&$IdICKz7KZBm)3>NGCFdac5X(2ITP09nsX-63+>D?Ql}Xs` z1V^`?iaIEhC-#4&!Dx8E{cr(Fs^x}&s{K;?BK~R?v=NRH{0uPWGDUd$f=KcN2&@%H zW*u`MhQ}d^Cs+YGqJ0qnR$!>zMCBIec1&}-3497$K5=9pz*C0jllau4*}LP;x>NG! z`ypsK_;@GpzL^W4{iF^4-SCThAeDqbOAF_?_NnIa}VgKQVQ;oB3ty z_^Kgkyu(fjttsHGZq+AhIOmd^q+aZ-><6II{yJ3%@<|!U=!D{tna5%SSz#2VTSrtf zq!hN2YRj}!*noQX+WF9qpNtdAP?5Egn{jvVUfAZh@ok7N|=pc z=5_$KwA$el(MbWaX_p+hvqJ7qqJN8AJTfTisiN&vPE^DpzrwM3p8~HdlNGliOCbms zo|tc~WZcaet{u?-M)HG$oo(W}OuBA$d=ryt0evfpGTcVat}@@LJiL};wcu_gHQI}H z3N0KlxM{?tU4r&saqUdiaaKEw$?`;hGHsyB6Uwz0J^EI&P-+Iqoa_iJLhKLl`KQ?S zGF{wt*dKB2;9y~_SZ{kE?p-|DE17*yJIgS8G1im7@3K~gYC(9%`M!b|fmTD8kEeF^ zrO{f5?`AOE)R(Ii&TmZ`n2VJ96c!9{Ac+DC@?~O(r2Xu+vtlPOn?+1pb8sHI!<^=- zai|tjSgLN5ep!3Gequn}_Q~4ut_7YL*0w{=|FgBL90s3TE&Ly_L{eQ0j7NN_Wm$+$Sdg>G$AzI>wixfRr@5;}>q z<3KSE+1ng3`&lBb3hY4I;HOir4@;gDcT5?`@y8+*nk+$HCego3!FwfDxaEuRJUkl! zOjGXGOinwReRCj_h1X7#e+~j!FRTu$%R(5i;UIeCO-DGs0lgEVV?;X95BK(Cf2Dp2 z{*D5eTiJSyOoigSyvvq=X@Dr-rS-2|^!lpD-CFT7k+)ZAUB04Qb5^^k zk@dG}6rOU%HC}l)r@}o zrm2)OI{U3WbeRMu8$eLDMkZP^>LMwvd2|+t>8aYm^oSyo_(@lD)G{5lCtI7ej6=tA zv6RwQ)wsdkK$#}tC@Ik~c_yev)2Qwlj+$GoX_awEuOIf}^Vv3ur2mbwM857@sLwKS zr~B8Q)&8|C~OcSQ3_ zFwabwhr#2h|nXPHjUpvZw*s%=M>@w$Strjgkl>HXrQ_Re?`#EIflb zvC(R`tcuh<;$4A@lZm@MX^}Lt)3<8GdaP0QGuLOk?>Ns#+=a6?+gJQQ+2tBEGh2&_ z)FIf-H5NjO&ZUj<&Zl~ zH06IutXbn%N}`bjyk6xk#y!&I5GJ;GGaDrdH10vbT#!JuG|>^LiA~-nDt$wn$vsWm zu~5&Dq|TLt%Sz2{J|%7cNaMpYt}W*3w=1m1%u)EvmDTW&qH2>1U>bSu#s5u4&BkF| z0h?6#iTQXf19b@(X$hR>XFAgkw?0A&?e>xM3hwh8%^cqmeqOSv&G54dW?-Uqh8GL6 z$T;nK%IQWIj|-T;n2ki_?qa%;i{d1H@0Ly4OZgVWv*bXn`#~xJfuak*c z(3QdBOB5BMwfg+uyGO`RA?PRs4cg6OgJdt``suDMugiOiVB;7L=SoV0pYSNp+PRfQ zIn*;*UvCO4+P@UYV5!>P-?Hf!IO+V+Si%4Uq%Vbs3ce)1p_A~XU-AjN;Io+=JB|cQ zoIy&P;mp-dGG<>?D>r99>z7x0^stdC!ENF`*rLnhZo-GRk-JflRal;@Ckg4FhM{-R zfmlvzKQf2>MP0V^PF`d*4!$|KK-J^7Q?d@6$HSn~`fTAC?sjQ{kJ-B5gxgRYQkM`X z;*ke_i+*L|s`z~yvC_A(q=QCMbd-e>Tk)94scn0HN0}>S6^G&42`h5dj7da(sz2Bp zP31^@gQB7s`gt2oC8*oKMTHdtX2O|znO_BbKRTcu0;zO%@`s0N0KWZU^zo6khy>eA zgOP1bC9GH41*WduvRpQlVsWS_rvTfLazUYl79jCSrBK?&3+{S)i5SRJFh$cp8%6vo zV!RR#85*fo9=bI*!v@onquuL8?uQZWRDN>12N$6~d>)12mH(|y-pQ~S9g+WI8ejLp6Ok1t^h_Vy ze=E%%u1@6dSrJHZ>;e`IgUaHC#68N0T;*GbdYVy3<>(!`=GkTB{}j$uiqJ{^m1WI| zA&R|^*)q~22$4-Dx{ENBHtCO~D|Xb7KcnrZ`r^UFrDOGtm^_+xOY(Ww068#>KB&yl zQ?|0oJAxU2ySjK>;9u9Gy?lJ_H%Gc!M`2@?E>O(IWT^J(@5IHk=jx(!&&cOW3Zh5x zAu8?a&R_aIJaX@$;gbJ;0rUYP2qJdjLttWHX=z*;6~xY;khZ!C;6ywhSTjZBl+tIZ z@B<22MyaZmpv^dWii>z>Z#VnBF)rZ2eUqF{30u#q%g~X7wgZufYG|n_O!bt8Jg5kpMvzy~Ia~D@Uu9@3*9? zn75B$1B57i(nLMk6m1Fzrb{6CQIY$LFG)tyB}fyOuh^f|-1^Q0X(8TpVt#J27KK2h zmlm9s)HaETd{3&EG7}cmn|mWk$+&3vM8bk_Lv-WG_%S;E=PgE2a0qCqR_61?O;Who zZ7y*MuIapX$u1L&If2>kleH80N0W*Z%7ejiP7?Dya;;-lSvK+%()mZrrG=$wzyjIR zQXq(tniGHjtRl>+9cr)`-ld98HqV|*I!o)xHW(K=?qtMnCob`>KjR#SI=pG%p$)e1 z0Ng^dvb-YNc~W}HvUet>JI>Bg1Ek{g0e+-E*Vuifp0d>!WR1d;3vHgYT$EhGl}*mQ zM)121{j2NsfM7*KHv1s%#lj09-)(4GT2wW^@sxbHmBg{;4Ac(Jpc;HYd>Z2Ar?)0v*M zCPd4^ZnRQ1bimQ-F2fG&zFio3RyGeVw{^b;AtHDpqzb#9JR)MxZOWY=l*AK^v-{So zZx~7w$xNbmB&Pe|JQuf=s;6c0^%gmZRkW_AP`m*259RATIP99d#GXhI(Tg0N`*@l2 z6^K93F*t<+w$^4w-P@mHevHqx+;xD$yMld#az#o?&Jm;FZ6)8)iz{pc!+J|xY2@#aW>Sn0du@>KVLOTi@*f-+F02FuAkV58GNE&29gSU!PhT{;}=x~DXUl2Q> zt(%)DYgL9g2V?bPd4UE4d|WwhvFp4Qs;JrfUz_ERf(KfLll{TjRXPg{r&-#BpOH4> zkl&N7aO>|=R)hA1`j26$!2#})O4D!!R{|0~gZz%b!jydn2Mgv^@VLikMn(7Fq8kh@ z%NV@n_099*OQkZRga*k2cVfrxk5BiH7$Y}_gFr~ zG{1(ICic{`@LK{>ZkIxMy7X=aVYRj3lD~2Q2mdeCgs=te3z)yVaRIO;PjMfz`)^&?^ zUrjO@;lwG5Z(#8e-)+PO5ENy)Kfyi5f1Hjkx4X~!Wb_8(Zp0-i_*>ZjK$@4cFhowg zpp`HN(8j#G1eNX`cj$E>%TzML8Xq(u4F$e5p&${C3>UKJA`ng$Ii{@|_P}<;-MaDu z`2h6runP4A8`#e729y0vW@9{y?z5NfVkDQ{1v+)!lKEo8kPE$t5Pwf_m94iJ*PEiO zb7d{O28zx@^WzloaT4q9OmcgGY%6^rdhmHa$p7bUCQtNGNF=o+>6j?}GY;jLTvrC= ziot360$O@QETLmmR9MxY9k;6J4qWs9PKiqQ^?ey;Z#24;Z^vDA;`rPykF{M)QoMB2 z-CqjLM*jkY8WK|`#}dWYF*q1r2xsroMa96SaeR<*V!*<*NM9dNjjkQ`ha2lV7=4xj{vtM*G4v7)G~ z6J6ci*2x(i5WncH{Iua)=^eP@8C1(p(&n+$w56NX~9Syn^yOn&-ktUA&2i)==pz> z5AS8q$vK97^aQ7stn+_vU?Ze{Y5YLzEdM}46oD=xOWl#ikb=s&isqvvnm~)xNV%JRs>CukGU+ z31h^56g{M{e=?e+_v1kqt2>=}Py)!!{-j)KCME3<|ASxm4{UGsm2P;rj4czJe@t3p zm*HBrwcgaytf($6dY(#2rq`M5!sXcb`Q$+md7^XKb=m}19?4aKRehhfc z#r?x`2oVmfFvR?F;%9H9S4fzyYE(WLlY0RL#8dsvBVO_JIx#to67x9t0Q&kO4v>^L zoGI_TledjI#;d{ycEe)RQ@^Q(q#+wi%{Mf5bR?$M?nO0{S=IVm2}Qbqz8vlVOLP}Ka8T>clzh3T;JBg`#nvvmdg1_ zW1={LLhi`k_{vERXe1n2M)uOqG_t()9ME(zb!#dO?>*%U##6J%NE?`J>MG0}^POCu zH9&t*2`ea&V`sRGRuVz67Jp#gW{n%D2h}EeN;548C{ugUqEFsvhN4xDLH&+uW{Rf~LB8fQ zP?ob80CI2{>rAJTxaSFmcd&WYF`5wTDYwfe|CszwN3PT5_NHDCjmzbsrZLG6w#AQ& zmscz-(?232w9iV-x|k$kE_7NG96BxNCM3|m?CjthA4(J&L#p#l>SgKqS*`cu)CV1Y z5i(9}YpX%XHkn(HHu2H~96N{z{(rR*M%Oa!)(}TKy2B6)UJ5m7S#K%spXIsS|0qRh z9w=7-@v(VpTclN4*%M-{7%ebSHtl+N&*|lK_>v!{vw4;(C%S&#M~m}QpMfY&vR#8G zEg%3#;|Z~f?Mr6-%IaR;yrzz6O`oHh61@7wgIaS7NjZ2 z>oP5lfs>=g5u?GQZg3Q4>cT--M_$F_=b$+h_7a$Mmc(Xz!dy-ie-RPRy(2kW+)whg|>>#h1t!kY1r{^cJ$x3g(vVnVmnlR}$(hu8mSiZFg!r2Q(DrKd$Jx%LbU;Sf_pW z1gV_Qp-vJb;N|0?muj@-ZV3JFO>L*vAEJGhOonTMorVSv%@+O&)=OryX&FxMm5x1R zw~;4ZrfY!VN?@TTE7mvzkClTN%~Ew!L~&cT(9L zChq?C`|V#)B$Mqlz0}0+lf(JoX=5aCK!8odj8ncCDp*yEyTFw=sq8_Cez#VY0)<$t zZn=*;#)OWpTw3y;Z`o&`6bP^wlr?2|5Ji9O9ug| zj7$s7|8QPVw0dQLafM#3wY34;U>mmQ#xx_foc4^G+74^1CF6xnMOwBXi^q@s?ruKx zi;e1V++WSony_uk=#R5J?-vT2$S{rGiPS2-R|?H-UuyIMcmVD^qDbdwc8lQHd%EVq z2y%~oRPP@8u~g~QCeb}mTT-!HyM})5L1aIi-D=HZh^#j^ofI^*O?@a|epV~M(Ly3- z1wI#WKpmXn26UQGT?14vUUD7ytj9Rl2o1P0?XI|be{b_R-^&ILAUl=$nM?5h_2R<5 z(&`+PoOauk!#=3WFhI%!!a>%s9ekE&reEa?ZOblgXx^O@bPk|5npP22;$NB%Mv2O} zb$;`TaLo1m-ZTQn;~gpKqQak`Z-F4~gV8y_L0ye!Y(LU6nz1wwiV6S3^v-vbwoc zLiOb}B|gRPO4zMdJoQX{C&SqJo(Zg^r%?1+)JioiLGo%#|7O>?`d-ANN74Vzr)oAOZI1_2sv6J=fAUUQ|?K+NZ+;<40Z?>o`5*V^{RS z=}}C3<)5X-%KuNS%G6!^mm{qHH|#hfkS1}stl5aNexX*`feU#S1F-uqAP7%WjOOWIxfcf)f2|0KU5;w2FPdL5#lD>;Sp*b!)0Ew=3qZ1lgXtj-B zRTXJ`%!|wWb3~rQynnj5&)Z_e;e9&`oH7l{J>CXULOcIvp#J0h%+as}>&@HV%M1lH za)d(!GNR@X>@&^^qnG@?DTEFmT#knPCN)0HM%6}GEvdolgU_ptqvx?8MNaqz=3f_5 zqnySMXz`YbhoHPY?XBX!dKS3Z*rPpMwxgQ&C(gM8{i`aoIS*Bg<8Mixac3B&Y+LF( z@MWMbbJ@wUt@Z%S=vum=U41BLdjGK+Ov?o4tW@o%JV)qH>*Lj#0dV~n=ZR;!MUb(o zGhTxofxxObXXZTsJwU?0Ctu3*x`uiNVF3%*9okOh0Ph<@%`v-3vLIv9+e^HKb|73> zre00=F})v$42%s?snGnb?;`2X{47?7Q1TA?XRB_#sHte=s@uSQQ(ln8sX;hbiiIs7 z-p_V#BTcVBUBHrrsJq8O%X=jOMmT#oObQlhVZkLa)qK?0O@8gFnbH(Ir+F7M4wUK4 z9s-IoRGLN9Kibi3s)7AijnMwVP}EA?I&gKHC!)D&P*JK)Y2>s!cI9`Z83#Wde+ZNB z^ZmuUt+k19i^J<^xEH#y6AIF`o}LmisB8M8F8Xs5ZB~iju z^OH?Qh9>{vi)g%tZ^hL8(AN8dq$*q8$Vw3do-O3&dkT_NK7eLGM%zO^A=R=!&?_2G z@lw^`EPAnbcbze9DLmMh`3oma&Q*%BRz+JyJwngt4K=2=yQLAXF3x-QOkqzMvu)rF zdtz}TjsV5UE)7t=#I3o0%V?}q>M$vf8me4GJEzlwoR02YBy+U6|eSROxN3kd& zO~JQ9F#0rrCv(p}s^}AnIPpQeHcIUS2FohSOU;WCpV`=+k?0|;;^Z*b1ryuz>sEyDq5Q5N&d1O!DX9n22CZ2Th#bAdc;zvP`yg zt4uqS*JkqVm+tq>`*CCAwe`nwSA}sBI`tK)?r7dtdlbu?SXY zDrRCyD|KbTPLn-*quD4DY#0KPi}^mjze8ESBN!X9S033Xi`ZDq;YQ4lB}W7x*cuh1 z}uh@hO#@-=9 zexSRyf>s(hIYLHs%mC__ayHEr!x=&8IGSc{jgEkjF1njnqsggcguclEWnHa-=3MVv zBKM_%yZEO8xvDO<3EE4D`tTuorFAbzUKlbBj>gx|3y4rkV`Fm_$;NE;bu|%oUVagK zw$RAuk~bWnxcd;Tsag-;u~-vA?s?nT7+~O5NRDp~irp&?ntA)(Y zCoMfMVbwvB?ow#U5j*;OWd#FxgT#%#g;vD}j$>33IQkhN? zO9jrujaCClPQoM(LI3Ad+`jQbNet<#dWOb$u)kzsiR`#%tj!wpvK2j(5Chk-ST`!j z$!IiwKgX&ss+>AF>4`!|mk7a4>@b+UHz6}Ubu zw#x2-6^-<&2#d7bOxukg6mbj9@-Vrnar!7_{Uiec{fz6j#2;dYkBn2J31k51BmPgK z7;D#IT&; z^|1tL<~X|?D(aaQg#rYaIBpv-P;uoSK^HOHJ~&=3u3oykPPYVYs2|Ry5i2Kj7q?}m zUil%aU#-yVv}(=%5$C@*0W0yK;Oy^9@_K{GVi^NZj0JLX0B-ddFu6E6{#pJ^n;G_Y zo7D}0hLLMDuG>eRm&c&K6KbzdM7sa{#eKd50=~$Y2)3jcmNuTIlIF*loP4vD{oNO` zr+YgG-piRwe@An(S6HkV4k#liznv6ejCT_Z8NLp#vD&BYMz<6<`WP?gKu?b1G?rpp zTfvZ4leeCLr_H=5y3@RVl>(4dbkp;Rrk2vYv~{1lOuC9aMw>m-FCHgT)NHGOu!gr- z4K}R(yr}4eWy4=aEj9-6Pg{@eQvE8Ng5&!<#z;Wwg^30Nw}c>XNzjmG9=4iJR021| zB}<@?*H=4^Sm{m(+m8F;~nYt50XjL>ji4^bc%YlrXRv;C| z7!X)Z(5nDFKELx_8{82s-BGU(UU9!dTz$I*c<`(Nt*LXK4;ujw zI+&#ia{Vor0W%Ox3kM*Nro*Al9qUw<5V|=XmDbkH;{HMz6`axrtHjM-zOua5euMk7 zPY;b10J=R5(v(_{(g&vDem$z8krg}~l6RLTh6A$56gaa`8yCd2JQyH7eYSnm+s)!D*0B+$%IsNXEu~Wr6+ifLEUs#)Z4ss1h zv+Js`^La73Lp6=kAf6DNVgLKzuhYd70y6K!LHUa8C&d!`XfxVU+^$x<%1gA4dTS^5 zXPQSvWe2uGSI)B<^$WPHi7;3yeI+yI`Hvhb^&6mpg_zVAOWVCol6&=hrU5uz6~Y63 zYrbW)n$e`L;ADzNacHm5>G{z*K8Wd72LIqOb0NYs88dl6~W?tW9T;<6c zRDpg$Vto6%!Zw*}ew8NL#<^(LSMx|noPj`7`}p{puGQLB^=1x{u>Z%5xp(U0SWQ%! zEK11=lSeMcE`QWliSH!yurbHjOsCf#yt=4rI(V53*#+^i$>(=974~N{j4R9HurE&M zOIhUAF@Kv3nBF2}+C%R^6`d})4tM_Tcry>Pih=IfHpNbSE?k1NQ`tHocOcter|Rz# z6AOl4F&dCNq#(ovbFBGdxkN)#wxeN!vAYXpvFj$yEm%xpdJt1V9EPP>l}W^g-DL*0 zR(_U-7u#{zfhCbvh6wfP<{@8?RrmnChC5<+$w+U5ud&FF*yCBRP!SBX6epI~_%Lip zQ3apHkNUqRqoUVJ=s50%bDyC&jXI{%l$yJ_M7I$-AvKoXTfyJs)-V~9=;3~E9KMfJ z16W5GLSeRMyIO`fY9yia%naXfpbxp@8m>7?zCRguvLBRfV~NDl53=DM6+m(mR0QXH z$H7P+vOzWx5dQr?2@XZmaH+-CkQ!uEf0n!8?;B5e$&meExG3XOqB>~W;_Za+Hy9BY(RKp(}Rf{ z8(t~GTn9}nmE*?@1141%b-xl3IO= z*Rw#VSPPs%l#%61PpkUjXjbn1x*)i78o-jIG}5*K`Sm{EtkLRL!KQSGi_Op=Bl=y! z?4<6^mYcwpcM>5Sf;(e@Z;AlfnCh!Qk{QR@*hLd=fp2xOgNC~qhC>fyuJO2w<>Y(T zBUB{$$n|wA+yxEJb+m!K5#yw!YVxDQ*Z-w?blcfc#iMTRi-%v}&4-ydZ_I>eMg>HE z1Dc`4W{kXLOCv|45khwTqMW$LT;YMRn&RLwEc?b8re489&Z_nAQHA)M`mH)|LE9&;K6iRqHN}E$W`L0F|iBVx6AS!<4 z&Ys~Ms;&^h;b#&jpb3js&9+mwXKmko{|G@~?`16bv`P?EM;PqJF{=*I&jkX8$WmHy z)Sug1>?`PKAEOyd#DBzW9519kh*5?RHu|D=UL9Q*%p|&UL$f#F^CU1y6Xq5v#8(Xb z`O?(&@r`3J*V~Oh7#Vb1p5-$5xH}k2)BTiE^>v-G^+~_Vu29eld;=rbwkGV8C|ud| zx)Q460lX-+0)#kOX$!M+kg=WW=qG$$bva_0d}MGHrHCxbU8z4v_q#b zT8lwZ4=si51Mx5e97G1g{gLTDW&Cj2@;3r#e~7y-;@fJ)HtSwlODPdX(nerENEC8d z>7dQ@7qyZ^5BdtaLv_py!@ijpVEY_`&j=wGvc?W-7a$}QD@F>gT;h&6v8G`uiUwQW zNSHGxr{BTFo+)J$o{xE5FAjIG?}9EgA8TSWK78dnV*uy}5I7_?zgJ|6PGPGAk5 z88TsNOPR`zaMpuG!?!vr>Ts764;Vg=gz75DhDF7;^bsG&Gj{cC!-@y{)YC8Sm0^!f z4WVv>w{Fr?V8aHWCGS9RD0FDv9o=}D5`=}U7eA#Z zwYKK%pF^O>uVgtJ-)lw(GIbOyq0oo}kY@|)Wv98N*7Z}l}zHkHP=)kx3ALP%e@;0VPpE*~F1=#FI0q4QqINtXm z?RI;%F6vqpKbm?C zV?y6+`c`3OC;eo5y3d*3nVvcf%6ZbxMlxr8IC!)o%OV<1$OO3g{VP{tCScZit&JSCog@=emFNjc@|> zh*eb|fGF?|=E372tnPO;!sClnHZpd52#%UPeI$V6Zq~(JC{p=FnCwd{vyHL9@O|iu zOLf{zs(xi+R9J9#Me$q=dXoj>o^kyaei6buECL1!Ry%@F=3R^+kPSRP7=UpU zQ%(_avhTz_#8$qOkc6TBWZ)okMCC%is9E*>fV3A+`MwKrup&o0gl9>A-_9h>T2b@i zX=plo7+_M~?F*8S1ghg8<&vy^BWDh|I@hOJ{LLwC!_!wd0Qi6w=Tv%Y2N1{U1?!|J zBFt#$;ex)A>ci?_#~LecksS+5MYU?E0tp)O-i{SDj8Is#jb$^99wo#(TOaDpXvZt$iu6G#Lh@_Jr~FKj1FpTY((K^;r+6t2n#hR59^c z5^(qPHbmAKV02luVFl+!ri+hYU^}f+i?OtAH5!5}!m@=z7gLT)zv)_#1J)SJ#Kr)O zyz#Bx;Wye!-##xT_{>DZ^aoO8jl#+>7$;56eC3(5PL0uZa6w~;u}XXEXj;1%`t?r) zu0~1Zq3mV8j#aW{(x?_)xmvmCk=<|)idw{JJ}M72yeq2pg|^K1@DF?uX}wBJ4G=xz6&r$N=3kuWYDDbetS1mv%=L($4A-iF z1zdgR6$df#6772}yIAVZq1z{3T9zQ%liBe&2;vhskypbZ^MEsI7s z^Uz~j;sT$Cx7Z6F1L<_X$@r1?bepOFWBceoxDjGb9M}MR*-t(U@w0;|VnSUarkuCI z_-o~~R!Jf;HSQ>h%DT}aZlWT(!ek=OoE(C}ok}36ZCxgw^^YKDJLqcUmimpV2@V37L;+|d=H594kxDyB@Y^*s;?clkxOsxJW0~-cARwY}&MRk&?_T_fLtGGPa9hKBi%8@-8i~Y{<+=X#E3=v{0I@!X?GG3O>CASL z>tpoRCm;Lrw0%p}kUNNZcaUrpJQr0!b6+Ndt|qneZ%rNinn0aGMf4q^HuTmBfVdA}dM~#{^7W(M=L)QAl=o zAlcw_gsMd-;K^7|(y2)%Lu+lVIY1p&VE=NqY5ZfS#it9#eRcbP#G$C?=8TQfW7})G zJ>n&Z@*%>MfcBvIw=6cpq@k-LP=OTjwiF?HBunYLYzK5Qfp$gjhG5R4kFLU1X#P?f z*bs4eaP=uG7Q~|;#(GFzOjejasF6#vtaQS!CCz%z$U=!Rj|s4JBC$Dw=nuG?th~et zE!Cj%E9Aeuf8mK5{~sHSkn4d09S@l|c(cf`9%z-$uW(~Dl0k9i-W}BX$;t2h3ZZG> zQ}jgk=yK6{ApNInO>_{3ry!O#mUAM7h}0!NIzi{p*;5WC&NN{nhIH8s9u$vAHH%>a zNxLpV9kls9Z0e{MeF_^3(?XT$>LK^Y2ARGehwfnSa4`+Mjs%~+OcVE%Hs;J}6lU1! zx!-v4XOeF}%mneF(F)~A!(Q^beYSL9t#cF}cOC0*+qV5A8N?E(%vvU%x6Z93-!(!} zoQG4V{}0_`SCE%l2y51E+%!uNKa$-G3v8OPac*;N2(199)}{ku8|ukJsbNXQqT zi$uS#sx{|;pFIp|h75PCzx}TVY)2mb1=TE#N~uq@ldOPwX#9Mu(ho!ze-V@Q!R&hZ zt7ahMs~B$h*P*CDeGMJ2uRVnz*MKzn%}yn~jYT2|{CO@OavxV4D7VSmwU&;5jsX@2 z3UENehA(j$I7ZpQz>VTA{zegj7d}#}E_r}XYsi2hnJI&>uK1^4{G0_aOueG4RYw(5 z`aqMtGThSGEpO-j9W$EY$i&3mn%V&}r7OaT2HsFI%K)f@o#Oi!;||0DJ&DCC`xX6i zNhN|M{14#YDX$p+C=)LLK>7ai;esTm2z1MEcFu3UxR3m&6g z#M0sViGomw6S!2zVZ-6ysB-Xe5rMP|I|E&4-tFx{X8(<;q*ma_WM>0mJe5FRl6e$j zDLMa#JLzSHe$?v|S+tFi_J%GwbvC;L#UDYX;eQ3;|1~{3Jd?y5N)en!}6`v zPn4Ja{>(BS>N-;d&XUJ-Dkq-m`33vrt`y+KB?vcm(7U?#!_MJ6P_w)&ZgW_A{naN< zAR0) zNibsY@gOd>xgo$Q9$6(Mu*WFwp{O&Y19$h6!6vJx_bnJtKXfLAk@&bM{p!COw-81h@5V68`#vzFhc83MDf$Z;yH?D*& zKKQ2dj`iZdiA_}@%*Ch|Rjs3iYh;i_Je)Pjs;Kk)1hNG1xU1`X6Hsk# z&84glw;KXCvT+R1Yl^|4xQs+L$&zKs%9Ss*iHjH)rn?K)1NNRQ#PTm+tmU)+U$LBS zX7M#6MMllU#az#kzec8G*m0;c z-ds-bcZPsjDTJoUrMzR*T5ZvgN{^;@6D`wR^v~E`v=!_8q-2)p*T|z~I_z z)%04gDSTrRerXv*6`gj1mb*9iP)!>wb0`@cbX^*DOmUhFly8 zokSp$-|(81m?pq%>d#tP!q=O|VSCVC2Sj%_b2~l_=94vF!nP?#*THNiviapd*}dT0}K?<<)G$w#c}&FY>OwfXMvM$^9)5< zpzNrDtDkmhTa7(c7t1xF9C|DOgddd|+1$H5#xMER=+Nv^0{)?`oO>U^TXJsOTmXOR zJ2owdrXy9lJj@r*B615UuXv!(hM)KUOdryLGXltIMLtaQyJejE`E~=c3IAhY-HY?f zlpT4Y)8g2|In*NVnvfLcLI=B-EPT+NR2&)T z)*?1G?y&VZqoEr=?TS3LX1LxJ);0tTF-xmOU%+n@jW`HdR%lgQNw|WZ^-^6@bZ_mW zFgG3DCD$(C{DQ13e_;vB`8f1#T{=uG1R0iZBK zHmDk=Km&h7BY7L+r5zEKxX1;?r7kyMgmD!5k1*Ung|FNjZi7jDPIrG3RbH*H+M~vJqAM=?oDCB`VZrQU zqTlGNbEggoYymuyN&RAWdm#*|XJYgmv(pI^qIO1p*@B$LOf_Q_bd+|rbzQD+CR}pQ zu~{1h7O=Yx79iW?%os+L$y)?1EF_NCGgI*r|QL> zfAcIkc?M1h0XQvI15QM)e8$5bc1g!;1*uhN>2LrWc{7wLNN|K&kLqq;Uhm3RHs?qjK`rTY>U)7MA|G*G3C>K%R+Zp1;moJ=-$M#?y z+~x3g8fhScq6fJZca499MLn03k~3Ec?wYWDx>8)YV#GUt{|GJgF_z(npzF0d5|}vo zFlayD%*)FxmL}&pIjsC4U^9bGLIQ;I3ka3ooP?Rhs)%qi-@KM~`Yb+*m`=4Vo4E>d z9X61Iss1Rsasn4?WJs9{f43MFp_PX9G@@-PoJv@|TtPuElLr;9?&=S`oJ?v3u%?7H| zMJ!Fa#Zkm%RG0V8fP~A$@EU%4yg+apT|SjvYpeH%r;KVZ`!&5FD%pcwMVlUwrFG^K zYl-`Rp%3Sck~@nRI$Qf86<{U+VZ7C8vPi4Q8V3WGKqu5sfFs^W`D9Z-yWk3a=2gk< ztr3PT*3Tak!qgqsK}kQ4G;%U;`z{~blxHwZD^x+!%nlbtOgzsB6q~y zrqRb*t)G%rygK0tSfz^(lXX9Eo)hydwlS8f?%np}S~s^$+A>I|2?b3#Fh>1tp&{AV;&utjoDmY8uon94O$d{m%&3!rk9YL;0H%HQ_EXspX(K9O;btVQlg<~P0Z zG8_~J5>ezET?pg5Z;P{`V5Ui`r6^<-3|dIt?1QJ;fs$7r_!PwlffVQax_h;65ZrVJ zaFun{{H2r!RQ*R5mR}N+mFCL@0uVJC`6tPVe|HM-H}9|=kaLWui#k8T=j)wv?_fTO znLk?jC~rm;^o{dElc3nuYB>j}__igcbPxqBcmq%fE7d}qGwB7|2?7C()3HmFGg`ts z(+a|wf$s1*=Z#spGmUQ&zKmG$)r1TY7|p!lPb>9AxDqoTo`^EFP_x0{08DK<--bRE zO0u~H{V3=krD`@}0-z=0`{BSUB2?1n$p!?o0=iNEIc6*N=aumXHA)O6BI4-ExEx7S zEkW|o0ohl{Mz$@ur{o8RDkj`^>;$;y$4UCl<_h&WVY&mu(L6wSS#J-~^ER;0bWg%U zCv*2PA&&~p$+GMyN9Ff{M`;dj7M6EAaAzkp<@{O}m=bo(*+6bCedD)K&&}Oxwl<=b5N@w6zMRnh-g0Ae1wf@N5sI8?Xjk2hIT@-L zI}C?| zNEvQuDq+mLg;@uhYDR~&I$prwxv%Gsag+12AAcsQiQ+U}XybN{vCQ9d()QEL{a$g- z-p=;8bWG)i@e^&{6QI{A8|4&D*KT{ zw~Z0o_1l+!kRC9Y8uN5yQS3pGdG94+)$RKNVo(mN^UIklqBHl-9royQHqsbucNEzl z;@L&*2zj?#Te~p{DybwJq236J>R5ga{Y!Y~xJMAC$p$tE#`&0>VX`c=So3o1bv>>k zIO*NVe&0-W4vgo4q0<4tX(}45Y0P>$D7QPT7OBT-MX0a3OF%v5#!JsbJJ?rD8uP_p z;+WR_Sbj}6n^>9#n;FR1ZzlAj+nS~Gse+Rb-66(o3}YrMe*zVmbsP9c0;+7Tc+?nb zy5!d;HYFvKGVt`CIK_wo(Y07QQ7JYFLTD6F`Gs<$avll1cXnT>F>-L&aOEf5I-a5t zZXg3WAu0@I*aeXb* z@CWIR-1!m*!!^tzEZ6dyo~=yQRyKcQITL?2j@cEa5{}Mg2r0U$cc$z8k`Bo6Muet; zci(2kh~O;X6Tx_{K`xQ=h57kNe%#>KkX%XVHAL^CW=@k2Ejgl4$vZlu6Wa$niKC!% zm5y_m)e6yO1N`eymi5=SxM}Q$iV54PN0|UzL`ENLAkWl#{d|fPhtjp z?l<{kggWG}ZbI(16?=1vm^#0IGm^~Vh3>{2zi1VI#wFDe9L;KWZ%*6#Nn?>}Jo!Oe zNg@J9>|DX9J_P}Fwb2=MNnH_#)?TWBnJrW~VFWE&2NrX@qrI{=YEb*SIE@0$Kk$Jd zWQ-p?>>gJGu-iSeJ{IlFyUxrI(>VRN=Ch}x7wMF;4_zk z3EutONp=4z{*MDoE8EIxt1*eYTA39)*Hj#UfdSr$D0nt{vDrKaFxFrzDL85CkjKia z)X6v?+j2WaIzEi@j~-r7ug#rHQ_g;Dv~~=RMBmf?$-V1q#XtAOqPKQRmzD#|xgaC) zijmqLmn6@U{}HBH`ivWsATVxqj5c`UMa@YB*3Mi72sS4og&Sz|zFW3Zbla+Kn#A|l zNgEv#vCb}&YyB*PlJuUo7ER83an_|%IMhH<{8Z~)rQ-3l?=U52M~6{H#JO>l$8*O^ zbsZWOj_mE3TE&QBFxlsf@A2b%+~V^G<3?3&uH3vz;C6Mq_Zw$5$n0=2TIx+Q0n)e! zgN-?E&s+em8=7DFZ!I>Srx#b7v5WGsWrll%WQtAB__ z;1P7w7L0pCX`4<~#{Oc*r1-;CV$Cjw;jfWA=t3+HzH)l#~ zC~3zlXhYNr`B@s1CpVm;MgWSTYh_-IA}&a=0pE_;We{=COi-mz$olz#Njf)XmB5R` z?H%G&Y|kes(egdGsUle`O!`z|na-qQVC|#?hoAnw>qM!7IRye342+5sgRKwj&k0!_ z_DU?TBHU`Rvf^h&EY-m^(f?ri%7=VrNd_q$WVhDs%R~av^>o28ODUp?2>^HptW%#u zP|d?=Nc{K`1a>NfuW8G{oYbtx!Kyd*psoZb4tOd)U@tKl-heWgy$1#O@Y zS)>g+AgPpT5HYnzZ!PcI8pgf?>!Ykq4)dju`1rj*oH=)%HM{$4>mg9co`rV_d48h9 z=^J7yl{mE4TOcFuf^df44;LCmnPU;b!aRvlpUaL5p>CED zq3da@K!`c4*k-lCVZSG@s@FPAlXOY1fj;LLsA1_S*53Wh&P__ezx2+xNJ zkERxYQk@J_1^F@#+lFgFtp+X{Bmg$ML9p4Y}b$@BRBaFd(+ZG}2Og!ok zhvQt>AWFWXVU-m;DI4dYTxwa6$kGOR-EBJP5WB~oYIEby^}APSxTPUIGbBLq>A*|q z_+4}JZn2{walX)*^e-$FhSaeNaog1fXM2XrQzxRpzoAJ|K+FL{U)K~D;D^yo)lN&#z_q!uzWrwJr%|=~am`I8K!1XA>i8GJF2a zxxCf=r#a$W?RSt(?9Ts?DS&mRnyqoaDP8QenD(&Z8sGl%l6!*X7h8R)sDoqoaNhJ0 z!ZLfXx^7bWa%2sM7PiW?*|Q6gjrhYqziSt6fEYk?mOq^w2sHR& zy{UjMN2v{O;dPeae{*!o=TFN2wRv*2I01Rq86*cY;|~Ff6c8)0lDN~QKRXxGatzaZ z!3j9nbw}Ma-2fHy68iHPl(0ggE#|G#K9ynQ7`8^uMy$<(>I-E6og+A5@|_ZVG5-?c zS~OKx;SBmG_&_2CEJ|#_I}?}FG*!8Xq|RNU?4Fm!o#5`c@=7XpNCoV1{9?V;<3OMt z^ubmggKpE1_LS3I{#Pr|*z+19$o#mejp8nx=zeDwN7d)3+l2N4+BPAs65xWF6x_(a zPxJHzhc92%&Xk7r(1VnPbT6`Rw}vXiNz8C@mt(Ii_fu{mv@tn;4t*w{(O7uHgelm_ zn`H%q*)!xyDogM0cK!OcLW@4}&c=4L?!0uROyCkrHHNy@Z{$^VOj4jr72pNS8tM?H z1ICF~)2+d?h|Ww6Oy`8T7si@gWR z{YtHhw~>uI6Dk2Pja~zH+_>?nd>xhjv5;lb4HCic$YGuPe(&sfDF8hSwsZo=TJ48>TgPLkJ z89oiyo}Q?^0Pm>2!K0}N3DA5sq1dL$jkB~a)tv$vV3)f|sY4U-JEl9Gj_*!}FN=Pj z*P2ne6mjn4@_wd&YO9wEy^5iRCIoP|#)T~Be^q@5(?pe38w*gw9lX|W6k3%T*JFv% zRA9rC&g*;|a_ELghE#%3Q$;2YKz;&H)5&SMmEj%Qn|lixB_BfJMNDqJYaQ?OG48DZ zas@OOTdLiMr>x=;Noo;-RRRdTJ~!~kfP$*J3&a$fDmSTdcD~C&@nK+BDCKT>FP6F^B&@aynv2P?LK0TNTUJG0 z147A8->=)1zEG0O@~RVmv+3Wm8GV}=PEtC4}z zE7B$>>W=sVIUd$FK2b-5(<5k2%f=fsW~cnz-{4N^9~+*D1L&Y{YlTzKvC>xGG+*|K z3loNbYYbU$Rp@yO4Ncdc{}lGxgzH7BzQTb|;9Dhvgf^C!g?Q-B*Zo;d%g$C7eJJ_~ zKI0V93O!F$sC3$I8N2|+BHKD)T0q5yXiKNz<}i_c{v>7++@XETezNqyCs{mF8f>6~ zHWH3{w8K+SWr-9Q3Wx-`oQSdxJ!5%x-6(!KeDEE~(MZyrjzr*NTt!%Uf-2vIL0XZ9 z!mAf|hTeG9Np{Ufc@?evaozql_9v}8lr|4@5Rv`zRA3? zvuM}-$#noZqCR-MG)sN}ji7H|?`8PD5z~zyS#|l5>1HWUJ_^z0M7O?HzOpe2Y*1vj z)px$f^r!%`15Isu5~(#lx+ZdW$Xj^w;&&)2?LpCN-a1~B@N)8-neBS@T(3v>fHoN? zQYjvk_);d87Qbbsv4FY-ps={mi5?JyIGt8uZ198B0ijm$YqX&^whu)n1vy%r28d5* zADyWlG8NCvX>M4>Wm4dOi>0*tbkaL0Y(ar(%owwEyJLq%_clrH4=q*;U)Ku^NfqtC z5DaC1r^70>m5Tf6bQAI;J1+tl?M~2Sqg>`M(=_Q5=YIzRgt~*o(UXg?Q`R@Dr*Awu z71y{)t;6vc!EOY9OCb*b^h}B@o>lQ@Dv<#dngB}MUiBJZEPTLzqP46fo>($ zG|j0f!P+xrK5@^31GN_MuC&(5?4kMNKb6*t!6jcf^Bp37AGS*X^g&D1=@w?$3Neq* z3otkuQ)O0})jI0H<`QSykc-oSpU2z3er^$)V1SmVNpjmid{hIigQPg>T#%sq3>E?4 z<61BmVEk&)998I9-?~x40c`|T?}Bz}m8Bk{C{}vzLR-^Wvw-7$$--lHfi86%+ud#l zFm_n};QzFe>g9esFsBny4QR@wE{fzNDGWfBMVO3Rd)~Fr_bxyi$!A4Jkf7iore%>C zGSwJ}kia_vme&eD(;u|+-f+lzT%2iOz3*q0byh{Qqy=#_`HJFR)c>IVl}z&wIU$(w z(|;O+T)ZLsjokC!J_iODwa#vHT>qPeU*VvbfzrM9)L{Uyfcz}k$4h;+K2m>2a8NOW z4paUkq7V5EA~em#6kE}x!i9biGir6S$yimAg61VHWW2lH*FxEEOXLC`T7vj+XhE{^ zhry#_?Js#pOLyTLxR$$qjq4ja>A%oDo#0VpWX;7fpwLw9Uz$1Fun&r^e=q(9i5T4mHBmaC zhkpDSW_tJkG!CW34aS!+RFjDmLPOk}GTlF&kpzjotWMssVC=^kfzo zHSGBYNvtt!8u1`#TVdz2{S2-u7!pySgCp^dY}>f!D{>)Qq{!bHLmC=mOp%=5Lv6=a zc5YpA9t+IJ$7`A<*cQS?F+Ny5)5*(N4=@^A!=j3srJUQoGEO%|w?Yqc1G`dv$aK>x zf!@Q>$iDlxo3P52jhy8uf=;lsN`A6uo5sCPHHcaxj_z@8c1(2E+|=2Tgb~9#Qnz=9 zD_7V=r{55Q5c%M}RbYaEb?GAWatE^@8<|bd@WFabEhXx=BqTcCQy+Ckx8!;2` zDzQ(F9OjuSwC5b!nZ!d|&_VZ_6?|vUd2Lu6nkZizY@Zq8g(g8XeN47j2_o0|1or(1 zskR#O3u~a8hW}wuEC~)Va1<8&b|&8t@3&i~tUtN@-0kSpl3u=7kq=hjS^y4SH0#nI zlZL0HRtv%bCpuPT*xM$*wALC37_CCSR?iChD8CztRc1^lPSo~vXEgyMIvAJ4v>o^X z;oJAI7MU7GUF%U|(alKek>B+31F{QSb_F~U6CM5=-(xt6zf;Qv0ETS@k7H%^U1}h- zr+CfbVGiITUM`>WS=R7DCkni@OZPcWc$ZgaCMn@>%PBVHM%u6#^@-wXN9ncjX1s?W z8{DCN+gYrv+vyL$lg9`6XpR@G$Q{?V?AbqALu*lPBKzJ0+x*R&>vY0TRLN}<|0XkJ zx-g7MA-C!e_Hb%fYRP$_Z{_}Qg??cz(8HSyO~64s9fcI;sr5uGIwOzngi_J+{SQkV z1rC4kC7nzp)0Q_Wwx=G*6wc0POJ2y($V!X~c&#iii@J)1c9?HHexB!vFNhai|%Kp~$_A(PR&Affdzbthfu~ z>nB{+1`~i?0&jD=o2zijwC*l77=UUvEjrFE2C2HZPt&Ye7TS#%JR6VJgs9179+hO@ zubF=-H#@E-e4Pm=Ul?9z{E^-L!Bm%8yKYgaz*f=!snh=gy1Q()2 zU=7fx=x|wgg8zC&v7U=IbOukhay)xQBO`VU?{RO1FKAs*0XkV;HjdL+$avB}tm&Bf z+?kzfl;ot=$Cf<^br@qcH++c1Ydp04*}v$i96$7}T2;5W>(o3oCpbk1jC&nnJ&2hL ztem%lfH>8ebV7leT?YY>;ur?}${#`>-5(NLKYY*mj6*WImJO0sof9udlMFn`auD5^L{=%mzcaMAY}Tyy5rajQ7QwD3P_;)3}^Fq zU&DJAPC(yMuyU|gO|$BP*V`inI*Mo`%C%RrU*tlzo+Now|9{-SfD9^4&L+OOS{uNq>BF?e)?d|jYIT2+U+i2NM=3CHc^7~psc zV*=6^uli0`@4CF0jAe^#Wtp1heg+1A>w0blO0a2FROwwEZkuotvNFBtGl<7K0%0K_ z2W<5rQ>=S*f#CV)%}Wd7ix-hN%DK)AqgJePtKpQdL;-vaHWfWqU1EChp>II1l6bf0 z&@i|*d`*A0$d?xPo(U=C$Dy>tBtLKV8s*{nOT15o2ri6!|Cjg2J0-qxS^XqGUCfJ{ zt^Hmw7EvZl*P5@=1BZ3NefTVI{*#dWwAc2EYfQx#wv?*`-_sYviVr^knUH}G8p}b^ zJTrDS0GUQOv34MEG-R9yaTqHz&LtU07f-(*OcPh6TM zXtcJtSEq1;L4I&TwKk6k=<0Alo?#R>zJm|cX>{=}c%nO=AT@}0K>;PM-aiZN!=(Lt zVxQ`zHeXwBm_SyVZ1Ojt(i!RQ?k?HQoazQH^WRo%L90C0;3Hzd36(P6lVou7A1WUHb{)zB{ke?aPE2@9*B zwY;!8j>L2Dpd;PQnw`nu%(je1z4a5}N=uyZ)9g)YZ+mK-icw)Ghl6F~@%z|DihiyY!X?TFm)wpM=Xdn!-d%W4S-Ru`khI{68Q`@+tZB3q$l1?N7v z!DyQswMbdGHDs`BeaS86PG`cTd+tUKCK`z1~Tdmg>m0pi4QQ@Ojj!2B3QzZ|Iv zL~JCidsYgJ@MH(Q(`FYe0=C4<@b#-xI_tVZ10Gv=W6#{-SiCni)liAH_loT>sHWWm zg6=4~?z^D+4FuCqBD_4XAsXOFxHe>KcLT2g0`_6MXqtu_YwR z9Z40foWuT;Z7)2zh`rgbCjc`*%)bWRoaTP-i;5ZHrY(~Am9W)8 znUv=8beC<$Y{5sd7{Qi^S~4<**bfxn`B!u7$=tn^_PB2qR{XyXB^d95)da=T`#fiP z`6CE&gTD z@;{RT*&F#?nsNW~LXbrJZ7oEZ>Xje=lTyEw8p_y3#KeUd!e6Gn%ItkD(f#OApoo=C zhnu+>DNsEc_?MtDfwGd>*WlI+E+i{yBWvu2YK>JTh=-J%FP95hO@zRSlTj_#>v9G; z15#5*DiKBV-pMg#hB*=KcGz^NstL+doPY2N+vp&%NK)_#;gZK;zZ+3P0A)A^STTXq zuU=1%1R6)g!?~p9sQS~-jQ#tcXV0doHGHaNY@c&4W&JY)FFRV)8NAhyoJ{~sA!N2U z85#E9R7p$ruJJcyR-VcCdeeeZ7KQZiMX9-oN$U$E#mwftfGv+`R|*T0u@j3^XwzLG zN(Ks0iXYJA@8PftNgow-MV?$gp9CRbP7B!&;DWXp5*EQOn{Lsk&>{u_?KGu`BuPWO1z>W$Fw zWTQ-X$}vIKtZ9R;_jFbPKUq|W;T;aI;#F8=-o2P{8y8@dbuXoek1p)wRujDpMm7Dp z5Mq5 zYkU)Lzgq|$XwL}%yoGYZ!askRYhJ>t+-~}~6ry6vo!a#}YjIF21zy+gc02*qX9 zyOA3NMN`YZPAtO&(pnPNGRAi#hW8+rlt5!~oUai#ecNn=E4!TadU1v~NughCR_7Pj zdDbc-rl(UPXpjS7l~0u=7pM8IMZS(y?Rsyj>lM1@^f5KBX_0DFSlZ57NxgxTTO>WX zhL`WB07Mg#=dT|wb>Az%X>|Sv*rZxx!k`{*>21{=Z4$)nz2#+T6^>P+O5(2oQZ$D9 zlpUM4&nM=@U#pG&BCZ+)`MQ&(=yk^nV!Imq6yEM>50}^yjd2K3dTr z*tOMWYe8+6VwW5}$iTZi!_R6cUwW}C)BN!}b_3c<)vraakH0J0&9n*x2xp8j^QOMLfBZ2R@!bNo~L~DLnTu^B5K!`P) zu?kZoL4I^2`mhVRyxB~Z)hW9X*ukY=JGZ;h=Pm~f;a^P4Q;!?n^FC}GzsR(!pkpZ{ zY-R<0R`AB@)aW$3PpibS=B?$sd2QI&2i}-Oj>tSM{e{6m8wH9YWEO5=1Z~Yr0aq~P zy3!6h9(KM5A8}|@p}R8|9Ob#j^yTF-=*mppF+Etv5540-iOYRa#i^FuQWTu13!X=7o9X};x{?NHJX zjX-ItkY5+9oTbtij{~>)nr*fVxa}iIxOrA`IW_Cv!0j#4UfT_ z-577xseM7lbyigJBA>gINu|qV1G+&L8@nA4@871qwRB@gQy0#y-_K;G8vIV`RiU>R zEsb3gLR!tG)HgMwdx9Q%#)wSV{F_I5`k z?G~RU7Lk66-9also3cL@K%EQ5Z%%j0;BY`6&d#NyN*hMK2fQ*I)ud9O!4{-zZVVB5 z9=$KZz%W(0cjjqp9a1evK7G{Xkrn7K+jzc!pAt8)In%Gyl?o9OaF(g;%&9NJL%YRs z6p^({nb<^b##g^vXHECvP=zxLQ83JqZP%+LN+Qs1V%>~5yN;`{X864Vb2G5I?}G;MT=xi;NE|5MdWyG+CPWAufr-lXvV`Wj=%REev%&haFPM} zK757`NP!v%X+}5aM=EvNf1~gEK#41jW9ePqn!!K(@J>BQS!{~qNt9e8)e$nwL8ALR z3;l1D)s$D12iU{hwKtd>PM$qO^rTJFQr3YsY}!{NCqzT)VP52-mRPfvR=b5Y^va;T z=s+|*bY>j+Uf~Ii3Py9;fc$5F3^;gA?Fru5UQ2boS5VULK2;e@a2d&IRh((eX&a^I zD6y69MG6gF@+YZHCZ`Ard-ORM6cRLfP%0MdZ*k>6+&yVmBy>s_PMkx~t~*`2_w0?_ z0{r}l4NuJ!&r+HOrQ4#ckxaCN7v`%yn&?2M#AtLTyA0==-;nCEv*YB?uHAf(PA+JX zE}2B>dw}W}%e)IVZN847VwWUHFLF$H{uZQ=pandmU^~cx8csXtC2-Jj$d7-+>Mr+2 zwIET=p*f=~Mr|I=X4Bh}>W!JjB-fy6-*3Vv`53_XcYPH-uO_NnFb_t`eil0NUbAGm z;dexoKU);2u7qxUx(xgpA|yJ0vIJ~vvK;lvXH1_mYj z>z$K;Z+Hl$ng;5(A+tSa_P~c%;C=@z?6&6A^XlWbkMbtcaPF7D(k_54$4+9no#a7@ zuAY^iUlB{Xm=~qcx&*{467A4EUNUXpLTib8`alV+p4@`cA8_S2=6Tj{3L=%5!0P$X z3SV{nszie&l_(vk`R-inZQZkf0Te|0r88imjP?y2ozNHZ7`n%I>~r@$goI~Jv^vmg z{n!js`*fHG12oVy4eC@gie%4$cg_e;q#Hgp1*e7|)cQ&4q{HJa&z16Fdc(&1hN?l2 z{SA7&pQ)C<$@szx)iA2B{@;vQ>3CADff?`zqAK!MCceYaWl054axdF{T+6Q?3?}jI zsn4)C*{Gv~n{^_u>kbnRL>>E}Izsl)zMD?K1qg#Pn1`|<_bJpW=kh5BvUMc{vi-kl z2hcH$KP>8DeVVR(`rMlIHnApgB$HfW2p^m}=IA(6G%GIfVMNIn0T2dwb;9HF2$MH^ zH1G+QrOCH&78)1m9qXzJeU#q1K{c=qP-d3wY^+yj2VSyz3Qib5Ur>fkR?GEa zx3uFYR$O;!D&=}3ciX8asWtQGn%fz{5%Jr41*zU_ywf{4LMXRW z-3seN+22qvlC~el{N`BCFv)1KVigq7zkns^2k#q2Q}kp>7N~P8%m%E;xlmxA`*|7K z%=qMr)`PjveET1B@)J+^}DcJ8tUdMDsxjc>_3M#ZO?M;3S6}RRD z)L({KJ)FMeM)dac11vD$*R4r86<4Tn%>fhQa6+A-^kYpHAxfla~jOJZXZ2JcS@2(T@NbO6mQ1D`Zmy9&jXt& zlm3Io#cg-!bUA^*z0Fvn*-|io<<**I=$G;usx&2pFdwW={|8&k61v1)#KjUBd`D*XRNm(7}vKl|o{cs!W=;L!9rmQt7?)(d2r2gOc2A z@{iH-lDY_>W675`lw0fBXfq1M=s3U$4Svroc$;@4-jrHPO3g1&Fb&7w6XK|RnUhOl z$3Q(Gm{1PuXrU9?o1{@B^SoI(uy%%;;Q6U(MgF4!*YOT+b?FQ{?~njv*QbTd5gwtS z@V?^-zeZ>R9I)AK2xp|#E>;EiJ?2?j7OaDO6|pfg<5nW(0g(h8&K)g#ZhiB#D>FoC z=UOMo2Lp>PNdU}{N|!oXRU3EfnI})odu^Ky42(dwYDX11Y4DUtTrZ!}yT*#jv>(08 ztE~bz1m}Lf$T5}PjjT^W#h#C{-kyk`x-FYciEb2>*^Y$;iVqjU-;yr52i>NCIO2Cj zxhnNqaRfB~vXS?iOm%%XQ3J(gx)=K3o&vvFIK* zAF3_1w9~&z$D0GXrf**kDBGXX`4ZAuR)1JFYz%u*7$~EkS`5t_hEbBXs(22H=FiPd zr?}n^N00EnT~Fo+ke9MWLc0-xBXg@LU#WSJkYW}RD>>D6n-x~cWdkHj*AJ#L+J_9l znyol+(PQw9mW!CZ3n-wy27dU~wZCrpVaw4|pCna?aX&D{<#$D3I<8qN8Aty0HYr)Y#!pay}5Lb4#0 z8~~Adf11B#0`t2wdnazGK==fti^(HHs;<~G?9@}%>0asZt&BB$5xla^oOq=J_q3EP9x~>S{$X}2mdF-{oPNpD=4e3b{g}+#KX|P+n|xB_D%4D zoBa%+JbHt&Zv^r$QbzS>T2piHQ({YPp=Y8I@BRs&j5X?u86{zZEczJV=34X&=A#WA zyc0(&U#1uK>By`%A(Q76lD2)VDp(P2qWv+r_i6$pt#m1En$Q^cdn7#Jc%fHqbHbP* zJNQ`h1gJjl9^(<{iw*$)pdeaS?chj2L1w0^0T=jV{K+%B#EC z#pvg<>$f@?p}+&HGbLhifyvvj{_Ru~QPE7%7b_Gh17L7sn#Co!IeH;Qdm2aE7WkKO zOk0kz)_~CqrPO_N1tGu=u}sBR^cU&MkxY_vm~Tx=z{|dwl&+0kSOqypzfUn8W67g?zFoF9VOlkpOUU4~~2k z^(9{8_8pCOYT0}g`uv`X-sXwOP3xOJjD`GGhe&epvR_9!U6fdC6TaG$zf3?=nH0ex z>|V#^$Gg(~xW1)5Xv8f~dM&bH!7)>P9Kwksc|EXGBLMP3JT&tKxD=pM^c1UKkWJvnMLaAk8*oj9wh@;HV<4taeC06BFP>f z9H*{Q^;3r56(Ov*i6uo~0@$K&A;hKSRaU*S0M#hXmgrXk~mTNE}!n)Gbfi^^11Iu+*(8sF?Fx46meaD z=4#%`80vJ3Ig2-o(?sSnVd&qCnVS~fry#y`V1V`fB;&Fr@EIIqQ~kHOcL7;S&0pt3 z=4EM8+_AuT9TzAr{-(hons9^weReGK9BZZgp{`#^o$hkv1f;PUfoQom!OkhQl#WC) zyL2Ts@+u^T_8pEfi1g*P?3%`S4wI!VFv+A2ZN49&Hp&x8NMPF(Qfa!GEs~r75p`_0 z+P{wvpfWHuQBDLB6RnUEa#SI&ol;}x?zQJ^i^Q-8MLM2r)|qV*p3ZvR^-S?+ZyjB7 zw|O)?;#}iK=8hM7y7Ya3wbr_6za5h9a`3|9OxK zUN>`?G)^}pM)50pmd38sMz@3L&G7bj&RcZZ_Ha_)l&*zP$?|?;b*(?ViFE+o9iCT_ zs0}2<75v2a>d?T^`37EO5l_7$QRajG;~pF^j=RV@ z^2_{Qv>czX8?~=QEs|vl2SI$oVQsOT8PhC|$ZQ)?*rf1b{XCEw(4+Ng5}FLODZPOf zeg-*Zj=v~^R6_xks)o(nQcM$E5-1k%CWX2tM(3EBRhj@g(-PV~DXG>M0x|CSmVgy> zyJ`Lb*X+G4eHvvms%)r|JeM;DgPqJl%`C(31JlL#4S{!eN~kNyNMrGJooSK8YgRz! zi2C`s97~L#WMFY*Md-1imEYNZ1fDz^e<>O`ZFk~~u&oCkI1fdKnWpuOEQOwf=?^KM zEZcZgZ8q2*3 zoPqL&8|Z*1ns-}CEo#W}sTih(DR-pA`&WcJ1K+M-lizix#^@XPpb;YFRrRr!+sE4q z3_^En5eM9R{G@jP3O|>#tj?r7Lp9SQwmF!0#TGP2?93H)N70`KD^!JUHub5pNdTxc zQAa&)Nrpao*Abc6n^8GjZbqq639gezS?cSD{I{niDxf02@iN=23$2-21He!%Ko!CU zD_!PGnVF1HonX1YbSP$2_gns8D@@xT$FAbz?^3(h0FjvwD6bi%!4q z-6(bibOs`$65uqoTIL+_OnrN~{VZi#i#O#!S8TZA)QDD1b8XtX6OZzddEcw7QI3>J7n&?6lr4VsJQ0M8PNMiYG zQhPI_^Pc<4A+A*IQxO7mjT?L8DmPVKX*0Q^2~`A+I?wc>Ykh~_KfX(L7yOB31_UJ!o6Z5MTW~NFKVr^Gt@*x}~ zVxj_`d%oC>3|61}3(jAO7=#$9={GgBohKfxl}z*gUlENBjzD7JfqAQSsV(XmPcs?5 zE*Yu9b5UvS^aOm=hC5+V0zr$Ka@DeG*AqRWHT^847W;n9u#yme9JaNeo3oL#K8W zOcwr?7CtKic2nAQqvxZv`sh-jE6e0^K{q8_dk16v;7pe+Kq zGx-S6HTaYScbU~Y{(>jXsYU^H+MLy>`zEWnaO_%OMl|t(ztyj0Ry!CPHANRngJKXi zB#ae9wdocKd>gk>+I-?;eJZ}&i63u+6HMW1&aObtv063-_yLTPv%@q~;FqSMs~@vp z&}a{BuWiiv%cD5ArS$_sl}v5D@V}bO;Q7Zlw=6tz7joFW3C#L!JZPs)&rR2eA)zbuzgQ^EUlV6Ti7+YhYQMmz&{4;_&H zoH9SloY7A^)Im#_z^I-jEX-30#;=ZfMji}kck;eT7CxUR>!9Dl`PzT~ytmr%h=JLF-p*=*J;N2m` z_?Y#U*vK4L7DpSTV%u5g6$Y*CT zBzb)bvY6LUp-`3e{*tOyTB|Of#CSzwK=m{&` z*~VA>TXvHjHvZ4c8j1eYOHvIwE6SOoq8UhtDwx4ZgO|5d6L4Yac$iXo6j>L$wxL}z zGZ4G*z{nQs)kO|l%@-~4a;5P0(S6RmB8o>Bpi1{rKmrPP+IWhA*{$;y?3w$4Fm`+S zVMBHeHy7!G8O>IrG=0+a$(2|R(*Zx6>%7{|ih29fj0rC(>Z{cu?^wCa?)tc>t%3d& zZ<1TKJye6`T<~=eXa54o{ysfevZ=}fq>BJKDCQ~pU&Ijn=mCbsEQt1>=+zNXsRenmkGxKx7oXT4z=tVZ-bQ^i=oW>U42T*CMq z`|v5>4>R3{o_fTB$*alu_4~CX;cL6dPp}?lkLK}aDE*TQl@^fg$Po#Jm$yetT}2ue zud(Xs$GqD1`-IlqGVi)u6nrKRDwB;mu5~Rf(X7Ez;)}}CWo94jdZ-cXHv!awU)zvab|)IHhBNK@MmlH`vAe)QpeISEa5*G?C*(U8NX()%dM*G=Csw9Po%w9| zRfOjmRHShmC6qAESWTd!Hy=l<KiJCe~OG&%B5dE2;^phb-H+{aZ4oR)x*n#_eZxOw_(YgwyG~n)UL!&NA^$k ztm6$%Kc(^7jcBQ?lfgt?rgwvj@Kfo0U}|nFTlG)oET>XRUy_Hz`pLCXZzEDZ$Eni& zzL{2w*KJk0QzXpNpiaKP_GpMOA5sq_nL*D@;Y>`N0-fRqhZaffTaNYPRMayj-6bB` zf8pcok%)i=MpBrw8b^d(wo_?Lb~8iGym#AzH~do8l^+j%EDdN!bIO=%XR4FnEIa1Q zVbE9Ys1^#aSH0O3iKTVQRI3CVIym>`C()IF$hb(g%KiH7SzuEUOXLTItfSoIuk40h zFimzyq_?v%1_kfvrEyXTSq=&EEcF>I+qMak?B&YRF4iv!scbz`g{?_N?xz3PE1Xc# z9A8eUX0}DE$>g~EWFenp?tt?xGf#MKEN^4e%C(e7_`30YaTI;wjVWe_pnPPcM#pEJ z@%(Aa9hI`>7)YM@{oDaQZD@I<2$3mRk`sP+#F~vj=Dz!}Fpz^VfU6QgE=7BjGZh)w z&H^YC`zk9VX;sMe0f|9E_y2$uWtAgxPD}bZ!B|zx8)FJ;Rge)Q9Go~-R+}H3x;>yw zmC!SV-XHZXwt&}bU>>GCDRGcq3clc<4sMSLE2E;fF0aYdHUPr%?TXpbb)+kcy|-c3 ziqDbIY0|)RFp6w+B$P*{xRjB{zGT8fM-H_79qc084uf@d-(LpuOiDb|%y@_z7w}|7 z>%c4}fOx73VKfY)f-ny~Uty0zdXvx15*j*1O;wHQTI;yz|41X%fXkKfjqZ57m} zWt$dKslg3reD}>~0aoY$4IW9$2C50GW**aO7K~ zY4zWF{JF}y(XD?HzSrI?YamwbdNXTTy2ybO=}1)&x|R;305u>rkOqTwE2@QD8SjN+ zB7&YE;u0f=BTEX;(btNEOgiyrbPyr}xDpr~I@_Av5kC?%UhE4PD?x#LH zRMlSW#~S!J<5*#m{MQ41uLzSvvrEKGEk!W?#>1S=VF?qc10t96oFQO&GdV}e@JyH| z4%|DrrIr0xX?pNuqaZlL^iZ(g<`1wzMQ&L8sqZx06MRo`(;VorVVwvNM2~f_$T_~p z-8(H+%J)k>cR02ct>VJ%DKRS>6O_QEJS`U^Eqv*<%jAq`lfhf71W;w1j3K}dDQ9(B zXHH(ux(>D`fU`B$)%YY(pu9n@qx0R**UonJo$(?#$7dr5i5`yq1+X-=#JjG!8sZ{G z-L1?%!xD;?*%G=u5Y>=t z9bw!-RDR$V!Vs?s>^3IVvaA_uXGgU6#~2JuUc{-Qi&ABal12In&^U~7MVmFmj@z5* zvs#V&crJF)P2&Y`Z@sj79t4<+G1RZBfC35M-#K#c$nGNbFre+ZX4IQcCGm93-4l4M z`kxYIfrQk;=fQb;_-f#|?vF%s^P}Jn2x@uM5MCugKaWr6Ow9=`8{&CJ`kK{YQA&&V zb!4YzQEzU_0m0fF4t`PWYW+Q|<57?s)YTk8`9runO~XE{*&f7fSv8k9zIr|FhHlws zU}wUb3{1-fz7K@-P1St!#9tm5)FZyAoRy@Se<;}8SJtwjStSj0PX9IU9WygH?F+d@ z=;^^Liub;1X}*au-G&aEIw?s@b244P|L&1S9rK^Z$BAje6W}^Z5vnosIw@D={Gcp^ z7Sxf+gDx(@jIij8bZlT`4Sr47bGRCAyJ583mK<5 zOdUHjdooFG)Z|3L7h}+6)*!}wcc-Em3)ekRaH<{hlHbdm;G8lC2EP?(C>Q;Y)4O?akhc{#ZSbt%?J3WFtLHMm{uY~`|h(mZznWC*jmB6 zn%Td-sA5JzTu4PY^YBW7?RR;A9k1bB$0*GQTyool*X{3_;ZxbzWVlk zXgp!-RagUBIWU_=Ih^Hft~;g3I4cqi9dh~koSwHpoWVM6TC0O@x<)LvHK(E=1Tjm+ zWz&mH4x0ii=W!D^Di$>zg|g!=tL-=M^MX&`CmSoJK_);0pSuKzf!Fz5^60dSlJ}M7 zKGr1Fsmv%5Ap~{m8ux}eVtdftc?xQT*5%MCJ9T)XN3qJdEUxnq2iM7TBIw@cgHNXm z+d96iwm}R$bzOl{AdrfJL{?*u6qFnVEN7U#l&(Oi5Bc(td#tYHl#o|d+Yi}tvIvua zK#$WS8(b(au#(_k>f8O&6R>!x{A4X@rn2QxoFWtR%*~pH3cgDMl_92I@pSVH5D)fh zEQ#KWnGn+NhxsP?+F#YXtE-FmbyEyKAO9g&aNk<(SdwJmt}l8j4ubjMSk4fRoH_Bxkn!-a;a zM=GuHNfZr;9xm7a0`+sn7Aww4U`A+xeyihGb5;BA29-(&!xUnRF*wJ4W2B@bP(EPR zVVa#WgxW+ZFI%wLu9sm5yUd15o!>%})1jnqBXal^{&NR2!gd>c``=bqpHcBI1>=F;Id4j4`EQpk z*4pnxwu>c4!w{zg@SMEQ-h{95Qaw<9?;~iA1L{cwuPzr_c=SOXSVz;Jwo9R}&dJ8U-uJq_|TNYsFFPNh@v`j0J&%Kl!&UhbPd)qCP>m6(b$_s3waTd7wvCD)EtUu<37T-ERUkoSHtzqQyJ z()U+Ib)7J$s{;5ksLJ=g4!kE9tpgm&Z((A>nY$Zh=etr^CxhW=2aCfei}PH--+_Be zwze%8>@vI-S;ZOiS9xzIb2M#t>S-QL-3=eB3VwZ3w-xoD&Hmln1Ue!S?`%dwWz2M) zR$!|XJhEmHx8Y{(ttO3M4~7AdDj8nx;U!aFZ#}ocIvEj4e*NXkr0>0`8UzNyOo|e{ zqE>6eK(e~WzsYdXfA$qS6n@8R+!4OUD}o?<^(t7({j)HOLCNdk(|tmn6s+&@-~^=i z!b4>CqqH+ece|JHE&~#@hW&ZPTyFwa=r|zpER#vLCNpagKNq@2VW-w2CRwkZMX=1q z3LAhgA^7T>aStWchxw3zrE>Du=rW}yGTrr(GQdwX8~s33AIzWo-8_;41|7+^B1Hae z>vN^PQ|=;Kxv2ofxIU3em0H3bc_@dDYrd?EGU0!PY1vDYrJb_34e|THq@HD^e1@jjsgWOPhcmZK|@eh7I%V$bQr*DIZv}( zb~SH0H4^>o<#$1NZ`S&}1Tc2?ddk2{AnXf`TF1mxoEsN6F)1ujl7XBJKFUI63&9(! zf-b|}I}X{?AnGN06>8G0w`2`~ND6L==FDmCFc9@JYY;p3ZDHVwHV8DC4nUHTSyhOT zuieeRWH=Ly7{wWShIHjXeKz~H%L8WQH|1{RcDy;8S`ws9`mD)hD;3Vj5<$1}@oDR{?T6O$`p+tX5a$NH6d8Bf0SMqTD@DosF zFmM2o^^KHGxS&it{s4T?wk6~7yGh0!I=uA>A3_^z|Hl-7Xo_%C!_rSs-zc3_u&Ul( z%GvZ<-^~w#{T)A})X2{#qkqo-*Zsd7a2DsJ|w}m zh=g18WN~KW+-wnCqR|N{s=S?({+YDvJGWf<{b*#%wm^iN?TUMHW92m|kAJNT>Ouy+ ziM+&QqA?s1R*^-Pq{EH|x}9+akHTCX{J>*!m~P_1p)_yKSS}5O$CjNqk+Z}O&w9O* z(&>r%1VEH_z)@CO6dZR>L!pb5$ABB8Q8xe3&`76=`eQ{}wfA~Pt~rX=Ka-m_a|`x% z>czd+B>VtiWb9AI&`0f103ALhXqIOL3`4BCb!LF&&&^J^XR-U~&{jH7%v=5tx76XW#^^3XD5>u*xIb-@AeoCKDrrJK_RE-aPc*&}J_aU2w9 zKteI%tbDnR_gbivK$+BxI67I*6R{Bpt@%WTX<>R?tZXZt1jMae%UdGT#u-t23+K`Y zgJm4iTeCLCc9i)ZPl8tqv9ZKSb3uKo;ZvK=&aC_#Om{&sRb*ejbNrDJ&WE}r~{9+T6eP%O^WVyz_Irg27q`jskOrpFj7*Hyc8UF!fy5J4cZ zxE_K;E%*t5zm3yDZ8qsktagZ7<5VO6=2u18c{K`BVZPk_~DO0n%>P zSX8g2W75z`<)*9%QC@|k<*`lYzniUF@iT2I>)=EoBmRSUevqX?VBI*dmUXC-r1G>G z5Do4Da&G)nLX|jO!Noexk7^seDUWs2FQO$LM$~^}@_YtYe=4&8$9Vqr@^SV9<<5}I z$tL`_ktpXu2_h%4S`euLbt0N*dGiqTLF8PA5HrMrL&`i`w3LwCWZDPlxE~)d!$HX2 z^dTggf@cAaX>MMZoSLKvWUUQoYYmb=cnM9s#&6eLf@}|IRR;LNz3(zo$`K|wSA#JT zk3T%`{sGBqp&SQ>7#w`kFS8vFfq?T215a#)jhSX7{$qI%Mg&25>d<9My}pKAF~=jq4Y^~aW;`>hWPKOy-!R8%s~QUBC~#QA4&8^ zoZgG5jW^5%YeHEn!d7M;)4ZjcZZ~gdOBaq@efQ~c|Mw_MI;9W9UDy5(&n(OAcihy9 z5gG`aY&M&&PVx2~QLF=k{?(nv0AU~Zc#bbjGNn6I#Kb$w|E##@(sfcxIutR1$kcth zJ-u_=Z_!mU9&~55kY1=|#tY*}$e_|4Ko(|V4HzXZREdS^$-rSDw8p2SAvStaVaiie ziJEwuMWDKtHS2ZIfo_;xW7f_&Kkc3(P2!7T5?UMkH#)oWW47dx+nFjZn{=5qKWxPTE)A;+t z|EsX76y7YU`tgXGChv0PU*nt?5gpII>dewp&p@|qTK>?t z@TJwVXX*FCJ9}UBh6GR2Gu?gJ|AtpS>3HlssH2@JT1OACb6B;|iYT&}9=&Z-uuaJ( z8S%uUM?tt^<_eXp92NoV<8UV?V8K^%=qnWw`IGBM7bi-~g?iMHX zkwIwf1GRvy>$!@YR1&VIh4=S#D8%=$W4S}awG0?8D*8~nYn<7YCj$&Yph!p6BIw@C z{QUHH%f^xb`}u9>tl$qr_Sv1nob$o>WC165Tvos`(b;pzHJ(A)udqK%`&Koo^fkb@p_Gu$ z0Q=g$&eFcqwkt=_4Io35d{3anraNV@ceRN}10~A%VOeHirQf`;$fWelIy1&9-T58D ztg>5B|DjlZR8Xl4<=QOz<``87hvy`nEmmvl!8)AUKKmxcVW34&Q>ry9$FJAuX#dcf zfRY&efd8>z4Um!-E#m zXT)e#d9-og#qB|C%ztuCS^cAszv!dzvoDAAco?X;8yTHK24mQ`0nLmx7({0-GR}-z zE({~i7`q;|`_y}H6$XiC4iU7jA=id@bdY5h*=1!?q5Qe-Wq$Xs2(Nx8Hzkh=N{hJ5 zNB{qq?~kbW3!NscTugnIv&QGUb$>|fr=Mn1R16oLgU+3|GtcFJyrkn8OdNrQ43cn* z){h$H!*4IyrFp`AN5pY8sYj;zt9&tl{l206&0-L6=&X}hU<++%oi&|ZvJCEKsAI3R z%(vR{Mnd1|v~Xf=n^gjSf;VJDP;Vv(=M1w#kypxEW33$ZFws2d9u%-fi4XGog-|1e zy%J(3VB*63g97WoPCWW{0^XM)6x&$OfDaupXw*BcJq=wqn}D$a#PNusK*6hZOH8AT z>q>>lWUGAA2~N~ED+3?BTRb#>xzP0N;3sFb0V<0dfHZa77^sOpSe%Z0I~>>PMrtw4 zr*vyCRp@>ytLE153~p+cU^hCr(0=h>k+@-zZ?B=9HYI156ul$9o+O)#vVcWT!g7XP z?p|M5aJzHv{F_Pa6qCL32YWq?ZcrB1UxNy^Dfi#0fzUIVId8;w4e;Y}X93w$1#I_~ zINQMcv_;Q6@@V4V;6aZxSj20p)#rDs#Bwpv2OkC~5L_T#fQ&>H%VBb#rWe7OcvWmeyof|Drr4u5O#Ic-~0zkBu=>rrczl zjvg(E5%#71*_)-vf3lInW^lFH#Rd?1EV0I+#TGV(?0)^mx^-X66rA8KFHq#-bpJVw z1XL4y@w3SE*Y&S;+i7HJ>3Zm@vm@Ny-GDXIs2HwcuyIQb2veA>>jPrpJTMC}xd$k$ z^G78kKIU|jg!g+BA!bhO_k6fM(T+=}*v~|;AxG@i^bjMajy@!2Foy6sSINp2SswD7 zzD#EHV&#&?BuJGpZ9WPSc)HweGy|qHS=?qp%CR)i0eId$jNHYqvmhAhx2BVyxphN3 z>fSyhLKs*x+<}Q5%@GUuai!~^s|CL}qUoo+^`FkyUS&ZFVJYqg!Wkat@W}3hS}k!2 ziFy5Dq;5VTO^euchDWXdvp?h0{y){?L2&-n#ho}w*!n$;4H{gouGpP;Wv#1j)b3ZFDkyJ&Jft8s3TbViNHNj|=t*ZTO6s_V%j1p6Bj+Go zvE4GK>M*6F&fE9)H)S!$$NdRx$I*{9xs4%k0M$!?tlv}^RkS4$=x>1NWM?q<6N-Ooc0E4LH2*yNP#4LgE!r?k?r~!%GzT+ql?6Yjed~S zTkz%r>nBQBm)T$lkEd~vuN=(9_~&*Vt-w3K)zDYe8jKV|V+e98vzV2**}UDerpO5B z_S~gS4Or{$As`DR!=||~8~%&~%~Zfda8gJPo#a}~x_M+>)BsmNsJ~xTKeZDBshX+6 zI8NwojOrz>yM|&zUyAZI(VB8BM4gNstodYR8M|3j#qSO9cAweHi@k_K|FeA0KsE9v zrx!rZ(-EFNyXdyVW_;hc41noQ6kjUywpbIxh9m_I6$7h(xjc=D5ucM}^o*UFvNMuG zEc`NE!!zEc<&zgcC70>5L0(((H;(SumM$H$fOH!tGf+m@&5&AwW$vwk_vr*&> ztP?RLwe_w^$Gm(ZJ)718Uc;m6aly}k&mc2`I@T$HQIfFH(V^6Iyw$6Eoc6UBuNqsG z5kvpJ+bzNs9a9qtk?(bH(-sSR&71Bt*8Kg}Q_EEdPZl#$bFWbE*hfGlT3#t=`ya0u zB^q_yAipSM0|2o3etkc7oQdPOO3AI76yfdiNp4H3s#Ugiq1JVtW*L)z7|YB4h6sp# zW@H~Hv`*09*Jxn2JoPWfw_MBy&08JPQY6O>(ECE0q%ir&+Gg5a29qPB7b_?7M&qtQWB zOr|19p!YWICHs=d5^FSrwcB?A`17`+?%3dJWLjk9Xx*g39Ru!06Fms*DP`~t9}S;Mrbz{$llgs4Zm>ZUP5WURBxqhfI& zXG8K)etC<-;{`2LGNgtZ5Y6&DyDua;w7!N0>fo69>T#H*OMGr^BcP)oa<3&s++C#e zGFmchOf$4vOZ&-dPxCk#F&zXX<{#_1VCU}>m^Q>v#{AB4(FVSd@q`Ppj|ku4A5V5Vy94V4Do zn7g3>j-UsCI2$02LK}P?!jm0W-NsiBR47~!vSx0CIPIO50bq=Ilz=J8*U9kePlOfN zC#2%6vD^aQ`i7WeMdtW%d=d~lJJJ&%Wmm}|yfhIAS}hn#d0^>;URu9dk-jj|%FW8g zPC}5Q{bWhRr3;F&v`(9zN1&|F9m#(m85l-Pm>kv^?s!rH)l(&$>^i8o59{=0&r537 za=0=xOb~}))uPQ6tjb+&Czue(ivlO;l?XNyJO)@e<80==MUU-Yi+TpOyA1A=lonQN z%A4XUk+<@1qj3fpD_8!2fDwFqN*xooHs@?#BDftH z>#}E2#q3h;7iD3l31#3q68Oy1xv8&}sJpH1x|6L(Ij6ysl&Q=jc#e@^fP&P?Pw@1A z#26-{U`=lwon}o_b;J(FoOR%*)(fA0$6-y|ZB+ap3ZROVKmd(|Tg90yfB-f39L9V~ z!HHxJ&0Ug;>TK_~t#<~#Giu<5Wjm>QWyfCNVUi}d9PP*zRj6|l<5S?8r{Oz5DEuu& zE4wJw7($GV@Ce5BVF)&61m@gST5f0R`q&)edk68pqb5uZUG7?xi$P3A<4W3wXUHDj zZ&IvY(YhgS%WDa0wh0`+Fw_{Mo0>M6-G1Fey|s-=)5q(Ng=3dzV|qsTyd3QgQ z18AmrwU1h%f%CF5?zQ>TG7!vUj;1+Shb=6N9d5OBzx_2Y+9b#~9-89u%PRF5g99xS zd8c@%v_P*hTkp#?m?G-#domuqzc4m7}eUi9Ot09{B@@ zZ&xj(J-#KC2l@0G1_Yv)MhyyD?55IY+A6`Jp7%Ch+jK^0DI zZAUE!_-~d0PiEl^`}@K6NCc8tKzt{3Airv#9XYIG5^zE!5t7k!RT)VkoqTZpc^F!iaGyU3fT9`#<$1C2UfU(`qG z_*|p=X(vppi18Kh{U3#BmzAZJsgZ9n_KCeeXKAwoGWG~YK(5{qqq-Eyms=I)F4WV4 zcb2vOeu8*K4D%DE)e3V!i}l?>FNS~qNSWsm4Q+i2wDM9mqOhNB!rxD_HkX{yJfDk2 z!JaF#vir*2?UZIJ1)M7eA5DsY{7wEcvkDsg%FFAlgpFd8Mb8c8Op&C(^S>kjwA2yW z)k>Rq=gYM^#L4GJ=#&j$@q>$KGeT+FNaT26Gk{pQ;fkKr@qi%1m&+{Q9 z2QM3haxnmQxd4{>@Z18z(pZWv3143~Q{WMW(AcQeKhwqS=E1hnq3OKvT6ZL!X99fM z=Qaps9w-4+k8tdrZO#{=FuAgc7~_k99{5Q$!|J{Mj|O|}kGtS#m1JjDF;0*@`1Xnp zf@7gsDj-=^i2XeTdyo2eqe| zk6MYMmwQXrvJ~seSOAI*u@V_w87M)phVu2l`yDiG74BBtAk@29AuNfI(O7gh=dxze zKDpNF7ZlvJ1|7?rUUY?)5e4b6m=G))p>!Ulm0MV@eLqDz=hgsCFB;=?NH7CsT|Ujg zC^d<&aIO1F$OwM}T0?SjyyQu2*6L`GHJOXtvHG$1=h{LDX0mdXqk4~ptYt~dB!yWP zhpN{^k4&9L60j_r`h;?A`M{&E1h9PC<=7J@jF_>q89hNyR>Om<)7zgUvrQIsBA(t6Nqc5oIVo#&j(f$}-0!ctYauE-s_wY&)_=WskEpI}fYSm$~Ji$-*ebH;Gb%NewNzKnTqpa{D1ps8!RI1vKpWrzaUws<1V@KpA~x3b7ef;19fV)eBuj0i%0iPRLYB{;@w)sH#=_`u8RBkMv<@%Ol#_Po} zwUvLdEC+_OF6Xsn@ib90ISTM|gAh^?1!|TRK4Cwb5vIedhU6n8=zgH=Ff?GoaPAgv zh18`^xR%_lg=qd3PhVgQDUIPsJ*Fg84SSXBOGFs(a+F+#L(Y+he`Lbi>L#bxir?kk zsdfqDG5WfRV{6%sd1+JBv5RO+u@$XV3LgB9q;>XKMt|F|L-S1tSc{@@G+yn-yeinppb5{PiGyp{8mg zvxPX>k~2a8x>E@uQ39x-^ix&l_F@4gcG`4~G6~Sz5vVtp9@Uo%P`juj2mk%RkRo0| zs#s}bh>ZlND(JiQd8$PhilA$cH4RrSiI{}g9c z;&HQ8=|Ok629AAcACy~}yp(sKDI(Kh0@)(fN$3#_I)d}HT{{@aJI^Mcxw{c5xAv~K zAHn`eeAQa_1vp583MvcI$D?qYughU{7LcZ))o1BF@X$nN5BtT{D)$E0Pd+poedtape!P}1$2^Pe-hz&qJ`RUgnEByV|||O5e5*H3-&?mz{f#}NFc`1}NipCm%-EsFj?-g;%_C3w~DErJ-1uYw@tNen!FAma%c= zf9W_5!%rhBvEgayO6Lxs|9S`Psch(%4p4ApvSNADcAmVObC@DmB4v~ect=-D4{o|4 zY1%A7MwE+S3z;jC&U|XOeCbhsbzT_)MLZazOC`orvfq5i zVb^8O0PhnI63r1>R@v?MWCT1KvFqpnzf-foKWw)%mK|fKbHb_A>46ia_PkQqtvDsb z2bc&1!-*en@ALZ;lvk~l2(v9lgq4(4#B~y?7b}b_yOhNhp6QU;nG|#|{Bmqr4+-c? z5?YEVGx>b1^7c#gKaKF6gJDy(!B=*;WHf*?F-)Im5rWKTdLg>%H$R2=vAZO~Wc=S< zjXd-GRRdl5tDd09Xlnq~u*nj8hBLwf!_GY;J-|v@%*&YbC3`R9vX&z&7@vI`yvTsQ?czKD5i78q_x#P92U4Fur-v`6RwU!m8V%&? zr`kV95!4J8^a-}av3eGlkhizIS1Pt9CH+b}zcTpOWyL6dw4d*s>lJ8eA=5Bp3Aawf zXMKL%5b1&tM76!sO$l_FV%B(`BFc?EQpY^%3Duik!3|BTdeqOu=e26CcsJ@wB7fqp zW)xE}c|#%E=YQZe9zc?Qa@vqjAZpIF-WwmT{v68k?ms;DIsMhLDSGTmr6RS6>M?S* z9ltxj2iQ-}mo%S!7b}#v=l1i{8hf!w^dsc1_&cDI_-JJBXWUYIG&;s}LYXvwm?#D- z;_cc<(P-t^

      Lkk8PaMQWM;@x15BtJ-FPWUj5P-$=B?Y6+NnA!L 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

      1eJ%4YCagz@duwLwIehezX{FGcpa*4 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%0DYdGo;P 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

      Y+p{4euy%3n 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�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�Jl*E*p#5?KkFVoiw#YOZ6i~)VJ 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¥Ys@ja|F}P2(}mz0Q>?{vVxl^Wrd^N z$A$cm)xyJ7CC=F=7K94P=D%_&^)UjQ2hKwB`+|5&W;IA=CpQ6 zR^%EG^;P9*SrVpYw?KV@l9VQ;Lk7C(a&yLSJB$2C24hgeR_n1TpjPo*!n9g*?nD?RBFFirxMTqMy!XGp9%$Jn{-lfYTEx)>hg z4XXg=D5&MRdr+Ec1mcbU_#q+F*Q_3G6}D8mn@*;mcFVpd;X}@OTS3n`qj*n)G1ydL z&FY~}mrh&2MC5vp#gS##QzTkb;N!34E7si>$MKqg=!USThD8qJ;u%P- z0C^zDh(0v)PO2^5u@FqR50PkoQ`<60+S@0kNipi@Az+a|Gm%*-r&-Ddl?#lD?HFoUcKeLh|q!>%^yKyV8Zf2u590jq~Z%>Anq zCCQNDpUHE{tYa|_J!R*UPb(p-E(;0y`p9p$wHmRP7UgQH;2 z&wq}$NoAn#-j4!5n|72?6Z<6OoxThQsiz@a%a%iXU>E~=42^i-W;KTLXXgaR;sx7w z!PnPNDx9=3wwy=yXuz&~p)6>WgT4b_8b#u^mX z)}X{Oqec;<(FhTq2DO4cnva?*jjGt)(htZ}+uPDZC$a@UI{6Ji5FSuT0eVC_C*t

      Rp(f(Bi(on$00$7^ANoLTByd{R#TzU49?=VRnp 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

      !`4a`8Sb06Q?{=ecB;Ns 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%0D^4C@UYoyLF#*8}%t_P-^;VehyXW<@k}s=&yeY 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

      6ey?wX) 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
      }hR`x4MRDV7RK8 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

      HcB)O$QRCc+D0dPthKWdgoB#;qAYbe6lI68?Q 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

      T*@>TXc`yr74L$MB) zL+GfE+v%ERLqzhzN{`7UZhRLZzw<3?u(juK*_ zJ(y^kWK4u_wEUeQNwzbjX0dHn7#Pq=LP z^|&1-TSLKxjiJ?bv7z;p8Qw zm^Pp0=1RW9gX1D@9FPUYhoHnAvUU&be&7ZG%GFoY@5yik;> z{wDliP?V_it?|y+s0k_WQ#V2R%6ssOytCzommaalBFuK@KqGagqSh~_tK4>_y%wo&*|7n4ZIg}F{MwZC5_WtbXU!qqT9;8v{ zKP)N^OSssg2mXxRu}42Hrg1pelg;f9-c2?BWzH$bt#79y4y8g%hUua;(+n>p9fyZi zUwxht0mtCa*sUX*Z>C*#i?NJfGZ3~+{B1x!APPZoc|!x_hmVGNNcGP;!Q_zfG|v;| zhvcz1`L=fy=W$Ro5Gg74YIT>ZkZjAj!G7I>IF{l6#gSxzQ|G4lgoqpf(?rmdzL1PFS-yJjvvSMxCj)SVv$0`>W(??9%r-(;-J;YahcF4ZKkuOUXO6JUn}uVe7h;!8wfe_X|HKXf zA^uj@)Xkbm;17)FB#cj?s5bO8!^cPAM&`3t zIsJ9PAf!YfP|8s@Jl?8 zZ6)=3^3;?zWwKI+a!px_qpzTr7F8gcffaOSDrn4lHg=TH#TjCUm{Cj-8_K+K)t#G@ z{X}(ASzQf-mrpce(9_d zGeRH#Af2Rw5-M%81C%|1|DR2n_u+R>pto@nOJirw$s30_M}PeJG|hsxPrUm~|2}*y z#2L$p=KiFVI3HEIo##gWu?u{FbEJSmhO3@aubbXjF&?Y^JFZHue#5<`U&<4-xmi(K@`^xF z?>1zyW-h4q3Od>B;6pG)tya`Fq2vh?`zY2bMsrd^3Cn=%>dk|S0FZQ0kW;rP_}5|R8Zr{@w+$_IfWJXD8hW}J(zk^ z?j|%`2bVRXuz98GWUC!-e707=VdM)Eq=EgTM9jKtzNTt;^B;)&{#8{rQnlHeiTEX2 zr#S8mMyf@%$`P05#)bB4_XSSQE>5&y9CGXYq%xO~L-ZF;I4IRRq?#U@JZSyUTa939 z{=|T<%{=Tx`aXw1+p+4PTq0T>a;0}%tI9uks%(R}wz@jzzEtAGdn8^d(P$N3jqFH% zg}j&sy?~#>dQayJ=d{o7k>C$ci8r^IN?5hv3+a{D$)dls7k*nPHOqBx;4^_b6Shh-^`uikkC(ZzAkgECaMZWNN+SL(kO1cdlDrj; z=-fQG?!(rn$$l~32Ak0Pe9m47Gh#@~CEUHn+mJy@o8E;Y)&A9tf#bZmKm!x){A<2z|Tsz%o?Zd4R2 zOxt6EF0oH_$RP)O(Jclnfmj`t$S!j}E4@Bx?$BzfUMvC{3Og;}F2w%YOIk#}r&dJ( zD~3jQJ3U6jY?bLXe>;C>>g6DFG9s48}jN3DQrwv1U#fXhQ_{d)SikxAS2}J(WfDY4eQBm=>dAV3Jwf+>|=EG zJNB4!9bj&MU4D|GSA4otzV;7uZEM&21e2h0y2p(HGI{h<%PCGT`E_`@pwhRKaeD`j zd3}_9vD|xupeGnI8)KrPX5f^OSda@JHAB&Vo4^WBt2EWy7Pl{O^|-|CksK^;k}R_M zw6wK<*MpMY#KE&C9r!Sl%h5t96D{bb?dYd@N<24bou^`Rj?dz^?Dx9X4ft8UivX=t zr~5K&d6I4Cbdp%uwx6%k%5VIU#tG@Q?PO7r`#LqaY!zfVU)s&nqLw_~j7&#@bLZ^I zu)rDt$@z&!#n;XRfz%7Md5ShyU39IN%#+B6y?)0zT2W>RwrVUUBnx@Pv)1!lmd|@n z-O(T#W&K(~gB!Zpcp!j97)Un9=-9nYy^$LJl!1rZ#wIt`^(CMe3DLP~5Bs>`x^r>w zRUW*EyQP`vNLm3&{x}IP6gcy%0Gm@zONsbsuJC9lh9rJ5631FX%kP2eWT~5-)2pYF z33DfAh3UemYk*w+swdDxCtZB7&Gr;@j^Z@1qUOlsh&anBj1W-luOF69C@#NQRLG`GcblAPyEwHA8wPP+cJx+3Bm6_RcqW=- z;{wAt5{bH%Sas%JRY&((A`1rWZ@uuMHFv4O-K8M5M{>`Fbp%V()p<2OW8*@TlXVDM zqXLgE!@Xd`3K^7)$pAn3P)vANiXo>{x{zE22F@W9nPU&01Z=`?#U58q-d4iYgYG_qq}^T} zlFtn#ROb|75BKFSd0U;#xyX=?>^#;+i+q<>rtK{z116V4mJD$gh~bXHr=gby8N!~U z+Xju4d$h01wM0)PdzqXKDOaUvS2EX2HKuW^yFE*HO_H zjZM8EAX$X1dK!?kXh3HSErh5-WarjnGIpP{*svNphfmporn)bE?lM6>=^_`n9o?)b zHYrAb_Zq4a8a*aJq2t-v5v}11ac*iYJuP{4wXsjBl#_1za&=vCIPW(BMn7Wyvg9IR zROb834zSHT00jm@jarFiLIBlT2nSg4lnnklLG2g>u~sipw4jk`UiXdNab$O)p!jg( zM7DwglMd5FmEGx^vkF06z_#e%;yMJo9@mMBD^-cx)c%xrE^32WV;j-T_;J^wv9m4b zqoKY;VLA7H>J1_U@91wA>Lv5p5pZp-`BEeww=R=-jM4r9Ad=Pfi*`$(Hnl+Z|ZZgXFpaSVU6{Dcn8!+kw)aOT5kLxR!^6AwF~5<2Zk@W4Kec&X%(JB;blyH zU)<7bT!`ByPuRnUXxdO_gv-#R2;7P`KpS3S=;;*~%BzyEU0=3~+&(XtVK))TD~3Vev%3 zagv*zP$d$W&O7gw|GHmg#fjZ1aWXsA0-+JTYSUer^?Bo^P4|(%m=T_3r7l91&DH9E z;H3ch(06SBfM@>4Ol)t&!{>5Q*nTFsP+~LE-LZ*duw>0O)00dc(YiFIfuVBL2WN|} zAZXV+G{olJogxt-X6pSiPacvTcDs6Ka~#&~q(C1Jz;Xzq?hkMMyP2tj0Zg3dJ$RE& z{KYq@`;2FwlXL6rbG%|L@V+Qg-TB78z#-s$L>_uxWf$n|Dpjs4D1!Qq7*$3DU61E_ zFF`9Caeks3h}sk)CL5wIG!wu>M#&p0 zURvN(g}E%WsR|8#-Av&t#Xet*N&O#$*5%<0%lFB3QYK>};dMhHVoQh!TGwHzlS0U7ltZ>?qLg&H9UQ1< zZ4{B)H!i(=1NBm*mJ;a2ChO2{R0NLV%vGF^7b_Mk9_W`Jo_c;n5*i`q#U?;N!Z``? z6Kb;*>ft@%F4~4jG@b#pafR+%*V0!xNObV!_V+Z5hJH``b0%zQW=J2^=0zHWT zm14sC5QwP@?l(lvAYTjP=)(jfkzHvzEFi zYY&kXw2E)D$+~z|tXPh48M=xiL&5jcUfB{0`^cevK;2er+27g4EvOn3!I0D+if#S% zl-`EH`bQU8hI&n`!jE&dsXd8YDcn)bW^U`Y?Kbx`%chqSOSQYOY9;(p1I>-jnL9dv z37=oD$f-shf*4b6=_QE|@&D7{L^WLjB{Cm~P-KPu)z|s(Z*M|{Dj|8b2xHurGG#>f z!Gr`&IsfXVZ3^}q#Q78nfcEWgoU{G6a!yB4AYi@_B0_1hIpw!k51$thsABulV*)sA z6rBN^saS^vxYxj}iGXYfViL5g7lj6!ajP4rI}a*}NMoe>8&;9qpyIpz=rr|fxZ;T^ z`BrAhec+{2Y_g^%~IU_3NeZ7?dlyx^pNnVN0Q%T|vO`){Es2futnreC>`dv#dX z6Jcne&wS<-f8(Q7n8In4b$tjryBM8`or7JE*;}{4iW(&qk1mrZSC}p$uF(>e>uJmR z#_}S@|jY#2)blLI9>!RHxEl$?hWPt9%4ZWn9~ z2!Ki#k^NJ>4QO3Hu?v{IvEJ-DX3!9NB`ngZ@#ksp43KzPey5%ItmVP5V0pM465t$U zQHcfSt%|u1y_LQ>$PGTD)m4NNe+w@KVPd1PJYg_ykk zliXvAaHuu_#&k5;>g(#kRe=|vBHSv-50(F04!x{%!eiE8i-nFERr}hr&I+WBw=HYb zh}vMTobH+zBv1Q9rxuIITu5Ao!06tYh9<3#BhPRw0G=LT^(jyya0$n#YjkR}JF5rE z-Ojc0I*{7%?Ko@Rj{^v8@PyX0mt-gVrIq%1~j%%NUq7g0S+Jv(gY&X$bDd>oB6zdoi zU-h{8Si%ZAhm=HqH&{FuRxi|r!c-Eb98Jk1>f{w~QeStXYr`~l^cHrwBVc)khrgE+ zmkwMLPk%5P@k~AX4d)e#%4g99%Rd^P0=oC3--VbD;SL7S43ciX7;;(a?{2Jv76PD*#LZAG%6*sjKJ66lWES z4Bd?VXm~3XKT5OZbQ`^j@(ufJ34Rc)GB)M4+}c4WDHuMm3d?4q_Eg#+9uZV)v`OS` zAi;%%E^L)@Bdf&cA4JAstq+k`frqJbU5m!APeteZm=?iUnkCGQXAaVeipHwvo`T}i zgq$rK8qXC{8j{XAk_;8qG*4v%=6o_7J9VH44`}H}RJOY2Mu1)TcDY??SR+nIKR?Mi zNX>2^eDNqbt>MFfm>_2#<92IzVa7SwmyE5(;Sg=!J69_QgYjYu$B@k|^_IZD^DiVg z7XPE_jy^qrAy@Gzxw9sXMcBqH0<%ZjD?~XnP-k}jPGLN>w5zekFt{dFAyt)mZmDug z=JCoaV5DJOQ}IgeZb)%P%BQh2uY$346fB7oK><06?!A~L5N_}_D=b6n*qH40ZrEo~ zs!~a%bbojzX?>XJiN)OsWRqFY z(A{}e#l&lWLTp+7H`8(N-Pjn5)4={IXngVzo-43R;BwkAN=bE%x%tX5Un;Uj8zqB( z!xl(pP-wWpuh6`(=#VQ7NwLVdOm@WN=PLxy?9N~meU9G^CQMxyv-Mx{KSm0)et@Xo z*3YP_lD(!D+q-S-^ZQ94Zs!qmYgAO{ccNN`xjQpPOcgBTM&t$~v)@$N%*{WguLue{ z{GX&h{pJCae)R_qXm3$?65d)>`tiAVt=G!RXkqQ>BStX$HmX>7i10|dCe>M00c`PC zNqy`T566$tM52c#1BI^PEHF2}odXNM4VHMQN0NxiX}YuV;yBL>6oM>&2ulFpvc?3n zOI?#r#?>Zf1CerijK66kL6`&jpz%vQ$s9HcDr)xTQbkw`-3bL>A$b$KRO}lD-_^s@ zPKFC;h4cQPNJK>8Ncaf}1UAen)3{7^$@MYf`f&XD9YT~0Z53brtGw&B`Dg$#)3et3 zPdW3Cyf%V|=c+2HV7*3VeWvpoN%kTgLH}+9`F;Ojr%zwI>0AXQrKrkr;%rGw4=x0t z0iFUA^?PrCqq&vMRN>Q^dQ{~+)Nn-nU$e07jUDZTzwp~8H zbSsd;_f|RZDW#@B`KmWozV1!S2cQ+@3JEv_3IJgApsr>~fQE7zY53^MC__CB4~Yd1 z(T#93xQJn=uj;L@7oS zNl^WT_;GaRQ+MC`j>`+(dXA4TzOgu$pj!*HX(CFkz$II{@kU2^L9v0Ds8)3V4`B=H z!h3vL!aT=^jCCT?)qrX%C<2RX`K_m6Nhc=%CE@N+4X<|3A@Yf{?wQ4u!uw^_Kkl7+uO{j+tagyAg-HlP~5`%U4D6l~`9n zSl3^ib?g1MJ6L6MJw7M|Z;4%#(ly&+p0G_~X>FUe{G4Z_cnxw73H!Rw1GcFPTYDL@ z46fHw%$#E;V!Vf;SP|8M59srCfv{N`PxpsqWRGNbG%XIB48h#pWdNe_qD8C?TH%K6|~?DgXbd0ioW8YKN+=7qT`L)%tF~hzM%p3``9y-XQS}Joun>zFhc`FCG6tI{chy+{ z@}`w*$&cLQSq}m*cx#KSnaV5+)ue#)Sb_*}%~=dc;4uIt+66K2<1*HSGGiA6-+BcV zoD;k=*SOA)DQZ3&?CWR=sCNwT7siQl;v;ERbD2k9G7)k>{;qs{(OqP`+U8cTl4ALx zBx)A2(Erj&vl#LHreMjCf|RUQ+&1EELmpxp8ZWcfW>IRQ)g|8 zEr3**HE}bPY-N1BStNsR6-n>5e&JM!m90wDjuTeL6nR93zkc~fX#m1`258_sJFiSh zN4@Uim4so~KzhPfQWZ89$Rz0$d6@O&9Im~5$p*he@*U5OHs}MWro*V5JW!WN4el+l ztfQmdq-A#EXU2MKO+*Hq;Akvt6sh^?W-quj*!ohRyNz;qF?w+r{%t5CoYoOFX&0#L z%?k6$mhD~~Bf#F?xHJbIfnQtOk6Hq)CNC&5{L`Pi6I>$gnxk%sAvi6KX%&GR3pwwV zcYl%h3&3MWiIZSy)vo`fj{>bN&+VWU_>8!G!B7OGdxkOt3~CO&gdg*E^tj^iV-IBZ z*%Xtjq+t5X!44S@O89QTx!ykG?3ZjVy>+W$ngH{8_iz4<&CS3=$V*`HcCdBPG)qUD zq4J_KIsfLBnjuJ9v_g0c+?1`ml(QoL4uPwYO-XA%K{QCAEibujpvd%fb4JxdvjX!T zBH4+`iX<%rfPiG8f#>geIthytR)yGXkJ)`Ow3UKID~GQ+W!a)&{E|q-4xLL|iGwGA z(>sKPb`se5JuG*LXg$uKt!j5JV{Q?xNzls-Cd1`87z#H0U8a%YM|}epLrz_*3RPK* zIt=_)tX#=aEw7^wp)mq{6S~JVJ$rl53>ZUvoSN4_mi+p3DXL@6kU-Qcd0vIOy<5e# z0Y7`dsq#;ZG-?WLm!qqLO5qov;P{1hdP8?0ajK-YY?jS0jUo=Ux<7pMmEA^1VOrx*a=$ z_d8+X`d%m#GR?GDMo4_yBo3gn92<8hg*Y0X;+p7+SCcY0yfM z8Vzw|UUXs@qpw)3o@bFf)x757Ow*Mr&NkOE3IXa*&X04rr)RzfCeJ9H+8myk)f~Qv zBJn1kRXH4+BpqX6gv?MP6X0KR?h&SYa9M6x z`mj+*svJi)!xz=ltK=8-%va(J>bH#UtG*#1lwJK)O-LCyNd2ux)81B{^p!b@&1mWE z%M{OcKXHa1uS@hYYXR04_%|9%9fET)RO)@gl3-yw-`ovbkpfRFkEWAb&ijx3qgC@> z>W5Y6LJ1{-^J7HvI9L}qd4?yVpz~)S6kEpZePkD$KdNg>kJTc8m_;(B)={1;CfBIgygB zE2_BCMD#WMd`SN-0L(q^x-vp1p(ccP2g?jCek0d$JOSN8Dewj&0k-(N=SB2t+ed zNw$Yt-3fqMJk=Yac*j1a6_5%UWz7zX)e#N*J2E&;c zaAs6<@r(Ly(pGqaVn`C&VkjQoIL>0#u}8xwPzC?~X!PvE>RvBtOTFObTAF~9O+9J2laWy#kfB5_=Iu{PKErr+p{Fx#R7~pqaKYbIlDjv|~ zjrx)+2DF^}F1nwxtK_>4n<0!K&1xg&>! z$zjWhbx)QyCxdTb81gv~Y~t6aKjD>Tw6@p8`b7O*=U@zgNl19lYLy|0Eng6sE>iJi zd2+)Z8V2pk$>@|W$N3$xUlS&q|^kb!*b)nm)_iw-|S zWG%qCZ}>R13?a!bho3{H8^e8%qn?FD7+cK3L0i#RNOpK@)6y(Bz*Fbg*yPZZb+*@D zXHWgP9~$8i^P@gBmx`BbkGhxo!RCb4%-TqgXp(st%QESNd*Juy(8M4;0KUXzh&ppS`_4T!w?ldSLcb`Y8GnaMZuQYH$9w|qU#Q<)@ILM<)F(c-xFP03h_O8Wl+wW|rbZwenUNGEqrm-MRS?~sZrh0S zN3B-v{+xSajI{dOXf2{&-h+LDnC634Lcyd|Mp8eFfsLDGj(gm8(({S>I}UM* zG>vy~ZV(;YPrQv5n;NqsJP*KZfBiIz_?ZNG;D_DxnAY`+U3`?w24q$utnuLCP|}?@ z;5Rk&&`rc$Pcv8>e}FZ};0YlmTz|;-%gsf1I8@;2U7up?-P0-$sGnr{>5%M)7LZ~M z@Qd@KKz6qX9(n*rt_9BT8q2X(E({8G^hmtejsTS+>OgSRGGnyZ{}A6AfB2&5MNc!h zWBHU2P()v*H}O1`>DStG_(9D)s2Ck#CC>MEKO17~gEW+I2q=96sfb zKdN(T5=3*0;iDLUA^AeAilj|`C`?M_j+ac!tg4)5fNlC2{?+BZm}p@B&j_4#eM0<2 zX91idBe|+-_XCG0b zPx@6ufZO+|Gfh7rg4^lPg1HMbCl%2AJ*Ow)!Ds&;eo{(!9iUo*hV#`U) zX=?|eq2Q9GE{2m@~L4qPRwV=J4n+b-GWn*9D(d`qbA6xUbhhuSF^d zd84(A6nUQo|E4J;fTPqtO$P%A%c@ZPgX#k?N;1K1;bcP45 zZ7Hh{)tp2BskCCerNKDSjm`3~b!D>pxjvgkZg%dOD@~4so|>)---VqFvs|!C*kg+` z>ozPZ;UC2{hQ1cV?!|a`(B8aQJIVv?}_|r#rH(d8UZU|11+& zxy@Jq)wD=N-XXMx4kI_M0Rsq&O^6roJ9@a3@@TfU{D-8DTqkCK?}8M@#341vs)k+j zdrEp(w2e1?n+MGyo%N!xwHF2o+}ulI zr@CJ!;!#fbACk!ry$RCts+*<=#i(%`g`S~;1v{QlntDtvEC^SfT66R#d{Riw5B+G6W0iCD><2N!S5S$ zMl?R?LyoB zHwu}@9QtR^3=sGVN@)*atoie?WhT8SZ(%rTVsP-xtKybBbJ%%GXx7sDxnsTCg4d`Q z)-dB~1 zwYVpXR8=3xbJ2C_-qFe7T210)StvklELnybm^~fZ=*!vR0J^L9ZCRv^XMRHZw533S zPUTt?NK`wnLognlWdO2MFY41ctOcs7>D5;+|?VuB`|1fDh)IZ%n7oh0J zVR%gfV4Y|VmjP~zxj;3u&|>!udjjWGEE!TY9!@;3ArwIFW#9_jr1tYpxFMs(hKcTv ztDL%AZG`^sNav(Ez8uLnwoyFYkTUy1xE6bH&4q-qb64trcSSCZhk3NFf47`RI zK`g4Z`?fy_Z-f>zsv11s5Cpr=O4@)A(Q*7qzi~*E*v1*a;|z0{+mb>z1O>3hp3*W7s5twWa-kZbI=s>Zdl6r} zU4;JQMw$=Gn?yNU!cBLw3#QCIlLMwEC7Dk!p@89*Au@?OXxy7Za$%II3H~oI2 zf0Rt#ZcTn$qOs;$xlo(2;p=u* zaBD>#t9+k3*esQ{X1(1Cl7}|2&5)R!lUv;ZJlh}euiw*cpspPQ?$XuTx7VVzU#38A z5%mEtm&OtShEY^B9GEcQTj@WTdYuyzWHD1+cFb zTwQ+2F+$EmkGX6;7fk!r(Ir=ZTxjr7fViqG=E=+u2O7VivYOd*6s2nvd)Wv$df&nL z@MHgjs+hGRddMf7*tJ6+69CvOveQF}KQ{M#`ZZTg7CsbZV)+wNgxle!NEn;1njqnN z6qj^)gCD_LnQqR=mer)_3jPU|f?;~VQ0+0{-dbfe-64?zcCmmNLEb!oHWG&CGZ47*8rA( zp7e}{L`ZdmFFk-XykLdlvQ122w*+|yJEQI5Rb#{C-{Soz^%YM2R>vhA(G4S{{lzDj-?|3=r;|T)oApwNHGOBctyY1dRR}0^hmysl$XHLF4H$*54 z$HU(b6qOhczVU+$A4sj9bPI>52DO*(wVJQ6Tt?h240x-5PnP^;)kL)I+1!yub@zum zG4#axvCDx)SUf7XS7a($fL5u{>i(xdA&q+fv7r_-#IIZXc~pox3#YiNQ6>vF>bLz; zMy;56aqv7?UgxU?Q~le-k^gG^77xh{D>tHgV zrkW+#!|wER@)bky;mMYgSFeR0Q-eayk6OvhKH&KazfX6bJ`LcgaPpX>Y)owgR2WdI z4TcSNLUr=w4tf^TQb${bE(^^D?VaRT>LN{=;X_e(w^ob4RPQzUKaN+W0?s&0) z>af5H2W)manoGmJN7X3UNx4>Bwl4y9p_i4h`owN~iLNwNpMK{Fz5~PqH`mgjfLN22 z!=dk?akpdFlpkoXLh>cJxW?gfTzl zsu_AUScNw3@ZRg#q_h1-5-vqOAXBCDzWk1f$m$tBU@-guI)j<^(4jfiIPC&ohI6Mb zyJ#$en=EQ0;)~yf?M(~1r9ROg!=I$I#vh{zn62Xh!j2x#^{9bkaIoz{TlnC_K-e>& zZ+{J(0zp3unmBX5*%bB`{7l<2{e*^da`$Z}r>(`ZkeC-o0;%$C>xWS|E_+D)!m_s8 zc$##RUd}MucUz&K1;$q)Adtf?Tw$rf;xn^Wm?Po$K0G6a$D3UeR*NmmbcrSjCikn+ zK!S(a`t@gl?^&lXg@)lIrg!ekr0X$=}@AHmp8 zw_TFP+MQateGpiD17Au?^wCSlC8Id1Perhn_aOz)xq4{>8AHcDB-Blp;`t6P0EkPE zV~BJzevDgXpsnKN#`1b|vmv%+ZT`S*sU+HhDb1%Wk}=0ynvaadS&Iqg_53$`>yg@J zGh#3Wb&q*>6dcT6J?}M|Z0NcC^4%R`^=KHfXMQhe3rUHXi_EgLE$(??;uS%?#}+)$ zK=-4)*Q6N(*WlI)%;F>kgJ1Cc9QB3){$4E;iwmzJHT}!^y2uRMfd-|Jos1$At+e(1 zte4Ky?XT!*S=#7+ZxAdLYP#I4(rzBSu=w|6&0xf_0la~UhF14XI6k@+_d|?yon?=p zNLBp{V z;CK*K?jtUSr@*kpHG>~58~iqf35CQ6lBpkq#zv-Kv75|#2MAqAZ?usUU!oZ5AyRxr z2t)0?Hm5E&aRYw}(^~%DhD+~kSgTH^<0`Rf%d*hD;ag53g^16KnVk}OLD_m)yR`nG z*_t3^U$;Zsm3geNQ`ShiTdt!$@Lw3pbWZS^Q#|NZ zehRU%dj(#EiWr)4yNmqnEMO(=rri^61Lf}}Mu77x1^#86PFwqBD;>Z5gq`N<=3^3M zEjWw+$(yA`2&8=$nV^xqth#T_We;=qYn7RoZ@*G654<{t04^5a7P%mh)N3w2DKreZ30g;f5p zM&}<|=if^?fqZF->SFOSW@M6KQbUY)&y(PmqD*IKmCYDQq<`p+d+>~N*%}n@$i9(3 z5Ym=#qdLQhL0+6!>R7t3kU-N*t8^f7v%NJ}e%O<2P7|y(VsEdw-P@IZ%sOh?;oZ1a zZpa>MQyc$!$WDfzi+5y#Fb)miwh%fXbsu{j`9LQb$5^hF)ZJlp4y<6T#&7ktjSdpv zKgbE6>}))Qb$l*s`bpvLnA0&C<-9B8{TM~IA|M}q7=rRqs(8n9sBwah0?}N|^*fKU zYCZTO>e}WhMw;v(qp{#adT0_&vxYvoo5~-DTBa;X2W~m!;NHXKUG30vH;)Mg0k-#%TyCY;A%)=j3leE{k4^*5P}f=sAm)RzRed!K&$2 z*mDVu{>cu{qc(--2Db)*U#@6%n4M7hPJQ@5K!S z_Pt?k#r0VjZEbv&I@M=IL`kPWPZr&3?Z@8m$67u--V3*0h=-T1c2gSeK?kF2{2p); zO{k{zf8vln22u7q%l~q*1AyVP25ZC6dy6Vyh9W||r`-cedM15ob>Y?*;tHa!5x;rdt#wcX#-gWSDHAVG$ ze*7u-PE-wr*efwhLU#n!eVL!axzqUG^zY`t=jkUe^yQhz!m#dKzNJhW+qASY&k8QS zd;6%{0CUt=l4X~Fg>wn!2wK8KI6DK>x{H7$O0KEq>i016?obRXe#rE!!3fX~y9&#S+rJyjrN`3 z7U3%%`^Y;8FUCle)H4wrL3^sXahk zi1)bDxohl*ci`0fWPcwiCVG28)??~#D9@LPkJA)EaB3i(PxFHD3*tC04_V585bHnM zmSMqzU)yBAkjL7kRIn46N;i-yoQX4;9seAN#$T%_tOgDcsCtM_Y4%5_1lo{hJJUdC znl!rMzE=~!7J#X7phT=k;ALqSSR^iB2t3ivk$LHzfAPbGx4}jD1l~B&4Db0A?`20H z$TwabQN|EW&1;r1o6h<~Jx2Eg{BUyNzyL6(N#Oqm!@-X?=Fb2^A+&E0HMm8qkwM97 z#adc``V6^lfcl%lxp|ncr`53Mrn9%8sNVv8aKqFB*t!z)85oVN%P1Otu`=~D$WZYOaKhv|1rrEx zE$V|wG>yr)fio;;8L}EBT*(PaTXgEZcXh`^=N#5yCQr1knb)qFMKWe7TG2a*2{=Nc zMXMT{DM5*842`U5@?{KCA9Ju0!!sNHBOd-z^LT3zFVd^yB2Kh%fmLGFBwO!X<(mAT z*CKm@qQX|5*Y*Sqgn&Cp+JaUmS-_t_kXw#MU$RNO1MHq+!4MCBzryl*^4;n_#$ukM za?kk1p|i4$2?Fg^2{!C9$fK^Nx&r4^lAI?Dzjzh78{X|-WL9PU@1ZkDDxgx9|Ziz%;aFs^g2`Mp9VqTzg= z8y10hZ`kEA?2kmy;v;e&vI3z5!JLWgX9HtGXVXI6h|MI6oR!RpC3=dMZtSM zXl80k{ks+I!zDWI^@Op)w=b8Uj@S18T+LoBzR!!p=Z5)GfCWTNKTc67TH(`bP+Fd= zgEh*@WR;v3IK9G5<5PQ2w4heF&zNZjyZkX%7su43spWRlBtcOydDlp9;~4P&c&_Oa4(;I4riP78DPq?0xCl zB5Hf^ge3uTPyI&z)jfzjgF7+Jn>Vyy+9c0KN zs~)Cdi1{q$Eu8%(Pk5@=A+q4CWzYEnz^MRde@J5 zU(hlH>R-X*VAfl@>QBC-4A{-c@(^=PT?C1m@mrLr3KSn5d!H_qEY_k*2I>nR&}F&* zZZ)`=m;poh3ht~*$)#n6Q>{+e?yZnOMyT-WnB#>Rx8qnt7^7h)o|m{g;JeRYTSAzTI*0zBmXdc^+$&=u#G1Y9&_8~qg>eil4Bh;q zk;>reNkmE$OlE2LFD2Q3u7gmy_Uk_S0eNCEp zd(q+r8w9$E@XHAyk?mB)YV9))hKH*NXv&4bGP>RknhdAG)hg_Y6V3k;6pJY&TnZih zwIZbpNXM-IdG#VV+t6Sqe;X(gU4$gyqPOl^yAzu(m@iJxd*LOtKMRQBpb$L266zM4 z4a`7@vNrrobs0qeIgj&G)I}T5YM@BE`PUeD*{(Slm3ay_TzSUSYf$Oe4Gkt7>P(&O z&*q$(yk1~7kN_DpzDH9QoGI3{#0zDJp2_m>2FDv&;u&~(?K#1V3#duH~|){i34i@H=*9$_ZWd(D4P-ha|vHx#-owby1q zdz8ei6jxm!VS7k+@UdQg3~VpuhAN}&j@3|DtCdr7KF)4l<=ZZKx`k_e$D(bBe|7Dj zILr+^_IMsc!`EhAz{TPnzet9|l3 zD)0RYM9&u+j20)o*LH%X^1Kd^b93yeJE&xKsnK0r#kVrP4xLsYi0EGkS#OIi2w3NQ z@#d|2h_5c+p!}#$DEO}#VOF65E}xqcS7n?1J&-)evm!I1r#wQ5Hi?0dy^1m(U+OQ^ zV-p7@2d+`Pvd;g8w zcs!Z9D(Z52s})qPsg@eT7V~vKfm0l-k$24X|3{}#(lqR>`qDx?J=h=WWet_QnV3W3 z5r6H7E4bJ@!ly!0Vb{gWWfyrSOE}q?yVj0IoM0~y)2JSkqgyXa2-FiI2#TG1v%ziU zmJ8p3NNVmt2NkEy>*Fb#LERy>;KSz7_+)0^3GkTl_jCElNs7zheVfei=Hs@Kg8GaF z6hwteUAZT|H);93Vhgcj0Q-tnv_~LB9-wtB!>Z!HT6C|Br;lm%uP;ePi_?6viKO8Z z;dKNeGkN_{BB9G()oWdh@T63Z7zXK7t_OKtW4Rd)P(0}tx#-c89ruH(Hxn^ht~d?h;SW|mMIOiA*s z*HYN?eJD)7Xk?aI7?{*ZonoB}aW$2hABX_*2H^lR6&h>Du1k4x?Yg-+%7*07#DPp^ z{U@N)^;qs*PL8ShL?E{On1% zk#AAj9!N+;Cvp{(S}otw!lOsl%~k$>4nQZqo4QzON1T>6SPo~O>o4`R-PqPzVJ${~ zR7Ds@>z@2m$)_Y9z1Yu1S$Ae&a~1xoR#)Lbp?t7E1g}Ybts3J^oAdCj8a5h@ThBT8F^Ev+)7W}BnAcw2D#qf2E~-0{$2=PK0|Xe#7X{vkAtLZhQ%Q+hW4a; z2dgL(xbv%Vq$xWETia>ryB%(KHxs_PdmgxdAPO22tQMxfAK-a17X~o=uSb&#eis@2 zH=cH@%G&V$O+jr;4NKiArr@1n>?wt|*-mmdyfIBiEu2Ow9_&ZI*~3Z8?)V$MXgX5d zVD*Ke?u0Vx>=%esh-q_)>6tnnbYyRiIKp`0zw`9DCxuH{UO1zTjiV8`u67dntHU*Z z1ADZZt`2Ht5K{1)EUKRc)r!9kYD;tEf?kcHzNBy%bzOS`Rm@$H4AGQy4VZfc4^8nA zX}spGy(}UO(a>2r6nAGqN`dD7#eADGc%y2Mi* z&>D+}^syOt=VSrq$M(;27Ni8*a$kX=zb+~AG7zL7kCP8C;r>uu-hpbp(=)a zZ`8bK3k!APIb8otet4=?Si1=EERPO*p+5mHHjOQcZcw@MOPS8ma=l&B!d$yXb)I$Z zV}dt8!lB*ryZS3*ouF^Ad48w7r&xB0sus0T=T@B%*LDG23M5-BQek>iOE?#WNcje6^491OQ(obu{*iwv@Xk7K&7=;V(A0Y+0{^ zQpNxOB7o=22X$hdck|o|!%txyyIZc>3Nla!Vi*063Eq106CamFAcFa_m9ra{)E`#- zAQAr-3eNo_Fqcu|4+X22)Fl~YLk>jsC7ZUy(exxh6`C(DyE%Q=3_Uz6xq|@3kdEETa^#ji?7|= zC+Ps-$w#weD0X0(Jjiu7lhy68{cdH3+>D>{uPRkQ^FZY`Z_IQrI8ndqI#Qf94kLHm z$QxQOCB1Q%!Ox;;y#~62#ds_ql9eg57~23^9r{#y`k0$dvaBC4-Y=yYT2yPkXBb7T z>*zY44h8)gy2S+xMsjLV76W%jW^p{D4rQSG%j87dfVtAKsO!xr{X%ZlB_=th z7^!K@?T`B0k$yso;1W>oS{kT@+$&Ha#uN!6WyqW_6ajx!HH{{AFreT5>(XI-fS7$N zta3XuFPw9>s0ufwZlD`{C7|T!wQWW@J%$Q%FykI#if!*n?MIKC*t@j3FTDT3> zU)YV+i%LgY+`Eu5SVKd)#;`xZsnzrr!}Bu9lmgZ`*AY2Zaf)W}MRsG=kd{(zem&Q1 z!9i@uD0aIo9w;!v?;GD&kk7$AD7~lH{h(d1#8lbFv$cL^g8n!1pG7)a1J){E* zlh$wc)%nfGQBu_*9ZP(Q3J)#e;-a$^bQp=@%@JVs&MM<9iu9?I4}+r~mk?~wv7nOC z=6@K(S^6QdYB|I~i?|ITkp;f9>$FTxS?$0h4Xj%_;5BBus-l!f2Jt6_eyCxt1 zJ#b>8xOf5ZuZqOuU#GD(u@i^Ns(#9AFt8wb8bSMNuD|;CH}*NH6Df6DQU9@KV&2Xb zh(a!gYl81Wm~1&haVje-i)BNEbaY2@O=J|=1&OYM`?XQ0kQr7Xl+XO>Alc*n9-E-4 zK{0*CkRW!|XHWt6K)8*_iUL6Deoup?b603`S)mD7ld;9XmN>8zVq92#lTPQX$R{@N zp2I|qiWusXLdbT*mHC!T`vyFtb3oywwt5Xo&fAoQzE;9`}8HONM_t^)W-GKjQj?Z68a~PwwJ1U0vU3$$cqrKsGP^ zkF9p5zpzn>ge81t$g;uR9NUw{S58lASMK}9;en(!b^Hjc8}?A+28xKCZQI)~d3^gJ zcS9l3!L1dR<2g*xr`h4JN2G>$Cpsy^G%-Dm{UD<221gsLRp6EZ^VuT**?qKHk|&j! zrZ`*7P>!p8DJH#k^p{5^dMkR$O3C_++RvSIX<1Qlvg-<=E2Kqq9nz|GM8qhO1J?=X z>jsZQJ8ihBf5qP%hx)OjIyN!mw1qDjp;2PRj~R-|iTPhHsnVh-0ytPV}@4$VVt*=8}C3^`}o=QssPXLFPnh z7B!4ON4q(XRXt*-U&2BPw40ejo;NJ|%h!NAzUjl_@rIXuP?wxAro{f=9&V}uF)bT; zg2hK4@0;ULt!!wijew))aVe+Q(n3TqmVq&nj7?;mbXbFRM~To9!U&;zTR*U)rNnIJ zA7nAG@}BII$==>--*`_c3o{aHRc#@`Speo>5n2DRGhX`qFp#QhKiYy_3zKCWlIR9- zi$I?i%~#e1c2;0lsgOD*b704sfQ5=Y%kEo+VF8`Q_8WR|c4G8i$(5g{;#o@ao& z95L$eTGE$x&K#((g{MZYdU<|Z#6ss^LcPwQ1->?d)bD4C{^QEUm}^>igv5&stDfor z=;%%DmYJXvHiMVc`0g~Qg+3GhuOfgjF9}RKII+??z%%&-8%rpjEdr4JZ~5JZuK0G` zW%}EXY~AVKAKzo=On|lrYmKquI*qn)%rC}q%py_%^%03;~@$K(iI348DMm_*@B+`Y61)PVI|Kx2||+sr7_ zIwy^J;bbXqD7@8%Dow^_@jdTcNU&0={8>Fuuuxj!$OCl z66OLW^f*(`9E3q)|L+h>`zzek4MGKxeMPVDSO%owoVwt$ub-*O9KrS(_F)g0*}%3^ zCSeUHdd7v=%9Xmo#m8x7C6yk04)fB23qh+g$nI*D?+>et5}^}?C-ZOU)SD^GPbV>a z!o`Tq3FHr=yZl}*JFCFypPhZXAl_OR2?PsrRtx?au@BW;Pegw87%$P?`82JA2}m$d zz*pwfd#i#6lKVe~?DZceZ%u1GnR5JclTAoxoF zpk~t(dk`XT+5dA;;QR&+_Z8SD!YGladGrg*2S+kZY?ouE)MSsi?GOn1Qk^KOQ?$ZI zd?G)*!d8z$%V3a$%G@5ycI5(9Y4m~0jqo{EP3>NH>FojiVAAo(FCTR#AcZ{qs{@gS_auhH_6lKCd1a^_%N|I}nc!XRQ8aoxg6Ut*sSvQ*yg-POt zT(@HAY5D8qr`~AkvxhmF62fGtN7pbaDF69$?=vhbXFDk|DmgnCxREPfU@kNskH-nS z-mcD1P!vnGCJEj89a!AkAm~yWO(;asrAzkhQdzb)&rjJN#(-55uHPBUy+WFql={|Y zi9&iQGpLK}wZWeL%&mXn-a~`?wv4>x3nmNxFSH|z?8*WV4O;b=De~vDEBgMSbC+EA?9y|GP)_Q*ohitk~v#- zoPzt-t?}pbNgZ{awF+t#zfcb~j}yYQ{L=mjJIApX)MufUns{?4la>Y2srE&Hb7x`H zT=v6>@QDEUd$5CX(sW-GS3F)A`8Q{ywOSkR+eA~vXoUi}*?!Zu2%|7+LtZZ$?msRs znh~Mwm4=#F7dK7grnMXS-!nHqU4-xJO8QI=TotBnG(1C)XDtoi1aPnr%HpmX-Pvv6 z))D6GQRO_GJP&~e#>D6c`DNzukoeYME_35}lHb0}Z@=Ge><-8j0t33Nd?a|BzqEKL z^S*>jqDu|52^|*t&V2gft|?Z2o!f9gfk!-80B4Zal%@IplpFo@Y3<1inPGEJL7)iW zN4&h}Z4HOUig}%g>e$J(Kf!4@(<}e3I8*M(%<06U4^0F%?9IOm zy}!YZIZnT4QT=m$+v`o8GZosKu751f+Qlm7IFZGc6JZH%zLX-3@~%3_Uen3jlQZ-9 zJHhjlf4GOTjE}9!E+=Z#lhlpbYc1IF4dFK&_!#RsHx$qNOm-C1I8{V6&lU?thF$eV zvWtNiwmOZLAJw`&HCJ>#cma@3Q3AiS)fm=cbWr?@0>bP_E-9g4Qp=MOG)f{iW(38u zARNUz#(N>VHy4cY>Hsq8Q7Pw*ZhrSP* zPvM#CvnF`koST$*U-4gXR-UvKD<%3+{Ywj>yBmx$jeC{NbO(|18Y{-kM7xheTM}1V zEi(AMPcwJadNPUOnA+`jIGSlXNj)mlWus<{wS@DteLI2vQ*aHab1ngz8kE|*zthPZ z)-zjjbKKc!B0H?_OCx1mJGA~UZ$c8wh=Ju-r{bo(MFvrmwdfS^Z%unAi2WMJ+pbEL zya~T3Rm$T4f*;<^ErbcNIWcGe!i#1b;q60++5p=Q8tgA% z_8^|3(vo)tSiJ8@XqxR)0E7}mC6v*SM>x9WK;UBaI3;(gVC~>jWh{jr!2{Cdj>#A9*ji-l3#SE~GjV8Xs<=T<wVdjB?VeLa7l>`M-dNIPU8H4U}m;nMBlv0^+@8bX9gSpWY5jOuVBvu(mhVD|@+H zbL}V(mV>uM`ms8j4uIW`M;;YqT0=+5!P)slN+p%s*vh$hnQc%m@j@ln2R);{;dIw8 zCxNEPk+>GRXYU7U+N#lF?KjfHW}SA%1G3ePaDQq`teNvNPS_POpL9XH$b+SztN(KV zsdNYxH@Q2ia<$Z*VC#EJ!8+naR)I~R6qsp`8P2J8T6bCTX+Jj6$WvM;>{WuMuSI;U zo9(cl)>Y}&kW=i8@Xz&1T~Owv8mF8)qKZ(>h=e2AE*z=Ly5aUQ0P*0RSpFCIbCJr4 z=Vt-Gy(4S4cO&f9)$ZlC>ZA8&+>nv7D)Q1)#Ler7MCVL*bKl1`1JaMPI`D;p#)DA3 z&+HzO4Vmy`Vh88PzH5Fa6V!$pU2Xa80UxBjGFdrK(TQcA+8TX0a6Fl2R~6?5Fsg>9 zvVXAf?8t@lb(w(`=6O$@J4j6LfLm%}>LKfE5)Y1pR3U$?qD$1t!E8Swo&?9v17JMi zzUayyI7Zx4e>}Z~??K>8F6(eDL}Y`pJ}${#*~0QvH#2JVTih9Gvk#w7E_`;VPWrOlQT*};tN{89s*8H(~9kc0|cPqAM zk?LU^txc!7Jdy|o@JrDuC;H0kru-4i!aEt#&m9K5Irafs1Rb?Sd4g7X=!D90{Q1LY zrR91V?tErqv1#sTDb{~|O0b5Ns=)qXR>a+BJ|K5{F>tamQPL|F4ZCBIgKjvU4|@rK z7;|tfCNaBqL(8oluu>8LxZE7vAk9*Alk|=~Q)Bltqwl1EvRYwWYPqL)+$hUN65{aY zbBTQ89bBznk+dkriRdp5>G-F(Wf^>g9Cf7OLDKy}|7MEoC% zger%k5mN7llJCtuNwbox&@P|!rRtjj51#(o5unex z|7|t&E4P-kN~(X%%Z&l+hwSL4fwIjl#l?u(Ae=22E-;Kf(mk(fL-1D?GZxUAg@-6|`$Qp#-m(g4X_ z2178JolgDmCh(Oa%62^fiBTzrGW_6%L_btJItVWzDtIKi{Ao1e`^a&pwb648wa=4z5GN5LLieZtZ3UWr+zG zwJeWsNln*YXr!tBGXtX<*%qu#0|0JkT||xU(1-`kpn~4vfwQF`{ON|%8|-6(8$`3` zMY+cf6(wx^)*HeJwfcJ>?-iXpdd?>T!evkRm5a9g;d+YQKWi&mm`%OQs1Rk?9WAC2 zJebXOg#oe8c;0P|>cJer=e(zp9;ZlGXd_&O4Zhh_OyADAvQ$Be2|xZ0?FW2JBnvQX zTkBut^QQ_2QoOXN7jEeVVUw(r2qqsrOMKG8+Xgt)XA0kH*K8W)@B+n;myu~g2v7uz zUO`84ISSxj zm2w$sL`y*4Nk07AkL@2;h%r~I7iL^5Ux?ih_jpH_sIhy%@gIx@P|Q8hJ(0Nwp{6xI z8}ophHRLclW1I~66+riLhvRhobA7KoYMN^OHml|_ZL?AfeRgEnpz2_4FRn9u7TI zk4NY#KL6FMD&wmdu#SZad#9s?G=@v& zfWeKoOF9YfbgK}O6}*yoZ!E1eZDPVksJvAZ;O>S4SpzDlE};%84`wy*Lx!ymG^oyC zqKKFL@Q$7M2@6K{&pif&Vt6;W$kMCgbhd-+c5l6&qs{q;GW>O)FnzI{aMxrCfy5BT zs>5+A{gWz0)Jw%RC>%!57>jT?oHyPxTW)n)4*S0T9D5y|6O8>~0zX^ub$`0GiFOEVMM23T;9_Hj@ zBB{_65NC{sMCdL*E|xFylB))<0k4WTOBS!JUZHbcPXQJ6aE%nFwh#*hbGehu|AABfqi|6F}kVTk^ZeJTq*|0Yl1=!p)dUB+L2e3vi0nh7bGK#q|+b-;U~cLVkro zwC(MY6`XF?N5d6JNS0u<$zB)g+ief;-hZ@g*Oc@wSq&}7qP#FT=4}sqqbLRAxQ}7d zzVbsxX6%{ecB>ZC9LeF{Yft)qngIs7v@t4J0ap@qdA-AaK(u}Wu*Snf^+|%RK@Dgt z_doq%xD`Tyg62@%C$4`z}DO(vh%aInIM&X8KW1ucl-*a0~^NQ5fkCqLu?Tg zi9v%QY!jNVKcxl>XPW$$U#RWZCpg_v+#31=zre>^%aR$*3l(OFO!z`J7mt+(4!b+k zDj9T_whovB5;M5F9s9kzdg1cfeOM+s$XKpR>X*5J-2ptq*`T2>BL7FL@EV)E0Njs) zhuUR5?kK%f-;btgywaO##jw86gf;ky*_cwQ}1LHd?gEovg2->2=F`a6!)Bd)4 z7)kK$WltWhP*1$Kv8bkGfa(q4=nXutH~h&B-Dtvi7Lz0cSeZejJI2504(zvpj%1|Z zWn*UHT$1C$Wh*zicgcKIaAD@wtx?S&OX%xN%0$NzKF%>u&q!@o^2lTX325P%9|^M5 zuM>KU;z7!3w1{a50Uj>mS&VIs*^GZjiWbwiro37QW7no8MVkZ_Tle|LmD(DW#p0F& zEm`v_Z_0p-kb!1r#4Q!6W6q9um+0I$Lc@ozJFV!7`H{Qrp}nyAhDueD61tBmQTmY^TxI~HHA>Cz_ywA{IAHW3b%A>fO* zIi{jdL6R0BJ!f*+iL(2}3Xly&SG~1KvZ}kpghR`vzyqls(`dIxD$+83`xW~r(}?T> zp@iHSbjpLY9ru0yvsK_Yj}|MdI4oG`DDi2c?3PP9(BNH?$QF_>StH-e4~W7cC>%_< zZcV*ff609s(gZiFUVp{dri-^?rvq<)lPad~QM1iMAtDCUU0e+W+^j`fS>sImWMWI` zwe2$dUa)r6qpQe0Z%*Q)Fz&oI{wL@~+lM+B%~9)_*kLfl&M#{T2C@A6Ns0Mbp=CJj zH$qMQewtTq^48Fclze|e_{=1!_+?q1w0+IuqK}Hf#c1xm%l52I*bQuI(KS`J^5^wr z@MZEIgHwlqC~jk+4)7GYV9(73-!=Am(~jLij{+r; zlZfUi9vJPV-yi<~lD{O9o)~c2Jgg&8D^Y7~d_|(6V5WNH4b!3=+e0<(@{UUsBQMg* zR+5>|*~Awrk-lLm=%c8q61td21NA0#98=Z_7Q!=wb) z_PfiD)ZF+fzcGbMntIpsQ0)a$huwci5%Fj#Xmd;3f92-rNNPPL^s=>AxB!2nt}z|} zWJ}lJOpFE6Go3Qm3Fa91Cf<)QEf9iywf1R_SbyF~Iu=tKr~Q)nbE!Aso_FWui1bea zHr;iNdN~|q=Gwh1(!o3dVyt-0XC`#TLV00V{n)( z)7mTouDhdcdSl&;kogzCaoo3YfN`xC;I46^fZ$?j0(pw zltOzE=@zd`>DqUhqyt-+{x_>*euC#Bkd0|8u z7f!Pxcn`}{LR{#E!PPJ#IyDiN?EuKUQgp?%2&cd-J`OZ$w3e*Py}uE749=c=M#it% z^K-ah`l&2?PoKUL-@FDsn(8Q~6+tg*^E6IOcya;G+-jEi{{_U8(>^wXWLfJ%D<-}H zJt;o2&}~1#cSkW4Ic7`>t2nm&(t0&II~N04+q~3Zc9Go)%Wmtq~P1KsO$x zLG`D5b4iq3#dRe{TFt0d#9?b-ozavv5G`op9b??nf@vofW_JhA;q8QUyy>RXc2Py!$5u zx&}L%5c2JZapfFbM3O1krV>HFE#OB?KMxiK${`~G{0T-<->wjWa&(m~=7v@tF}1;- zU=tF4Gj9L^oJ3q^J-&%Zz5Rh0@I_Br++guJ%srTzyA?Tc&%LN4JvOt-Fx~?1R?^uA zh~#x2UZXJnAzm+G%}1_l=FGm1`h;%vUtsj!!N*ZKpThCamp$73omyLEesIoKpzF>;q|W_zscM(v3A^ zwv?L@A`tP4>xw2jCmjDu;yktlgBMNHSPVO$3xV0GZxB*7%9B>$T^-TrG~vCzWf%6t z+f&1aYeH$dD0(s6>bY=>p+n;0IcDYKeuI9Ko8wH$i3{*wM2v0MrY~J(SXlX0SIGVR zLbCuFPo*~e@u&^h?cpf&?L7^2u~M}IQWX7X-U4(&gn^0%SC~a$$*bA94>Os9g>s+F zp4~wlBMCHns%>+`dVisbXn8|@ap9Y7>_s^7(+Nx(rfM`xpMn@_%h~+V{^nf;pR{fA zduk1_0jw!0G>r}!(le7t4a19d1OM6*_;|h1AApp6y(-gcLF1C>lt>g7*D2Pyix$2u z)GlB||6(;mQX|Xr={K6(PnXqJ@&v(XgDH_^uM6ZYvU=J+)YL*n4H^Ql`RMIxJyjC_ z6>|W_xluLq1#ejX8{XVY{EX+FJTdG-o2Gk+@|cy=WDcB@5WLLH{8qN1&62U6H_BGg zH{8}rTc4)G$V4rFE_)g{cgqBSlGoK-ZWxH9tjD++_501w4XyRZP0izdIzBSh^yjJ^<8!HisvyhjWf{+wl$w-hH3uvGTtaDk;SElX65X3R` zu)X2p2!!uZdNC&pk6muo9?h*}rLZWySk7^+&)e%EFK=GB%B8WP$?iDEa;>IH{Pg9_ zq0YPwZ{4eJBfXH0oL(~O0gBSA0OOXM7dL#F($QEG7GCXAtwe`>aLFAxJ4oU{r7Zi! zn2}_%!6l`CK1Odgq}B+ztn?|}PH>sdok3LSkt@axxm+Gchck9&{>$ThZ~%m;z!u3K zLtA>+krl|9hkRYQbMz8p3;g;Rh+K`tYt82dvS3V>7sViLO`#B0JWysCyQytAIL&Qwkn`Vz5KHa+Y!r@hQBD2T=;>;7-OuW7 zl(9meI93YiZv77wkv%}RTJVUqZpMH_Gzb{t`uH1=&X<`E^P00Rbd%Hbsr#<}QGHmN*rNjr&bPzTQL{-g0#R(T5dZJHo=_P9mvh{aIP_ z$Q8W9x!{k^!v0~J?W|z5I7|eNEKlq0)MM;-#&bgyQZSUukzXKcp%7TO%e~_sH+b@m zka6S_{X+}Ks+N{1G^GjV%cl8YGN@|zpv|SN#RUUgDEOZ0YD-WZxulmAzZy{!4&i5>VUD-w zfX?HDOQ)~-nP9oK_1zUY@?+U*#=Jv#4MsmmKKCjjdIbfWRoHxcbC9=&%0)Icy~!(X zUai@=;5U~O1Z?Z~$Fmj>mzEKqaoKQd`BEfrPY5Nt(y zM*#5*=8l+3Q&t!!PS=fUonsqo@b1h4p8_PnH;!1b<##m> z)FbVcC_La>%@3*J#+(VFTf*l%BCy7H5!7jZ>pax>G@UJODba-Wme^TPqg*6?>ansA zey{~JgUa(1-E7pRl$PKZMzSQ4mcrntn5o7VG~vtuO6o7Ktx_A9uX*8sK%G!`4Rr}S zDBjqIWKTqCm9_3s7kmbrOwQjbTc?JSk{pDNqhX2EBf#rg6k`ItGpxf~tbX_dzca4I zoKhMN%0JzX4i4gYk&$bn&UOAA#t@wp8$aH>5jW4Lw#H(Rc};#%x{40LlwKU^M^WuNA<@%LT-UzliuX!ra$wq*@G!h@$`{8P z`d{eBt0`}oktLsuRrkj%*{K;xiVVrgVM)m-5QR7=Lh4P}|Fr_5&EF+?ihEPOrsj2{ zHL^#J98va@rngt?tYeSQt@@S(F;d@yh(Lfo@cxx9V?G3Cw1{>P-@yc$S?GVB{S=pV zB$NGwW#~wEtU9RduU{PXSy%yCi#3&cH}8gaLSG0d64%H&6?70x!m)uFht9ejw&SYr z8nS4-t_WBzn&r!dV9?=H1DKrJNw%f#GlPSNj0C;yrQ=bZ(2(>Xcc>QYO zFe!_v&gorboGh;uq?h)G5sq|Q1TG%$g&1i4r8_U-4BEMsbR%zf>*UfxNvBQu>SX;? zKHIYG&os&tXyMYoEI!Xcy0g+jlL33=!-&)1ic+Vy{nMZSlQ**q0_@3{OwKAcQ~Z-$ z(3-THWUtUj!1Rl=zGCH-BIrFsB$k<{}-;sWF!FLf)%2fv0 z)!`Q(Uyw`k$IM+=Lq4Yap?bcJ``vNz4fhZuB0+pl^tXuaAdS{#mR-~{yT%z&E5P6} z>zWW;p-JCz%O*P~6XaVw7l{B9Q09r@2NjY{Rceui{~#QafULQD;F-|~m9^p0#%J|I zRrz_a)VQg;E7jhhKF$tWUL1b+#4W~r!Q@Flba3$uvN=r#wB*%uDiPjkDw|Rt*v9E7 zvKUENsO}p+r*ABds&j|;sG20&ylo9*jhL5gz`{WTs;)-jndixqaGkHB>doP*S7Fa$ zf0EG>K6Eb%EP9P$7;m7J3)~?kJl}TPYy0o{$)8Nx|4dPM6gRtAGI>VzD!&5rBA^99 zEZ(yV^gac~!i@;hT&jiiIK+!x?JhgpZ5_m4!=1hrg}ndg4sQTloa7!p1iaW3KWVcC z=1o~X@#Izm3qtJ4UDdW>1B+pFON$%`$cDiAe4G(W))PFjMm1n@T`r*3Hu1SMK~9?8 zg`h|%^XZW-Yv2{IYJoBRCiQ3b*G5uZ+H`%6M$K+gn^(9H@nR^1pR8woP!H2gwNtC+3Y!*S+KKD#6~y&(1eVx%yF2}uofu0@2c9p(;5nOpl_Xz*q!G7S zorw;>y$sYIgNMST_lD__UFOFGj0NOOeCz%bs$(*8e@NN)BvtMpBL$|p?ARi&jx$Ja zAJkiTaq@wl?N@Hv(mt~JGr46=Q9>rB;Jtk%UqLlyXBp@DI^M*?ch@n$P`5!!WL?&V z&&i4mn5_h{0(FtKhBcy#sutH~(^2SUV)-+opvAxOaDf6yh9Zypn?8{~$_H!?u062n z3JGKuvkh@uV@ifxBZ;{^W&+0ZLB>@-()fZ%yI(Vq#itN~K9t)-42B=<%jgAoHSD|& zVk!`z?%1w~$h;dzu*;Eb24C7scuwE0KYj@&#H9bw9e1ZUw#MbZzmV(1Z?Xn}S!%qS z-n4GV0K@V|H)n_B?W$H&AI*!>O?v3Qi(Q}-$R}xfk6L@l=C3!EZfN7f@gxg{dJ_#3 zB?Db2=hE_7mrX(%Q2A@hrU)^8MTX;8vu~PZULaTHRt+rtl7R~aYPF?>Y5*Q=DL5-| zQ+r6F`q~e;l?z;(C-tfCF52z5T{oRprV^vL>yK{A^#*W6yG!1s?D4)t`F8+hD}f48 zX5Gu3C#r(~?_#Kc-c(cY?Tm{TT|41HwouAqLJP!P};_sM8MDzS$EKTxu-DU&ME z47;_~)kJh6Gr9Uv`5FQi0vHG*+Q{lITx5LNS=380C+c{Et0YjwkVX%ZGv?z>kgi0O zVE@~o^^}dTW6{O&u~tgq8{8fK;T23o0KUK?QC+b#9%3rFwhK&3!4)srPBeX^CqME@ za^y=|23jTD2x?6xojUjAuE&U1#Ad)Lr>ov;Z_PV-naBayzJwlKClIm%4?P`f?trLV zv~kY}?;bqwRi~=zegXMzx$^PvCccqMANIkkkz_Z?v<#3ItVQh%m*$at$Fu{R%OU9%sf{{4h8JJCKCx#Q zLM%@WfeEI@Iyr&PyWCy4)>Kits`ehp^@dKRXYS(D0+}I~Pqp57y7nz?^#DKa74bwV zz?I+L^Y3dZkTFgDy#I@wrML)&;f@X94Yuu6+o^DwV_vjoBRA$omQ$zq$Of$ey`O+2 z99l-?EL2Lr$)9e7yeYH58kZuxYQUN}yB)(*p=Bx5yxunQ@6>(a z=>tZ0Z6qpWevx^a?-VSPZQw{Ihw<0AQKz<{ucpj7X%Kmk{2U?g_2pYDn0I zObX;xvihy$q+m#E1^S^Wg-U9=9;rjkadJ;*1sttQ$a*`qJ!)GC8_cWUd@t6EVV#2;mbXxykkYB>UE(fsBZa;%)+t4G9t2yS`(MUE z3Hy>oLI|WlEWCN>vFL_-C@jH#HX``$NOEkQVyIxs{-adCtAE4p)Q#xd?|6R^AO)d= zWyh9eY>?cW*$T!gGPf;sgFB!9a80=-BlO2*QrY}>B|fYU$bS`<`in*;V7kmF zGtMBKDemYaG5Gc9TV<_!3>^y+K^A}D9ySg?Vtg8(VsV

      m>gqGsadFMq2>SijG(^yk- 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%0A_`3R0c$-{SNC(BW7aY0r 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

      x$74Q5tf#GH>ZnFKv!{4cR0Y5egZuoPG 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

    1. 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 z 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
      Pv<)TrWK|cDVHTGovF`DF{o_Mk%8_Uo95~ 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

      W4 zu@bJlFQFJWu?9~?67zsiehOy)H}Izb#N+T#?Xk=fy5fRZSR7^b*)+PZ9!rsji?9#f z05v6Dq{M%b6ef;9DN)Y|K^|L&ZW`l|B%pzVsHz?(6iYS?e(e!k0E8F>ZRxNPV{UT1yMWextOh!+bE1ZnLZ_k24rk(^$nJ4CMHLh3>$gD&kC3p43 zLWI0#HYlHa%F@L`9J)gVL@O@v6-JMOcWcU7peGEYJ0=*rnX*zHNNQn1NG6_F5{>Go z?l)jMPG+viwr@aFVPpDr6=m z{6J)d2rp6o5rK&S(HaBMsOM*4XbPcA?64PLbH93<@rIXGY=*ntjcjLb-DtfH8 zssZgxfr^x~z+0D?t%EV8>E>n!sgmvZ@A;Z7HF;)tcI0A>qfxLFIg_KM`lS_I3rgG) zhH_sRzhNeVUl8}Avo})CIRT}bc)ewz4B7bvy+rowe57ZczkmgjW^)vVC8+D5y2HbJ zI}c$lz2pW|^(nf_r;)2~mcA{Z$dh_>el#v_6rGu92#b=NizxodgUNSx3g%i>_}xiv zr0)*?c2r>rH@3WmK7AV{;=Dy4GoCd5i^>7` z#>~oBr5r1#P!?VBFI~7gs7M#=rNhfNH-JA23f~oscX?*d$kr&Wr6uy#ho6k`YKE(g z-|{(?h#&rdAjy%ZP zdM2Dz($>A~($tV;-eh$>KSu}je#2d8``AWel#n;0)F+NtZ9^FJKM?}@_dJRB0>?R) zU4=FYv82w!f@idod5Eji)K_Dh?=Ol>`|_4T(Z2kg_p__Z30InTQi3;>EAs5l*56vt z6p%yDAl`Ee3}!J>wGc;>w=Cq}rL5#26~koxP^D^1fk48qvA*DEzDPleawm59 z)12$O1St=hpw}ohZw>upYnU+am-7iGVMo}flR0sA{%@>`W-2MKYKz1Rvv>JW^MGG~ zF7(Hsb^k!t>)427OJ(MF2gd2{#!?dRe{k!c=)uij;j)F5487;NI#O;U>yrmovUeC- zrv!!jt{JOg&E57nx21^(?##rVje|r7qj++#%dASipdQ$Lh}X&S6V{)_K$E(+|2%WJl7d)Dx6h4R1!ESV;uAb{Jv?` z&#oO~QOqdC6=nETwJ;GCzg!yYkkFbRJ-#KV25lH%DZ8MMSugDxe?znGf2$d{Z1_!N zKv-~=V?M=Zb#>N+x;=Z;c|h02r(keLAzjWfLc|!W(Eo|+vA9|}8>I>5yM~{px2c-L zzJ`Do%`@enaf6*l(Zhc@veLDfAeUFXK?Nb;R+?l1_-xV~9kP_l<)KBy@~lpluKGsc z9FP*Y@zP=YxBn@LlRGRS0_t(kw}MTeUx@uf(Zm!{A*v$l%AO-jv4L}CZWf|di{0cQ zj{2#MynU6FZevbq%!9;Yo^gU=v8wfhYn-EW40vB|7B9Xp_mz*2@~S+l0styDeo&n6 z0FhSGWLIf?h$X4tnVTQWNJ@74#>acz2&Nkjn+J{%65iZz+WOjjB_#7RkfRsc8B_5F$m#0HUeqy>kH3i(7&xbX$^Ja{ zy~O!BE5;dGapU5!E8erKPU@l}ONKq0xcIv(*Ry7oIs`^tPk`=rrZgDcwuDM-38>7m z*;?;!YDv;z7-zB&=#R4}r(lk57EbR`otj)?Tf=|!B-ba=x*2dsb!)2CSL}_w1>j)I z9GWsD&~Bllgkz?;H8BAfdLT{zTqq0CGBluln29V&V&! z*M6XIX$xNArP)ZYG9*dwkOY=$W+VkpZ_7J4grF7x>3f3szaKT@pSrblk8QYRt4nI1p=oUoc{9CXf_YW}C9tMcJBrCrYH3HHl>_eWs2Ls8`y5?SHVtu?n zNc>J@`6dbN37~P>9|-D?t=`&fBNY&RTW`vnPs%(fL-#=colAK$zj`}FU@L!qw zO>Hmtgm+BBuA~f;GY$sjZL}HxAm6`x;*G+Q(xIiWkQ96YVWU+$)a-K9vhwrk?-!*G z(65kwWU2!tN z;5-t9SpuL*)`-u(C^gMzzv>Bi5YL{DaLW~(Wfy(-(u2UW>pMZV&iiV8a0s1*aDpc;@9I1}n{&?4QmyI&+y@plwK>uKknh(*7Z{ys znW{D|g7jq1yp8J2V|iMike~Y*i!l{}*c@OP~D+wX>N$yU!*~Hb8+t zVSn2EC((}{{(sq%zor?VGh3J@(Co!a^>uT}&4QfidKk0`=>7uj+D>N=%ewv5#CIw; zz8bBdnaTF!MvB{Jg{`E3(2}`8wibGZ0;G;Afas^Q+sA4b|A!*)77Y%5e#75x7P%Z8 z3djxiOQDWe!Y8SrKW76#gM(Fux%&;87;s==5rnTOgiCoz23|Uw@ z?!FCoTWyr+*jC11bPgO_2Uu3grWXIP&X5w!GkFl$z!(8%9Q$WMP_hw;Juz2Y*^hR9 zv4Od{qDuHivbd@_@C~eUf7(G;$Mf3>7y-v~`VdP<%B5V^Z3LEtQnqOyb>s-BB*2&* z2Zy71*^~8>?1U9K-u`W{O$o4QE!`MkCbk#c-ZB4lwAhVE}zn8%?(g2RlrMRB#hHCI-_Ow_&1WYCP zVx(l2{XKZi%k>k^)BTT#N!f#_3ABzK4nhUU`2i>xoRWU?*q4F&k4OO_&0a0?@heRW zOHZE5fzZ9;HP>^M#imn^BPEIT*^vwJ{PR*O+u{N&4rqba7-Yo*R28RLj1Tdzy7GB= zLK6N8H}RiO?gr5CwNb`R2{vStTJhcgr2tzEKMk1gdYwdMwoYna&bOO6-*cv}KKLscY9)@g_=wFY-qHy8Le_uJzB?`DUzJOj0RmD#Ny{zRv z>Ix94oBDOuw~n%oJsG_(SyzllaD9CHNzsrFF`H**>yT-xMzP!7^oU3$1+p`8o8WEk zttnYMxjQBmCvq>YuPYo&P{^5LGc6e7F+Q@+ND9zNjbZ%J?-;@7CurC2oAPKMWd%ka zd305W@FQ`~1w~XB?-*Rej5UJ*r5DNag2|{ojjyi!eb|M-hxmy>$K5+3lsj$^sKLUv zvJJvnGcevt4Q-{NC!_Syn@hDa@1Cs`zB%!x-%RzN4N_;2hd)aEFEFoUy+mbSGqL5i z_XugOxc@TQf~coxPUQu#hjtg|e}Q1Yw!I_8_iLv(EPft((!?f&@S~ZWe-K-ETilbzDCRcFka1DWxW zY}NUmt*81?TICbV917J9KfWeY7OxxJ`7UrmMqh^%OPpm5b~a`t`4S33a$uH~KJ1+rHQp5;U3rCRy4FhWLuDA|NSbnD(TSe|cr6CN}W#V9jaeZfF zO_IiTPrAzd^3d&TZ%e`J;@qy7uu!4e9pPeM{G^sQpEK5Iv=6IW&JcV1Yr;$sGOGUD z2Z46uD2B%u4t6dI28#PaOexD3hhJqJ$vIzFKP7)^03EvLIK#xcqJSQvbVo7s7a+7J zC3LvrrPZrF^Xp<|IJ5pbO_rk;B<>uuvN_XPynMo9-o}k4l4O6e7dHKKn~?tWvS8lO zAqyJ9{ZpQcSzAKaomXoHM`VJ81_SlSy9UI@5y+orD42}+8lv{S>wwke=83t0@EHU8 zm64S#fnac-F}hA7Zzzgo7(%Wn7^Qu;EIB>8i;-c87rj#6_%!ydVNJQ+T_%_NK zLrw@a2~dxNXy?RB@BFC(VOr;0uNLA(DL<~}5~5~2N~21sq?1-9-VA7g4yNYpEQ}Va z+gk?r{in9jD0Q!^@zyOpIGNQoBa8)l!P?qIXmz9d>~TSzj;ULk&gzt4MfhH;NHlfs zUH_kY{?_BML@!*eyKRJhs|=055ymzjUcwu7s?SfI07F2$zse9FVQ=M$r;N~p4g6dO z0q%*UziO%l)F{l1(6~6Jc!Y<7J zkIK2~lJwOsnvy-;v+QLKNZ}(-=OcZ-g0TYw@Y<+;o!j7v16zjt9qkrV4>}t+Gppj> zigg@kwNyn*AAYw`v`4*6BC;h167)K&$=ofP5n)7mcd?6+bV+$}#ZG!&y9)9EKhDEW z8NYsz6l<&W7;grZU!5UL^uQq=@vLEV7W}xhqt$* z292KQ=|-WxrM>EwTKp^YAn72h6lr-)jZ7CJmye>U^;TR;`Q=Ov+az(HLPJJXt^KhznZubI;SzC2)vEv|Ina_v_*AU&7t%A`fk7zkw zQ%n3(?-YLH7JhOLZtw+!Im&LZdV*xRADa-GkeLKZig_N00LrJlZqKIbqhyf;(t{z@ zxXrR}{H;i!o?hS{C;<92Pzs$cZ@eA!6L-R?{QJpeU>l4aCK65+;^(Bsr*!3~*r7zV z9ywrn(&1KO@?=_-L*BiJpueOhtf&-66)S($Nl{tBN)M;rdweu^tyqbTs`siih6;NF zsj0^BDgocDJ85?bR8Q>hx9Q@7tby)s zo9>t??ZS0?xpCUr>?y1c;OJtn|AOk9+M1o&Sh8PZd!XL_M5v1lS*@-o7UVJzajqL2 zZW+W1Dv|Y4Euh5gxor~i%f)s2Hb121q4fN5zuz>7UI;_DkCxz8g~In!xJ$vndX>y+ zzTSLjk*G95@XXN-hRA`d6%FteFARx&BH8?W$v z_{ojmXapKaD(fRAq%y7<@Cd|P9Bfq$KD@aO>{2O?H|4%rW7t!Z!^0loe)-Ma%g9@@ zs0%2+80!w_SU>QuA`iXTt8h1#srU$7rXn3X`i+F7_`3sV44M;++IT3+1K^*fhvB=*GsA^MDz+UAB||rqRvz<*%d{20`}Dw zng{Apx^1+M0d#L%bdmNV|DkoQr)ytBF;hdw-NLOFDNJ}yb`0n6rtX}bsm1xI7v!Ti^zoqYSQUx-)1G)&^J zxo@tsX_`XexE0cN|C0#L4| z?E@^?+OjBgle!#PIV5sa3v8H8_WOPkv$B!ly(txh8HPucpkfUO@d5?Rc4ML-yQfoG zgLoanm1BhS1gmpc^vPX}n~z2g9`C zJFb-}9kDyqZVW2Jq-rY_IdBrY^mk=LCb5kc34MsB<%Z5U#w{N*xCOuABy88E^OOW1 zwhFk9I{fc<9W6B1pz6!$JbCfX=D2`^z`i_0hkOcEv}rB(S=c)+Z>J7w+YLD&uSA4y z!^6OZB%)Ajmj+eFF6HFVogyq`QId6?ev+2ay#)Cwe*4y)n_$S~{Uv4b;Jl*I8II|C z?l#)~&(Mb>Es|n?DbhE~(4=4r=I9&nq2BP}V7oxqj7|j?%lq>BR>}ptF=Uq7`TIW~ zfxUs@pV@xFN+AJZ>riTslA<$k;kb$1iiS7(;Ie{@w!g1o`t}olN!9D*2u(4{SYF*; z#kL^?*DgKbWwUn8JQzU2tgQuxi^}R>k+(u8g%hO(SI|+ys=VI@i?0p``%7Uo2iyE! z=qoBUj>c0HFm6~<1BJW0v2s>W77rMU>G$lq8NOifJF*>@6(#BRT;MqjW{6dV2C3W}Ossm)@V|0dzT_fY6K;5-g6E zCFd~)Vs}ueY-YD|>QStWSr~_gY!$ z=PP7m6x4<$$V*IFlLZo{qs>0>>%7$0%~WL&e&7)*hwCa6@nFm4oS--NV(DjMdP#v&PQp5 z&Q|U`jpi){SehhN;XzS?S0I$*Yh!nF+D%|J?GS8L8)QLgmDL=*QD2R?8G^JBE59-* z8!ht3-B~X^z17PI31>O__4~S^1G%fr)Rm@FdyQ^b$MwRAjrT-t+Pk5RxD#0n1pq@x zXwkGSu+5VNfYM^BXn;h-JtOj5x&;zBV}s8R?A2uEr$!qT;9(py;mw{vy+`n9jv#T6 zVLW<2ObM-;8xTlBhbab}8M%ueHgE=v;v;^U_J@iRq&{B&B?wiw$BPHu9P*NDtLAp1nhb8yU$tLS2gj5 zJQ0-|4%ofOdv;ZFsfdAVPu2)$Mv(k;bTy1(0d%~PA=lR!ncG970ojfL3h8cLpha~4 zmXBasjv&T{ZdHwrMvB5H$=gVLFRU5YtVQ~lG82!a||4%V&PU?*re`7*vEdDK>70;VWH~Zdr+nE{bS+I zEk|x4p53+rDb=d;MD|>B-P-_0pEF~1MfFsc3v7IAdGdy59Jf8cp=hOCu5=lgH8*(V z6*DXhEu6_Ey=?v{QrQYmPt=!+p%X)FKK{un7JYjsM)`)Gc=$miHu58aTr*yWjrhxq zG-wSKf>TMgz$pTY9jW!wI$dS}tH*SEtIGEp)0NI9%rexwFRI>llJc$G$O31ADVaF1 zsBEKrA_b=JCRcpy2loSH(&VD9E)Z2Y2EB(Kd`T9l{@CSuTlt-OneODs{#y2h@c!7yt&7I{r}IHya$i64Vb;at=wub3-|}8@lE;ZHT%URA+E7 zztw$vdQ~L_>SwIl3?~ln^-55*#rCA*%z*7U?f>z=1id1ok|h;6pBy1VfaeYqn~ADV zCh`x&+*51&@t*`HSyocJP?wj}mUs6LjgbK_HTAYI;!I*(v~!cd12Gru9=MM-@W>(~ zv=#i9%Bau3&7IzbgCNLwtsC~A+;5QcY?oVg@Z1fl}d z=Hl*C&d(%;11xx03^+|sGB0j!H1I~Uiek}MXE1Q?u8N>cl_&kN`3Nr-iblZu9Li-Grv9 zj&jB8+$YoC*U^e=R(Y8hK`RBCG)b1WxCDRv2>ODSN}Y@~0F2j&iZK|b4NhL=Zzbu% z43hL>**L$C>*|bi5*zMD;Icf=g8LvGfoa4!_LDQIq$qdF zWj$ue|MBhsve3!ws+$!gClww((?PEpr%?U}h7G8b5Ro$q)f3i$2B{v0!TXl(dF)V4j55#^aSBfC-4d&3W$$ zYCQ+&eYAiXAWm>0vpekIJ10oA8r4by!7~yclIEc^5Xr5EPmCXYy|AC#7mD0H+TXU} zgJmPM%l~=*<_V{?fselld(Lj@?a0Y3(JLqm$TXq=O6wYdu2AUHq?8r5nIWF&=EDl4 z`Y3KL7p25vC2|O7rg)@ZU)>W9I;`jP>IHRu&Jt~Qub^a?w?hwIaccIFkNr7y4;O^a zt3snn)O)Q)9RMDLe|5`ep?;?yn(XGo3XA@*<78n3!LR^ zLGg+{^XK?KYyg0#0MT+4c9bdxiB3}ttaONlxH~mWjlQ+)#13DGQAVd%LGf>Od#*0H z^By^HO?YLZM?=N!l|_+V1@2C}b-GwH4R_wH%t&I#0s~8hS!5kmHeq$8x{`7p|2X1m zm6jKMT2jh4jE11^I`}67(8te3vt#|7*DXY7uhpSQEJBz~Nn09k=1u<|&;Pb{uYYUTin(w9=nt7FVV%lrBf7xMT( z34Aln9O!hmeJVx0a4BuSJlqp8jfl43^9Oy`yYidVaXvIZsw~>>j5wi9$NWI$ek|TR z=$_h3-xTcF2(yK@jG{=B%d9LBxl11K*Sgg@#??F11D<ljeI>*IoIsIcjkE)|G_`EV}&uL-<6C-Y#8gH9u5Ros6i7q8N^ z_1}z<{dxIXLy=XyEFuYIh21oKVo{53Vb%-6l9pN}{Ja9L0mJtrD#8cCp#zn=bf2+X zmC7=F7v{nkpVkfn;a?`ve7(vlKP(@qW{9?jN&$Q}26MNs5IZ`gB+`46^ZDu8s4+(> zf5N`MYYJ(yjl8)xR`r&~r%Bl&Y{7)R3q7n=rmPK|enH)Is8+c~+?scT)*mE)VDDR; zWgf`uB`a!uW^J6@2o0$?cQB;4+pk@c3QTyH1_tAe3>dq+pL+j+uzRv_?7By+wVui5 z9KkWbhNmEb#Bg8x(`kLR(LK_T>{Evu#gV=RO*jO6QyQ{~Pbs{zh8_5goennfcZO4g zm+w%HQ@b0RRequm0rlM$kRy4>u!5U#vMhO;tGO&arVyHXY(p0g5_xkI7&e-_)CjJ2 zp!rCGVfi7wzqNkjE|)I$&Dd+}16*8kvbGtFPCsI5d8>W+gZowhItLAWk+;xd8Wz56 zTzujHRbi7kYDCR`D-r<1qh!B^9R}L9eF(^=L>}bFv+?%$66XnK>RDsW7s)cNj7_}3 zh~h(4=f?H%Smr=EI*O>csrcW$)G3^eX_lmAMxoG8WUU~qf`SNE*7h*#!UsvZscMiJRlUJrHUMtxldwns*@==@E%l7 z!D$=+a|ZE-exF03{Z`z@x2vPEYfg#W{@s955I%ZM(j`hf+z(U#@XPfZew&sy&L3&) z{d;nA{EJ?W@f1Uesn*zD+#ycbGOk7Ww#WL3r$@<|1XYy$+j9BYyHUf?J=orS(3;e`I_yMPk>Ul#+>c{bY^ z%~0<6;!=*xinl%l`&rpnXCKWv2?72Yd)nUH%uh%=-1IQWq9k>mXoYW)-Ojm=(DESI z&>uP01+3rI9{`F&h4LhvS$TsGO5Q&Bj%cPs$`#jX6e6q-TFQHO#eE;lCi^ zl$g;l?@4aUY<;W;2mN^Ny!&^uCJ=#G>aVPJUFqx@?i-R&S4ubYJR6X6#4>i<>J;pZ z`7tB*)t9O)!d`7N0b^kA_B-N(2gF{e)l5WU9y!hx@(&m8zzH^C$>f|M>?35_r1q{! zDnj~x>hlAxEmHIx=+)rMc6xDgK&UhU`&w@hqhNs7x=Pd0{-OCGU`q^xUWiM3z`Y_m z-<1ht8Q#k+p9-p} z4@C|sj^;2Du`GQt*NAhjYnx$L51%lN46JHqXHcP*yMVc`e9G?u8Jbt+8KjLsF?&vAbd&T| zGjOO9K$l}d^MlI((c2KgC~vr3foRaU(VD!gLa8My29}C|_)+Ze6vi~FH2(cWtV*9y z2hd{jKEqRyo=Y)OFBYs2T3t6fds~`5d0%%v?!SJKgOBs&{v4RjGIOJ?t(udn_XqTv z1@NA4{k$4iJM2k$&g-j55kogg&6oi_^AYbH%Aqfd+B0j^fUhSlK{DM@y1tP8UDHJT zrtcO(7g=u)GHH-h)fFy0MA5AJWZQoM6Y-E0_C$snN7r=~U31drE`iOK)K>9aer@&2os+ZMv6pn}_0r)z>Q>&-w_Dh`?0LyXA=D!k8bkl%1NH5p5 zYSA$0!UCCYC)?$+H_XDupc(?ft7A+i=BpoKujyyV596SI_KAj?n&X^H-bNS{0&*=+ z$YCbH%X0uBuoHLp1o#&2-cv@n>+NGVri(@QiwpxQS%AmU z_EGDP!ZR|@T)8$LaPuY_gYz>wJwiS;=O(X`qkMsGB2AmJ#+O>A=ks@BQ$xO+2zOSf z4yr~vKqU8D*p+qP9#@0}7pNJB+xP?`iaNlr5$!m9Mr9{jWX}W+J#SZaZ|ytCLYs&7 zc!c|5;c|4YU!6X^JNpHKS5ix>4Cs4c^)F4KrIP>GF1>(;?wGtb5EP{T3ewOAOpUay zTQH8o5(BTnv4D=2!)C`;ip+KQ4!soM6qM{T)SURhv3=lLQ<{1mP2EMw&T2fR`7Kgb z3A)-n*vIOg^ghOHkkUe%!+8t|6G~cQRh7iEWb7AM!W3mcNl2Y{3(Yr)aus^+Cf^9+ z>4f-MiYTS=IpbiT(eQt$N6do}@M+jwl_`%bn+$o%k5!;_+0p-oE-_Kc3u(%(<9mQv zQo6c9_CAz+Mz?%gI*XBrU{2lM-q_$3Zz|A2k~fYwKBc{Qk(?OoRjjC_EN|M|kHTF% zU=!^w9eYLiu0py=+l}g!rWuf_W&;_N&Gs<8QJ75wN)86<{1iW`fmyRgI`$6-vv%q- zy~2-Wxps6JDi-l)w=c0cfV?{i)JTEanQ38=W zsk}t2pIb*)-W?EeX;Z~nrcFAzP!ZChh9q0l0h{QIvhp8sP$0EWk&hp&;^y9Q#{dgH z&hk{k^(zojicEu*o?L%K14ntBRT(zpf#t_;lD-3+V1rVcCnqtBS|sju-riAeHhu<_ z)~%Zdtg_t_eK!M(iJBxofp^%w#%w6c)r){>j)DVX7Qt4i5bodw*rB27r0ZT>*ns_G zOMgNL1m6~SN~W%7@>|saBkaZeHSJ-LuLu+lc&qi%Gf%P^q zvC_rqyq5sK;py9T2h@@~e2v`go3b9}>Bgk%e20p$uZtaTjHr%1Z;iEfS%ZQmP z9iN_NAB4IT(57Tt1oLG)QS)Fj=7=7F*W#Bv<@iuub`*dq%TneFq@-^{?a=FP2%FWh$$u zMM6zZ5k$$pzT=7t?9Jl)Qa`|BGj^D&_N}`g?-z~oEM<%)__@RGC2WIfir>|}mZm8E>y}!Yw^C&-GUvT>0_u<0 zSjZ*5xNiQzRh4T|!Zjc_IWiKJVe6N#B(@3uu_Y`v1)}GBIJ9zBVq%b*aHm~p6YP^-GM)%2bb@uj!y>K|{)yV;1~F>Vbe+H8 zB6aw3Tj`!9@(A*!V$-`PciB547%DS@r8XFV8-Bn{MH*6l*Vkmp>*`2JKAYqQAE~JY zA{l2J-+eZ@&`(L|B)-&XHa~k}F(ciZ7%IZbm-f82b1()|Sbq5V=1FA^>$|O#%-Llv zAkYQP`rO1~7Oi(T_mboWY}`U&{jl2r3mVr=R%5gt|KB;xR!4Xppe?)!v`AJ5uMjj6 zHVgJf6cl(M+U@a9_Nu?i5HKn^7mc2yL4ba23(-avXS{5uY66L;G*D=XGseZ_q1N}Xs=a15g}SVE2-a~Fg{wv2G< zC><`(jxWGsP@3DfspL*$Y-;w;GMV(Z7RL-O;kL|eMYky$J5S1OvDe6A)xu-GVEt*X zDd=(U(O72#4{0KCJ>YNLgX8!)34Dex`=G4B->Fka10=N4JJ?=T^Oep$jcM3XKxwL4 z%CzT(tmcU28FkEbdMW2)Tkarfm+(g>Kjo#ksMl-WC9+o>d*ktRkb(3dS@H6leE64B zcMq-6z)NXj@TZQl)*Pq8tZeH03$(Gdd-)m zBR0(IZ!g~ic?Db4Tl>mExoVO6^a-&WjHQC1@snUx7A_5f zmHvjD_8L{b_Bo=JL!cq4jHzR2}n;*FPn$lJrm3<43FtpnST}_M?U=hBgZR#h>ZZBOcFLt{;WiA;D~(71L#HkNI*R0ApIF)1(IZLvf@RE(w?h&7 zDQeiXr|95F>$4D8jHhSxSR2bYyQVMe#Wn||fRbtX>J>x|=3R+0HH2BZo>7vjN|wOG z7F}xRg|+XIzF5(>;L%LLiI;kZ%Bon>82l~=eQUB+r+nD1FtT6yT5_j4v>Ce6CC>8$ z*6RcNl|sDICQ!*!lQ==**v7?Hb(Gu=<4V<21R$uzrS8`x0dYsfCOe+W+c^q~* zoK&+&x!DQ?tUm!F_FUUU@ydl(?06jH7Rp(0)`_F(1Kd@XV)qjA_K{?e6~@rN@Pgvd zKBp&`Fu%I08BJM}1nf7rOOLhdYms+`=brAR{qj2LmtFF0XQ^V-mU8WpAUgb!8X&JB zXSZ+m5LH?|nh<(%7@XQ(IaTQNtf=3Npt_Ud_UPuh#6w6)AAQL4f6uVUEQ^L#N3yiqmayq-$Wuomm4y=;1J*%PJks3pe|^Tj{i8*$ zNlk`MCT6bPNQAqn18c@p0F#d0w1zAe@sGj65F0{Y&R4DQ{k}I6vnJ>zAmlwRL(rlw zdY!xThE8TL|K+m;mwG#Bd;g-R%eRs#oGc__+u~t{#K!9Gm3H4HA>!e z!xtwr`Gl#m{;O{j6?-L)l1K|L*%gQ(0SVbEzc> zAOj)d$C-Cpv26)%Wsf;DZTKlKB61lnU_T>PkR{P1;5{;2pL{^fD3B(=4Y*@-bbyB6eO zoATTS1zVrnokiXS`ggTKbxunrg5>C57gT91?nN)%hrFKbMgaqi_QCDD;?)Zk4b;_J z8QihaqCXCExJia#p0oo>Egy{j9{eG^i5oYg(lii*;ZGP8P0!lU+YZ}$MfDlB2tx`!jG?1d=(=-%(mUR3?pF4WXzITRZu%>MHN ztvq?M{hZU6e#x1<3}g}y%x5cD^eqWNVI0C;BaPE`G$rtj%e>yATTl8tRuSCF^O-ft zVO4em7X4vVvPs~D$$g@Dim&pO1x96H6vA=@)O|7oH0BLJxh{N!!cFO zk??p0iSUrD)7Y^?z(**@`~j!TPcM6tXxzkISudx(XYa6i+PvciGL+Dz*#|eWFGyOW zQ2kK6t4x*1xx@Vl7;Fp2_Df+9-Tbf=iJ$~L)nhb8K6~B7di+*2KwOGJCOl<3;K(XE zAy-~!b#cj?#T%Di=gUm9`y7eIjtWkYkp3Y{=4Ej-RB&Q)A!{yazpBdt!m0nBM@IXk)SdB|q;VS}Gc5%&m61d724=*Dj< zq^A{BG;h}SM6MQ+w#k?I`ZH5naw@|Mz3qLneuF&Cqa502VshuR^i;W)uQltore3uz zA}^)QglAB4JMQKmJBC?C?4Hu*bTDO&wpmUTTh$=v_zB0v)$+(A;aE#b7I4nJW2;Yc z?SCc%sEU($OHr!)j-spwN0j4%P_0C-& zm%Y6OKOmu8k=-=QY}~JdAi3P)bPnVz!;O{u2l9Km>wnYTbD8iBsbed@|0Y%ua99Bs zNboB$Fg5kE+#qgglAf|GPAE}bofS@Lw7JPsFX)D@g%0anA)tmL=u1JKmOo7lLOArjD<7TNIWXKB&86JT5SvAw|e#au0;V zFGj3ZpQ1?oy5IR_lU9g7=KUL-Xutj8=kh`m+}Hjq&d&m06L5(u##B%k0jsWXXnunc7xG$bwfIJ~`~oeebvK~Sq(W}O+QVImRdsBxkXqvP zG+FXPW+mUXuG)j!rA5*0*g@|4nmry_{-_mYOJmfHc5QOlgs&_o#u=0om$jyPO_j;6 zv$&eJdavD0Hum}3H*r(W$c;`b+Q&;VY|w($MzexL%PsQ@@K^A{=}KuA>BwTOw0q4t zL*mAcyZesUD5Gp4BW$d)#CM)7eYj>qsm0KpDn3~cbh+&-hafwBJPJmWhxUVnmt``c zEkqrwSV$eT)av9tT`2gc6lT{QS-pZrzsz`z)J@L;a<)yn_weL}bbr|l+El)`E{j?r z{1pR$(U4Kf_|UakV=ev-jew2^u;{(YO*X`QJRruCU@TQVpc!T^am4YNjxq z2H((E7zx_OT?a}{5Nf62)i2L2XJVnC&w*fVfMgKV4_%)dBk>b zZBC#v3r7@vEfq7|zT)0$X&M2yyDcg5*!{8zJWqeF@v!A%PK5wBDRNCHcKwapIlh-9 z|8_*XQ9l`rYL9;tlJ&95at15Zyq@K|tH#@F+IY8+2!#V?eQl18lNlQ8|CF2pPX;KQ z`_)~^=!Jt3*ZE`&d@;)TU*1?%a(^}HmNkBV(i@&Nr$oimGk-?lz;e4K(D+bSb@%$FuFIO z$>jX(;yfi{W_ol2&O_VjqNH0yJ|LHcyNs7rBJnxvogk7se8Q2@U~z?s!a(2>SR^Ch zl_g(7-ap)&>OmCre9w0|qv3P;LF{5~>X2`S2He19QaIyK=Z78IL`WEHcK?hpUu~%A z$V6wuN{WCKZ?o4I9eJ_?nO$mIp=K_o`NrgX7kvEQ;6y+a>?2+kvC>x z!SuoySN9x{GZMZdw2oP(9fpb^mOjc$}RIwxm4K-QNc%T~_wYfIU(%+6J2 zY3zIl=v0m*n?XtSr5E=$gUHb5{ojP!W{2cONCrv)jD5tb;~`uJut$x9ejzm*rIsH) zZ;8@Cjd#X!Oa2@CFYxRh+u;hXbA4dQ<_uQ%rQfA-CC>adv7}=S9~tWB_>A`QK5a8$ zsa)3)9y5oZis*}WyoU8JP!`oc!Owqudv0f!)fiFzAJZDty~iXt@{_F_E#->Y8oU)a zp-$S!4;(Q&d;u%1I4)>(bIa-Q&s@&maj5sxe{uJ`J6Ru&f<_J(`OY7%emNRxt8^WcgIzZaQXj zL^H7zge*HxC|kS5}&F+|Y($XcQMdzAs%_1Q$T#j{&pAB~X`rLexx!S7*Y zGHjBb+C!Q^z_Ic2F`%54?tQwFcKk7JY#fI-_h*X6Hc$=-%ixpGd)=2+YXk z=R}9Vd}f4jAycXqzT%vcXouH0QiIdQL>E(VuD7hNIBRgbH!r9^nRsE^9f$T30iTw- zI;{G1`*FPAIVV?r{{nsxWHZnxh~Y~77Fb4X!odqT2GqE5_#jhv*OtimATyAq=|AG0 z@hEL2ql>^F|06su-lrrw+J*Fc;WTS`Vt#fw7J3oC#c`Qy$6?_E`OzR z5z1?91mNn2y{*{hZ7fPRHUTe}=3JoIQFHGdqPonSM~Yh8xt1l6==2m^{168FQRkN| z%_Ym!wgdVAaS_>%L@t1S#!>(qsDtmtKGKR|9;Svb#*Axt&?l=!rb=KMCxOHbO=*hl zpt5*QVKGt$>aCJCXqz0>hcVq*t&DpF#pv&b)_bzh3Ke{}MS1hk{%t zgZTP0XJk8|FV*?0%vOjjAr>R@!t$)pL7g=IWz!CwNV$|&dhN9#pE{!AS=kE9b9_v< znwtc?37|hZz-@N#C>P|iMv$0cwo?_JpAcDP1DaN|Oh?oILh8}q?DF%aE-XY|5Jx!Q zNuqoheUIikKpdfn#%&*L6XoPxmvq34hVK{c_qGw^DOYWnm9oT~+CO_q5`e?2#G2O+ zv+zt8JF#2z3HNx;c1iAZKD{)^#tR21GB76PL3-5z9Wz35t&KhfZG#}S zyY`UrbagjM)pD5%yb6Qb&C{DWb-n%LV=OePF(G!C4-cS;imk$<$5^ zY23iIf2AyP6zh{SZ^yK|M3+r3KuzS_3b$C47=S+*MvjrOv)_5bPMO6)hyuj5-(MaEgCgbl8Qm%Jn9!66>{=S~18xNTt1U_?taS+(=AMrr;?c-+ylo1oUMW3x5HIL=JjF2pgb)=3A&I?Q9%i9PV}5zm z%_=MH0WB|ss8n5!%_v6E<1uYn8lUujbL6Y$vkO29vK_i;{Py&;gz6FB;M|I$uiC6Q z!svuXBj&M}PWHkxU85@=Raz*NyJ9$Ba|Z|N9BU-miUFX>NzboBrCjMn!Z zSd)B8d=TB1zih8w$FGn=aixSQn2`)m0%R=G>g%{fP1EBZnx-__JoJkl>`}Ch5kG|Qc)`AGL zViteK0Xhz;l931*FVspGY(8q`Eo@KJQU1`yN1GLA-Gh~U5{3{XFLG;ou_tTt7n z(0=6><`-cJV1XlFwY2I=`gEF|C^IHO2?HB(Yfno_hMav@%Ixq?0yy$xk^p&0_O}m| z_Re1e92+M!jM)BQ?WmbRuHtzAXZ)~;U^MoveHe@=jcobc}4h@>NJ z0Z!#RT%#pSEgYJ(Os6Vr(vATM`a%g1=Qf_4eehOTXyP-uO~>Xl}tj5O`R68&hSYWQw4 z9yJK3ZxE;8fZB#TB-UCq=~==D<2wN&2p{5WFgt*IZcR?NBpTwA@R5+A1OrBo{j3bC zP%By!iMGE}Q9T<9O;z<_lNb%;-P2azJu2H4N<2-vp#^hS&lJm^dEM}}yhM;%FOWavWL+&dPw6)K?rZpoWlP>k zV*S+*+qRS*JbePyV6%*TU%7RnV+}Yt;gM2Zt4hHvo!Nz1akIKhgx%&J`8@J^*Rc;{ zKY@kKPwbbc+(9hqX7-8cJxl+45<%LpcmT_z+!bam9-Drv28K!O_UPFN zNziK&Y#6;3t%Qm7dcjnvx|zk^_-Cg|Wh{VS|7l$$;UV_^^aFeTxK2eP;4gpp-TD^7 z^~%BSj8@1VV@WEz!RYZ{5EjlC9Kc_UyXXOtN2GEt26y=E-h z14Ls!7BH;&^e10=m_5dxz;LKCQo-&2O%6&&oaQL|P(+{ykihF;D1mKx6}2WJ2B2Cm zHb9)A4N$t1ZeXm5B_^({2#^kcLtBagJ3KO57W0Os3(77ykdf6@oz6Kt0F7%wU8f~H z-|cYzOEQ8J7MF7Lzn7Tk6T8DPv@^S!`!2djfa*sw8$k8^wH_%>lfj?E=?l*nD6Jl7!g0R!CIZ-23zv2Bl0qNCV(mmj7qiM?8i;*gXOS1xVsi zm@?#DP%C>qLVFd3D4qA`zxAt>f*cFf7c|+QLR}9iDt|J@ty~xuhU_2VjuFH4-UBq7H=;oO{PKLQ1dA3D=>A4`I;1Gy|S>-9P5Z~zUCxNGdV0AiWG)5?B z5MuBE74yk!BEYYnTddh|4sG8?5g8(V*DZcf2is^%RlQ~nWd4{MJ>MZu0emNyi5b$o z`!QZ7Agx_SYabt9^#g;IYFQ%dOr1`J-Wv!pFoB^%NWe?VSO`O5e>$RBq4AsPe}Zo!*VPWQYl30%Q*0TL zONb&w>BZ5?a&z7tbjqju47(q~HrITIiRT(Vw}c;I05$~+^Lt}H4Vo9(&aXtp2|!e5 zp)Lw_=%jU{49sKiwO1+22@?rh`{1Ru9tw&v0gsFj6o&J!DtHJF*8C03W(?8SMp8WF&~ z1c*;I${-M%ZR3&|<775X4v$J@S@khZt_N6wM-_p4#VV5w9}@jn?1D0zu0VHMA>k3p zVMFO{?mz;=BgP9@E)GW!AAZ{{6t4Jh00Fa@dIfXCm>y2hPW{yQnG7DZq~;g-;6)?` zY<0skttXA{ASd+V@8!j^SPPIiNl_v@K+j<231r$FsoW0Cxp=RMBN}2%+AC5yN?$kx zeg{Ex1{XK$WEXlExn~1g_C~2qi40CyrziXqvgx{6b3>Ke84-G%3$g6COt?sJ8%F~g zcMX)2ED_1lBTaz#$`2GOrSe1_en;~eUNon_0S+Ay9U!#H@3^Fiyz#=MlE|er*kKd;zQV8K?K2I86;>cxlpeRF^UV~XQ`fauI4MX; z%YT&d34rBRO1e7x-Jeh7-II>4LPhZmFu3(qW4MvmRbm3F{?^G&Rcch zxBv(tq|~h&+{Iv-Jtek(JoxEh#H`vBp+)n|tXaM)I|_4Mvjf-_3|2pF^DP6ACT_%I zc&j_FHcSRMFp^fyFl@9MmkIj16?XL4IuL)LpH(9>csP)8!u7GqeL*x=Y_ z<)xUq`JzyHkx94BXrOG$^MJ2rM%qCz{&D|F%RB3p-RTbFFkf0>Vn<`T%zhITsF_YE zP17a`2ZAzKDNGo*iIXCO;<*uEDedAAqBYQM!MolYcaR1C=(JKtPZr0H@WF=?TeFD} zK4_kXeIkuf&ond!!XdOTo-c^9hOLR8PY726KJ>j*q_7gl(ynsf$iP{I6Frld$=53` zD3Nves5=B=jM)dO>QTW{_7{@pmxH4J{5#Elc!>{RcytTYVUACoUoxJ9om@pra+k>j zq}ZWWq);)SOMAUz?70m<2i!j)n@DT=11fA+ol-=fBg9nMXxirS?VxL$44G21dr9#K z8c&Qlo?sF7HJRxHh2LXSKH~zb7h?;0Pt40tu1HbPZ4M|Glh^KKOj_%*C^%6ZH{rRj zo!8W&_M$d4lcqIlC{OvXTUZ^952-O$B+ch zAI@V99M%#nhE6*xy)jXWT9JXv?~dJ#hM@F;H9(j6vLgwCBdM7g-9QjWxJL3WQaljc0!7IBGz~oo@x;Yg1r=0gh5c>RTU49z zL;itOy!Pdzhrka1TYGYOCpE*XF!y%Wer0k*k?cL7y*{q7N&TnZFlc_GD$7sr*oH4M z(oIm8$EiY`FpNFBzcv@Tiv3*zFWRpzTROAx8e0EwKsMX|{m`4@&YD?VO_vwPqc4rV z7MZBDLk5CFD)MHJ?@pgZ@Ey84i*#|R=N&8UiYjFvwQ-%D)q9s15vr}d^Ksg@!THM_ zh|UjUEVKBntotCZFQHg@ak?KO6u6+_kYGQ^vx(%o1;c_Sn*Sb@2 z-P0E;r8DckJL*HR8e8!!R~8%;$_#w3Hwa;oQw1t3W5d7^2S&gUuFNqwIh()V0g|IL zX-Ln+05d?$zx5N09t|Ea>C}={+c>P{K66R3JS(;i?twlZjz(3E?cf-y4mT_1;}63E z$4rf^g0n`eMGwCi*I+R&lYZTdE00Fhp2xDKTr^HC)NTLUD!0k3>5GlQ?sg6E7mUjR z9Qk1fcOq}kz^W;t_T=PAZeiEnwsjYi2vXBGoF|POvxf_le#cc&84n2^x7>&Z$ z+Mkg>fE)-Z)UWiP{giB`%xHs%NzYK8`!RD9Gt*p=T#BS!7dq_@}$QbU4V6MAME#oK+rO!$aDtd6Ns zj8>F6^Z_tZI6*TxVqyF`Ezxt}uHp0DebUA`(%y#V@?nn(q%b-`@G|FmyrXx1gi|%N zi}8vI1$OEzE)?@-w)^g*yArBu5uNggLGD ze<|cu`oFS|7He(frbsQIgAk_QndI;vKa0d+0<%lqGp~hYu{`}UrKq6WR+;Og(4VEq zoCJw;P+ZG|O_B9{F;sGt{1~k59Q|YYiLpXV#s!3jm$6~=zThVV$!0?j9M}5%@r|~%jpvs3 zq`6-|t0J1<7KBCAZEljd?h89EF3=>puCtLewxpn=QMHbn^3w>PuSo~0TKe_%AJ_#z zxPP3IMWjR9mU~PcX%rlNH`N0QR|s3P4a9_Nk8NrW-|F2Qt`y?pxQ&RDx?IxQwEjQ` z*#XN5a;JPtJ5mvj(a4t2Cz|crSuTgK`;S^lY+^weyNa>TYTLhb0JAm5t})Qq<@nG^tSm$ z0;+?@CE8iWT11u|cV!okx=2f5AW(^QUCpqQko#OGP~K|`FwD+9Z41*pEz-|ziR~v` zCcAU@3-D!Gd~Sj$1~OuHYF_V3>^n6GOQgUfniep%f+-ph=tiyBbX*YoJ~&ow*>Jl% zt_w?Ewr1ArZkvkJUcKR-1bHPyOJB9fbT0`rH-KLsZLcI{gXOf4bEuMW^LW$1x+=s8 zf}8kMv|u|1HKMhcZkCA+@5d*!ANt3VRT`e;9R1ZIxfhU2j7~uXu zTD8r#zDi_O0sqae#Z2=@zwgTJT}%`rJ-bR4GBph1Ese)v#o9lg1a1^qZV94 zcW)DpPKJ0s_k?O_XT|o}NP}lUq&Sr2w8J8TGr$(xI`w)K)5yj)&TH)BdrH3p&$bA2 zMA#|MntNRU!b*zMJ_@Cm23A|vAuIXx!KjcrDxN(1k9gwE(B0ohn( zsn^$oK3%P`jOzk>TdZZ*j<*!sF*t7plTrQ8_D%pTfgq^33NWQ5=S2cM(gZUN>snW3 zEJLjQc`sHPBLU7672z4Pp<#I2W7T%c@7uA=bOS$dL#;)O(8swqVZToK17k3Gj zaPi8+%<97o3yx?-D<{8iGW>FIbKiYDV@{zBRcBbBO?GghM;9!ltnP$kE&PlK+=Kl$ zs;zyj&8p^$LrfUACDbG5i8yQNddD>H(#I5X?i1^LUC-q*^=!ECRlvUs# zCR|7tfB9O|#BI8uc80MUl_(DgzIaLS1U2-BC5RHmT*f)LU0}mEq)1j{=WfsoOM9*E zgufkyjUV71p)0M%I)yj#r<}`6X9Kk0wb^~}6l|}*bhXsha^E*Eq2|a0;ijf5vNk)B z$}jxhBT#uAzIv#`DyM=>RC4~~Yh~N85Y4r`LbF3srIs09pvj_ehFD*x!fUa5iMFTb z$_a>IZ~i1M(@y}x@YBsyZv$32g}m!$Es4lH$UL6pk%6nSjgQmIt*6nsO3y zlOcpSOK7_bQyVZb=9ZM6O}hKe-0bJ4l64c27sl%34E3oPUJcg`8*rsk6~*{&cHDq1 z7W2SQYz92+@J3sL2$xF69%`h>jqg-}1RRW2kuZuV2|4UysG97r<7Z8;!yiZE8LE zao~fYw2jAqXcb-&M&=FIcj)(7m5|M%ac_3w$^;Pq?aFGs^;_0_bX3c;NAqL2U0R_Y!eB{y%1bj zigxUSanNDH#LZA3-Z?}MaNXL3hJAR`lNE{4+J5{7_M$>}H;(L+FXCIE{ithwIU!0P zr0O&rJHfC)+?lck11gAL7K>y3iyAM6wpcKIST>mFwP%0_Z&TG0iiMf`K@DuI?s7L5EubqK7 z!(D{Q6i+L|EwWkppaClth|pB6wi!)u>dCW^;c(vjm5)t%#L^q|f6Dxz8v4y*4p^Fc z>+pzhNJL3KOwOECm9q0Ja8LGd>HA*Jou`hJO)YYc%tgDpBIZTKJpevDOF)`uh8Nhj zICQPv%vS`zT7)M6d&lUUgnp@M&h%oMXR;GpZ9`Qe%Wq+g*qlK!MED>0G|3xFb|ryI zdZe*u(g0&|H-=}B zLSt(awZvYok2p+hT4cD^vZ=imnG`7@2Hkq)Sx=!TX~eN#{E(5=*dN8_#X0g9;C(LB zRsKVuVnC_z-`U9gV?70nX*O8HP)5bgv1mKbV>EMWIanCgZP-HQg(vP_tMBZ0I#IN* z8}v`F|#ymH+x@Xh`z-Q$hCCp^KJJ7kDVq1^%fM zGx#v|XxYT@rVXudkN#=2H^oB|rrn$+x@^qVrTS7yrYNndXXLR3+*GN?Uv8l6#KCfC zprVT&D`q577h6#WJWyH?bv0)C0SmLH!H8<+v12Kr)(6)VgjhhF6#U@Y#XhA*2%GjB ztFccomqvS+y|Q^3)46?=eJ3J$wy^kjLSacUnE)4(PRX;rC|joQsU($^LR`%tk>hn) zKYZSDkC3>VXH19b413rR3#<;JVwe-Uw4OoBu_VKHmDqA9pPf8aNE1#!5VfpaGe;dd z5Cicvo#@JU7KZUMID2q<7G`3@gn6)u3$24_T<fU`+@?aTDP(DB}ZpUA@*Nm&o zq6DArl2HBYsq~*~iZ<@&(d&Jg>Z7ZSO#NXV)$fJ9yQs)doXHV-mH|Fric2$9y?GR_ z>VGDOX4-tmQgwtcJEr}--8k{R-J{ck=lM0b%!wA*qFPx>Q?ERkX)G=1gG27%#LUHzgYL=plQ-~^Oc3-s#TJAeHuv=EXQ9nyN6TM5r%Xcct zltEk!Z0#FjGKX6npk$>dB3ev#_wk!Y8H!1%9(kNOf>Ygl)5O>3DP*(MY>47sR$njGyJtrW-ki^!{8d(vP zVm2xjcxk9TC9*Im**3d@L~pY=$?R=wh+&WOf_a1s~NF7uK) zbK%?_gGke+$_ulZOKDO?=;KWRt;?Ra;bUB!31;qPVH0f@f~7_~+f%gMnKTX=OMqdT zg1p?pu3_MD5$6}3auvgPjL+UgksGoOvb>GtS&(O}&)vmNr3T1ymCtQ4^!{1B*dg~O zM({`+zSlx6?w^h~pZjM=3tC)5fYC$oFpK4lXcQfg%ZrP+YCi2J0(D8`Txqvzl*YI6 zXxL#7%!ziH5ZvjYMc;JzfSI)76s(39)ruQ@=k5c0Jhc_T&5yYy(w zOXz`Oxzb|>hcFM|cJQ9gwi&pA@s{)NI`ei>*xdhXb^o~TXADSWcM;m~G$ipv#F+w! zjE@Q4w)Cmh8aQdK;8mt5UmnER1f7v`a%V}*kB|g_n%dwDo`X&c9sp3J=aXtFluo)z zqD4du5{rQ*ltyQcB@swnQOra*LakCj~4I%3*zMnD>XF= z2e;bhm?WFg5{GaAVGYD)})b~ z+DLPmfhbcaQ2vig4z#b3x|&$`u95!hM!Y07twUo{&L4Bd?Pc^nPt$UC@xu<5gA*{! zsH)hl|9}aQU-p8=Agvw=?NKKEo%dA`>;4yTCqVLZlh@kc_}Rm74YVHgB|efRMDb8L zg+qLowF3YDz8RhV!S_|qST+=hZyFr3Ets9$M$6}!DS(b|wfvZv!NcS}KS;rE)M;jI z3hpgFdMeueqac-l1SXlV(~`&sxUG{5&*7R!^3&Xd^z96M3IM4Td4WhB<$eB`F8EAe zOF4$(7ux{3Y8M0CtV~C%7J`NvZOzm`jJo|X+5@u8ua9}>Fz)lV1Munr0U|%E)c1O=oNJq+5|PMA@6~YeaEBf zgh70f;O6$1#&>=4STI~a{d<+M?=ne{@mV^~Bu6_Mxuqu{h2C&po&VdNEJHAb^mZhA zzYb+YJ|$z{ogkt>A&^#$E@g4tCtwYfg;0xWs{QECfkDx@_t88+*nZE;-iBR-;~T}q zqVAUjw17Zo^&XmDWX4|F{Llc{Ws=V9ySSsi5 z;&1z^4bIPYnE}UqPMerVyfw%hkUPXpF{Foy+4cL%ue{{?z)mAKPDx?9ncvUu1pt54 z`OhP1kf_?GXG2BbhVemRHyEu<%)rh*5IBAEO)NvsC{QJym3dDTvGg3gwtO&*g!d*3 z+F5WMP=b*79r4Levaz?*xvynU!}D@&>opb&E4LzWsX&n>wLi! zxYl0Cjne`SJ^}}+&Z|Iy=;+B*u+UmNO7OyBmM9mKZ03FFJMJZvj#|0NQTFgJi%`%t|j7?E6ARfa1)%G2nv; zH79YP(HpheuS|PTFxl_th0@}0N7Dm%YT;!Z8xD%N$&r!6{5>iqPIEpYqcfeFD3?iy zx__ZRd)|MQyVDv=JM?idahk68mfN}xI+N*V=bX^8S?W#IqGmgEb9eKWd9mbyGW=fbS41z5|G*4mt3F_e zd2HAFjckThWFflD%K)EWbS+;@3E%Xr>#Xx@d=bq=6+-oxyWG)C%w;d zpc?n^vLX#En!OHPCrs|Z(vDs|B6(DZWXA%Re2 zA@!;Kg@hhHdvw?tlz(&OKiYr2iEsuOxCS-;zFT(p^E$s>pM9! z7KWuwoo$?W;=h1kiIbg zlNwiUaC}!*O-mpGinD00g|+DuoFKkox`su^*TYkyWVJEb0H^?zAlU`X1o~b5Xt$$? z(Th7asfw?Tgp{3*_cQJ3R{dPnEiSN_;uJa+@7Rc~Cx=+&=VQU6aG3@D>6@?wf$JSR z6@oyR$QKmX!zpGp>!TLgaOX9V>`SBt=x7A zJ;X;-UT>nLaK#&Ebs|1Yghe9TAtS;BB6RDjK6DSt!7x5Ypt%$DY9ip9fa+c@{rMf& zp>QiJC3cD(#EE2N{s`EbuuspWf(#K?feSOrw$#Z5n3fuve=DM}ceTa!?d;nwMD-CW z6AtdZ-!Y=qtr{|Yn5RXMAFo;ftAqd!)~Gx|!#GPM3b}lhy4|{5D8AXB!@6H|hulZs zKfs?xb+2LM>T2#4+e;}7Vin0?#MUImFd8o7biKI*oZBY1hn2=~K|c~Fh>L0aDAsp! zM)BaCZcbN8OS7pLGrEAd4JrZSA0eq@3qa@&s!Ube>_6zRGMRtM_nRf9H)K_&pFYj^ zE>06Aj1AYO^JnYINIrLN!!zH{Wc}a#EMIPaeM654Hh2u)##((noNA&i*I!C{@tY&b z0bL=AcLnf|mmXxL*L;O@f2;wmJq0oroP zHghnPq#CDK^QdIwSa>48H&9A#%&1YE$9iq(`a*%#k z1ZZb^QanJ}l0_-B!^Dbu`0nArs-T)BjoGjF{k8ZAI=jh_L;va3(GJ^^MIni;z zA`VjfSY*IC8p$L?OBn&kphOw(x(0Keb2uQ{$vsejUpZ1v9+7taKR!~PwgDS()i>ho zWFJ|`-0Sm)J}8zdsJFF*QEyje)3V}9rcrILjgNWm-J}nKH_&Bs#sz;7qdK&L(DJB; zD+eBI9c2j?pI?j`cSDh&c`__Lv<-na2WC5zCP0;uIf-W{NtStPDn;tK0kP?1jR3iu=cxsb|8K;80=6i9_U{h}jO+`qe`7seq@;YC!0%xEdd5Orbi_0K4Z7|*WF8YdHZoA`BVxZ0uw&C(Z zlj6_>-PnB3f_i#VuBGxBY^fb*IA&W615fL}ta>V7=92F@iY~jR+fMoqC=>ZxE7hDx zSD`n3mim&Q`%>7Iu^Uv;Ax%Sz>S%hJp074D$HJjto3aEdpWw)hN4g-bvR$2~1;p8+ zW;`Ff6YdB9BLxCO#xw0YqJ*MWO3<@6++A5p(D6_*c2U!j&;SG&vdJ)FVgW}`Lq4Fy zi$~OGr&-bQ=|>9@D%~S+=OqY9*?kf1sR@`!$wc(KBwenD*~K;$cdCa11CPOnz@<3t z1%LL9G3Dn3)gMQt6_%bZE|G%jCcg@O3HgxjAY0Krn2;U^`5fF#rIZO z`=QTQ?OvMSL?vso_+Zlw2vMiw*|VEXSv(-aogA&Z!>`n1<#(CF?kC#`Jvz8nK>EiI z9;`q`A`8**`>s2-?amKY0vFLmZTH*gDsjFT-lC!*RxWFcbS46A`S+eV;nFzPq5bFi z6G7E(4w*`N9SdB%9qHgE1nE~3eA1qCN4ZJyAD!D}@|Mm$d%)!NKinM7o?f(0Yu-Fo z%}5sJ#<^$N#!Zd49(REzY>!)OiuRP?Kg3mGCj_FNT&_>)0u?L$amg8bal}EHH2L8yzua+Qi_ZsPk29%>rdf%^oEMl)u z-*A(gL|1+7b`ZMQjJVWFXSG0cCRDMnoQxA-dT1e0GDYrmehyd=0zgEfz=FMjAcP-S z==;G29hwByN8@a+PvxAF?$L{(!{O^Yo+B;lw7qny7!j-y`F3Ao*q0ol&b31c1oS@O zqfUL)(A$)8o-{4s4*}?S>KbJB$a8@z6Z}v~!?%XDA&}xBou`!riR5yTcw3b6aI7o! zAz~bfM?6SU_a!6UdZ(*31u~P2uL6~B#bYA|ocC186kQ%IT$O1cugK4w_+?bRrVh~_ z$Xvr>j7ooL&P!N>p9prD9C zfq(vb=ujvaVAHU?SeDF?xESI{A23&MpZO4|urx|4(k6<~caPp#0NS&kGPn#3IfAX- zm1iXQE%S`u(2iN*le`^b+S5#6=d%0j3%Ne z2o_NZs~L1OmsxOv5i5{{2>XTy3Ufw-*X0y78hnQ z>8lX3(s~s+XVzY6P3~M)3ojCb*bf6ua<(FXWT=Wf*qeA_5BL9E!KmLeJj1Zar?-1ZwCKwZ>(6-NcZSHu^@Z~o=4d{a)3Zl zd6^OloK%46lZ-ck-`w4moa1roj&0XT%kyS*WG3yK)9bVxUL@nM=eDRtGaJ?HcB4D9 zuA2mihh!)oV+3PHW;lj@VGt*_ncMFo+8LKMv;OcxU|--csk8+w%Mz7c3V-45Z6& zcQ=;iA?wp*$U84juFPx5eKSSi?@^>>WUEc%QLgE1a3kAmV#l1OZ8)Hbq7vf&a9}wy zb$AiLH)nLpvyKwPf}%Ju%K3Z1>%svXP|G+{rL_def?jlW>lEg~!W_|3??#1B^?MIi za*48pgeqmmKA7mrRql;1$+Kn6qT9|2_feB>7;eNHgoEDPu%+Yfq>5GTGQE}+0A?f1 zgPbQ(JCr2217)Y5dUyM8)%J-l*Qa8Xs1lysz`l_hxr|xr(AWAX1KgD(w*z@0tc?A^ zk5a(0k%cgHD7$IaaN+Ec;P-mjO4KFuoOY=DXemq-IlpT#b>;IXRDM|=Z}=!L`!h}venz!p?A)qGHM;P){OZJP z<(+!-zB=V1BIr4}AP|epTMgIyEt2JLGDvAr9Iha6>5iR>K4*bPYtLMCMY#-?8@WLJ z{eprl2a^|U6UmMh)FP&Cr(-W)8vsj+lX!x=VB$js=7|G7H9|e;ZoZ}7KO^OEK1H-4!6?rsOfJmTWW>RZCE%f&A)2#2auKEP z*~2l0ro3f{?IzH&Db%|+lsOx8p@CuMT8&$9EE3W8pzOV84nGT4eYaaSxLk!F!T0Uj zkl_u?<-Zn?4~u?`hwk?RDR7#s3^*&)uQiZ8N|unfS8ih3MT#%+;6Cp^JjOF$QXQu{ zc_8^DBwJN0I7S`Wm{Ern+wfF8Jw6?i6x(MGfP8n0jg_g4Dj_D1h z+AaI$uMsvN$U77gPE5|iJkqjhvDpI`UjoWY)bvdmS<>09`CyfnHbn49<5tf+ zGo9N$xYPmc+I*Wir`r*6bqp5?>!kAhcUs;FlyJ2GfvwKG+L4mMARVS*jK9JRTBV|sa7 zOQA>Arb{ET=!kr#R^>f8Tgg#0n$(xDA;+_#;> z4*uK<+31bQx1wthG4+2RRkq~I$vk-PJZSxmyQTXk-l}m&4~V761!?-dc2XJpbq1^6 zVkL9_J5v}%?2wQd?mJKz`8gh;#HLelCE@J##J#m=o-32%=Ho)#9@86)HpCYmPVTFw zr&FVOlX4~Xs*q;Q;EM7Tj#jz{ZHqR;;sVf3s;aY>0-h32d^8Eh6^qe>(q-y@m?d`i z`9bM*UBPun3Dz{()f4@z)JQdu7dlJ#q?#%XTd-T?!~mp;l?OFryU#r2Bh^HAq=U5S$d=wWT;RIu zi9Wg2wC9CtF!?Z8L`>jRG@-6MF*6%C1@?|b;$3wrLu<^k(f zGuM&=<-VwfmXP&Fd4Msu+8Zz=c|6>1tg8-&yyCO=pveNo?fl$p*6e-C>%yR-2C7DL zeO20`Sq0ImmnC*sSi8VutU~eMTkEpzd$(RhK4#-_x&~2gvK7RgxR4qCOKq4wMzg0a8T|$NO zkbG|qMq+y&!tS6P*{*BS`umz}J5$KHHXRP3hd!K_h7B{=Bjp7apQ4wemh7TM&LJL5|c=oqj9^>ttgF~m@zy$QjnV^(^ci8sqI zKG6)_nH`E|k5rk|y)UKlI1Mmf6SrS-Ms% zOOM_iP&?eaZ+zbi{I6|PkC0mBwd&(?ylXxl=#>(Ps9tnk+CqfbExJ^z6D^Wav60M< zB{y4up{W>imj>ooa)(IyHng3w!w2^cLoac4cAdo9V9%=duirfL@LbXbo=3N<@;ATHajO_O7tpHx&@~CO=DTESK+_9v z3YqsGPaJr+*ZWr`=h9VGXFLl z=W)U<_PgH)QR)>+SyrJ87ra?Eq5Ees(6$AeK@T7iNhM(EDriORcs~>Pgxk?cCLq?> zd3rFQ4xG%i2^FH9eSBAZ1jBZb(ny1$ujgHF=cVd%@1r!6-LziY96XK%117;WvED`I z^2Q6l2m`v8RZB4Crk^kVZd9|6f304c<+bvuYGRVcuJ(unjJ;2@lrIv-ZU^wpA{QhK zB%HK{eRP_7;J%+M3l0}YZL6Sy^=TG~Y`oA`Y0%F!!{j2_R~mzJ(y*}F+{lOmS~AKORF1%C8Lop~1#X;MM> ztlk*-G}uCYE;axo`;x9AFBSeWO>LhD z)LWSy?j&L#L~{`>Z(W0pX7#v(=;^}M-S$10X^ZwY*B`wC_pp!LNSYN zguIcAQbF%UGY4{jUbx@8cZ(fYEa*L4(>poXEaO!7w1Cuslc3S8#3&o`b0=DK%o0#o z->3$nSpx7Yg0Mu#?x)wHCs6zyPT|6)6klX6#C5A-S&}u8roAwdlm$BbC&WRA-P^|J z24H6|>^x5pjJKl8RIhdZ)V^I9D|2$=`@*}^l)$}~`S{g0%`0T!INAdBp9i$*ubTZ1 z$xDU-ieJ{l^xwzeJM=~G?$fu(dm9A`g;nR;EVQIv2^;@AYNW6ltG%3c9Yt zOfUFO`)b~J9UUfwt*YjabciUoz|KjmVbJ+(Tu!!oY)-(oP9Q+6-w`i%)0-{ikf&X>3b!9mi$X8N>!$DW!IM+0YmN zv~y4;@wSgB|O(uc0*GHm;tnZsrd2mfioNjL+g67et(R z&{+gHcYpGO;iL-)Jhv3#Xrm4?xy{8}XBO!$E3i-yOm)j#UM(Lu=4p}S&}zXlxKtJHb1$hSDW8>t7q6SuAR4 zHwc3cD|92Py@IP{fh@YiUhv@bb-s?uoX+O8TnPYn6P^PAKWoKTxusQVbq{2NJ`!k} z21@6xg|J$e z>tg&?s5v#Sz{0sbks$!|qVAfDCOES(BwzxceiiJ8Lr}vsq+76V+k;P1h1(GUvcagy z0-qq7qpy{*#z#)f!atIq`(>{BIaG7k??6D{9*h~UzmNm@Avv%`U5kDX_H)7nl@zDa z%xcR>G6Ed3>#zk(Ui?scnLtA~i=Y7~R{D<36@`77~! znVou7rR40lot}tGfuXxmlRiA&oG3CPA)QqLJ$>q_0>^3jE7B3!)pt5Zv%dzgpRTT5}bUO}r^@ss_ax>^su zWX29Zu8D9h{e7d)p^h7ukB|~ubUkn|x@L(;os_#CFZ0M*CuqIen;*o*Ckb!E4qa;E z?r)A;Au4+u&=!vq&h%Ss&E!#;`!+Q(uC3D?D=T`h?+n6poT3lm8ZLtf_N7jlQjA9KwGGnE7P?`rqzOpgiU^69qT5Y3-ObucmRb)Fk3 zth{KSF`i$rPUCvq$@>BABJOLOd#6MK>tJ@;^mfiII+UP2U%k(A-C#CJ zb-!f|#oA{l6HHefk;Lx%`#W~<$Oqz^lT&U%z>LKKgITHSsZw7i36EC+LK6_ig5&4l z4YR)Qc2}}v<+hQaKPHl$)RfPy{<1ZF(zdS5NIQR-n4bWCg6`qSeX8N>M0oAa%BpX5(+Hqr&o&JyXV3eX#WAg64#6?4Fz znm;z+f9PSf&Dkd=1d(63Q}HlqAe1kB+;7Fq<1I>n?TNptW-{4_U{NrSIkPg5-tzD% zBz2*o`qyFBUxqN<9SDci=zZgxz@)W|@8a`Y_3SuQzNaiy{V$D)liG$wYl2C=RUNn z)qrq3XwdBG)QOW;=c1jB@4Bd(qIxwN6!K2S3LrqUv+N!-t()t-?sxGNf4kL-900MD zYY$^V7wYy+*bX?nTYpWO8R6_2(0cFab$z;6YtLKFe-C++BAYm&O-)5Z2@ulQQszns~u(1jyFd3@W)pKYa(>!L5sta4Qh z@}D1C=dVSW53I|!2_Og?dEACdBh#~QJ)T^vg8cmwMl**Mm}Jb4p~R{fQ{LWojLev9 z$dZ%xhplITTJ@rGe+u4d=U>GD!sC0q$)v#L7J>u8xQ4bK#Wsu5#+8pH4Sj_EG~g*=rx24v%TVuNv+wY?ipLvy801 z9myXEhw~NuyP|Lxt927t{-jSuGi6@PVRqwB}O|Y4oZeb05mW7;kv$^ zp>G5UH(M;NHELEh(fZsOiB)NU^Jd>AxZJsi2ttq|9X+>LpOep^M-D#8E$ThQ4aAG^ zi`C;UF)#6KU3iqM>l8;FB~ zCnG~Qzy*zPn9)n%X+N1RtrNx~Ajm;W2UsQ;{T5#lK zCJx3UGp&G(v0EYTCX3QB6jPpB>?Pess;%yC9mrSw3g=<4hk><^-TLGZH<)8if-E+2ykGr)!2rk|!NhM#6%!VI zq5;>jH75qTh*V;R!J2%xe11aC2+l`?G1VYalugic#zy`KHIELUS7}$*y{J)CZelFe zDsbu?xJ}*5gf;J{&y%e&4?aQKxOHs^Kt`c-TtF)>3O$IJR;%>IFZBAnnwI5cJ_YJA8ob%S zGcO3Wp}qB94a*wKcA1fn3_$D_J#w?K_0Mi3h+&XA!3EJPMkO*25o;m@bcn$4;tAQt+YJ@=UfIzn zxgk;t_^#G!sYWEJ>3+hzcNs0z)fpJnL|fMjO`VhX-pV#eqHS29tzT-H|^6Qjc$AUa@vOeE^rK;BQ08w-*3-fEi^Op~FGUTesvx#0==2%!2fwzSg?+`l~}h1|H>2qMIX| zb5nZsswtXG{WTUM<~$}6_$5!2Jl?SDQ#io~ojO>r3Xpe(X_|lK=Ypof9!z|kDg)|j zJe`sAa$|JTxbnYK8(LrktS3WFF%)MViCJ4}sq)m)MlgkE55V7XQgG80BGqR9FY#V|sVDPzTw+MPFAMX+8ouhAP5w~&8 zO3D$jne&nX30TnD2;AQjo5D2R#tLCPd0&&QWG^)vkx0p6nrLFepISX#5zlvQB`&hf2!l)2lfr;IVHJQUq#b!A zymkyaVefV~9bdM6TgfOdN7b8lHKXR~s90$pV4NBpusw=^6oEPB)jOLZm&{sibDu1&jHB1+Zr?`Cw&-=*c_GgiICnJu{qLXdEudhKo;8oO)vJJfRrsw}!t$@od zV;Vf!r*@|cpm{y8F3uU&f8EHEe=aJeH76>kstDp?%gJKmEnT?6#Ogb8+4~Wxrrp}^ zCLRuy3v~??*9Jl9P<0EqeMABzk;zZvH%1R7C=PM<+doZ`v((yT#p#UBn}Dqbk#c21 zn%KtYz{wyDEegcAytAp$kBiUwu=0Zg&~^zp#FLWMG3$>FZz(D3aTNP%Ji%FQl?_k< z3MHuAj`UmCp+5K+d-aVSeLk3uWVCsx%8%RLmoHess}`O8P443LdG&uTEczrbB8b*U zc;O4YH5~NXA817simef;=$N|^f6z`w=`h^tGQna}!Yx!D*N^_<7S;abMy0S-;etPP zb-ahjbG5aGUIh}xn?+i8Iv_tX;QXjtl;F}rV}<5YQ@rXqFmaW>Wh z65Ju?L$Cdj*Z|7@iwMTRRd=K#Ab>esL$Zi}o&~HT1wTNB9!hpRn zJ{l(h-#$ooZG2>^Tr9<)bP@tYE6`&|1v+2i5Dm&3zoaS9ilk#s6tSk0NgC_)v^=8~ zx}ghZ*4oL&-W2b>`FdK`bNO-!XtSG@l4aqGL=7&1ahkv56~E~IoiGE;LZy&x^$JDR zhoH{ud&fnhQwBU<;+bN?%@@YbfDneoUJaSP%FDqZr>8Wk8wsRb-97x+M(3Jz8w60@X>bv$80ryw2}TpNzkSGmHy@UM(tPFI(9O zFHj?+&czqP0OjWd05?F$zpjSr;V>jFKLvnzrJ4BXmaF1|)5lsoUh%Pr3Q`H4*2D(T zGJ?n4=T@V1B_^yyk{cAy6&O=4YiuNRS=q(*pZQ?PBdpKU#(?ODWvgWiN_=ZVQ1IUe zvRGG>599*OZVrd>^v)B>&nscUwVY{pO4)FL3TbuAJA>e3hX?mq7~9@+{X|IBo=dg8 zs=e$*5D?^XjKRX{m_v^>p3Jv;9{7(nk&O(&3{02CFWW*+8UC4z;qK6OZ+RVa>Q`3~ zTeT&VvGItrYoO#@O-6`i-(|)gNHjMZ5$nYgrbGFD+PPtA_Q}W(41$qm_ygDxAcK_; z{Q+AOG5LS^Bmb>^#R>L!j_-ui7olJH)r(X5_@R&@_AGF00k||E=$Rvm0qxD@XG=RP zqZmuGP0985o%5k4O-Q%+Z!eF`v!+DFL3AO1^;mV#q((jNvk`ls2EHvl15QUMrd8sz*|3>JN^P*Y zvMWxVPgl2%_O)b11Ja>^6rIc6s65V$sEtHFg*7pgjZ^~v+v<93P$BepCv2fdD7k%0 z9rzJclk6MXPIvhf1>^G;?Ngk3UOLG$@src9poqcq<44VAEfoJ~(BMv{jaFqZYJ6qE zlPB(P37th;40yOs5ny=JAi>BFAoP9iJ|`m)kV}0Nc^TW*gEyp4_)FG>29DrK%H! zQhem=*5;meNARq3NFP@AVxPqRM)(xhzft&wHUFj8Dx48 zQ~#r+D8$QF&FuZQH)z`krY@JlCjclmHZ_S+QDCic&rq>2EJJ+(5>zS9<`jmPl1#7GZ=Mbxf=r8ZFY`_50qgYn6gs7@!NId z$$`A-ELaX%BzWfvDq)LE0F$9kyO}Q|u*{ZrU4?k=nG?Z}EK~Bw=PR=&(|@O$i_(H_ zk!Vb4FPG^@8!=|>a5YqB5}#BQrsX37{BK?1+t5}eLLJ`a9{H8jjQTuKRsWN*_(Bg) zEAS&y>(EqSMmZ~Y4KgY- zQr5{1mG6_rseVL-yG8jYByX%7LXRFmZH96eo1BX{ zNrivE`3@tJpiXssJ@_k;_AA*)gMv4iH^xe``eSUvoNljGX+e=D&Y;WM9FXLNISeg9 zEftN-_AFTJxt4uOa^&IlDhg(2gLb@*4HZ6Wb6^jjhgV6h&h{W8W(e_=ho4UhU=M0` z_vC#HY-35YCiFHwiu!xV*efz{7L z?~vP-jDa|F6SsrJ1VV1JlwW;dZWz3l&mHOutL1(r)qz(G2zgnS?7bos`Gc!Xm#)6g zh5PG9Dk5!*?!7CP0MLuv+I9CHvzXt)=1J{at1hqXw+yF;ByJ!JqhMl@nH1fQkfuPM ztb!`!^IA1>1So@G#s37+U<{R&E~PNM3(L?$ZFSukW!n4HKR?Z>Jt8T2+QfAwiz zxy#5G`}-BD3`26|FD}jKoLvlG%C6t6Mz5-j-nr8+>9Z}U<+`IvoXd9dK0IF|Uh0Kr z?`FG-84$ds*aou#!mRN@u&q)3L)7~=7@@Nz|~3A9*q>`X&H zxx{x~B1EqRM1`~K4G2^x#3O`7ZkRwrn8qqXYV_wQ6p7~ZJrI5t-i780b2?(mYUstI)dRbVh?t%X1c>R?|F1fP z6A0VD6QBMRrVt3tvraHO2c15XK--Dl6CZC>bXI?F+IG!A=7bW+9etn;J2nbM3 zy`_UnV{x&yINwawu)4SBBPR$gyzl(MFyN*SxcAzN>fk5z(=l0a1?KQ`Px?sZIeyTb zKQbeiIXMXUT4|`5D2~#0GMkb1U;T>B`b?=To=vo_Yi}ZFh;BmIAxa00=194aZD?9U zRdTrdX$1BbC#mA1!}_=_2U*~LThquuV}?hVDtaN|l|OFxbWpkJ4rl9xPFalyQe&aY z>yDWiN0e*?SxX@D6=%Fc>)#UI*mDEmU`Sm6J&!ngj`ll!ic2CAUkA(<+rvRJBVXnW!{)1$i@!dq*Se zWw!z*3K_>`&yeHuF(EQ!q_n(@RtVt;>G-{y%zD{pK2kn%^kvIkVXcjiX%tJt1Q?HR zebiY)Om-6jG7Pkv7Y^1vf~c=O{RO|6J48&7cy0MY+1-dglA$9bsj;ZD*EYIsI<-JU zL%#Nu6~XGYp1p;fOXy;z&ivk}=5S}{aEnW&lyWCs42Y}s}+^oJrEs~;? ztBWD3xqjf5`|Q6l0i}f@$zD;_fvSrQK?EvwprR63f4pre7OI@7$7AXLEPtrj-P0@f zkP^(r{NN~90_i$2bXc%@r zw#$zt&5HohI&aJQGxAlbOfdIf{f$2RU#jFwn{S!jrs;Sv$AND*EP?(f*sGc6m2@yc zTfhIUul^med>dhitY=cfYi&Zin9?MPhj)e)Tyse>WU9P_%XsLOd1*aFWIr*2X47J& zQs@+t<%VH8km3R8`PCU06s4^xA*xdk%a2HNGe8p0*DOSeE6~|$T{@X|;n1UD<@})H zNbS2TEwmdF+eEY%h6E1jD9^D;2ITxH8mU-I0dHj7#*$$BeFwg?i{x7}XCY)h z;RQt|9P0KyEr_eNbE-DtSe9BDB3#fw68yHfaMZN7?7gj)(17y^e-6yw?9t!>RI$LcXz+zW1LB` zN|)Lw{~ajFZQhB!ZAx1FJ}}b+igF89hU+rkW0>)y{3(jIaUqv*;v?FsOmdkZ(Uj-M zsMZ%ic`)0BJM}Y>7by?KykU};X%oX%=-vhoczamDEW*e}sR+9Mte)>TyR(B3Fd@0I zsU&t8AUTvRWWyXm9Vmko5%~OhL*~>kJY#)9>|A=(^D1kNO#djWv@B%(dZj|w)FoG! zUyF~GI}-~>dpDq4y%OdA{_>)30W=;FS-WL_DZep`fKJT-!*{SFyp-t+f96(}O>cgX zsoZT|08z5_e*j~gwK=Pay_MnK5n*cy{g(PmCQV2a=2vQI1+Ph&A3mqqO7T6Ekq&or z6vwdbI=jJ3h_Hly={wyP?pVsouR+3d(}oK4TDEzi6lJEMsQ@&pz^H$bYnUaL4C7t` z9M(4Jm#8TZ&rI*GE;`6FRh9PpC+U%>UOsN>>wd$W-O2GPnXUMtpUk%RN^mw_VIICG zoPzs<#QwDQ!5d|gbx&zKEKhR6K>gILbhmZ?{4BUuX!6zH6LGk7*~1z-U_S6!^f|?o z#@yE%CnHJcwA2~1Gclc*fLursKGFC)BhP z2zL=BgdC7=1%#&p&rdLNjckPo-~_bb+wC5KInpMu===IWE^Z;NSkFhWrMl0b8V_KM zAN?@D6nWs#n~_9_v(vc^J2sAIs{-G$$>0M2MLyciLrv4&iaSe~MX^mx>?3Se=m ze$6+ag?INP+N1rzr^WwUB4K|doIl){EP(Q#Y{D=!?GA5onojt&W?y1tV&4>S4Y5Pd zNVOp~B3>REf8Ylt@YE5#gp+Gs(Y*w#rB*P!`)@Y5C3u8b+u+1@*3p--_e}!BmQ}Oo zg0pNtS01NHIXTzx8v72pvcq%kM)q+nE3^? zb#l{z9WbyGhp8X+@!VmJarXKa6PPYPhyb+^2|%JVkbB@=Z`$K!yA!?=y?HCxM{ z&v0ShK$b-YHjZh}X8(l~pMC+twJ=UcTao!lGIsG@&*MLnnDgSzI8BSg9n_6na|Y4k z(Zsre4FhcllPWV}c3pH(asGMuVW3M9CXLO#J3RrCpOS90qsO&UMO0z2%rg2mfVsf&Vy5OhK-j>q$NtaIpzpGQ*Qo@j1;ocEwWc;){}<6`o~2 zlc{~Q8pr0iJf~7h3zln%G|bx%P^f(KW&1>&_ajubKKAc+pR!YFfvnh|O&sg)+~G@x zLC#9JU{1Q2x-YTN&<}dqG!J1$Dh65QB_^aCk#O>`&B|jibcfqK7*`3cR(=`cM34TN zyLtX;Ve2Mh$dH)jh`dQb+O_0ck*VK-1X!hs^7mw26CzGDbxZ`9pb2rlv8ej-sn2f1Ob-xOIK<%W zys1eeTbFC24>+x<};d zcUN%q$L;5(t3z;}Q%GgH*baOog-fjYf?RiW|6H1!vX27;G3~(`b3z6rgTPT9np^Cu z_i-~X#Y&4dGYa=e18ZaqTlZZN;C=6o5P$O!T{P}bJ%wz^$M@aR)Y+D(LH7@TRNroq zIyB8Hl!9@3%gZ&e$dvM>NT8K3VR^9&(_G-dVuzETVg5&dIM|Jh)?8n2lPgsxQszq> zTenxjQaNUWPIJ!+6g@2dqaFBKu1zB_FcBM)gs#$x*#>ARcAiYiS;+H$mB62FqJP=K z1ZQ8L_o^Hmn_&7`j(3}N9ELBZNjFJLndnxWxzC|@5e24Yamg1l>akObpBWx_+fiY_ z&uoVsz;?3Iq!&5vwHXmA9__ME;3E3^E_(f{4+)RA;y1vn&G}Ot+buIZ(%QUw&(V@!a~ri+-E2iMu;NW8D%$DElspzrBcUG5@gA}1vX1}N)d3HQ|CsttnIqaqG; zV&0!5a7k9kX>SPzonfU%xyO?=8ZUYIWDS{5KXJOWWMZRrsQEyXr zh(}U3(37kYpbK3_uFc)MM-!HVX}cW^6(+-k{%B@|c5mlXHRQTvXtTnt^3rSu#uq-9 zBD0FQ3@;GhSYi~ciaryEnkO8qRR`iYeNxrVKMVnyha$YHzsX5B;VSeIDl4Y1Ta}#7 zRnL=z<~3mq4XBUO{#hGU!Gd>5t;b#U6(+9^8}8e~`&QtA-~@%8n|7H`Ec|4ZhSsb-v+3y|p{6+R zsFkJU1!~Qm&L1fHy{X@6gm606XjJq;q&m~)#i{9UI%*MvrP=XL+(mIRl(cUEf?xgy z-+1Mi@opx6wY&-s=OY(pu^Ao2J6T-G;=C@{^9Ho~RXeD=o<%C;hZCsERFHb7v?Gw7 zxW!=bj5rC7(a^B`E}tYoKSzUudFTT!`riwpjcrcq2X8J-)>kVOhK*UXI<2DQQIt{w zgb@2VJ5?go!lav!2pHd#aYOjm$!vvZF%b(cTDue*v*bjR)*%b}ZXh(7Km|@GIxSb} za*a}x$Rx{u6n^A75lbc4b+I9-rF#z!Zd6^G1 zKvE{VVl-JO4WZh9HzjvKTO<7IBr_gbyUHs=N5lD8#}_9AJ0`Fw!4wDHWh@0-^y+!4 zj)fTq_gYc1WVz=KUvgOClMKAxknY>#@;sgZnZ(ZA76$2gBj@D~4By_KLLJ%knR59* zMUMyZG&4XiumHff`81JX{F*7#9MGRgBe>f3V|0fr7d2m(nX{CUe=+SI>3*Sis8h#^ zzJ>9)jz37pRyE+fb_Ov2@&ceiU4md0w=d9d&TDj?+}$zBUSkKE;DJ;s(_%LB7zHA> zXWZIJ5?e$IO;vc_>YXO}vI4{js&)x@m^vX&Ib{@{v_~8Jb@%G~S&X-KShy_2e%uRo~@?;vjv`w*foCeE6@E|0oW zRNN|=fcd?jS!|G@ePN=3b;>UI{dO79vNc0+M1bXOa4zCM4+spm9))-rIKcuJUza}aLN!F%$2`e()x$M;J z8fRkxuBX2)p3D_Ap1&D)s$SI;qW$^o*H_;sJuYV_p2~6XM09$@qE%a112*xo;x{1Q zEKEFGG`*m*@}2QU8^zXvU>_(sW=?9V$3k+LTmy3KTR&~+971P zXZc2;ra(>NSA;1kT6!PM~JCzco5MBowLcm`*@1>w2V}EvB}X)%d!5(hLvCz^yApT~n!x^!hA$>Y zx1V$q?ps%a4Cfu9)((2|Iid$lQVEDR0>DRDX9UHTM`AqHE8NKK98q+T9_GqGDCVQW z__1N+>@<{a6XHmIP%MUCHKOs*1M&ye`4;mUTcs)5`!JUSsc!<>&eK&?d9_r{{%M4D z7pjZNJ3P;NeR_!mNPDRmT6Ssp$Nepn(BpEayj&l}M0FbkWz%Ap1}Whg5}cno2c;yllGuS0lee@=5uZd*#PMK-?%z?cDUd)HOL5i;-i)aF`{@`jtE{a*Az*9>Q1P|tl`eGP^u2y4M2gQwumBp zn4wc_#~8rzBU?D+^XiG$8m|u}{qi_J`9Dzeudp^RX2nx)1cT%{L4{x1^K16Z^6s+- z?jt{Xkgb=kMZCg!)m03_)XTZ~$=R2Uw{tucKSQq30BhlXoQKl>+hZF}mKM>M5Ybxt zr^0qm zK)KOl?%wdy-HmC7520Y)SE-a`K_5*ELkllYIK53N!Vu!RR-bOX)`k1DIMmI8>WfI{ z5u+yVd@9rr9|do&h%mh7xxaKSv3n+g%kl3g)peg$2d(3^Q|QO$HN_&awv*7)UN6S# z@5CSv<-l}8I@9&X9NW}KrBOxHio+~iPD7qL*02GlZ9a3fpdM@O&G3ZQ5iZrp-iJo` zJmVgGdNmxnb|oQ{ae$A|fpu0#n)k$#yuq4H^?U`UQxrHARN-N8m^NX*`a zqs!&_gzLn46b*@$bGDV=xBe1Qd3p1nqpuOwLTkUVdjtNig{MiqtG*IaN!*-66EBCGzs-c#VUU^YH+IZch0BD=aIr!pEL~GyimvZ9 zpf4iWqEQSbOC9{?xoPSiP;WfrMt`iwi58YHWOln(;A)4ITtz#78gv6DRRX~Zz9B3_ zOw^<<@<4aXp&9Ff7D#m_OZ3r!{*~PQpSX`$jDKSZ*v|PAe^C@t0Gf`pygZ5dnMfSm zzZOPO<)3tmpUdxlF9M|)QCoq5fcZ#2y3TZxj6B*)5IY3Pq3ypL@3jM+eBUEFJ$ zA#a*Z2r+jpL&c<5uArtOWM>R`QrVm9*t=S#k7p4x)@E+i5?{p_A2?V#bX69MF;&i{ zHsG2hRLP6+S5SX8_?%k2XViPGpz3hoF69nEgm<6=7 zW`|@&AlQ%?m(Tq0=<;>t*CgJw@56RND!pZRNAU#Fg=q6oonJ50phG*&th($Te52HB zq0|$?PEHsrFeKDX#PtKgZK--}F&jL{$gOG?lOI9^pDDZL_9jhj3^&+qy9`uptTv1!p?JId zB8x?xX}ih-7MToPMt`f0T1-KGbDrwc6_{7rY~6j#vs^ooaeOe5;(CnSc=(mICugm5 zv_lJ#f-AC$mc~wvbi+62KhpD65JzzZ^S0Cbw=0RuIKOgN9$U1&uP}D^1-IXHeZP*K zC{D`e61E54b;rgO7nRF7)+j^t9@&(~Nx>QV?#}gTynl72UGbL?_YX6b^cXd&g z5w-zZ80E$L65Fetf5ebR72hp)lK3PXk4CAIrES#qVY+>5W`W++Sgs_Z>L=&av}7E6 z)#d*y=g}(XoK<4c*yqKn0%u8zlT?`{Wa?!XM*`U-gw1J#M`U&Nz3){BN;S+zzgy=5 zT2bWL6*)#vp3?UEa4Hz8#9UyfEF<1I;-qUe)C}z1>Q=&#q}-VKkju0ikFpDW`}xh6 z>t>66z5aAtJ7XKFD112hc1Z@2Q{G0;OBt`>6D+o}T!usRDa_ziw=F+@uLm7)O!^O* zK6fFBB_Npq07v5B!Qz?3ZgoJN*6P(Xm``x)UiC~4lt8%$<$ZB8j`y7G{x^9!HC~?* z+-FAQC(1cR(MJEJgsk*hwK>YZ)!UBvhN-OiDTc}gHa;Nf_hcF~pEl=7!lx3%Vg#+d z^882yH1^Zz)f4Bcp6azSl?J8lbd4K}si=V&SHJpZD#@rT49dscRm2iuwn;iR?AQ=M zaUH>;hKbn@E-opzIoms+5_--IYBvcd8Fi((#t%%Z04V{#3U>9WCKJOnX2TBJ5pyW? z$^9SDD~9k`@9Zs)-0+4p+o9^wsS_ri)E<3%3|VoJTNNNf1Yf@m)@2lwkO>qKeT2?| z4Vda^M2moyNy*2uxGJHA>(gT7ahBK)Gu`&*r}xS}K&S7))3XWiZBWT7Aig+-^NRuR z1kT!~M@8_ds=E$uZ|Imr?!hOaTb~3rOaWX=kB#WcxpF;`5`QQ;X9DK#jx9o9MHc^m zVsq8<18e8Tirza+cie7vEIz1YK?-}E&*c1vQxPjffk(fmiZ>ApD+ItAfeVa>D9 z&~m8r70YZR6+nPs+a9tL!F#2MdpUK4u}j64hOt03Z{<>WfV7A+tS78Y~mIFG<=i=E|l+&u&rc zDn{-^s$q)N8U=RX0b8apDhI}?o8-C;5&CzfxOSs|mSD$0rS3w2$L_dPhs%CfK)Dk{ z{@ji*gMOgMre<|8Jkrp7P@RRAul+r8dibL4z05_=c+17ORN%LAjU7Cq*zQBQw$9hL8mA})oN$v*5fxU%8cCX6vOz9wn z?4R7gwU^iu?FDtY zlt3p0nd}1rd^^&y@&299tx39%H77Q=6oqiqlHO@=m)%O}a)OP*WYhhB<$}!q=+A1L zwD*nt%GDA@`UZ3Iw(i^J_9wdu=HjrbH{=jU32hdvxI@8V;xYpoofLi~@D?B3?ell|!qvtjP3O4-E zGH4@#5V%(2tN`uQxM(GR9{QAHVUD*oL?d#EIzVvT#O{!cyk zXQnH^67g7pfTou?GRus#wwxuMkhV*Ii6-|7RXX#u31gLhL><;WBlzu?(C@gfL ze3))LJkpEoX&mw1)d0&r)Ny2|p=+rGXw@u<0`DSRf2J=6#XDz29qIMl+w1&bhK$E& z=?tG22e(IV_u~;MzGo6?Ho0r2AnOGx-sV3(O4+ng$&-1J;vv9xqnS+H2iy-<5yPK_ z+)D7qW8JmUlpJ`;Sy+dxNc@mI>|C|4IW&%rjblOwoZsf+nUOP+KP*3Szs7w&4+m#s z_}@_fh;YEyHOs4u-c0VePm#d0{INVustvNsHp*t3NL{HQYQR=P zp_8^L@)hz+=3k&Ewhq0vB+fLj>4JKV2f0f$MX6{I$7PEhQ6wzJ24o%})JP{~L$dD1zp|lquE)E=b z=eBs|@f2LhqeY(YJmP=873&z z%yaFkedM-bQlM0i(d{b|nwPif4F?58E5u%D!-b&EsFxb_Umt@6SK zP0ubz5kB75MOxiSYo#%Y#;>-FMNCS1y^=b3SF2gP36bS78hGc~cw8vQvxNuB%XBTr zg-1z@Y~eVipe3nDkF~wf_snWFc}r{Ar~sQB6PoM4F*!ow9juL$Frkw~k~$QQ$-5)b zMZOLn3hS?>^%r4;z}q0}89|JR?Mv*@+e8O+0f9V&XPfr=sdEpAOGbMB7~|FHO{u{3 zb$70G+4>c31UTU%WixKK2G$r{j<41S+XdxDbGbmGTQIA`(kxNrB z;Q~EooArXL7#V||0v#!}CFvDytu82guKeEnxnfgt;&VuqLWW>`N&J<388POV)$?Q@ zU!u*-InQwoU_Fn?mut-n{n|a`)`rbs3Jp4l+5Y*{=?hC@_^Vxl;yS*t{)IWxZe@9NRVGr+Z_ z!c7L<)S-}vd*mk|`e67M$wp2@)KTdPGaEuvkqks9#j4-H^VkZTeqGGgwbJ!dYUC_% zsmWr1|TgUWwX!*Z$dfAIk@Z$~D+e}|qH{dLCX{xrR4*&?P-YK)O1E5Y7 zhwvG0m7F3ZCZdv-Nd2r;9Q@m4cG$8KK>! z6fP5$0EV7ncVWa)2@718I1Q6N<6@o8LW~v$Rczy6NSQW6;i~Wjh)4hTK zgUX+Tk}iYgVN9<4a|;ot%A_F_IzLR2Q=mK&gsI&`YW0n4M~OstmM1b%8liv|^*Ltu zbAL$J?5t4KoDlp_*|w+9d$;VEp0`_;1n3vK$|t_4&gfq5AVBFP0{$NQu)4zK{A^XVvP!Ywz{wV>twECc_BW#j-skONX0TWNG3fh7tC$K{>_` zw+chWBcd`^iR4d6C;(kfLn$dCot_4{#-{Fl8PUu0Azx7J z?0k_aY7aez`@cGmI1Oi8pgsa)DeRs9SMlFlMpo&c*PaARp-3;P!AdajLnm=$zc;@+ z`r=#Bc?MtfVx8(s4SHj%d)o_<=k$>=EaePz&AztL4%?yQaYU5M<`+@J&d;d{Kbk}N z%Wix0SuMvV!gH&zDI>CZ0iV;t%ZHmSgN6M<9MU= zDs7zG97&jNWkA3I^-1ljubjOp5h{GJ)92Yh`!TiAGVtl_pwn+RR2l$iZ|2yQ!=^qS zOAIpKia;^MMp2?Y1VDZ4PocV?QMsW!V>(uHXM{|3Dn6`3XoZ72xrWsvDp1%kc?!pV zz4H({m|$AX7C-sV)jn`X0OXGwBD2BL`&4btqY`|0Bo-a-<`!BKBs0!1v7hd|imp`$ zTE{GnDnPmfz!=o_2YxMQxUt*SBp(5G<_a};nR>3iD;-`ET4oQA(*qS>(%rbBd-Db% z(qYX%L38_dtPHknivu7v$F$EVJ?A>_IN&6(;_H1RdPg z8>@$?vmVhcox`mqUU-6nbY081C@>;8*3ar%M2Bj>y;)=S=fWOhH@kl6>GRJ}A@3Yr z5T4Ar&PG*c@i&<;F>F-BIGyg*oH~i6o_>VVYOhD5e<%g>OUPEq)aOY~f1Jf=1_sO9 zVPP&ZNSU;1gtQ}T)a4K!Mh^X?Q_$MG$`_+ai!mL1o7HuIEr;yHlyO^VwXUJ|PRj4^ z>*~eO#`gfZCl9rE8{FC7yfL`97QxeIynn;XQz{*?!eUR#3OFm=D}My}gj&N^Y_vKH4d*0p1$U6Fpw1&aY=@9!FHiexLX7NC>5K+KRI^3v2ux9tCHg|i$Uyoo%?{Z9GA7k^0oxHQ3 zLoxjU!WZ`-s7o=T1d=0_X-}(7l>!x5gyJ;0|1YUETKE3F+|LMhN9^A@X)b;9xS?ef zdZTdNx2w%YS%yVz!fTitLFo6Nah{mbBVZuAKKUTAQvS~x0;XdtBxM$tpXw?K^pP;E zJJAeT2IJ2NA&KL_Ya>(hWxk^*R68(SDypbkX}=XRSyrMoONU`;|GS%_IZHX=2=)6y ziaeOTYrl->Oz$m?XJtgaYn&yr%ZcM?90Zs0cJ?tgS;N)6{rTB~rjU}J{)yH_uql2l zLwd*u?$f?5w;~J2PajqkGkiy#_;1&n=)bMY=83Mg0KSE`TD7hR7j z9J^;Q;cz^#M(X-e=Q#^CXV7W?4)okq;Rm~hlxu|TUSWf%DAObwNxwR%kuU>?@`z+w zLLpiO=D)l(vK%7J2D_36)N%sFmMzh!3uB^Z1AG+kWc;3KqCsqEP?=A5%s3_ax9YL% zJx#1LZvDi@^;L}gSJ0seKLLxz%Bv@663k3g_D95YfPL0MZq zCy4b{i>!N?fZE3dX*MI?VJF`5Lg+eFwO!iF;8=^?NT6e2^z+f~)=Pz#?)&SyY&yxT zBfY%lS;lcA2Grx}>~aKVF~~^*oR)##6{;jf3WF37e>F?)^FV<>#z)^t+*AFH9AOG~ zLM;p7H6jGJOk+wAHtyNq;Ut!SJ_xk0b(-p-PI=oQr+p32;f31Jg<1>7eGeLTJWE`A zLwK2en{h<7{+dz^m1qxRO)bVdv)pR-kgV`gF7*y|URQaQb3=M^sDQm>Ap>-MBa2fq z?3xEOqOx1b`CylTg^~QXtk~bj*WNfEsKzVJUAJmQHs)`r4*0qe^EefesUj?o>MXv; zrrgsYFS=*9fqDb^K&n&+jKl>~gQS=!^u6q&J&z@}TI*1iCD)k&68Xaf02Kfv-&lOF zL%`~$q5A`MeUG6^W`K&c_yaH*;VOf?1k{1q?F+HwG z+$m8S&7Y(tz6K`MT=QOaMKS;W%jllIW|=>1g-!>s&N^=d{TQnn`N|na4#sedLTTNN z@=@Q>?vQuB)GB;{0q$(|?!;?8jyu|cNfhf1 zxsqPWd&w++S&okm@HGsjgjl?;e_8R+cvN_O-b$kQ{GMLK<{8iyoBgTq8*Q6y(nsOV zQ#F#!>*)iZr^Owc2f5Qt$-1`JVnV-c;~1sB54&O?7{FMB`Yb-}`Zar;O{sb22l9NQ zB~8HTP!eP}furx()%o1$mdcIzz|Gk4JmNe(c3}L_`1n}n_zZa7g!_^*YJy&->WqSL zPN8-oT?}48+_`yLWBz{=$kZmz2hYigNv8j(Pon}4sDI_?AwZDc)Uv5)HiFP&*F<~I zSS)UO=w4@OHE6#0ZC=37RPBykCVTw5gamVJVm0|p-d#z7l>H2Y`!sgZWjjDe{(Aqe z!?(t%$HDx`PIg~sPeGS5( z?fo(3BD`RcHTLx$D;}YGovWK|^HQCVH)P#8Q#&(Wiu`tCj1kMDVQ(o3yL%hU=bW+J zeEl1bY!G~>IWTOlZIX@~JSJ#&slq&+Txvsb2}QgI^WK?9v_b#aM_Ji1Go-lAAJp0< z0Rj5F@y;4cvtui{CNe5^ftr2?$RC`UWbt!ALeMQO*G0M0p0#|EkTQn2(imgg!tmkR zSDB)>V+^xe7(f7Vs^^f#z&$j=;!=-zg16m0wI7?{x9PuhCjEq4wnA}g^bY|YCMkU7 z#N-O$DKu?kLaHmc!;hJ#U|wpoI#bA=wzA!ElrH3Hi?GD7_(xj)V@v6m!mka}u%#UFUa$@29!A_VMI?VU`oz1SPRNc)sWiO~u z=n)Qlv-BB*RrPAPdB><^W+j$tV*Pa)Fv<9+q-R8_;NhRr?`PqCfX!L`TvoT;hXIhZ zES8xz&^Nlo0KxJj-lxvE>UQjd*BSBy&GO~6%Ms~`C#X?jHzeG+uM22e(=q6Kw&|VH z)SDeA#CY;jxq=#9cCxrhqKhwsm}-J{hMJ=33MjFPIne~;oqi%L#FFDlq>7G941u*F zTRQu^1}dt>M6f93#uP4b`FpGEGx;}53$738v2OgjU>;%GdY*et3*ut#O**f& zBNooIX=J!E3vARG)VxPG1TJaPs_&j{HeSi?IT7BgH@JyQ4@PuQ7m6~K&>)bfF;r=}I5W2Nizw4;y)4M7ctk_rWX zMXAKcI;e{i0wx^PC;xt0^4AF{2M)pcTYCgDzPf#qQfr(9ml%K}%nqt~|)B9XQ>ws0f zrVzN{#?lz=Q3wX8gw_pak^E_WSH^leM`R!v`ISI@sV=v+QS8>8CriakdrNednKR@B2bB45RLk*;r5OiZbNX;O`-@g@qx<2xdI~v z|H;JFK2+eZq$tX;RpZf;iD%w7OTL2F)^6Buz%!{Xz2pGt(btxXH~LJhusN`-{_( z|9xMViLk)_3=~+zf3K=uWudsoEjD0o5U#y(q*Unzm=fy@7@b=?8J%sU?DncE7zvdO zrr`ssEn{%8i>8}0eo*{mGNqFks`Q!xv+Q`!>Srw0$l;}sz`^TuT_O z&%N?&R1ZiSb5kO;YhTq?)rlxo`?w0rU!kCj?U+>MeYS_N=T=HMuRL4qBW-B!?lDhu z@-QMtm`xTK9}&)4FJVRNe?Y^$qXqYmhx63$|BTTgVNtMz-k?YgtIV4-+~P3NAf#w{ z{0@?A{saj5(2yer^6+nDJPkRn;YVOwAX!y2M?+ z53ag`(JG(N)7=y;r3Wh{ME*<>jKT}e1MWKG&i>NOs^>;hGlt^RZ)wf5?%zgyG`!A{;c+j=h z`ZCEzb{BkEg5P7TgPaz;zWBy87-oXtfO+F~-1McYxm7Xb+Bn*<15XD_a?stR1l2C% zz-)*L+qC>`i_5dOsX(QwAh*Ee?38_k9WqS*7j3V0pp2S3(e%(h+j544rRTHkn;Z5# z(l$-?u*NS~D%S|~b$vSQ+1g(#rmYT107*c$zXa4cK~y3C_h-gHcuskU1EN0p5sfcJx+>J6`63Xn|8>-i2N6x5br(=e^noTU-AH(6oY8uZz1rRsC;4o6n z;NG?F2(1>6B*~f`{&ad6y;4Nf)%GzQ76NR^UBP;(?5f3O?k$9PrR~k6Lw5%nMAC6; zwBHc|DrVPQOlIW?v&$+~YqxdBe)V?+4Rs|Veg5(;i1qrQCGxR8xiNE3C$iFH^**#W zWhEaSl>;)z+8|{7qIu1q?p*~e@zo!5plGyb#I~pNxet-^i@&%=bN4uw)s!WZ0P>E; zs%?$gS_JeDv?kQ%J?rGC#}+ryAx=J*X{h+^3kPm=cQISuGt-%?ruh-3qX$irhH)V{d?a=Z_k?e5qe?%k^s-7Ig`uX1LD zy5v@qB`;xk(t&CX{xvxnf6l6az!Cs;W`n7zz1*fcL)C@dO!^`Sh()NWx4le~yxN5M zXd@~x5f~;SNTax%Nm(>KF3mY?5m`zpTkcA#RGEnBZpdB_{3B+Nc3o{Ai(Y@%dTf6afU9wV9P)fly5ywkrSq2Sa01`t$Sd~_3 z+x1hXTLabO>N2iIGXm80tkT0&JO}q{v?r04yrCL~cG}QC;%Qbo=JeUM_3TwvWc*b1 zEMbLH43dS7#$)4tYsB5fjQ8WoZX|c7e@dI9t`+#9ilpqj*nF!EFPw>Ws!6S>bEJSD z$gkttPP$qbhMCefEU{tXkI z{`5WAWJd>L4nRZ*xYYQCu`7BfZeCjfL3+>$`kZ2Jq|`>JAq<+Vf4z(-&n+Pd++v+4 zh2D8Ya#4S>i>v|B=&-0777BW}KsgOWcUUEhAej$yTpQ(!UuEzJRGFum<}YPlut(@( zrdq~hZn-*rSvp*lr#s&WGpp6Nf^o)XTU5G!U@ekNQE)=yaf zoGN8`+e+)mzJ)^9+W;<`gzbB99ZC|XanwRa*}lUl%~Hx^uVmpqmj02z$GvnLFHNNc z#t^h8r9Mn(i(gwJ$_qlB%6soKnL`q^V`?sjSn;?rRIJW%>4g89aqOEYg`(0A7z>BfS4rRkqxD$Y)%g z7vj&_9)jLbHnoJHm`M5z6KcOmN5P@WR5+%m23_Q4el}`*c1i1-Aw960)gGeivbOS8 z9?g#RgAfS#M&8=UvwZK|(5iq#VDoh!%_0Sfi3y%{E*s}E`$!|FOg!M|vN_|Bcn{GY z1I~L`uVeTQkABEByeEV_1TlH)Q@ZVu>K=InO2z>fFBnlbs+0U=@mT^sW!)l=DUjo5 zyHqrkHB~>s^CLZGKQgL*6H;p}Xj&M4?JFmIJRD)6x-dowJ1j8awtzih^vBEGSqLrnYxY?R12o+wCzuCg0U(WTqR`rB zqYq-)Jsz^<+)4nPwja6vy!diC4FP^eJh6VB=uQm=W) z<>`Y1UL^ggdP#12nh4XsjLqNJqU)G=#f?)ZQ7>|qf19s2-^(R97irbqX0U}6rFdiB zr$;Nq6~Q}|5;nL7j4{P1bi?lTHXZT*k&}9u!z*k+t|`UQy`z%IZp>>${O!F}2O7>C zu`3`XPS&e`P1~7)?*8t7j9p)5CWhfEr00fIBOdH`n2u&S zUY(RDa1js!putW>#F~CE^rw$Qhd@#q&Gqt+4k8?`h&lmSJO_xe@S_#)F_dY)m->9V z{^7smj#bax3{^!H<^`mk5X33bg^|1NlvB0PbEu#|xAQyXY z;G?3Wi`7mJznRoDlw909FU5s|%DHFhOrQH&XYMYt)hL7ysnRgRSV>gpamTD$_kf7z z;-M{d#k#`H)R$on>dr8iXgu**D01;NGGlMyh`}&Ai(!@%n1>CMVJd|}Qj z9S#-t$VUq&;>^|s7GpftdoG><+r4uS{_!9-mGqCY5uesRjS62@AA?J9OL!pC_ftebKf(Z~ zTY8f-qFxdP4)GprK;P-VB@g%Iq&P`Q^t77sxNbd!rsOFU`CP9Og5-8U-{LC zuAKaBaPt;VddB1Eqou%E%b!phpi{rMt;4boYGhy-4XeqHo zk7&u-_QSbqC)A#gzrPot4S!TKFSnt#Zt(k|yqp68hvW4wkgOPeLDuGNK!jS|yR)>z!nG(P!qpsaIQ@^djo61LlQn7JSXr3_4;XBURww7F8eb0N z!Zxgq{wHl&PASR8l4GR2f4;H+YOEs;9=Y^cDm48bRm$gO}@vY!PQ zE=_F79~?I}$)TZh0ylnyqeU1u4DIeYj9So0Cbo8cVlWHAdvVAzpKJeK&YQ!OHG>E2 zx+|YujEQpEI2k-vqbLPa>aGmNN@s>6!&DguAxw`dMF}uc?Q(s_&e#Yp{-O(r`I-zq z0GVHrKLz>>&e$m;8fpswiX7%U%y$}9wz-Qi>J?F0_ZSMTb9&e{5tb*EU{bAVkhQ4I z^<^FHZ73*Qp%3dHXnPjPU1zC{Uqp-rwtkj{O(p+c%J^aKVC&cBp^B6V!f7WBjvO0i z8e%?QUkr3Ht|>uPr|!%GU-JxRxIyCG@ICfN@q@U{ovQKdnhrEG3#t%k^+2!p@Jjon z5FP*+dp;i1gAn$b3(IE_oa2~VJWm$G0mhJ3ce?dC{B($Z$HKU$0mpK@w8qg+`{}22 z2nkeNxj2QYPJ=9Tk-<3K(xv&@fqa488jNHJ*)oEW&zO=Q1S?{qGMlQXQcon1OJeNr1lEIFCi5nXNvMip+fk~cHSobH}R7+55<0^ z62jNE8$<6PIDkrnKML=HILqk&JFNf@91Q-j?y6wjib8Egh%T;Tj{-GRtNrT{jo!bp zEB{(K(-}N~veb9yGXtb2zL7Ek2dr$gj!54R%x_UKu)pSmMT7Fbmj_UlQdp@aGRi%( z48@D<_j1>dj!VbGDhw*rh+}SU7Y^9Ma^63dpBPL?6&cm(+|&5uR?o9oS@5OtVNSp& zNMa$|v6j=ldcuIqD6%g0#Yw^R#;Gi^!S~JlEu1i^R z{m$oUZb^9K;XL#0f19QR{T{buGQ87;uv_uNC}V*6MJQqW@S{&lAf+i`?at8mIwTeh zJavr9(Y@*Jc!eny?i&tJ&{Sfyf^o)_3pODLhYav-4!ikes$Y1wUY(Wh)FTT`yL%o_R7kz-D8nd#9hJND}qjZQQ?)Lh2WzRn2kA_Q1 zbj94<_N!x7xw$(-y9s8YYUr1o=6T7_>V1VTxcQ?`V5GVcw}{i}o(miMTtYB3D7D9% z1oY^@?5a5qT2%FyN2IJI7;kkWZ5y`A6A;Yn{kzOhiN9duUO`%@Ptd` zwK4~hxukn_T93y%Zsf{jlk!@9MpMq9&_q#Fzs7EH_Vr+0(cZK1k!#Q5mb4A$yUCrO zTMX(Q{5NX-@srf-X-iK=QRdCvO|r&acr^hSyn=1ijt;a^R!}cdeqk?Wh=i`gzG#pm zoM|serKLDThF>oxEP93<8Vd0GiP{l)JN(dh1v)DuMtX_V_|X(hTrNEHrE z8V&uv?3x0Ao5NFOy4BJO7anoBP{=MKM^1N;nj)KAr7ltbo4j zs2yN0$F9-O79Di$Ozp195Ao_*){>Ie_k}B;8J3&VG~7@HGoM1XS^aEtoshnM1F=sV zYTnJYZ!z!}48=1pqGNpUOw_HtdZDEf*brC&-C<}-g8hVG}Bw%9c45w||zjW%Nlw9y(pyY8<5gZ*HHn$3q ztdznU_so2zJJF)`zKiOGYW zngFCLm^BNealnPQf?Fnu=Vo2AUE-4Sds2@hC!YT>{6K556pp^zm>1zDgek%}q4G&fxt)?9=|g z8)$}6KckinOAIfWTad2(6T5h2MwFu40rApOym-TZqDGZ&X?ni1Ze^$@*?D8)`7;D>tyP2TSU{>@;V7JE-e&I_u#mWTvR2#DNna*7qMRkh1yH@iEi2m! z^t@ACWOI4+PChP~1DQ)qGI!D_0?8)oEcPHdV;q&Q_h(v5V3n>^7xuMOKObDwR7Q1` zVh*}UYzA2)5Bt+wMU!3XrwO)2S1?8JtELw zO^-d0PZKUB$MlWBUrrSjv)NkdVznq877=iNN%DqMv@Pz!2`5=e(#;JAFTU`WblqBk z)-md})mZQ)ryh^;sq!;vzLw6=!X?>sFF3P7>buKxEPBMI=cJg2*%Rl4(~=ZhONM(A zzn>O_ec1lr78gI{e^}hDqd;f<65ri(+ulm4n4Hn=d!|e~&BDYo)r^euG+VFDpSz@`9w-#zk+~E-_$>wZVYZkB27H}rShU?_PS>6?*0*m z$}iGI;LXV^ZYbzznsg{|y3C6}7S8Rv>4r?6+Z4y)de>sttf8};jjKglv0Fpaa#e4> zJ+Nf$1;2w^2DxP9be$V($9~@z8rjQ&9Nn~>LDT2^m|MkA2;ZQNf^JbM@v`iY`hDCu zaE(fb+wm5^C8ENCe(2ivUSds_s|hh8oElWIu$aXIc0DMY!N1ypN+({Wp;-hO;Pk8L zmi&*4!F80N66*rpr1%F}Kg)WxlMj8*RZyCm;a&gE6rbd+H_Q2bnz0-{@q(kc_w0qf zyl*zUg6tz4WtK!@4F?6zHMb~wPe27S25!HIjEfyVvOW6 z{cDuN(pRIB8QhsJB7h@+RweYnKDvtzMd~wuWZsPC@zb{H2Bi$iU)GBma({IBH$R@O zE)*N3Y}}S>tnxa=8itf_rf{c#SrAv!K#Mo!74m9q{8mX7R5>j8aoabg8=dJy-D=2s z5UxFcercEkTpHVudn3b@#lR@CamP9&X=ojyE%*N;99DuPb#7R|<1sCmV#x(gxZOqk zag*1(SlsDqql1G*A&TrY8tVJ`s;n^ysjO|1=NOaOV5l_Qo-9Q8VxQSqbkdt=XURA! zlA*xcTugd##9(FsILVaKMIp{HGzB5XG#Y zppGi)=pM{SZKwxF0Tb|h9{COd1>smpdBBe4Av5eS%ZfQfI0jdi)lJnQg14iSpr!mZ zb4z#7^Pt#|^y8Ci@eK7jId+`xf@6E(-o?CSjZcsSE=9k!MgYjAV!qQK0VlJ6N?NYX zxAYLg8E*6Fvqzt_{ixfb`*Jqqc3BJwmJFIuHALd{cd&@g>V@`yfAB6Z`U$&n9rc(v ziuEc{-47~$5F6O~1|_q0ZmS~7WPN8fFgJzcL_1)z#WPtyG}HHM3OTYT7|qSegKDvY4|9} zPKCS}K4JAIe~ZxlhYM`c!!38xgDt^024{Os9l#QS`Bm=Z;kAy0c+;=# z$(gB3K+)hy!fD>=D@wZZ^EVFK0uRV%PbPqr(5^`1JkSZVtioSPemEx0Z213Z>f z1mn*wkN_GmcdY&ce?z#cS*uAcX1?H9&nTFfW828yGMzg|9n?JR75EAD7qZw_D0oKz zi1Xce;;9DE{c}Qa+)k= zvn2semqwmq;f#Ux=e7QdzU>E#N6VG!w)OMOPp_*;&WY_S8R zzPrwRv0oo1x2!Q|yBogSxO`y<2O=77G{*B`tNNHb*oy5e%~gD$;+qhJG@2E z-{dNH;wjJ|X}=>0z61Yo`h1arKpY2hXmz*uZ)@?@s=7P)sk9T8X6oPqkD;+lC(VIP zL-A-E_v1%P!*O^gnyOk=MDdJKmE9k;$|L{iBKV?}2FuT)mvt6584HX@3D6u=KNaE> z&?w92vXVNyr*b_Ez1^iDpzl_l3$+r%tODJDIpqGBwP!h z&Nq4|)*J?|XT7~t34R{u21Y(RQ~Al#veUw82N-}sCT=I4!bDm)i}EcIh{W^_WB&_L zEsA~$>x|rvjinSdH(KdnORdex@?yH1rzD_3K)D8Hg#KOwv!>fSKTIe#1Wbn}xC@KP;;keo{L2T5Sv*z`EAD4PaYb zaJXM&xfV~4ob9ekw}_WtoJQVejac=8oWWN#dbkx=v_Lf?+=J%VE$`$ z58X%8n?xKGLmId$6~;`oDz zO7#OI5T}o!pXltrRHWe5`vF_rakI5eE7Lp&n!w50l^_B*GKjwljCh)Uq0MaguCX4_ z`*pEzx@4Z#>?*GoTQ)h3;lYWGmIk*di^>3$uwCrV#8Ne2AX(j{B1XOta^2c_i-jnm>{?(s0b-r*swkOS5F?@bA9lXMaspmKPWg7`KGLzsyc4*MIY2`Ub z)3QY9Yx|@76c03`m}aSXem#)EG;O%D2j3S9mW?$h;Lg+ z_rD&@sTeftI&%?FVRz?UNPb9EoikA>2&e_n)+JXRG?Pg7@01GILS6h_VH66$H zFM;&H8$~ZN@Ae8e8XjOMVcSYzwi{Po!Si4 z3eMa*NZv|uE^JH!q_KpFuuL^hgqzTd8g$iNZ8I|H6I^HWu=Hj{n{5ey@V^Y_z+{5E zKcER38`bNwX+Ch~=_funwi*|8=$nO)SFu}tcQk#ZD7ujbZ4ZIoVw;3iv6v(3G_0r) zy9@Ff?aA7ddL;$-a|^lruD#Bn`PC1)X_rYTZZ{4n^t>g6(DTWmwzw)ij%3x41Eam# zfp>_EvLnE0OE4t$w`!6$Sr+N8B`uK9H99wJP z^p*61We&XYxaCXPe@~2Z%ZAJls>K?TY%VC9;Pg`_WZN`vEyHT0B)71se6Akj5`Xsg zy6qp#k%K&hgWPC>IXa%(vgO(?_c&L*&Uu{<0;?h|`dW<{F~RCw?uSATK074|Ns15B zT{sxuuzcQ_xChM z7*O;QX}ngvpUC%jPO;9D(#MpTDJsVOa!n8e*Mhc?Vn<{3O=3x^)>y8fi!qZ5dAMI_{}>fo z?ZYQ5pf=3q?(YeBz{CbA(im%3hPQ07V`Dm8-u)#pXQgP)pTuT|*313!>tGh-RaPZn z4WFH4a{4}k1H*!sE=O8S$ps02wH4*f3KLc2%Z5OG%S+rvUTU~GE9o!Nufnwp4H*$2 zik*l3{0#kNz%Kt<1LfK~TUzA8+6{=6o=3NmqBs{c6K9*LqMLgPyLVl0<>RF)&WA|H zo=Av5evxF+C6PKrM`aG?IYycB=HmFF>Kctyo2rXKp<@p37aNS>N|>mT2(l^RKDt!c zF-XO3(bWHuM}V^G9*!N{0p8wl2h5pHxJqJGFpOMZWo>()Ac7w7!G@l$1k87v(=f8? zWs%u;{*mlpbwI&FeJuXnI>{@s87O^jM4LX7D_z`;^y(VQkNsNAJxrf8MCgo>Cj1Dk z76(igN^*Fl)eruueI$IMWYB*b1cVD)8Rl2__bZ1xZ*8oQ$!^4VRy$lQ(DW8 zf%#7s;%?mr7IG2z%yry9%Ipyxn9}k91ZJ6o#!~w>R-&J>WOl%w6*F_Nh{2dgy%w1U z&eex~*4E{AovPbRSn1mgJN)-TLGFMx=YIb++C2xBdN+yqFfj-5*h55FGc)|sy0AZh zsF2qf`ApkFpV4nJkL5pLSxIbp7?q@N*ysN*w&7-sJ9s{8#oLx9$x#EI;>IL7?_`J7 zun4Kgp7gJ$S^H_BbAN6ugam^QknZ)ro*KJ1Im+fzMK!dinH$d2XDDVjfJ}FiM7kYF zsRx`7wKzFPZ6@}9O!-me1c~Sd3A2d--qFt;A;SG61J$D+O(#5)W08F(&LFMBPklq?eJ@rUQKtf1}?N8BUQ4^;z&OqT&p zfXvKErNM1e=-abEkxbuP-B#}a1*p=6-SqU<0?xdKf%IxATcS{;J>zT*FB%ZlL_aIV zb>zV}Uzl^4dNi0{g#j}|9_{hUdk@Jtq#N@Qr*zxr;?Qgf-I=YUif?7RWG=Q?xF?4T zk84w_<8Sw+LGPy75WY>R59bULxuex-BWKCjUnF1%iNRCCR6sDl0Np(NzAffVEjS=H zu8+Eb&(aDsQU1y@J%7c$1 z4D18gzAMRDnI>N~Yo>_4c!swTzXDUqpgvCAX7ZT#$a6lQzGzOQ#9Bl?peMbeng@}m#_Km0X;)@=sD2URo|f)Z zlt8x^lImo$Z9)Ivq&fUeY@-Q5@0!=>;tbNbh@LZ9uwNd2x6EVLnRdlagT>1JT3%KZ z+6|dgqpK@xhZ_R&@H1VucQ8JlI1BYK)LqpW;3?JhPOOq!F}(H1h^x%oocqLs&Y6nbWn@Yiria>Y^KShlNT>*t zI+m*<4kI3XMibaQh}uU~8u!xfHCe-_KM*&)Kx@&Oxk*1%A(9z3TmPwU8{_oqXTN1k zIaDzMyk?@7lu>4(aWR2je)-{5o^4N2f-m%7Z6;d)by8Uk5YDd!x56qkUy-L|i(OP} zpd%tH0MYUbJ|4US6J5-jXbf{;U?_RjFLm0|>#U+iRq{B95zLjaU1{Bt*tgkq9A~!r z`Zaw57E5J89)gQl#D;NJHicJFctus?8m_KXdlIc4{dNb_wb@ z=$8N)U~eb=iKnn`o;~>bs^yNSh^H|nZ3b}TKex*8$;ZeXBl=jnT!Xn%wLnedOeZpX zWqxEx<;z&Cd*TNIP&8-}*311N#pSx~C(S6k`Zcs@iyrmY$9+4z_O?AF#aMRA(`J|r{h8*%R=Ek(Ot%!7wTNHQ0 zb^#)?qC-CO93+JV75x*DArXHz*A5-GB+@BQDBK8M_gXZVZ>Dwh7UnQLzJupfyiMSN zhYBND7m68=hp8^RO9&3nRz^Ri4bRLQvL3^Fdg{jjYz_2}wn@1aagH|)K7+S%R4j3- zw{GgPaYVBYGx7C6x^-&0;|XZqXOu7rz?d@_)(xaH!h;K8%^O-t?V6eDmbTnQ|4iFwcw!sm^`$?N$7^{KMekk1_;=}y*uLoLntV+9Fvq3cE&6!zgAZSR zPm*C({4a(a|7y90mu4}*z{WET&TpH=xY z-=10Nyc*nZ2p_XzCXJo&N-{v-#k+}Ljw_*;J{87qUA7EA>B3}OX7{YvlQfCE)&f1_ ziy3lQzWoB{nF^btB9A>FdaPd{Waq2MQ`|>^NDJLRvf==G(%KMn zedU{&bAD~#=0hm+-tfmfK#i*){}ZQMfPknAYynaWGgVNdAATcC0AkiGgtLWO3CJK} z8%JuIodJAQix!47Sis2F#i$H?_@sf_4%a1{4mRtyLYWORIcYbd7swunfNg`1@DHwX z_m;)_vKD4e9i%p!Tf@Z{btFaT+tME}OSrrgx`1D?2dWgjl58GFIPf?IaE{S2U=mv) z{()AHFzX^%bjl`Jny9Rz* zdCK@i8oGy-#eh&XDgSpD<7Acro2js~N=BZWn0r02YrDU#Qb{aTknI5Bbg1BX^4(&8 z1Qr+4cRZDyL3;x);Fx#~ZX8WvRB@49(_?Vg`m`krdd!+H)VX;VdIb+m?06)ct5Ha+B`pxTmL2jdTu1%qfXIm6LAgS1?!B+b_4mnngcg0kzT_e)v8NV9= z4y@HWcU~?nMmoP)q_~O5z*Lmg^|<@j(}a4d1pe0?r2QTmr3zRLY~v>$!N}UmuK>#F zK+7tM)I0z0ma6SYb6EW@`o%pfa|1g%<{ooyM18S@`^KrQ^PM=8*+J*qRqk|qk4;M3hevrj^lhyVF`2*I(19t2Lq-tU4~^)aHLlM!v`0?h zUkz9N&XyBO7-GhBgOv8o;qm?;pJc>S$7w}p#n}r7izOx(yj{zL$0e6I|ddBnTL)%v&Pof#`6?$uw9&REm#Q&10QxrO78@!B?sB z0j&fEe)z&CyF@FlCwK47+tG$JXs&NZgl~D5RcWEM<0R-Xk-k zg}CQQb`d;->2XCRUuOTg7P6m>Mg#J6wnEF!vXDQ*e%ErB(qnX0{i_!!ri5H_^I-Dw zAGhL8I`TW|StRN7h1)x+Cy9V?jCg*K*h(epuv(iK$SPplLB$Uxo=tn;8804Q>xA2d zrtJ*7w&?;(o6Mw+y&>mEFNBmX%*4Uu^LBUqvAI$~A01|UI#DoSb-MAeCt}fWT5_b1 z$B@WcQ(T+iyO07Ne$SSugOXs-_AJsb3aLPTKXxu-tj_brLu?x@+~uV?aY?N*fa{+A zH}K2aal)$ZOj5xT|IuP}Wp;scLCDbrPI2@V`^KFawu{K{-mo3ldw5H}p09wNVv#Cn ze9e8S_c@Z^w6&)UdnkTJjzrLM?Fru;TxC|}%d;2t@#^(-Y|gQvQPqB-$}BNv3rsnT zHBJ2b1%MtFt1hbS70Lla<0H(Z0-b_>8|TWxLmo9KQeZoOP83Xt!>_h}T3c6ILVS)| zQEaS*O`B^K1~~2Ur_o8>0Xb}{*AGfF*1&t3;q_}}OJ1WpSqu23K|1y;|BbdAgYlgC z8{*s!nb0?b$qu}l{7e=$a9uF+0G@?SJBlyHu_Dy^=66wePzm``MzAX_SGL-i`@ch3 zfP!QH?*4XO1a@%}Gnyir+Fofj7W9u?0K{F-a#+`v6p=nQC%Xb37mf|{fSWiHquS^j z9ikpHTe9Z(GbhFoiF7_$*IFZvtg2<`4ENvJAZ z-@FnMNZ@=X;8j!4Qc^AL-|qa=Gi}bRb1CxH2xgs9nG&nsr%XGuOHbQ{&7MghIJZbB zfFcVF<}!8Rvu~oP5=w*hph7%E^m7uIE2N{)u_LCD1OxMHjO5EtF!{B(K!EE}?Nv$O z)88YbRIx)Isi^ZW$@PwzER(VW8$|nyWllIIruz%rh9F0VcP^&1C^%*D(F81p12i*G zdShEp|0{-sPDUInPe z-uB(D^C7-Jw~Gf1&imMbIlk6bJ}Uq@`!MC=@?Nz>)8go| zG!gy;F?*)`&VMlV{SUeeUwPVBiMXDo?vuI=1+W9-dPV@u98`!k9L1kvFLKcCM}{uO z>cASuLO5LL+%?KI5fo6n+Y26K`L3Wmt$Rg48HFfWyBCxa+2RVx%9N>*?)tgG2nz&Q1TxC*&yycS0Lw0=g zTguytB`PwU%k$>3v^1XFx8e?W935)l9`&>`DXRM{-x^mouFk+QmNv6>!JnEZzBg|z zX%+S8H=(qJ+osZ1lJboqQW-Gm=k4Qco9#+?+UkZWtJ!H7xV%)K_ZMOzzBUnTNTYc0l77P? z+A-M_4<(VPyIAI|RT?ANgwiT#sTtXEpm0~t{j3* zJ3GZzrcA>96G=f)&=+6DTJ~v=_y^*3aBd~a>>JFENL==f4xjfiDFVRs@k=yi+(l@t zB$Rh<1fs{iU<3VsOFT3i`U|jCF8!nhn7PQ683Vc9dhBqCUL-@k?I^gg42rF{m`&C8 zYR&J;j!c+N08K8OTR+y$vy^^XUGXNvjQ>(lizCUb1CguaZkj+##6R_n3r7wrTkj;B z_PX#@S}EAgiFo!Cj!TXs#}TY2-AiV)B`@(CBv|i%yA5Q93OyB_RL#A5S5~$cvLIyC3~(=ZGISu>SR&neBhB#VuPCUvkqc@B3s+*> zU!BYL8L@Ry2AX`&K(d52W8CL>iBc#`_uj z!`_*OMFXNUzB+Or<8E;y9Rf?apq1F|S9I;M+G$+73S*Im^zCK65*P}|#1MOLDW-%g zDoa4uZ0AUIr8hNTel9e{DrDt*h30*&LS-Ga5H#s#V(<)`ye7j}4B<~0K#cpjqeY|fU3PAae znHyoLA&M(|F($wvni0DgntJITA+F1ndH)pMyqE@rr|u<8WxxkOD`*$|`tW{WkVqo~N(pbmGdW)~H5Hiqk~CUs_BR2;Mk6T78p( zwCMt8>^nuoi@@?yM%R5~EXOr6?{qg^F4Nb3x9`a_0T%6 zT&!^IBVnL-Z%zj4BN}{@1uFH013W@|&C%j~UM;U+thX*e08mJwd;BT|p%7+uy@X(d?(3`In0 zj?$0T?9Jb`zirVFzt%14j1p(Y+CO!Hf4#w68=3~irzKMJ?y%X+uF`6_CUwg`d5;JV z&{}P+>CQPv!?5c`;UP|VRd8LswB%6$IGf>zg!%CGz-x`Tx{*+>2Q=sf-JY9C_L z1SjK?*LjY6JYW&4K3Dq%Hn4KxlVgr1GMa-yUbBReG>ohtFdK@N)3op#0U+yq^NYFU22rd<*hJ|<< z!0FHG3}rZ^%6IoW5pN z*D1AbJ^{o)QlZW9><4;$=v|I0QDM);fx*N#BzGzQf|LdM;HAz|Ep@dju-CY{MDO12 zMpr%Jy3Dt*&46^Piz&ox?!#)&X}G$>f;?S7)DEIN0({Jmd#UV+p={+c=C!(G zwoTy=gvKFhckSk#bgQ-@tl06!91wf^@aCJO(miry!4F1Z!SkOij2F{@-$?*RWQ*UfexlfRNZh|4{N4}T*rUr`|Z-h;ih&?8t7sD z1p8#juf*jnNk0p0EK;*v6q5u${F%O-MEG(hK>tppH!Gz?c}1+uQRsHbi*Q16;FOaQ z{FNs}a}qjIBl?o8bTOonO71YAwGRbawy4LCyGna7{WCy$Tqpr(fkB5xC=J!&Ws2X!O*6A8$U^2ni{05 zp{4!ox;`$F0N~K1-+{RWgU!gww=%sT4ZHl~`Q#NM)JC#fZMF*bq*b5Bg)=ZbYgxID z39aZw)!~dA%MJFiXZH}R~CB~bFOW23O$|*U8`*E8mv&;0dTlRSpyjYzAEA5rf8HzC!eE${$1pz1nFV^jP z&j}T%LOaX!|J5Z@@}*bsGm~1mZ~uYL7nII%k&+8Q&p|@GUdbQdp&=0golGyc<71uf zFnVzPh*C==PM$m{47{T8g;HNc{GPi&i9QLitf_rH|Dv-9^9*-x6m6xx^4H(WcWskf z7n^-^j%Jbbq>l#Fa#@W%k|5@@X^M3=%FVQt-{fQ#WIqD~~#Q z*zguG&X4jO+;_i1dQ~N=GG>HaBU5hY+Wz?B$I24SEBwf$srOjSxY$1}2=GgG=%4ly zvFJT*KnjHM;UehzH?=r>1j87y5)o-Y4gmMPri(|4X$)lrOI?_<90UR?DgNiauk z2{z5Q>SJGidKDYykyNM(V9!`l&BQA*!~c_8H;M59L;h@y(Ei=GH4H{zHqC(Us4w9OU^S8RRv zYSa$ol9x|2$cYif+1>mG0PeDVHwBPi)(Ni3{fSlN-4Y`gemkgexua;m=aEO}*^i&5?^3W?$9xhO z5$u?5LEe@hzEGCyVSGzIS$*SdlnVgoBZVFFFmPERucgWqAz>xuky`so>J*e!`UVC( z@8KsrztTew)Gx1@poaR_^qzL*0uv^|Ub!C;F27a(;aWdS? z1T_7IJn9>t&ei>mL~rUg4=8xBaKHIzz{=z&(bjwfx*V<dgCPshr-hA<~~vZvjt? z-tsM!zJeKW0oojnE$`2GGgf+^12=pipiKCZAv4&Z7#Xhl++RlE(ZT?U0VI!KYZj1{ zwZn%y(p0tbAa^zoPNouyS<(O{_8z5ISR0+1Y~Q> zvT;0C`b8L&VStW<0bN@I$xos*-AG<_1Jy_%Q}xkJGfDDO&NZ2f6lRK)D3emnum!jc zeOBzEUP8d5(}i=)(DJMHLKg^~va5r>*%H{8X#iYy$%vxpAjmPr!NER#U)v{-(%J$N zFg95Dj5TpjMo+GKbY|{GH9_CVuL=pH=awy*-Hd05y6w8pVXEPfZi~bM?#X}Y(K|%2 zxZ3O`T-ir)=`TF*^i{I34k_DlgpKDFQNrP7QU{WjWss6Tl{YS(JL-&h zG8(LHAv&ae$lU>1i|Q@~N%ddIU*X|#E}8W4uqWS%TZVTdA_gGwZYV?CvV6dBuk+3R z)p@2%Y-Gu0*LCcO=PKwCspseEoMDQ~(J`bP+5Gb=iU;toksnN1SATmgdgmn1^BTB+ z+#O(d0ZEEwbamz<3L7t&fPVG>h16^&78*RkIahHcM)^Au5B+r^E#nP7oh(}LPUr)P zEZFcZY>PGj8HFsGjD#m6GgPMA*{B~z@Jb;X{Fpv%j2qxpK;f{}=88|=JNeD3W{-+w z6cTm}*{onGk3?QZ-2x*9j|B?SSxUKOoX?ka_LY(8jw}=jsUF!4f+1M&M^28fSph)- zte+CI+pVU_}ZJn9hSHc%XO(({y)}e5ry6yAr(Gk6?ZPc!<~@-Z!;^SO(s>J8sN6*3kqEp+f2jI;^umTY zk#Wz@mUbcd(!2idR+Ne5(Gtsqo!$-$Lx;fwwM(f21gCdp6w9jTyPlx0rNy)grUS&$ zA~Tg=BB}STX;S1=N0ph$aLt}%euPA8JU%`$v3CSQAv-Bv!$=L6NIS8gLA^kmN2k-(FM_JB+ywNfeFBR8^SX7HpL+|}kFHbL260Q2SjYqEc zaj|z!K-;jqvf41u0}8PccjZ4j0&rD}vg30`C&EwsqV{A56~4X2X*)3lP&P1ZFoJ3`;BH3vDQ_5{2!H}uU=@d8chr0s8Aec*#C zcyEw=%P@M83wLtlaD8sSrIiwYjT>;?f-_-$Xz&=H7Ch)zr$k(Jp^i^4pOg=0ejTUR zuHhnQE)JEcQ5+-KDi-w7Pcs+&9nPZ7ptumFC=m_6>FJx2Io;nV8BSqL} zS@iFJe+|&XJ|jg$fhlc2$&Y#W@YJS=ct#NKdIwRlj=vDk6=v`hxFz6-g*#!(!Vmgd zsgGQldZU3%#>*zB8UwdBpT^_491{r;S0cMStl+8pkDO)?Xp43lY@=agRj*^0W2w&C z0EkScz!r5k{&?smf$Pg&h4KoxbeKrwV>-$cxv#$xxzV9sj z%Ftz4sPJmg*zMnTQc2>@lTD##*X$bPkOlZvYyG}=rlz1G1unM=`xaD}@cs}= zTcgy?w`EU=>H3azYP?kCpK^aXTFtoKGVfDh_pqRIS=yh8p-D_V3}L8?W$xM+zi!0W zTH{V_r<`mbQi93+ruJtvfbCVvk6BlWU!1t=jr4Eh()hKTvX7)(WX@aDk2)bsJ==yH zWyP6R@X`?8&ekb{HX6yDmv?o}spe!`O+Gpp0lzVk!{I#aHURr-%JOHOz^(F5ZXBq1 zrjXs1zP|IkI7XQ*-H}a z;ICc=T`OMK4?ponqi*sz2%lrOWI?X6~H*XvVSD3xx7!j9`_tk%tLgVo9T3B@NyF8ytBKJOy5&pablh{6x@#PT}*1e zZA41;nbyFe<@u=?(zu(hBfFU4;a_z6FR?Z4!1HQzjf3)AYQ+3Wl+>JyY=QK%a$NYh zFTOFti@`~jl&MM}9v9#&kdp>r)z;q5TVo%0HO9Cm>P__|E9|l3)a@Fp%+Hch-1{WS ztec`@<#R3Jf!00`4XvgeyIhg%7x*s3y+oQeHVRV`$JPpuwWL! z%Npz=h4S>;Kl{gW^%wG%z-bT-HXa?(D=?0l`W%kIQ5idEV>vjozJ6K56IeR;b0B~e z#zfdbE*=V9YELcnZ*5>)hbODoCL<0B`-&yVv3&5Kte7viyL>WYT zOQa8_bQ&?^E59rO0wh;u7_+3prH7xn&#(07ekTDq2|Pg31mU=0iGOjB(AzTcTB&RQ zUcahRE)Rp_AQ{4Pd6MaZy6{7Rn=%Et1=FxywX>4F?~=?dR!*71OW7}m@)a8K>3g&v zOjdC$aTM=s&c<`gBB0C&FKNy0e_X6H=Du6~(J5TxMIjd_-vpQVo!`_=_=zhfx}CF; ze;Jk4wPmD&;$o9cMz;CB^xmYn`#g+FC!0IA>Sss&k3}EW%}8wHyt0SUp~s2?ihs$w zFcd14^<4P$rrf(s7<~%5#amHHD-~;{Mlyqu;QZ%#_4f!RYemKpZDmJW!Dgb>Mx9K?*ZyrPB-G+`hG8UkP#p=Jjj&Eb3;ft7GBOm+V~!TIL(At-yF2b^vJ}rFllCq!x;E4sr=(vCO1Vd_B~>e zL88(w?5^F8dNE7PP5n)dCDiBF(*qX$;gW-XAn`S|8+6D8g=WUp{mC3Q-yU#z(( zEnMP$LOFwgHJC(|qz>4ib&bFA1Y>iN7|AL(IBbtD`9>6bBn{N%AMLXk2=|rvqxcd6kyuuJ!a5S62kQ zFsrL~M%m-KYkBK`VOMqw>tX+dw5EA`QKe3y!niZ?U}>Bv7r9QWHPR%SGA@4ovLFZ{ zii;p7s?*l+KAjN+2M=>LB) zb`A}%eJGJhbDJV-8i5Yax@GEg>^O5VnMdAN`xlelQhF!4A%hQG8d8~|ns#Ta96PU` z$p=_khgqE1l@cZ{NP4MC!FC#KU}UA{HV0O&A(O>4Qu!@7ilTLTZiZ2FaS%uM>gz63 z3TSf3hEr#FKP7v-%MHFF;QTu)qpANTs!zHp;=`(0tYA`3iv(Wg(dsr;H@b}hurw)6 zhPU$EGd#-$0rQA1K(o(%?uRpo18O`zD*>eI?*sqz%-xx*@rK0=HW~iTP+s0O#D~kO z&-JPZ2ih3shnyJohM?CmxLN4|;GKG&_QSG-Q-I0JOw>UZK9V6?-`;OD%1nOjSu9FF z+~Y07lmNhK>9V3<%~Hi`o03pMj@`e$h<{{)Ja8-{&8`niEvtE4M@z8z?Dn zgwE?8j6&Y-ojs6f>qY}YG+}M`@!B1A#cP1ugp?klLs*O);!g3U?tvxTmnrN86ESV3 z1zJ;cN2!c`8DV!n14dJDK)ZEDEK2}HB_+Q62_RPnR;*0|1r>{1gV8y^&U8Hd$9Dy; zh6(>MHT}62>!zT^!O}UV0d-u1URFya5%P(1)%FU)Eh67uMP04hO8>h-=P`cKvlMYW zS$B1b)P&Iu*Q3$df*aAP%nZ(XgYra4!d=HLH-0olk1Wj{I6Iv9ewqCuP#nUx;PUN-5d+QH>* zdQuvPKPN0d*;qKxZE0DD!>(VSmcW+$Xa8BWtMT$z7TR!-?dH?>!_{k% zv9tVM^9{!3-N^xOdA00ybE+y?ZOfU8avc!)r3cb{-GRJTjIo>2%1yooJOp1wW7WDn#=^9^b2OXvs!HA_c%8rEB!0Wf#ot2geFN;n%x*y#6_{8p^uMlnBssNCg@L>mW2FdflgUsIYc8 zzi?IE-Hr*MVe|Fq^%F$Z$UU(WJ&8=RIuQ8cP6<5FHc0-w(R=o`3Hx&t>ET3Rg-MG% za$tj=n>YaLoCSN#Bt(xOccw-##lMCehM4}*`U`tnTD?urexD}FIj#nM>z zX;mJBKCVMKgZ3v;93apK>t&$MbKAKvVr{E#B#kP10W&Y51q;x5CR**5U_@n)O*S}VfU0NsGoC01VgKLk(uqnD0+d8&XpL87zOXx_tUyqqhzwzrNJT&C)m;@lxzGbNz|I-TA0l7Shl-XDD4G+g30i3%qrc5#WxFrV2$E8qfZy9c_zMaj`f@?(06qTjyD zVChGGb?VgLE>#qexR!(R%sv0ay89~XSoOwOut@s0-vo!22P1>N@LM4}Og5J~x;55rF=L%yRv@6xl(X`+c&>3n<%eEv0E zj%Ztfb(6dVk7Zt1&*us__^+YEU+nh5wB6JJo69=4S5tQ!@H!7VD!{Ugx2a01qD3iqdQ^#Q%-nnmvQ=sQw60GY}tJ zvmG%o!}5C-;h%Kanyh>}M1^T|Run?qskzZ`Lp%9zATHmJWZtt{`i&sTPB#`j&xD{6o{6rwu&G-r$6Soriz47v&y?)8VIp)kum74>vivqK>&;RE%a6O_@l6OFNOlPX-3!c@hmy;Qjt0P^B)C%f;_smd z5BF8jn%2+@pus6hpC;WPrAg_ny4@bQ!ydVrjq=;ek8uF`)97R5-UzKgPuBjiFRfoz1OsT6@b6I?6En5jUs0e<^bZE@#xP+V4mjd>r=xDHT{ zi%UoHtB`+r4rc!LZiH@=j*#UYjoW@v!$8J6pn3k~ ztE(Bv7tEww6h-9C)ISyXi2fIkz7&Kcz|U)hI^I;nFRQmp2F?Ys9-d$1FRpv4;Mx~0 z5yD(<&^`eikf#b%#=@8dOoTC*gjg}N923-uut@dt#@4+7=Pi;-Ig#!3(uz2*%G#lP zCk@*Cw`RH9#u33t>Pyy#Nk(1(m2Qv_i8zH8-%ixZZz1DHjVFER=52{&cbV@W-G>3d zd~7QgaVH}66}JAnUsTlq#Gv`~nYr9~@R>(JRIR2PLP3?$-=F1X70(5CS)nC(TV6ns z_Hk(SvL2Ih4>B)77EEk%XR3B*^2b zAzwkfTGFZ6&B$26S86k4O4iLeLnj_zv!Grw6%YT1tD@o=QZ5@hFvR!1(gg=SMo`iK z3D=B(2IGo~8fo6^HU>Q-*&5=lz3F|UFs4r;_X&614eaCz4qR?MTa-_+<7*15IH0%8 zHu-p@Qo!y~Y8Nw}9@~h#F{lN6Ye3eeg!R!CPBF_fR$<(f2W#q>qTH4wqK$#>&-%Sa z7qsu-dy4>?#v$#hU3fMC_dvfZ5UlfIWWKeB#5Vz>O@Tx9AOO_ygE?G@;1g*abwmc( zi^cg^u}>0ExjI?5iAn+jjH|SI#f>rlA*eN0O0mR6X{vj;avje@q8(@f6h-5Wch_#R z+qI=w^T`3!c=M3H0&)USCPS=t_MJ0;0G|TVqoQW>gkf{I7t-v8#@kqii*-qtJ$ZD{ z?G_E)u*M2sTI(fK3UB3`7*V@Wfa{*O3-^G?VD5`_BsL7ZoPx*bW{}=q{d3*?0ujgA z-pc6kRhT%W)%428XD+wIHl70+QQ>@ql^&WZL^JK_QkWZJUB6#Xb{(&(+Sp+e;_&Fl z7O2`>VX$vEB&X@EuFH&+-t=ca^nE@4*1<-h>|hTGZ0TY-R2JQA>cwb*oY)f7l}7NP z>IoV}K^5vk7blcQD}vRxL@AfBA8j{iy?Aa-$K5b^_M&F(u9PS#Oi?q@o|^ctS?* z0otfB)-g*1h+p>F$;?!9z1aOgSmUXi9*Z2Lt6Edso0Al92%Z6scf%%tWkAD3pO#zp zSTwid(f?$an3xoy?NuS93I05j*nyanrw%5|c*j^_*vE(+8)V;0wh>C*v~q|aOK z*O*s?W_rmx+awB&c0BxsAq;FHleVp>3PjSuar2at*J{OTlspVM|u-JnAX z&~{s2jK*y=1OP*0&^(0x#nvJ7%w+iIIR+C5TH?T@pdcRxu;c~7^b&b2ZzPz-ST(Ov zZo}PqG!uXsFqsPFuev@2krJ~?I?Y%QPi>1(thVc4%np$x>LYB1g_2!MDlIl)>iFpB zI3)13$n5$^m}&5(2dD~!vXyn47e|jH#=+svWew12L?pJ-F8XPA5Kl@!11*-gsze8v z=?FuWG1`lXS6BQf+EvO&G*vj^%lXDQng@lHI9E&(% z&Zljcl>4%&5)OWZ49ZKMd6EwTDOs$lQ}TQY{yPW4(1`DI!u?f*2$b$T>HO>(RghMx`)^p`ag~aloec|HsZJC4jDzR9N6@2P!}dKk zjbcdsa$r;mj`9AzB2KC6_4A(u?-0)7?ATP}I;?)%N!q}ukcXKZya_$8MubBJ47ZMB z(EAESJ_H+3GpBbm1^n^s-=<%bDGENk6CiM-lmNa)7F^%*Es@o<20}rOh5Y`Q7dXYv zg_L79r-Q$8qR3hvsf7GtW3vk$Znfa;cRek%UW082#PTl-4O8k6t$x*68ME>$V*-q)1VitnH_(CM-dp3tfi+n z;%E{XYEpduguU{v(@!U61Q!V>zk&cV!2`{CUt&NrGvFquzK0~b^50#NJL&l6V`J_5 z{BS3E5-}3u2Yxwa&3xCbr%7PgX{j4=)^B0_J1e|-orYI`C_<%8BjkYMArn_Xo~oYy zevV@8z!s6p6rb>2?q)u|z*{%INg!Idj;4^`FVkdj;bPf&B$u%!uUK}wH4e>CLZ##4xzXS51bBp{% z)P`-nr-f2i1}TZlH48nftE0P{8(gPvqIc_DFsda^wIRq70Oq?6xvJnr^$Q5vt^(E~ zsUzxAfxiqB7Ml4{D`NVAeSNI=ik0w}Ucq4NyMx!>4rVeO+~wThVIJ>H{=L=`vNs9k zhoP<=#W1=}w)TUa zt~mWfFNUY5X@l;v6#X$AaN4U7l%b7?{Rvv=R_%K?;wh(WH42MD&ehHlQOWlsQNuyN zQp<92wq>TP`r4u|?>|HWVd>7jwYjRSc_vSj*)x7ou1L1cn3p$KGD$y7jku|^@wLdz z4SsKo7mk&<)|;FvUv^I<+FvElg{?^qsfRf}>`Y1lYNha=)O964B0>YzpZgrnH6_!G z2IJRfgnai55C`>cAGWL|V4L}|hrCpVPl-Jvn{Egs7WbzzZqqVExZIYmIl;0-)CKgx z{c!VtBFdGB>1Mi=h|u!gW>+x>cXN{B`gB+v6yYwvj*h_ynbk+Pr|B z&BtHbrL>9ps*=u7UEo9vN7!7Oj4qD=DtDU2PM7oorOTm2 zPxQy;{aH-p6d6@YL`QmxT(g2rG-kB)#9>3seVVxrB;LK@a~}`>5A)i6i;KHe5eLFr zGHIi|NFjy!-RFpQzO!Ilc1v>zPgujc>zYu_hr5H`Q zX{7xxK()`@%rcH{uC@Kh$6NDglHCoWCw`7#U4K>)ZcLcA)uw}2fAo)Ta{&>^SZXFY za^q@)GQS{ow@|3|IFV@tCxM*rH3kr}j3AY~X2?i@k$@@ecZH{>)&Nb*grr8tp#U*wf7RaK?J(_oaO zl2rO54^1KDqzCQt)wU#8@8^vYBU1^xaU6pB=kjL^g(Qc3oUM@mutw-6s11Lc$I$@w z9z}*?5^9HQ^~ocax@I+-lOpbG9b^DPEM&*+&}NogQGZMPo|x9LHfP{oFVTOH!X$O* zkG#}&HJH_4_wty?OG&|+*EBw3_6?kQw4F_E(32Yk=MpA>)?)e|fPn226})(*WHl%2 zmQ?p{b9V-6CYAuS6ZydHe3$1=+N8zGxCGfkXBzvfp@iMu@^ag=L#?At=jC>bJRQ!T zIe-~S59Ty{lpqXJP+~<@RGG~YaT&xvC(Co>G({x@&_>V$k3|UX)sZ^*_G4-VXWx~^ z;t;*?sKc?M6%KjFBvXT*<<*bK8|i&P{B(O78#1IK_@1$hd(+G#`e%Vsvb1_SX5hm< z6>o3q-Vk>fbk>v8wXigUy6|HYujNq@iO?=~HoWvU zUV`dxAHnP;Y+8W70_jw*Top<-e~xQJ12IY>KjB>7LJid)wD{5|@yct?hKExS-75uH z4J~5{2rU#a5TLJb#Oy5!?ps1iU*xhRo0{Bgy_i|@1vYlWWNRyiD)#8|8vfbXR|;1N=yZ9HwV-58*w zpkqVppqq#=)gDkY#YgXk7^-2B8)b0=7i`ci6NOx&adu7#Eb7#U2D5L#wZOJJ8(lEGsOAzbJEP0KKWL=#IvW~AIOT+wy_6@n# z$5H4^fDQ5*OKZn{0h;VV&2%}SK=JksYJL2x(VFP*C=Z$s30y)qVyR^(JR>q|VJ!-!}4 zrj@v!Mnn=HM@Hz&vMB}^m=wX)y7L`a*xk~Q;ExWALV;T1%-)Hez30h$y!?*BWs0u@ z2HHQ`MHriF5*nZbKkPoZapeu%ZqN0xF{1%?`_8{3l$dXQGP66BAmDA|(E!eFBqV~< zhh!YAZ+4cGngkg0HUEc|U{gjVlI+%%#{cb~oN zmn#WcRq_K1ieZg#H%{LtK)IK)SG zdIimD^WGy|lpuQPHiOVI`Ni1(_8E+~pdt`1>ogbyI2c4&6)y>=sOGW@sO$8H%Flkh zDK!iyFpHfF^twwHK6i@!%t^p?DOKX{q>hq4)z_IZ7u0RA>1gsxK^#FE_ii#41|N^b z)ulsc2lK}v>bT4es;q*xNjU})wY!Z2L<_vQr1!pMCMd?r%}ojG8{^A2$j^( z@e!u6u60CZmcEjA&gFRyQKkXtf^&ooU+zmb1U9c+x`Qo)JhzT0yaa4g1NYIU!87eS z<%WfM8~J||(T}JBqUF~0lzYHw#6LOT#Hkn?#nuq;FlenRP_u@Va;Dncps@1r&w%4fdHXxPy*5Xg+rijg<@OVWfT(Z40C?Ib?czUT?vb?_~c~A3(Fj5SwN+&=VPpEb1uUc+z zN;-M}4~w@^jPr&u?@6ROiM&uN*-BXb>r$A*rSCFcpqV2)_|kdo%6oE#w63SV)4Wb+ z`{?Yp1u$o0F6^Lxp8+$`1)qmRLo3gSRKHR;@=$spVnTQuxcf!24zh(ugY2m2A0^V* zp%utBh5bk*(btGfSOi<(jtr=dE&>qNowLP*TrF@QT9@C=H*!a^Eh#mJ0}BK@5tIqZ zixJM!0|rgfOe0Bch8yJ2k_MjWt2E}D zLJ?D9@rTNXra0#fv&F}eOuCIy;ITGdG_3x&L9{RLghZ7%u8^P)!e_-FJW`&S)ceTD zdZ>B8@DV!9gd)sJNSO6I=W3i0{P9>5XG0s`Cn5OC?_CI|Ht8C~iCV^m4}wH}Wm7dd zBJS>W)w^V-Y0v(GvaNEbun&?YM+B$ep<=1Fq_(xa@G}R{J|`y{f<$vZIFV#5Os3b2 z+bS~S#(?##PmIqLIBeyk6~Z}|XtCle@X zn%@Y+&~vnVtgKV?L%^R&R}|7!yg|RmZ!Dbtb!r07aK}~&N3$*nhA8B6rNAbSN=o)F z-d7qfORg--M{2lbQxo$y zzz7Z?kWUHt*YO=%9DzvIJh%P+-x}<9wmh1`X>)1rS?F4EsloT(gQGHiEMqd&0C62(h==V$$I#aFx)e1R-%OKH-c4@2mVamJM`24zO;HAGQg}NP6eY^9rJmi300T(p=ZU8A%C5S2j3HG ztKyrJDZ%ljRT(ovDlribKvAT+{~Fm`^|V}Jpo=MvA!h*hWY+ZCG?3d-buv3RXg5@# zIslmiOBu2{MNTIzjn*Fr4+NND8w(&RL((bdQIGlBN8LaI50xMt^JE|* z2VZr$2jNjFd3H+mU3R9@NzX4)ry;_lD-C6UISKotl`2$oceqt2wxL&b)^IkGxh~&3 zzHRV^b_OZUSUocP<0ttMv*BD1T0*m_0k`pUG?m!o?-Sv$({S+)T2np3gWg3>_ofd2 zwzdbwRVA`C&Xe97G!fKM)DBWv*q>-_BKQiFxX`rSQ!n9EBBX1D`=TwZ5LzD(gZtd3 zYw?k?$?O;QQ4f4D{Jlk7-+0kr;&*9l*xl8b>6*vHI#yCR(H+p`$(kG%KHDXrR%cjE z6W9W3;St)k{a@``F#K7fT#BrJ8yHLSS3Z+Cl5ch94i{qH8H;;T6(s3o6qE7YxDA26 z9SsX}=Y@b$elt>FO&wQ)PPU@Jyr58e>vle|Ehy2iYRWBmRe@+1BGvTj_>wv&?C17{ zs&fn#gWEKg{LOxxi*JDuy>?KaF1o7oyVuDXxf!yn^9pzVlc$7?DgVrB1op6O@ZBiS zs??q*%i(cSGB#$?3x3ZcP*e96!wEQYMZ2mYNT#oPux3nvbvF!J$`9DQ{BiE5+zZ+Y zS71tf|0WDc4PWD>MoxVEfP>OgA`%n3<}xgyRtY|N3f%lo{la|32L!F2FeoyN-yRqu zT7^4G`RMqSLG|Z5{5ndR$fYqC6ZvAPY@m*Q;DFR6! zM~U!;9`L>F6?GVTA|%TJ3-O(dhd8gD1QgJl?j->-8CEuM3 zGLuE9>oDw_ATR;~InY?>_h|7s`Z4S`VZ;W)%Tm7JuQ2JbBg2Mf>fi}Blss3}=*o~f zhMa$tVZLyCm(YQnua{cogmLS2D05?k(n<5aaTlI}SXG|gEQ1qd!IbN1RjuvGfXwUiEzfXryFOdBk{D4}IMF(HP_Dl5PEy8}C3#yL9d$ zdtmg0u(Ok8@=J6^4XbHgdxwIS<30h4=)|^d^?!c09546sq%&%jBP#gofGK%C22jPh zS?lI2DKElmGHCA`kpC0z)|*Nm-hfje_G2NfbPTSQC$Y83;BzSIgCG!A2H}#7^hiGN zqT02(AdukuNU8<{{fKj&Ps^AzNIhOv(a;i!RjORz^V{>W|ColtRV6%#16PDhxyvBi z=xRtp%6igtw*syJUC(pdY2l-^s)18TwjzSm?0&0LJMVr9ylMsq)0e;=w$b0q(Gi!V zY0w!ja>}0p=CV?NA<=KuPf!OHXfG8pYl~Q%k#+$)4))u`v$j@SdH%+bzqzaJFq^-~ za8Tsc+kLAfF+1?WxNvL-j*d+4kXU|*Zb2bi2@Nfkwv1Rqm5BR9dy)5E<_^n`qu+w{ z>)*46sDE1TG|!l=3falfBZSIxw}#(LqmCC-{@M`M1RG4nV!b15L8^}!`PEn;b{cj~ zq@99Mgs(>}NGx9C-8_&fHO1 ziw-!Dw2y8r05t^n7WsJ~*Ga^85T>kG+5>zWP0-z@MLwbh1Dn% zW4K&I>@qK8SKxYi!-GxE^okaDbH?R@F#QO6;Plr7`#5!^#HuJaY$7##CS%q2aj;js zPemuo{5bh8K##lnO(6o3)61I`)3YK)!8gUD&_E$DcZHZ@l&STt>&n`BrFS7QCYp`l z$sTXbNoQ*o&6;Ss0f~;rcwSLvnx{^uLNw&b+6M(4!IdhIy$w|z>I6+CEc#B$IfEIY zp0dr(5;~<75fR)$r@@+(6cxJf7M|NdQB(koksc7qWvNfp)eKM3Jh`RyOQ)ip)i>Mk z>h67{3BtKd5E}-1@}~5rEze+^ASJd-Cj$QWq4Ptj(YFeX(zh5@1^ zEd{S1CBW&Ppt`A0evcSPo6{e91vd4#koI1gb1X>s{>r?(r6dgw{`cO?gi3{3C?`~r zFM<#_&=`)rdLktLmA6_1f0xxj&)pW@WvAOYkpPp5lQB|LXO-t*imnKMCr1T~sbpaF zRr~=9PHM~9`<*5ENc|nQ=husdHd>u&x^slf&SfZ|?C;b;evIgnN?LxX8j+m62*_Lg zi#%BS@6wpV)0|acSVa{=_%)dbTNEdDDS-FV4bKVy>Zz+?p}8t$VApkhL#R|DgaI{T(J(();W+vFnw>D|O2%@Q$p z+ocsnhFHH_l6D9uX50qMxXUq8x3;a$=OMenR6Kn-s&!CUl%RjphvU z+*|x|qvUM*4LD&!M%FMj)_spp2y8SeXz~?o&Uv0sqB0OF|lenP8P} zzIcy-r@G>SY=yMpCy8{0lz_^-%cb+jP&08n0U38;@Rod212P&!drKp#2lg_(DuySF zuszX3Z;pd608pY~=kFyYAM6seA|f!(f}N!0co@8cZlS$lw_%3>h3~=1k(bcO6Do8{ zfwF8PiDl6na-~m6_KXGpNn%|(#knKiCY+P?&bUC72lwW$LTWTuQ=)fc>#(lK;kLSD zEJso(Xnbxo5m@dguO!V1&%Db@1O4&VKZNhGFl1roI>9a>>9}j|T*pXZigZDRT-AP1 zG{~2+h53SC&=zZlI|;#S*jSPU=Bv#r6sbH-=#wIhAy5G4SvrU9 z>G=hR9_7D@ib_`iDk5wa&i}@ci5sq5roB04a@O=Ja^WvQa%o7{j_v$f(wC)que-CM zfp2FM%!UqmR`{8zOLwi{yDx0rF~S94iRfM#-%k%?Vf|xQ{~Q=^X~fts?-NMPWHq$E zxi^u2=cH0VI@d@M6c)NnC2l!2&tD1JK3sEzOG?xTukmXz)0QDkgE4Zvz(up2pv=!s0SA;Rvr?@34q-@$};mVKr+cr5{$r= zO_A?e_IgvaCe#0fibHt!xPye;DuTS5{{X23h$`hqgmXFpe{90Pc0zG~u6SBtTp1Ko z+ly-jWXU=J^T1&qN*(##5WHM)n|$f>o|&WPiK7z3&BX41@{^Nx zEzwD;>@hSK8RHZR*?e-*+uQcH7g-K`$B%WY0)4I8jW?NJTqdQK|JV$i=fONoh?V4! z4zkzs*nZ-z?UhxKsD_Mlck-07bb$;p6-);eYJCl>nIa173Cws_YV=eJGcy zU9t(*gO<^T&Gbhzb7O{K03mMu07g(i;1D7)8K#B?%-&_8zt z0XEZo=3A)e9FGQTUro^0^f+OQLpJSs(ea8KFBJ7t7gnl}t6hfrSdCXtuO3KnKT+Dfwp_x=<6a5s z2WfNT_~_al^jKxFvBrOYif5^DO{m|mHddU2FmR6p2a>*n^#YD^37e#F!|IjZ{DfEJ z*Uv-q^q(7Z?)u}1X8RCnPeDAVj=H!l0FUR9X!8NcpyAa!nyR@>yVdj@r6FC3XDLE(8kfoVOV@SFEPUP$BZaG6vjMl z5vT@+iDw$|1&N$`lMBC&Zp%(CDI_|i$*H|YS%zKQe|uSYo|yS>+>E5bx%D6h!0MZk z3AfeJe#qA;faoN>ni^1ji>U*|;r&gKmE!9R$y9q16n{ajo{ibo53npYOWJqUFnX`a z*}ZGrD9Nmag7`-*VhN8p_nP93QT#D_79i;%@DAJA>5Mgv_KAv%d9KtNX@B4?EGQ!Z zx2cK4Cf&po%IeB3{L!z9?)kophF?~fZ_8APdYN!{q@sSJVod$noeO0VB7`ny14FNHvMrLOzjF?Xx>O7XvCs22RT!$b!l zi7d=gGnC6J!&^t#Ras!~3}1AX3%yakKLmI^mEQHS=pTn%^WO#<^1^U2aF|*)+Yo!_ zBdFrOyT@jfPWoK%HiGNuPb~mNK)Sy@_e9DP5HxiECWEReaqw@|WK$G#ZRTWGlbD-1 zQ>R{mB|mp@7QA_QOivkfQkXJMR2aaT~Z zSRUkh^;nh!Axk+lsu%rnL3as?i^T7N><<;QM!Sc-Hq8IAQ2)t47;WH;oyM&50mBEs zpqDf{Vu6zUpT8%tI_Qzm5Vr!wJg`!Rz_o`(!=Na&Y6s{9d^j6~$se@4{1N}<0xjAd zCtuii3#yKzW2-?SFNajywXIM{Gzo{w-L)@^=7r~i!2(( z?=pg)Yl}kv_cH}E!Dh}~vsp9%AI+ViXs8tnF4Va26(d(bN8<~atlD~c@4~#z9`c>Pc?c8I)OLU-yapGHVAf;QCWxKX?kFyqZ-3D4%%oAu|cd# zj7DMkwD+a64<~!SViKTEH+@@PP@(H8Hho=oi(efMot{oz2{|h1sB&cwyqEEYAOT&J zOuDZu%1eWoiHP!bD6-tQ0CQPflB*zex^K#@u28WU2P~=MYd&OcduQG>3D&)$(07?87y#2$`cRH%`-aC=fCNjit zr|iAOYEmiUaSns6a?HpqBaKpa`w?h%SeTtW&UHL?%rR|!Y#^hwrMz30-I3{{=vjQO z#~gV&L)UAR7ddu%$${Q{l4iS;and3a0Bh`bid=Wko_Fy5{x6@Lb*|JX?#R}JnFWPN z;?^zGvdTo7gr6}gGO6XU*z6`MQn>x-F0-3blfp1>>~bpDrIN&yq6C!Z)FltQA=s_q zSzXWhcf$k9WzYU0#Y4qAm_7cJvGNB%vbM~+#&!QOh~WvYs}2pw#9gbI+!OR(H6C;1 z=z-OOJxDP`?Wn-b^s1JVSb~AM_vx%7a>vxt-Ui%qREVf zbj0cvDvX#*d}h-oRX*L~$PNvf_|`PlgS3{B1t++Sk;n!Y49xg7v7)~MxotCu7zfq4M48B;=om^H)-wl6GRg1HvHLtS|b ze?gDyv$g}US?x$kIvbfvV^Og1Pi zrHXj{oT9Dp6^s_qKV|ZT=!^Bl7oh+@vhLBJS?|V@&eK-OBC2BAZ4b<9k!;+}H&@LD z`Y`Oqa$Bl%+1^rdBM1AS&)iO3uk4<4Feph`6kRU4L>F!gy#yG^zKYC^g{~_aR@_)B z<%OXNmTIRE%iXHvq%Tfv01rLOaMlB!O7tSOCsctpsYD`ZEad>p(i;_f>Z}wTH}RWV zs?XmR~D~>RGrixTYnX4rBfZ`b9SKAI!<*e870xzXTjcWsYjtO&Bu!upiK! z^1;bP9W1{(t|GJqoHe)%EV#0q;ZC*!h0tt(3jCzsHtb~@Q%yARTu?7Xlz1!U>#AVZ zXmo7=XWWv-CC@9iz!XpvK?B)PuNB8b%Hfq6GjikRE$WSV)LU#96Zeoz$qh&5`kEd! z-La=URl1}(#G6rw_Tv-}EA7=+4DmAb`jk=Y9+*#&q80Cz_Ktars=*3MQif5bL8$0F ztNi)Sk=XdsP68%4>i1^oNsIN869scmy9?GPc6V_=atLm|ujtqKsia|s0b&^w5L?C{ z55pr*X{|p7&ku{zk9G`I)+oY-fiALHKh8Zz^erRdar4ZnIe|l;Q2#7D;tff1u(UUq z?oRF#vKL6q?hmX%!cRQ@Y4kla<20aJg?w;IvrioYc%Q-weIY0mil69W0J!7iyD0h+>wHdKtW3VdSw_$Axq=Vu)nqA}S3Z&h0Wt^g@>wxk>9^bj#Cm-#(au z+TVK~$?6B?_J1Nyj5nkBe8?bX|V0%k@L5m`r1;Fin zhd<4s#}s-Pqj95AD^(o^7bOX^ZKdD^XnnzYt{}t>*k!NP)z~gVGbo(qiX>~)eI|M^ z*nm7Cw~&v#dBrQTi(<2x*uz%)1H)tYZ`&X4d`W3Yc`-$FT)_Vyj1UDDapV2IbC`~s z$r7Rv6g%nCZe;3R{-)<`u!LgxppY4 z#yd0nHQ@gH`Gd1)^$l;P|9wXifNG-jNRQlx=k~h9vKis0O_ohv2s$qK5KsF!nEe4 z8_7Y%Klt9eIQpN{^i?5owjxGdg-@X(bx^kH)`ba{NAQEDT$GYPz0{#fxx(5tz>6$c z1|vnkN*t9al1vl8&Y7?oV&BL4O3J&*YB_7BeZH{qMb8!6#&@5_)N%>DLiiPdZRu7G zd`-Bx3(gaOXp?m9J6TBDqwgEr04}G$hjhF3oZn_nGuU{1AjBS-#ptItY%lH$bINy} zl!13vpAoDaxoxb;t6OArX=c2s+DiH#frWL}$O=BgmjWn-Wzt{;)MgSANqkX

        oo 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࿡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

        XLAuYF{290%>d#-6Ekh1W>D{ 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ℑpo5<{KR<@fnfk#Vbyzu`k=~c>6Ejufh|SW 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�^wxt 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�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 rH(ZcJ9;jbqKqK9MEnMND=2USBA^pHxD-1XqH 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�~^DMF)Hs4sAOCG&A=J=M=M8DfIP)aDe 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�#)axyP{nm!(L@xJG-RJv{a3 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�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

        XdF}$&4;-CK9QeXS5!dj9_jA%gj0I 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

          Um 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

          4&gk-6*()3jciyp=kM+V` zSP+ioh|ffS7Ve?;wy+SO;rv2gR#lOJ(M46idwBSE4))04^k3*l?=Hb?q86Q9v~oN| zA#4cOCX21owVur%z@r&(bJG>6k8{X~^e-2)j$%Xa_AZHG0<@Jd=Z>#~{`U5twu@dq zsCgxlX(%8(aY*GyRw2+2Qzu;X5J8~WYvY==q$xT+7V%HI^gW=e+{xU5fGXMF12PX! zF(PAyT-kF(k2~38b3~4NtE`QeFg4*Ob&uJ`zoqI~2XyN+<_HnZBBzT#rf!;pT@1U=(mOA^I@3IiZCO zddBa$ZKgKKtEd-%m%58qXbI{qK9}@h9vUkG|3oR}!JIQ}8}d(Z9*xyTFyR50V?&&q z+DeS*O6QUWI|lg8scc71sO?)TXb7Sna|X90#%^+$8#`|t`=1crDM|E2Ihb;citU{u zA%_kP>wp7{_={qyR{2*6G9f;v4yc3CZ@Vrc{*ZkM=CXQmV!KBNM#d<3&9u!PD~vgI zq9aAa4Xd$!04lgB>tzF75i`dq;j^H@kXq`FqyOd!;rjp+q+NJqu#+hIPMI~5z z{8^y!c*hFZ%b#-pFU+Id!qoFp<3c=B6dX`Xl=>-JC-Xn>iyacvDmq({;bN+a@|j{O zyA681KZk!LUFdDP_sIHDE9?w6ldD^X&A{6oPK| z`!Hb+odUw;r|Da@-wYx9C!gu7C{*XTXSv5p=nrdT4_BP9mp#FTKnGq&x$J_Lf zaiJ2NzNC_fa(%)DjTAu2!ZB3#_(it1iW{ZlWSmbLy=6gAeo+{?&5V(gHnLX(NamJ@+bxxZ^5A@VgmHNuDqAg@+1frO2F(I z(?=NHuOuqrnpvqS3T74pKW>NrcTk^epA@(@DvUG^SjosSCugI{x^Ke|EH3EM_?=Jz z=Bf5(_Ade${z*Au>L|iby=>||6|d-+E!Z|Frn+YH;B3U~ssl zZ?>}1c%}MwptI^lg4ruDB&vvfsFtJNjig05!`q zEU1LQYoH7zo-e)C%cawv&W8ZiG7lpbVVt-xs^B3ZlmB{#Po3M|5e zs|y7WLOjDHz4dH7&2sqUySwUZ3G2~B;wXs{H8CreJz3bewb>s@ ze0rTQtX`T4_4!29Ofy-oxOkl-kD&F;XK7vMBAJ-ftU0G+c_o2_Z>QDK)IC&>iCeg< zh`&`(oL9C)6;}YLo*j=dAK7)nZjqsQp{^E)kJv`uLdbKpAnpU|uJX>p54ykz%U
          jyy9=py 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

          Y- zn2cw#&{CRHk?Un#bQK(!I{E|&TWkghfA)^EhaY6q-*!#_B-G55QR)2OmAO%3l~?4vtOiS~rf{kYg?I1yvlMrkSO0gf-f_Yl!r~HPzXL(a%4`1MEL^ zKGd7)G+WA~rb%J4TSfhCNp?uei0xUTpf$)*`?~U>z)#H!=fW%7_4^0VT zQ`u({;gvs{r5-TpMG)2>lk_i_9OOfO3=+42Te5OIbin=~v5PU)#{Rl4<}m*(YV8qG7jjEIB-Q*V)cMwhU*F z0HO_sq##4EQyu)>Qd^5iClR5f%qc8P^VgM?9rTRDgFS{lC$+DKcbbDI_8kJTSyszB zUsIg+nhUaW$yTC)p#e|#m3(nFQr*emIY93Q#rnuN==J=A_K z(~EzLMXI5WG-JoSmxsUW;S|>QzR?wQhIJ3ue|kQft~$>A#XG4)PgPI0ZdDZ_1&(0O zrJ18i2ZZ${PmM(&1_`oKJ2a(T?qp!~{5Bs%X{33g%mn6%n~;KAjE5#JE-XXnRfoy{ZkuI1#g6Y(!r+HIyaQ2k=A#?dR(f3-9H0>n{yIZji+DVBb zD4r{_S!Og+N1(rD(j$ajxQodRegE$Qc2yutz~cQD+oWiG+EBZ@@GtNaW`zmrT0uZQIJXM=34bs?5HwVkPFWJB+^of^$-;J>Yh5sT*6m7vy3^vuf!lC0}02CB<0UJ?rbn5;tBGP~gw z0K2$!en`pmg~Xova*T19HxNGuY`OCNltk}sdNIyr?l8l!I%b`j%^unIZWAOEfW$zb z7Plu)Majo3bxlL8!m*}Tfb8+W>WKCNFZWR3_o1yM0#|Ch#bYv%7VaAoBoZ1ku3ea-%}88*3H|rh`SCC? z0|3u#d-_HReGEi0(NKZpk>OGt=IMpc6k@=LByOuA!(R1@B?8dkM9EfH#2EcD_2Mt? zEcmD#i%DowaiYTIujpOzA|tRK=jF%=F9!TGma7(|)_n&$B8h8!P)bTF7?@sdhSmnD zKH&k-Wa|i-1kB z3DL4(`>&abZS&!gijVLG`X8&MYxiO^T2(t{f}Bh@n_JdV|B8#wuhb#J!66taiCiEb zsCXObEh2G`tRc+$fe+L_vrgQr*dMLxEzQK>kIXz};5VH%o}DB!M+s_0h2UF8C~AJN z#PD{G5a>RQSSCQNQ^!yY7lqy2QOW9XVeAgyY=?23$!VN&XaSvleMes$;ihVQswC-I zK8UZKm%mND!yA9wNo;3V!Y53U=<`OaV_-?x8np-aEdCDd2d->oAH#YoG#)m(5`Ml- z=tAeao6T2Wzhan&{BVoMe`C!6Hm{gQXSN3+g%GpzHddVgKJ77o2�Lx%teiJ~tw| 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%0A%2ajmvFti2hC_j0Vh(De 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´J<~F6s2As2rJuKw#enhb3m)?ai&vbjp^6R6b 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 bqqNtsXS*uqd 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 z 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 public override void OnReceiveRemote(EnumMessage message) { QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Value); + QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); } } } \ No newline at end of file diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs new file mode 100644 index 000000000..bf68b3d60 --- /dev/null +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.Animation +{ + class PlayerHeadRotationSync + { + } +} diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 6e4e02104..3953ea16d 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,19 +1,22 @@ -using QSB.Animation; +using OWML.Common; +using QSB.Animation; using QSB.EventsCore; using QSB.Instruments.QSBCamera; using QSB.Player; +using QSB.Utility; using UnityEngine; namespace QSB.Instruments { - public class InstrumentsManager : MonoBehaviour + public class InstrumentsManager : PlayerSyncObject { - public static InstrumentsManager Instance; + private Transform rootObj; private AnimationType _savedType; + private GameObject ChertDrum; - private void Awake() + public void InitLocal(Transform root) { - Instance = this; + rootObj = root; gameObject.AddComponent(); QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); @@ -21,35 +24,83 @@ private void Awake() QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.SolanumTaunt += () => StartInstrument(AnimationType.Solanum); QSBInputManager.ExitTaunt += () => ReturnToPlayer(); + + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + + QSBPlayerManager.PlayerSyncObjects.Add(this); + } + + public void InitRemote(Transform root) + { + rootObj = root; + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + + QSBPlayerManager.PlayerSyncObjects.Add(this); } private void OnDestroy() { + if (!isLocalPlayer) + { + return; + } + DebugLog.DebugWrite($"OnDestroy {PlayerId}"); QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.SolanumTaunt -= () => StartInstrument(AnimationType.Solanum); QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); } + private void SetupInstruments() + { + DebugLog.DebugWrite($"Setup instruments {PlayerId}"); + var bundle = QSB.InstrumentAssetBundle; + ChertDrum = MakeChertDrum(bundle); + } + + // EyeCompatibility : Need to find right object. + private GameObject MakeChertDrum(AssetBundle bundle) + { + var drum = new GameObject(); + var mf = drum.AddComponent(); + mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; + var mr = drum.AddComponent(); + mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; + foreach (var item in mr.sharedMaterial.shaderKeywords) + { + DebugLog.DebugWrite(item); + } + drum.transform.parent = rootObj; + drum.transform.rotation = rootObj.rotation; + drum.transform.localPosition = Vector3.zero; + drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); + drum.SetActive(false); + + return drum; + } + public void StartInstrument(AnimationType type) { - if (QSBPlayerManager.LocalPlayer.PlayingInstrument) + if (!isLocalPlayer) { + DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); return; } - _savedType = QSBPlayerManager.LocalPlayer.Animator.CurrentType; + if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) + { + return; + } + _savedType = Player.Animator.CurrentType; CameraManager.Instance.SwitchTo3rdPerson(); SwitchToType(type); } public void ReturnToPlayer() { - if (!QSBPlayerManager.LocalPlayer.PlayingInstrument) + if (!Player.PlayingInstrument) { return; } @@ -59,8 +110,24 @@ public void ReturnToPlayer() public void SwitchToType(AnimationType type) { + DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); QSBPlayerManager.LocalPlayer.Animator.SetAnimationType(type); + CheckInstrumentProps(type); + } + + public void CheckInstrumentProps(AnimationType type) + { + switch (type) + { + case AnimationType.Chert: + ChertDrum.SetActive(true); + break; + case AnimationType.PlayerSuited: + case AnimationType.PlayerUnsuited: + ChertDrum.SetActive(false); + break; + } } } } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 1f562c025..41c956684 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -18,20 +18,10 @@ public class CameraManager : MonoBehaviour public void Start() { Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + SetupCamera(); } - private void OnSceneLoaded(OWScene scene, bool inUniverse) - { - if (!inUniverse) - { - return; - } - IsSetUp = false; - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerCamera() != null && Locator.GetPlayerTransform() != null, Setup); - } - - private void Setup() + private void SetupCamera() { CameraBase = new GameObject(); CameraBase.SetActive(false); @@ -74,6 +64,8 @@ public void SwitchTo3rdPerson() if (!IsSetUp) { DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.None); + Mode = CameraMode.ThirdPerson; return; } if (Mode == CameraMode.ThirdPerson) @@ -103,6 +95,8 @@ public void SwitchTo1stPerson() if (!IsSetUp) { DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.Character); + Mode = CameraMode.FirstPerson; return; } if (Mode == CameraMode.FirstPerson) @@ -116,15 +110,5 @@ public void SwitchTo1stPerson() Camera.enabled = false; Mode = CameraMode.FirstPerson; } - - public void ToggleViewMode() - { - if (Mode == CameraMode.FirstPerson) - { - SwitchTo3rdPerson(); - return; - } - SwitchTo1stPerson(); - } } } diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 6e0d11c5b..f4999ae0d 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -22,7 +22,7 @@ public static PlayerInfo GetPlayer(uint id) if (id == uint.MaxValue || id == 0U) { var stacktrace = new StackTrace(); - DebugLog.ToConsole($"GetPlayer() got uint.MaxValue or 0 - returning default. Ran from {stacktrace.GetFrame(1).GetMethod().DeclaringType.Name}.{stacktrace.GetFrame(1).GetMethod().Name}.", MessageType.Warning); + DebugLog.ToConsole($"GetPlayer() called with uint.MaxValue or 0 - returning default. Ran from {stacktrace.GetFrame(1).GetMethod().DeclaringType.Name}.{stacktrace.GetFrame(1).GetMethod().Name}.", MessageType.Warning); return default; } var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 08c08faef..2e5a34bae 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -4,7 +4,6 @@ using QSB.ConversationSync; using QSB.ElevatorSync; using QSB.GeyserSync; -using QSB.Instruments; using QSB.OrbSync; using QSB.Patches; using QSB.SectorSync; @@ -59,7 +58,6 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); - gameObject.AddComponent(); gameObject.AddComponent(); Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index b474cfbf0..7b3a7cea6 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -80,8 +80,9 @@ - - $(GameDir)\OuterWilds_Data\Managed\UnityEngine.dll + + False + E:\Epic\Epic Games\OuterWilds\OuterWilds_Data\Managed\UnityEngine.dll False @@ -90,10 +91,7 @@ $(GameDir)\OuterWilds_Data\Managed\UnityEngine.AudioModule.dll - - False - $(GameDir)\OuterWilds_Data\Managed\UnityEngine.CoreModule.dll - + False $(GameDir)\OuterWilds_Data\Managed\UnityEngine.IMGUIModule.dll diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index b305e155d..ffd10ac06 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -7,12 +7,12 @@ namespace QSB public class QSBInputManager : MonoBehaviour { public static QSBInputManager Instance; + public static event InputEvent ChertTaunt; public static event InputEvent EskerTaunt; - public static event InputEvent FeldsparTaunt; - public static event InputEvent GabbroTaunt; public static event InputEvent RiebeckTaunt; - public static event InputEvent SolanumTaunt; + public static event InputEvent GabbroTaunt; + public static event InputEvent FeldsparTaunt; public static event InputEvent ExitTaunt; public void Awake() @@ -24,6 +24,7 @@ public void Update() { if (Input.GetKey(KeyCode.T)) { + // Listed order is from sun to dark bramble if (Input.GetKeyDown(KeyCode.Alpha1)) { ChertTaunt?.Invoke(); @@ -32,21 +33,17 @@ public void Update() { EskerTaunt?.Invoke(); } - else if (Input.GetKeyDown(KeyCode.Alpha3)) + else if (Input.GetKeyDown(KeyCode.Alpha5)) { - FeldsparTaunt?.Invoke(); + RiebeckTaunt?.Invoke(); } else if (Input.GetKeyDown(KeyCode.Alpha4)) { GabbroTaunt?.Invoke(); } - else if (Input.GetKeyDown(KeyCode.Alpha5)) - { - RiebeckTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha6)) + else if (Input.GetKeyDown(KeyCode.Alpha3)) { - SolanumTaunt?.Invoke(); + FeldsparTaunt?.Invoke(); } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index bbfcde082..4278f55a5 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -5,6 +5,7 @@ using QSB.ElevatorSync; using QSB.EventsCore; using QSB.GeyserSync; +using QSB.Instruments; using QSB.OrbSync; using QSB.Patches; using QSB.Player; @@ -48,6 +49,7 @@ private void Awake() playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); + playerPrefab.AddComponent(); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); _shipPrefab.AddComponent(); diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index b07a50050..db80416aa 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -1,4 +1,5 @@ using QSB.Animation; +using QSB.Instruments; using QSB.Player; using UnityEngine; @@ -28,6 +29,7 @@ protected override Transform InitLocalTransform() var body = GetPlayerModel(); GetComponent().InitLocal(body); + GetComponent().InitLocal(body); Player.Body = body.gameObject; @@ -39,6 +41,7 @@ protected override Transform InitRemoteTransform() var body = Instantiate(GetPlayerModel()); GetComponent().InitRemote(body); + GetComponent().InitRemote(body); var marker = body.gameObject.AddComponent(); marker.Init(Player); diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index e86164007..141e56017 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -9,7 +9,7 @@ public static class DebugLog { public static void ToConsole(string message, MessageType type = MessageType.Message) { - // hack to make custom method name in owml log. + // make custom method name in owml log. // i wrote the owml code for this so this is fine?? shut up i dont want to change owml var console = (ModSocketOutput)QSB.Helper.Console; var method = console.GetType() From 58635f4dd066f7fd538bb0afd9189e5ac8f3a2da Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 22 Nov 2020 13:57:31 +0000 Subject: [PATCH 075/207] add head sync --- QSB/Animation/AnimationSync.cs | 7 +++++++ QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 9 ++++++-- QSB/Animation/PlayerHeadRotationSync.cs | 23 ++++++++++++++++----- QSB/Instruments/InstrumentsManager.cs | 9 ++------ QSB/Player/PlayerInfo.cs | 6 +++--- QSB/QSB.csproj | 1 + 7 files changed, 39 insertions(+), 18 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 0b935b792..43bffa09c 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -29,6 +29,10 @@ public class AnimationSync : PlayerSyncObject public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType = AnimationType.PlayerUnsuited; + public Animator Animator + { + get { return _bodyAnim; } + } private void Awake() { @@ -129,6 +133,9 @@ public void InitRemote(Transform body) body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; InitCrouchSync(); + + var ikSync = body.gameObject.AddComponent(); + QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); } private void InitCrouchSync() diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index f204ee8cf..415c90fc9 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -23,7 +23,7 @@ public class ChangeAnimTypeEvent : QSBEvent> public override void OnReceiveRemote(EnumMessage message) { - QSBPlayerManager.GetPlayer(message.AboutId).Animator.SetAnimationType(message.Value); + QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); } } diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 816269205..b2924ab4e 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -34,7 +34,12 @@ public override void OnReceiveRemote(ToggleMessage message) var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); - var animator = player.Animator; + if (!player.IsReady) + { + return; + } + + var animator = player.AnimationSync; var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; animator.SetAnimationType(type); } @@ -42,7 +47,7 @@ public override void OnReceiveRemote(ToggleMessage message) public override void OnReceiveLocal(ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); - var animator = QSBPlayerManager.LocalPlayer.Animator; + var animator = QSBPlayerManager.LocalPlayer.AnimationSync; var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; animator.CurrentType = type; } diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index bf68b3d60..6cf90e707 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -1,11 +1,24 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using UnityEngine; namespace QSB.Animation { - class PlayerHeadRotationSync + public class PlayerHeadRotationSync : MonoBehaviour { + private Animator _attachedAnimator; + private Transform _lookBase; + + public void Init(Transform lookBase) + { + _attachedAnimator = GetComponent(); + _lookBase = lookBase; + } + + void LateUpdate() + { + var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); + // Get the camera's local rotation with respect to the head + var lookLocalRotation = Quaternion.Inverse(bone.transform.rotation) * _lookBase.rotation; + bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); + } } } diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 3953ea16d..cba35394d 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -56,7 +56,6 @@ private void OnDestroy() private void SetupInstruments() { - DebugLog.DebugWrite($"Setup instruments {PlayerId}"); var bundle = QSB.InstrumentAssetBundle; ChertDrum = MakeChertDrum(bundle); } @@ -69,10 +68,6 @@ private GameObject MakeChertDrum(AssetBundle bundle) mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; var mr = drum.AddComponent(); mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; - foreach (var item in mr.sharedMaterial.shaderKeywords) - { - DebugLog.DebugWrite(item); - } drum.transform.parent = rootObj; drum.transform.rotation = rootObj.rotation; drum.transform.localPosition = Vector3.zero; @@ -93,7 +88,7 @@ public void StartInstrument(AnimationType type) { return; } - _savedType = Player.Animator.CurrentType; + _savedType = Player.AnimationSync.CurrentType; CameraManager.Instance.SwitchTo3rdPerson(); SwitchToType(type); } @@ -112,7 +107,7 @@ public void SwitchToType(AnimationType type) { DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); - QSBPlayerManager.LocalPlayer.Animator.SetAnimationType(type); + QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); CheckInstrumentProps(type); } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 366c91c3a..27ec6bc4c 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -31,9 +31,9 @@ public class PlayerInfo public GameObject CurrentDialogueBox { get; set; } // Animation - public AnimationSync Animator => QSBPlayerManager.GetSyncObject(PlayerId); - public bool PlayingInstrument => Animator.CurrentType != AnimationType.PlayerSuited - && Animator.CurrentType != AnimationType.PlayerUnsuited; + public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); + public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited + && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; public PlayerInfo(uint id) { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 7b3a7cea6..ab755ea41 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -130,6 +130,7 @@ + From d3dfed3330fd55e7faf356a403b872a9fda827fe Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 22 Nov 2020 14:25:10 +0000 Subject: [PATCH 076/207] Update PlayerHeadRotationSync.cs --- QSB/Animation/PlayerHeadRotationSync.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index 6cf90e707..eaa8d4972 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -16,8 +16,8 @@ public void Init(Transform lookBase) void LateUpdate() { var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); - // Get the camera's local rotation with respect to the head - var lookLocalRotation = Quaternion.Inverse(bone.transform.rotation) * _lookBase.rotation; + // Get the camera's local rotation with respect to the player body + var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); } } From a607b4d1f4ed0dd247c42d612ece5bda080a1453 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 22 Nov 2020 21:08:10 +0000 Subject: [PATCH 077/207] Update QSBNetworkManager.cs --- QSB/QSBNetworkManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 4278f55a5..9592c071a 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -288,4 +288,4 @@ public void CleanupNetworkBehaviour(uint netId) } } } -} +} \ No newline at end of file From a1674ac5427b07f994fbeb64dafb664408be97b4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 23 Nov 2020 09:25:39 +0000 Subject: [PATCH 078/207] Update AnimationSync.cs --- QSB/Animation/AnimationSync.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 43bffa09c..33f805032 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -233,7 +233,7 @@ public void SetAnimationType(AnimationType type) } else { - // Avoids "jumping" look when exiting instrument + // Avoids "jumping" when exiting instrument and putting on suit _bodyAnim.SetTrigger("Grounded"); _anim.SetTrigger("Grounded"); } From 6cfb546933d784e75148d35e33e36827c2aeac95 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 25 Nov 2020 09:54:52 +0000 Subject: [PATCH 079/207] stuff --- QSB/Animation/AnimationSync.cs | 12 ++---- QSB/ElevatorSync/ElevatorManager.cs | 5 +++ QSB/GeyserSync/GeyserManager.cs | 6 +++ QSB/Player/QSBPlayerManager.cs | 5 +-- QSB/QSB.csproj | 1 + QSB/QSBNetworkManager.cs | 23 ++++++----- QSB/QSBSceneManager.cs | 8 +++- QSB/SectorSync/QSBSectorManager.cs | 10 ++--- QSB/TimeSync/FastForwardUI.cs | 63 +++++++++++++++++++++++++++++ QSB/TimeSync/WakeUpSync.cs | 10 ++--- QSB/TransformSync/TransformSync.cs | 5 +++ 11 files changed, 114 insertions(+), 34 deletions(-) create mode 100644 QSB/TimeSync/FastForwardUI.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 33f805032..318aeaba0 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -41,7 +41,7 @@ private void Awake() _netAnim.enabled = false; _netAnim.animator = _anim; - QSBSceneManager.OnSceneLoaded += (OWScene scene, bool universe) => LoadControllers(universe); + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); } private void OnDestroy() @@ -55,15 +55,11 @@ private void OnDestroy() _playerController.OnBecomeGrounded -= OnBecomeGrounded; _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - QSBSceneManager.OnSceneLoaded -= (OWScene scene, bool universe) => LoadControllers(universe); + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); } - private void LoadControllers(bool universe) + private void LoadControllers() { - if (!universe) - { - return; - } var bundle = QSB.InstrumentAssetBundle; _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; @@ -73,7 +69,7 @@ private void InitCommon(Transform body) { if (QSBSceneManager.IsInUniverse) { - LoadControllers(true); + LoadControllers(); } _netAnim.enabled = true; _bodyAnim = body.GetComponent(); diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index 9f8eade3b..377d01cd8 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -17,6 +17,11 @@ private void Awake() QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) { _elevators = Resources.FindObjectsOfTypeAll().ToList(); diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index d4f7faadf..45f3d399f 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -15,6 +15,12 @@ private void Awake() QSBPatchManager.OnPatchType += OnPatchType; } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + QSBPatchManager.OnPatchType -= OnPatchType; + } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) { var geyserControllers = Resources.FindObjectsOfTypeAll(); diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index f4999ae0d..3d16dbc32 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -3,7 +3,6 @@ using QSB.TransformSync; using QSB.Utility; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using UnityEngine.Networking; @@ -21,8 +20,6 @@ public static PlayerInfo GetPlayer(uint id) { if (id == uint.MaxValue || id == 0U) { - var stacktrace = new StackTrace(); - DebugLog.ToConsole($"GetPlayer() called with uint.MaxValue or 0 - returning default. Ran from {stacktrace.GetFrame(1).GetMethod().DeclaringType.Name}.{stacktrace.GetFrame(1).GetMethod().Name}.", MessageType.Warning); return default; } var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); @@ -91,7 +88,7 @@ public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) } // Get all Player IDs var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); - // Get highest ID below the given syncobject's netid. A netid cannot belong to a netid above it, only below or equal to it. + // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); if (playerIds.Min() > syncObject.AttachedNetId) { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index ab755ea41..af392ad3a 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -167,6 +167,7 @@ + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 9592c071a..87d7626e1 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -68,17 +68,19 @@ private void Awake() spawnPrefabs.Add(OrbPrefab); ConfigureNetworkManager(); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - private void OnSceneLoaded(OWScene scene, bool inUniverse) + private void OnDestroy() { - if (inUniverse) - { - OrbManager.Instance.BuildOrbs(); - WorldRegistry.OldDialogueTrees.Clear(); - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } + QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene) + { + OrbManager.Instance.BuildOrbs(); + WorldRegistry.OldDialogueTrees.Clear(); + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } private void ConfigureNetworkManager() @@ -135,7 +137,10 @@ public override void OnClientConnect(NetworkConnection connection) // Called on gameObject.AddComponent(); gameObject.AddComponent(); - QSBSectorManager.Instance.RebuildSectors(); + if (QSBSceneManager.IsInUniverse) + { + QSBSectorManager.Instance.RebuildSectors(); + } OrbManager.Instance.QueueBuildSlots(); if (!NetworkServer.localClientActive) diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index e2130ab31..1af3a5750 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -11,6 +11,7 @@ public static class QSBSceneManager public static bool IsInUniverse => InUniverse(CurrentScene); public static event Action OnSceneLoaded; + public static event Action OnUniverseSceneLoaded; static QSBSceneManager() { @@ -20,7 +21,12 @@ static QSBSceneManager() private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) { - OnSceneLoaded?.Invoke(newScene, InUniverse(newScene)); + var universe = InUniverse(newScene); + OnSceneLoaded?.Invoke(newScene, universe); + if (universe) + { + OnUniverseSceneLoaded?.Invoke(newScene); + } } private static bool InUniverse(OWScene scene) diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index b7263c974..a7a68f884 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -20,16 +20,16 @@ public class QSBSectorManager : MonoBehaviour private void Awake() { Instance = this; - QSBSceneManager.OnSceneLoaded += (OWScene scene, bool universe) => RebuildSectors(); + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } + private void OnDestroy() + { + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); + } public void RebuildSectors() { - if (!QSBSceneManager.IsInUniverse) - { - return; - } DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); WorldRegistry.RemoveObjects(); var sectors = Resources.FindObjectsOfTypeAll().ToList(); diff --git a/QSB/TimeSync/FastForwardUI.cs b/QSB/TimeSync/FastForwardUI.cs new file mode 100644 index 000000000..771642391 --- /dev/null +++ b/QSB/TimeSync/FastForwardUI.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace QSB.TimeSync +{ + class FastForwardUI : MonoBehaviour + { + public static FastForwardUI Instance; + + private Canvas _canvas; + private Text _text; + private float _sleepStartTime; + private float _sleepStartTimeUnscaled; + private Color _textColor; + + private void Awake() + { + Instance = this; + enabled = false; + _canvas.enabled = false; + _textColor = _text.color; + } + + private void OnDestroy() + { + if (_canvas.enabled) + { + Canvas.willRenderCanvases -= OnWillRenderCanvases; + } + } + + public static void Start() => Instance.StartFastForward(); + public static void Stop() => Instance.EndFastForward(); + + private void StartFastForward() + { + _sleepStartTime = Time.timeSinceLevelLoad; + _sleepStartTimeUnscaled = Time.unscaledTime; + enabled = true; + _canvas.enabled = true; + _text.text = "00:00"; + _text.color = new Color(_textColor.r, _textColor.g, _textColor.b, 0f); + Canvas.willRenderCanvases += OnWillRenderCanvases; + } + + private void EndFastForward() + { + enabled = false; + _canvas.enabled = false; + Canvas.willRenderCanvases -= OnWillRenderCanvases; + } + + private void OnWillRenderCanvases() + { + var totalSeconds = Mathf.Max(Time.timeSinceLevelLoad - _sleepStartTime, 0f); + var minutes = Mathf.FloorToInt(totalSeconds / 60f); + var seconds = Mathf.FloorToInt(totalSeconds) % 60; + _text.text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}"; + var alpha = Mathf.Clamp01((Time.unscaledTime - _sleepStartTimeUnscaled) / 3f); + _text.color = new Color(_textColor.r, _textColor.g, _textColor.b, alpha); + } + } +} \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 6fd00cf16..ea7900b82 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,8 +1,6 @@ -using OWML.ModHelper.Events; -using QSB.DeathSync; +using QSB.DeathSync; using QSB.EventsCore; using QSB.TimeSync.Events; -using QSB.Utility; using UnityEngine; using UnityEngine.Networking; @@ -87,7 +85,6 @@ private void OnLoopStart() private void Init() { - DebugLog.DebugWrite("WakeUpSync init - Request state!"); GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); _state = State.Loaded; gameObject.AddComponent(); @@ -152,7 +149,7 @@ private void StartFastForwarding() } _timeScale = MaxFastForwardSpeed; _state = State.FastForwarding; - FindObjectOfType().Invoke("OnStartFastForward"); + FastForwardUI.Start(); } private void StartPausing() @@ -179,8 +176,7 @@ private void ResetTimeScale() QSB.HasWokenUp = true; Physics.SyncTransforms(); SpinnerUI.Hide(); - DebugLog.DebugWrite("ResetTimeScale - Request state!"); - FindObjectOfType().Invoke("OnEndFastForward"); + FastForwardUI.Stop(); GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); RespawnOnDeath.Instance.Init(); } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index dea328126..395385618 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -29,6 +29,11 @@ protected virtual void Awake() QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } + protected virtual void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) { _isInitialized = false; From 10a53866ca9f7d4f230fdd6bf28479d5682102d2 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 26 Nov 2020 11:43:35 +0000 Subject: [PATCH 080/207] Update FastForwardUI.cs --- QSB/TimeSync/FastForwardUI.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/QSB/TimeSync/FastForwardUI.cs b/QSB/TimeSync/FastForwardUI.cs index 771642391..a882eb60a 100644 --- a/QSB/TimeSync/FastForwardUI.cs +++ b/QSB/TimeSync/FastForwardUI.cs @@ -9,8 +9,8 @@ class FastForwardUI : MonoBehaviour private Canvas _canvas; private Text _text; - private float _sleepStartTime; - private float _sleepStartTimeUnscaled; + private float _startTime; + private float _startTimeUnscaled; private Color _textColor; private void Awake() @@ -34,8 +34,8 @@ private void OnDestroy() private void StartFastForward() { - _sleepStartTime = Time.timeSinceLevelLoad; - _sleepStartTimeUnscaled = Time.unscaledTime; + _startTime = Time.timeSinceLevelLoad; + _startTimeUnscaled = Time.unscaledTime; enabled = true; _canvas.enabled = true; _text.text = "00:00"; @@ -52,11 +52,11 @@ private void EndFastForward() private void OnWillRenderCanvases() { - var totalSeconds = Mathf.Max(Time.timeSinceLevelLoad - _sleepStartTime, 0f); + var totalSeconds = Mathf.Max(Time.timeSinceLevelLoad - _startTime, 0f); var minutes = Mathf.FloorToInt(totalSeconds / 60f); var seconds = Mathf.FloorToInt(totalSeconds) % 60; _text.text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}"; - var alpha = Mathf.Clamp01((Time.unscaledTime - _sleepStartTimeUnscaled) / 3f); + var alpha = Mathf.Clamp01((Time.unscaledTime - _startTimeUnscaled) / 3f); _text.color = new Color(_textColor.r, _textColor.g, _textColor.b, alpha); } } From ee8a6f3de97d8719d6e437e373672773cce356aa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 26 Nov 2020 13:09:34 +0000 Subject: [PATCH 081/207] add fast-forward message --- QSB/QSB.cs | 2 ++ QSB/TimeSync/FastForwardUI.cs | 33 ++++++++++++++++++++++++--------- QSB/TimeSync/WakeUpSync.cs | 2 +- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 2e5a34bae..c26c521aa 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -7,6 +7,7 @@ using QSB.OrbSync; using QSB.Patches; using QSB.SectorSync; +using QSB.TimeSync; using QSB.Utility; using UnityEngine; using UnityEngine.Networking; @@ -59,6 +60,7 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); + gameObject.AddComponent(); Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave); } diff --git a/QSB/TimeSync/FastForwardUI.cs b/QSB/TimeSync/FastForwardUI.cs index a882eb60a..24a129d9b 100644 --- a/QSB/TimeSync/FastForwardUI.cs +++ b/QSB/TimeSync/FastForwardUI.cs @@ -1,4 +1,6 @@ -using UnityEngine; +using OWML.ModHelper.Events; +using System; +using UnityEngine; using UnityEngine.UI; namespace QSB.TimeSync @@ -11,26 +13,36 @@ class FastForwardUI : MonoBehaviour private Text _text; private float _startTime; private float _startTimeUnscaled; - private Color _textColor; + private bool _isSetUp; private void Awake() { Instance = this; enabled = false; + + QSBSceneManager.OnUniverseSceneLoaded += OnUniverseSceneLoad; + } + + private void OnUniverseSceneLoad(OWScene scene) + { + _isSetUp = true; + var obj = Resources.FindObjectsOfTypeAll()[0]; + _canvas = obj.GetValue("_canvas"); + _text = obj.GetValue("_text"); _canvas.enabled = false; - _textColor = _text.color; } private void OnDestroy() { + QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoad; if (_canvas.enabled) { Canvas.willRenderCanvases -= OnWillRenderCanvases; } } - public static void Start() => Instance.StartFastForward(); - public static void Stop() => Instance.EndFastForward(); + public static void Start() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, Instance.StartFastForward); + public static void Stop() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, Instance.EndFastForward); private void StartFastForward() { @@ -39,7 +51,6 @@ private void StartFastForward() enabled = true; _canvas.enabled = true; _text.text = "00:00"; - _text.color = new Color(_textColor.r, _textColor.g, _textColor.b, 0f); Canvas.willRenderCanvases += OnWillRenderCanvases; } @@ -52,12 +63,16 @@ private void EndFastForward() private void OnWillRenderCanvases() { + if (!_isSetUp) + { + return; + } var totalSeconds = Mathf.Max(Time.timeSinceLevelLoad - _startTime, 0f); var minutes = Mathf.FloorToInt(totalSeconds / 60f); var seconds = Mathf.FloorToInt(totalSeconds) % 60; - _text.text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}"; - var alpha = Mathf.Clamp01((Time.unscaledTime - _startTimeUnscaled) / 3f); - _text.color = new Color(_textColor.r, _textColor.g, _textColor.b, alpha); + _text.text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}" + + Environment.NewLine + + "Fast-forwarding to match server time..."; } } } \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index ea7900b82..ab05f1ff3 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -261,4 +261,4 @@ private void UpdateLocal() } } } -} +} \ No newline at end of file From ad43b94e752d29c58950b4062abd39af387dc015 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 26 Nov 2020 19:16:05 +0000 Subject: [PATCH 082/207] time sync changes --- QSB/QSB.cs | 17 +---------------- QSB/TimeSync/WakeUpSync.cs | 8 ++++---- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index c26c521aa..afdfb49f3 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -62,22 +62,7 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); - Helper.Events.Unity.RunWhen(() => PlayerData.IsLoaded(), RebuildSettingsSave); - } - - private void RebuildSettingsSave() - { - if (PlayerData.GetFreezeTimeWhileReadingConversations() - || PlayerData.GetFreezeTimeWhileReadingTranslator() - || PlayerData.GetFreezeTimeWhileReadingShipLog()) - { - DebugLog.DebugWrite("Rebuilding SettingsSave..."); - var clonedData = PlayerData.CloneSettingsData(); - clonedData.freezeTimeWhileReading = false; - clonedData.freezeTimeWhileReadingConversations = false; - clonedData.freezeTimeWhileReadingShipLog = false; - PlayerData.SetSettingsData(clonedData); - } + Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); } public override void Configure(IModConfig config) diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index ab05f1ff3..9452fcb43 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,6 +1,7 @@ using QSB.DeathSync; using QSB.EventsCore; using QSB.TimeSync.Events; +using QSB.Utility; using UnityEngine; using UnityEngine.Networking; @@ -42,10 +43,7 @@ private void Start() { Init(); } - else - { - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); @@ -53,6 +51,7 @@ private void Start() private void OnWakeUp() { + DebugLog.DebugWrite("ON WAKE UP!"); if (NetworkServer.active) { QSB.HasWokenUp = true; @@ -63,6 +62,7 @@ private void OnDestroy() { QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); } private void OnSceneLoaded(OWScene scene, bool isInUniverse) From ac77bcec3522f2fe221e4ca4dc1f80fcb2c938fa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 26 Nov 2020 19:46:09 +0000 Subject: [PATCH 083/207] cleanup --- QSB/QSB.cs | 3 +- QSB/QSB.csproj | 3 +- QSB/TimeSync/TimeSyncType.cs | 9 ++++++ .../{FastForwardUI.cs => TimeSyncUI.cs} | 32 +++++++++++++------ QSB/TimeSync/WakeUpSync.cs | 16 +++------- 5 files changed, 39 insertions(+), 24 deletions(-) create mode 100644 QSB/TimeSync/TimeSyncType.cs rename QSB/TimeSync/{FastForwardUI.cs => TimeSyncUI.cs} (64%) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index afdfb49f3..09c19bdc8 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -60,8 +60,9 @@ private void Start() gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); - gameObject.AddComponent(); + gameObject.AddComponent(); + // Stop players being able to pause Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index af392ad3a..7ea6a14a7 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -167,7 +167,8 @@ - + + diff --git a/QSB/TimeSync/TimeSyncType.cs b/QSB/TimeSync/TimeSyncType.cs new file mode 100644 index 000000000..2fe1ca0c1 --- /dev/null +++ b/QSB/TimeSync/TimeSyncType.cs @@ -0,0 +1,9 @@ +namespace QSB.TimeSync +{ + public enum TimeSyncType + { + None, + Pausing, + Fastforwarding + } +} diff --git a/QSB/TimeSync/FastForwardUI.cs b/QSB/TimeSync/TimeSyncUI.cs similarity index 64% rename from QSB/TimeSync/FastForwardUI.cs rename to QSB/TimeSync/TimeSyncUI.cs index 24a129d9b..c57cec8df 100644 --- a/QSB/TimeSync/FastForwardUI.cs +++ b/QSB/TimeSync/TimeSyncUI.cs @@ -5,15 +5,16 @@ namespace QSB.TimeSync { - class FastForwardUI : MonoBehaviour + class TimeSyncUI : MonoBehaviour { - public static FastForwardUI Instance; + public static TimeSyncUI Instance; private Canvas _canvas; private Text _text; private float _startTime; private float _startTimeUnscaled; private bool _isSetUp; + private TimeSyncType _currentType; private void Awake() { @@ -41,21 +42,22 @@ private void OnDestroy() } } - public static void Start() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, Instance.StartFastForward); - public static void Stop() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, Instance.EndFastForward); + public static void Start(TimeSyncType type) => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); + public static void Stop() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); - private void StartFastForward() + private void StartTimeSync(TimeSyncType type) { + _currentType = type; _startTime = Time.timeSinceLevelLoad; _startTimeUnscaled = Time.unscaledTime; enabled = true; _canvas.enabled = true; - _text.text = "00:00"; Canvas.willRenderCanvases += OnWillRenderCanvases; } - private void EndFastForward() + private void EndTimeSync() { + _currentType = TimeSyncType.None; enabled = false; _canvas.enabled = false; Canvas.willRenderCanvases -= OnWillRenderCanvases; @@ -70,9 +72,19 @@ private void OnWillRenderCanvases() var totalSeconds = Mathf.Max(Time.timeSinceLevelLoad - _startTime, 0f); var minutes = Mathf.FloorToInt(totalSeconds / 60f); var seconds = Mathf.FloorToInt(totalSeconds) % 60; - _text.text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}" - + Environment.NewLine - + "Fast-forwarding to match server time..."; + var text = ""; + switch (_currentType) + { + case TimeSyncType.Fastforwarding: + text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}" + + Environment.NewLine + + "Fast-forwarding to match server time..."; + break; + case TimeSyncType.Pausing: + text = "Pausing to match server time..."; + break; + } + _text.text = text; } } } \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 9452fcb43..566b65810 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -74,7 +74,7 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) } else { - Reset(); + _state = State.NotLoaded; } } @@ -98,11 +98,6 @@ private void Init() } } - private void Reset() - { - _state = State.NotLoaded; - } - private void SendServerTime() { GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); @@ -110,10 +105,6 @@ private void SendServerTime() public void OnClientReceiveMessage(ServerTimeMessage message) { - if (isServer) - { - return; - } _serverTime = message.ServerTime; _serverLoopCount = message.LoopCount; WakeUpOrSleep(); @@ -149,7 +140,7 @@ private void StartFastForwarding() } _timeScale = MaxFastForwardSpeed; _state = State.FastForwarding; - FastForwardUI.Start(); + TimeSyncUI.Start(TimeSyncType.Fastforwarding); } private void StartPausing() @@ -161,6 +152,7 @@ private void StartPausing() _timeScale = 0f; _state = State.Pausing; SpinnerUI.Show(); + TimeSyncUI.Start(TimeSyncType.Pausing); } private void ResetTimeScale() @@ -176,7 +168,7 @@ private void ResetTimeScale() QSB.HasWokenUp = true; Physics.SyncTransforms(); SpinnerUI.Hide(); - FastForwardUI.Stop(); + TimeSyncUI.Stop(); GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); RespawnOnDeath.Instance.Init(); } From 510346159941769416f1279e8ab987d88d781783 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 26 Nov 2020 19:48:34 +0000 Subject: [PATCH 084/207] Update TimeSyncUI.cs --- QSB/TimeSync/TimeSyncUI.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/QSB/TimeSync/TimeSyncUI.cs b/QSB/TimeSync/TimeSyncUI.cs index c57cec8df..2991784a7 100644 --- a/QSB/TimeSync/TimeSyncUI.cs +++ b/QSB/TimeSync/TimeSyncUI.cs @@ -12,7 +12,6 @@ class TimeSyncUI : MonoBehaviour private Canvas _canvas; private Text _text; private float _startTime; - private float _startTimeUnscaled; private bool _isSetUp; private TimeSyncType _currentType; @@ -49,7 +48,6 @@ private void StartTimeSync(TimeSyncType type) { _currentType = type; _startTime = Time.timeSinceLevelLoad; - _startTimeUnscaled = Time.unscaledTime; enabled = true; _canvas.enabled = true; Canvas.willRenderCanvases += OnWillRenderCanvases; From f0cd6a82db82e80eba1d0bd3a2ae1dd5dea6c6af Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 09:55:25 +0000 Subject: [PATCH 085/207] added eye warp debug action --- QSB/Animation/PlayerHeadRotationSync.cs | 2 +- QSB/Utility/DebugActions.cs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index eaa8d4972..4905a7cf8 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -21,4 +21,4 @@ void LateUpdate() bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); } } -} +} \ No newline at end of file diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 1375ed4fc..7a949f299 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -36,6 +36,10 @@ private void Update() { InsertWarpCore(); } + if (Input.GetKeyDown(KeyCode.Keypad3)) + { + GlobalMessenger.FireEvent("DebugWarpVessel"); + } } } -} +} \ No newline at end of file From 78e497ff1d6921937d42540e9490c1b1d102cf89 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 10:59:50 +0000 Subject: [PATCH 086/207] fix sectors --- QSB/SectorSync/QSBSectorManager.cs | 9 --------- QSB/SectorSync/SectorSync.cs | 2 +- QSB/TransformSync/TransformSync.cs | 11 ++++------- QSB/Utility/DebugActions.cs | 2 +- 4 files changed, 6 insertions(+), 18 deletions(-) diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index a7a68f884..504c8dba3 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -49,14 +49,5 @@ public QSBSector GetClosestSector(Transform trans) .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) .First(); } - - public QSBSector GetStartPlanetSector() - { - var sector = QSBSceneManager.CurrentScene == OWScene.SolarSystem - ? Locator.GetAstroObject(AstroObject.Name.TimberHearth).GetRootSector() - : Locator.GetAstroObject(AstroObject.Name.Eye).GetRootSector(); - return WorldRegistry.GetObjects() - .FirstOrDefault(x => x.Sector == sector); - } } } diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index aac4184d7..4fbd3343b 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -37,7 +37,7 @@ private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) { return; } - transformSync.ReferenceSector = closestSector; + transformSync.SetReferenceSector(closestSector); SendSector(transformSync.netId.Value, closestSector); } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 395385618..0c0761ab8 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -42,12 +42,7 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) protected void Init() { DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); - ReferenceSector = QSBSectorManager.Instance.GetStartPlanetSector(); SyncedTransform = hasAuthority ? InitLocalTransform() : InitRemoteTransform(); - if (!hasAuthority) - { - SyncedTransform.position = ReferenceSector.Position; - } _isInitialized = true; _isVisible = true; } @@ -87,9 +82,10 @@ protected virtual void UpdateTransform() { if (hasAuthority) // If this script is attached to the client's own body on the client's side. { - if (ReferenceSector.Sector == null) + if (ReferenceSector == null || ReferenceSector.Transform == null || ReferenceSector.Sector == null) { - DebugLog.ToConsole($"Error - Sector is null for referencesector for {AttachedNetId}. ({Player.PlayerId}.{GetType().Name})", MessageType.Error); + DebugLog.ToConsole($"Error - Referencesector has null values for {AttachedNetId}. ({Player.PlayerId}.{GetType().Name})", MessageType.Error); + return; } transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); @@ -112,6 +108,7 @@ protected virtual void UpdateTransform() public void SetReferenceSector(QSBSector sector) { + DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); _positionSmoothVelocity = Vector3.zero; ReferenceSector = sector; if (!hasAuthority) diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 7a949f299..c81622515 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -38,7 +38,7 @@ private void Update() } if (Input.GetKeyDown(KeyCode.Keypad3)) { - GlobalMessenger.FireEvent("DebugWarpVessel"); + LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); } } } From 7f3d9224106d76b809e22688a13546c436a9c610 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:03:32 +0000 Subject: [PATCH 087/207] fixes --- QSB/TransformSync/TransformSync.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 0c0761ab8..94ecefcf1 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -66,15 +66,10 @@ private void Update() if (SyncedTransform == null) { - DebugLog.ToConsole($"Warning - SyncedTransform {AttachedNetId} ({Player.PlayerId}.{GetType().Name}) is null.", MessageType.Warning); + DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); return; } - if (ReferenceSector == null) - { - DebugLog.ToConsole($"Error - {AttachedNetId} ({Player.PlayerId}.{GetType().Name}) doesn't have a reference sector", MessageType.Error); - } - UpdateTransform(); } @@ -82,9 +77,9 @@ protected virtual void UpdateTransform() { if (hasAuthority) // If this script is attached to the client's own body on the client's side. { - if (ReferenceSector == null || ReferenceSector.Transform == null || ReferenceSector.Sector == null) + if (ReferenceSector == null || ReferenceSector.Sector == null) { - DebugLog.ToConsole($"Error - Referencesector has null values for {AttachedNetId}. ({Player.PlayerId}.{GetType().Name})", MessageType.Error); + DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); return; } transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); From 763aa294ed9cbecca6e84a42cde09bd59f49e616 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 11:26:59 +0000 Subject: [PATCH 088/207] more fixes --- QSB/OrbSync/OrbManager.cs | 2 +- QSB/QSBNetworkManager.cs | 2 ++ QSB/QSBSceneManager.cs | 1 + QSB/TimeSync/WakeUpSync.cs | 2 +- QSB/TransformSync/PlayerProbeSync.cs | 5 ----- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index cbdc1ad9b..021ab5d91 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -38,7 +38,7 @@ public void BuildOrbs() WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); if (NetworkServer.active) { - DebugLog.DebugWrite("IS SERVER - INSTANTIATING!"); + DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); WorldRegistry.OrbSyncList.Clear(); WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 87d7626e1..0ab625c0d 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -78,7 +78,9 @@ private void OnDestroy() private void OnSceneLoaded(OWScene scene) { + DebugLog.DebugWrite("scene loaded"); OrbManager.Instance.BuildOrbs(); + OrbManager.Instance.QueueBuildSlots(); WorldRegistry.OldDialogueTrees.Clear(); WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 1af3a5750..b6ca1f60a 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -21,6 +21,7 @@ static QSBSceneManager() private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) { + DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); var universe = InUniverse(newScene); OnSceneLoaded?.Invoke(newScene, universe); if (universe) diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 566b65810..580df58d1 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -67,7 +67,7 @@ private void OnDestroy() private void OnSceneLoaded(OWScene scene, bool isInUniverse) { - QSB.HasWokenUp = false; + QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); if (isInUniverse) { Init(); diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 739874edd..12a4d491c 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -69,11 +69,6 @@ protected override void UpdateTransform() DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); return; } - if (ReferenceSector == null) - { - DebugLog.ToConsole($"ReferenceSector is null for {AttachedNetId}!", MessageType.Error); - return; - } if (_disabledSocket == null) { DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); From d4f6f56b75076ed513be0f26beee5b819367433e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 14:34:28 +0000 Subject: [PATCH 089/207] temp fix solar system dependency --- QSB/Tools/PlayerToolsManager.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index a0f8683a6..af2c03736 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -23,7 +23,14 @@ public static void Init(Transform camera) CreateStowTransforms(camera); _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; - _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) + { + _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; + } + else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) + { + _lightbulbMaterial = null; + } CreateFlashlight(camera); CreateSignalscope(camera); From d4335cf804a5b2d2ce7b179f0ca4b9d776a91ef5 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 14:35:20 +0000 Subject: [PATCH 090/207] Update PlayerToolsManager.cs --- QSB/Tools/PlayerToolsManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index af2c03736..b731c8553 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -29,6 +29,7 @@ public static void Init(Transform camera) } else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) { + // EyeCompatibility : Get this material another way. _lightbulbMaterial = null; } From beccede1313e75348f8ab0d97598b714518f9110 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 15:53:09 +0000 Subject: [PATCH 091/207] Update PlayerToolsManager.cs --- QSB/Tools/PlayerToolsManager.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index b731c8553..d76d58d24 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -21,15 +21,16 @@ public class PlayerToolsManager public static void Init(Transform camera) { CreateStowTransforms(camera); - - _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) { + _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; } else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) { - // EyeCompatibility : Get this material another way. + // EyeCompatibility : Get these materials another way. + _playerToolsMaterial = null; _lightbulbMaterial = null; } From 8772a670a559f3cf468858f9af91a17b219604c8 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 19:04:58 +0000 Subject: [PATCH 092/207] yes --- QSB/Animation/AnimControllerPatch.cs | 36 +- QSB/Animation/AnimFloatParam.cs | 22 +- QSB/Animation/AnimationSync.cs | 458 +++++++++--------- QSB/Animation/AnimationType.cs | 20 +- QSB/Animation/AnimatorMirror.cs | 158 +++--- QSB/Animation/CrouchSync.cs | 116 ++--- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 34 +- QSB/Animation/Events/CrouchEvent.cs | 42 +- QSB/Animation/Events/PlayerSuitEvent.cs | 96 ++-- QSB/Animation/Events/QSBAnimationMessage.cs | 56 +-- .../Events/QSBAnimationParametersMessage.cs | 44 +- .../Events/QSBAnimationTriggerMessage.cs | 30 +- QSB/OrbSync/OrbManager.cs | 6 +- QSB/Player/Events/PlayerSectorEvent.cs | 10 +- QSB/Player/QSBPlayerManager.cs | 22 +- QSB/QSBNetworkManager.cs | 6 +- QSB/QSBSceneManager.cs | 6 +- QSB/SectorSync/QSBSectorManager.cs | 7 +- QSB/SectorSync/SectorSync.cs | 6 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 6 +- QSB/TimeSync/WakeUpSync.cs | 20 +- QSB/Tools/PlayerToolsManager.cs | 6 +- QSB/TransformSync/PlayerCameraSync.cs | 6 +- QSB/TransformSync/PlayerProbeSync.cs | 12 +- QSB/TransformSync/TransformSync.cs | 11 +- QSB/WorldSync/WorldRegistry.cs | 18 +- 26 files changed, 598 insertions(+), 656 deletions(-) diff --git a/QSB/Animation/AnimControllerPatch.cs b/QSB/Animation/AnimControllerPatch.cs index 725702ae1..00f411ff3 100644 --- a/QSB/Animation/AnimControllerPatch.cs +++ b/QSB/Animation/AnimControllerPatch.cs @@ -3,24 +3,24 @@ namespace QSB.Animation { - public static class AnimControllerPatch - { - public static RuntimeAnimatorController SuitedAnimController { get; private set; } + public static class AnimControllerPatch + { + public static RuntimeAnimatorController SuitedAnimController { get; private set; } - public static void Init() - { - QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); - QSB.Helper.Events.Event += OnEvent; - } + public static void Init() + { + QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); + QSB.Helper.Events.Event += OnEvent; + } - private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is PlayerAnimController playerAnimController && - ev == OWML.Common.Events.BeforeStart && - SuitedAnimController == null) - { - SuitedAnimController = playerAnimController.GetValue("_baseAnimController"); - } - } - } + private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is PlayerAnimController playerAnimController && + ev == OWML.Common.Events.BeforeStart && + SuitedAnimController == null) + { + SuitedAnimController = playerAnimController.GetValue("_baseAnimController"); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimFloatParam.cs b/QSB/Animation/AnimFloatParam.cs index 8b4f2e78a..be3a71a04 100644 --- a/QSB/Animation/AnimFloatParam.cs +++ b/QSB/Animation/AnimFloatParam.cs @@ -2,17 +2,17 @@ namespace QSB.Animation { - public class AnimFloatParam - { - public float Current { get; private set; } - public float Target { get; set; } + public class AnimFloatParam + { + public float Current { get; private set; } + public float Target { get; set; } - private float _velocity; + private float _velocity; - public float Smooth(float smoothTime) - { - Current = Mathf.SmoothDamp(Current, Target, ref _velocity, smoothTime); - return Current; - } - } + public float Smooth(float smoothTime) + { + Current = Mathf.SmoothDamp(Current, Target, ref _velocity, smoothTime); + return Current; + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 318aeaba0..58518feb5 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -8,237 +8,229 @@ namespace QSB.Animation { - public class AnimationSync : PlayerSyncObject - { - private Animator _anim; - private Animator _bodyAnim; - private QSBNetworkAnimator _netAnim; - - private RuntimeAnimatorController _suitedAnimController; - private AnimatorOverrideController _unsuitedAnimController; - private GameObject _suitedGraphics; - private GameObject _unsuitedGraphics; - private PlayerCharacterController _playerController; - private CrouchSync _crouchSync; - - private RuntimeAnimatorController _chertController; - private RuntimeAnimatorController _eskerController; - private RuntimeAnimatorController _feldsparController; - private RuntimeAnimatorController _gabbroController; - private RuntimeAnimatorController _riebeckController; - - public AnimatorMirror Mirror { get; private set; } - public AnimationType CurrentType = AnimationType.PlayerUnsuited; - public Animator Animator - { - get { return _bodyAnim; } - } - - private void Awake() - { - _anim = gameObject.AddComponent(); - _netAnim = gameObject.AddComponent(); - _netAnim.enabled = false; - _netAnim.animator = _anim; - - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); - } - - private void OnDestroy() - { - _netAnim.enabled = false; - if (_playerController == null) - { - return; - } - _playerController.OnJump -= OnJump; - _playerController.OnBecomeGrounded -= OnBecomeGrounded; - _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); - } - - private void LoadControllers() - { - var bundle = QSB.InstrumentAssetBundle; - _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; - _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; - } - - private void InitCommon(Transform body) - { - if (QSBSceneManager.IsInUniverse) - { - LoadControllers(); - } - _netAnim.enabled = true; - _bodyAnim = body.GetComponent(); - Mirror = body.gameObject.AddComponent(); - if (isLocalPlayer) - { - Mirror.Init(_bodyAnim, _anim); - } - else - { - Mirror.Init(_anim, _bodyAnim); - } - - QSBPlayerManager.PlayerSyncObjects.Add(this); - - for (var i = 0; i < _anim.parameterCount; i++) - { - _netAnim.SetParameterAutoSend(i, true); - } - - var playerAnimController = body.GetComponent(); - _suitedAnimController = AnimControllerPatch.SuitedAnimController; - _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); - _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); - _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); - } - - public void InitLocal(Transform body) - { - InitCommon(body); - - _playerController = body.parent.GetComponent(); - _playerController.OnJump += OnJump; - _playerController.OnBecomeGrounded += OnBecomeGrounded; - _playerController.OnBecomeUngrounded += OnBecomeUngrounded; - - InitCrouchSync(); - } - - public void InitRemote(Transform body) - { - InitCommon(body); - - var playerAnimController = body.GetComponent(); - playerAnimController.enabled = false; - - playerAnimController.SetValue("_suitedGroup", new GameObject()); - playerAnimController.SetValue("_unsuitedGroup", new GameObject()); - playerAnimController.SetValue("_baseAnimController", null); - playerAnimController.SetValue("_unsuitedAnimOverride", null); - playerAnimController.SetValue("_rightArmHidden", false); - - var rightArmObjects = playerAnimController.GetValue("_rightArmObjects").ToList(); - rightArmObjects.ForEach(rightArmObject => rightArmObject.layer = LayerMask.NameToLayer("Default")); - - body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; - body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; - - InitCrouchSync(); - - var ikSync = body.gameObject.AddComponent(); - QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); - } - - private void InitCrouchSync() - { - _crouchSync = gameObject.AddComponent(); - _crouchSync.Init(this, _playerController, _bodyAnim); - } - - private void OnJump() => _netAnim.SetTrigger("Jump"); - private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); - private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - - public void SendCrouch(float value = 0) - { - GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - } - - public void HandleCrouch(float value) - { - _crouchSync.CrouchParam.Target = value; - } - - private void SuitUp() - { - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); - SetAnimationType(AnimationType.PlayerSuited); - } - - private void SuitDown() - { - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); - SetAnimationType(AnimationType.PlayerUnsuited); - } - - public void SetSuitState(bool state) - { - if (state) - { - SuitUp(); - return; - } - SuitDown(); - } - - public void SetAnimationType(AnimationType type) - { - if (CurrentType == type) - { - return; - } - CurrentType = type; - if (_unsuitedAnimController == null) - { - DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); - } - if (_suitedAnimController == null) - { - DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); - } - RuntimeAnimatorController controller = default; - switch (type) - { - case AnimationType.PlayerSuited: - controller = _suitedAnimController; - _unsuitedGraphics?.SetActive(false); - _suitedGraphics?.SetActive(true); - break; - case AnimationType.PlayerUnsuited: - controller = _unsuitedAnimController; - _unsuitedGraphics?.SetActive(true); - _suitedGraphics?.SetActive(false); - break; - case AnimationType.Chert: - controller = _chertController; - break; - case AnimationType.Esker: - controller = _eskerController; - break; - case AnimationType.Feldspar: - controller = _feldsparController; - break; - case AnimationType.Gabbro: - controller = _gabbroController; - break; - case AnimationType.Riebeck: - controller = _riebeckController; - break; - } - _anim.runtimeAnimatorController = controller; - _bodyAnim.runtimeAnimatorController = controller; - if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) - { - _bodyAnim.SetTrigger("Playing"); - _anim.SetTrigger("Playing"); - } - else - { - // Avoids "jumping" when exiting instrument and putting on suit - _bodyAnim.SetTrigger("Grounded"); - _anim.SetTrigger("Grounded"); - } - _netAnim.animator = _anim; // Probably not needed. - Mirror.RebuildFloatParams(); - for (var i = 0; i < _anim.parameterCount; i++) - { - _netAnim.SetParameterAutoSend(i, true); - } - } - } + public class AnimationSync : PlayerSyncObject + { + private Animator _anim; + private QSBNetworkAnimator _netAnim; + + private RuntimeAnimatorController _suitedAnimController; + private AnimatorOverrideController _unsuitedAnimController; + private GameObject _suitedGraphics; + private GameObject _unsuitedGraphics; + private PlayerCharacterController _playerController; + private CrouchSync _crouchSync; + + private RuntimeAnimatorController _chertController; + private RuntimeAnimatorController _eskerController; + private RuntimeAnimatorController _feldsparController; + private RuntimeAnimatorController _gabbroController; + private RuntimeAnimatorController _riebeckController; + + public AnimatorMirror Mirror { get; private set; } + public AnimationType CurrentType = AnimationType.PlayerUnsuited; + public Animator Animator { get; private set; } + + private void Awake() + { + _anim = gameObject.AddComponent(); + _netAnim = gameObject.AddComponent(); + _netAnim.enabled = false; + _netAnim.animator = _anim; + + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); + } + + private void OnDestroy() + { + _netAnim.enabled = false; + if (_playerController == null) + { + return; + } + _playerController.OnJump -= OnJump; + _playerController.OnBecomeGrounded -= OnBecomeGrounded; + _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; + + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); + } + + private void LoadControllers() + { + var bundle = QSB.InstrumentAssetBundle; + _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; + _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; + } + + private void InitCommon(Transform body) + { + if (QSBSceneManager.IsInUniverse) + { + LoadControllers(); + } + _netAnim.enabled = true; + Animator = body.GetComponent(); + Mirror = body.gameObject.AddComponent(); + if (isLocalPlayer) + { + Mirror.Init(Animator, _anim); + } + else + { + Mirror.Init(_anim, Animator); + } + + QSBPlayerManager.PlayerSyncObjects.Add(this); + + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } + + var playerAnimController = body.GetComponent(); + _suitedAnimController = AnimControllerPatch.SuitedAnimController; + _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); + _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); + _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); + } + + public void InitLocal(Transform body) + { + InitCommon(body); + + _playerController = body.parent.GetComponent(); + _playerController.OnJump += OnJump; + _playerController.OnBecomeGrounded += OnBecomeGrounded; + _playerController.OnBecomeUngrounded += OnBecomeUngrounded; + + InitCrouchSync(); + } + + public void InitRemote(Transform body) + { + InitCommon(body); + + var playerAnimController = body.GetComponent(); + playerAnimController.enabled = false; + + playerAnimController.SetValue("_suitedGroup", new GameObject()); + playerAnimController.SetValue("_unsuitedGroup", new GameObject()); + playerAnimController.SetValue("_baseAnimController", null); + playerAnimController.SetValue("_unsuitedAnimOverride", null); + playerAnimController.SetValue("_rightArmHidden", false); + + var rightArmObjects = playerAnimController.GetValue("_rightArmObjects").ToList(); + rightArmObjects.ForEach(rightArmObject => rightArmObject.layer = LayerMask.NameToLayer("Default")); + + body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; + body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; + + InitCrouchSync(); + + var ikSync = body.gameObject.AddComponent(); + QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); + } + + private void InitCrouchSync() + { + _crouchSync = gameObject.AddComponent(); + _crouchSync.Init(this, _playerController, Animator); + } + + private void OnJump() => _netAnim.SetTrigger("Jump"); + private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); + private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); + + public void SendCrouch(float value = 0) + => GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); + + public void HandleCrouch(float value) + => _crouchSync.CrouchParam.Target = value; + + private void SuitUp() + { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); + SetAnimationType(AnimationType.PlayerSuited); + } + + private void SuitDown() + { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); + SetAnimationType(AnimationType.PlayerUnsuited); + } + + public void SetSuitState(bool state) + { + if (state) + { + SuitUp(); + return; + } + SuitDown(); + } + + public void SetAnimationType(AnimationType type) + { + if (CurrentType == type) + { + return; + } + CurrentType = type; + if (_unsuitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); + } + if (_suitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); + } + RuntimeAnimatorController controller = default; + switch (type) + { + case AnimationType.PlayerSuited: + controller = _suitedAnimController; + _unsuitedGraphics?.SetActive(false); + _suitedGraphics?.SetActive(true); + break; + case AnimationType.PlayerUnsuited: + controller = _unsuitedAnimController; + _unsuitedGraphics?.SetActive(true); + _suitedGraphics?.SetActive(false); + break; + case AnimationType.Chert: + controller = _chertController; + break; + case AnimationType.Esker: + controller = _eskerController; + break; + case AnimationType.Feldspar: + controller = _feldsparController; + break; + case AnimationType.Gabbro: + controller = _gabbroController; + break; + case AnimationType.Riebeck: + controller = _riebeckController; + break; + } + _anim.runtimeAnimatorController = controller; + Animator.runtimeAnimatorController = controller; + if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) + { + Animator.SetTrigger("Playing"); + _anim.SetTrigger("Playing"); + } + else + { + // Avoids "jumping" when exiting instrument and putting on suit + Animator.SetTrigger("Grounded"); + _anim.SetTrigger("Grounded"); + } + _netAnim.animator = _anim; // Probably not needed. + Mirror.RebuildFloatParams(); + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs index 6b6e44ba9..977bcda4f 100644 --- a/QSB/Animation/AnimationType.cs +++ b/QSB/Animation/AnimationType.cs @@ -1,13 +1,13 @@ namespace QSB.Animation { - public enum AnimationType - { - Chert, - Esker, - Feldspar, - Gabbro, - PlayerSuited, - PlayerUnsuited, - Riebeck - } + public enum AnimationType + { + Chert, + Esker, + Feldspar, + Gabbro, + PlayerSuited, + PlayerUnsuited, + Riebeck + } } \ No newline at end of file diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 3fb87fd0d..8a0debd9c 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -7,92 +7,90 @@ namespace QSB.Animation { - public class AnimatorMirror : MonoBehaviour - { - private const float SmoothTime = 0.05f; + public class AnimatorMirror : MonoBehaviour + { + private const float SmoothTime = 0.05f; - private Animator _from; - private Animator _to; + private Animator _from; + private Animator _to; - private readonly Dictionary _floatParams = new Dictionary(); + private readonly Dictionary _floatParams = new Dictionary(); - public void Init(Animator from, Animator to) - { - _from = from; - _to = to; - if (_from.runtimeAnimatorController == null) - { - DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); - _from.runtimeAnimatorController = _to.runtimeAnimatorController; - } - else if (_to.runtimeAnimatorController == null) - { - DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); - _to.runtimeAnimatorController = _from.runtimeAnimatorController; - } - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } - } + public void Init(Animator from, Animator to) + { + _from = from; + _to = to; + if (_from.runtimeAnimatorController == null) + { + DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); + _from.runtimeAnimatorController = _to.runtimeAnimatorController; + } + else if (_to.runtimeAnimatorController == null) + { + DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); + _to.runtimeAnimatorController = _from.runtimeAnimatorController; + } + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } - private PlayerInfo GetPlayer() - { - return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; - } + private PlayerInfo GetPlayer() + => QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; - private void Update() - { - if (_to == null || _from == null) - { - return; - } - if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) - { - _to.runtimeAnimatorController = _from.runtimeAnimatorController; - } - SyncParams(); - SmoothFloats(); - } + private void Update() + { + if (_to == null || _from == null) + { + return; + } + if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) + { + _to.runtimeAnimatorController = _from.runtimeAnimatorController; + } + SyncParams(); + SmoothFloats(); + } - private void SyncParams() - { - foreach (var fromParam in _from.parameters) - { - switch (fromParam.type) - { - case AnimatorControllerParameterType.Float: - if (!_floatParams.ContainsKey(fromParam.name)) - { - DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); - RebuildFloatParams(); - break; - } - _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); - break; - case AnimatorControllerParameterType.Bool: - _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); - break; - } - } - } + private void SyncParams() + { + foreach (var fromParam in _from.parameters) + { + switch (fromParam.type) + { + case AnimatorControllerParameterType.Float: + if (!_floatParams.ContainsKey(fromParam.name)) + { + DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); + RebuildFloatParams(); + break; + } + _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); + break; + case AnimatorControllerParameterType.Bool: + _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); + break; + } + } + } - private void SmoothFloats() - { - foreach (var floatParam in _floatParams) - { - var current = floatParam.Value.Smooth(SmoothTime); - _to.SetFloat(floatParam.Key, current); - } - } + private void SmoothFloats() + { + foreach (var floatParam in _floatParams) + { + var current = floatParam.Value.Smooth(SmoothTime); + _to.SetFloat(floatParam.Key, current); + } + } - public void RebuildFloatParams() - { - _floatParams.Clear(); - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } - } - } + public void RebuildFloatParams() + { + _floatParams.Clear(); + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 559762cb0..51b6cb529 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -4,69 +4,69 @@ namespace QSB.Animation { - public class CrouchSync : NetworkBehaviour - { - public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); + public class CrouchSync : NetworkBehaviour + { + public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); - private const float CrouchSendInterval = 0.1f; - private const float CrouchChargeThreshold = 0.01f; - private const float CrouchSmoothTime = 0.05f; - private const int CrouchLayerIndex = 1; + private const float CrouchSendInterval = 0.1f; + private const float CrouchChargeThreshold = 0.01f; + private const float CrouchSmoothTime = 0.05f; + private const int CrouchLayerIndex = 1; - private float _sendTimer; - private float _lastSentJumpChargeFraction; + private float _sendTimer; + private float _lastSentJumpChargeFraction; - private AnimationSync _animationSync; - private PlayerCharacterController _playerController; - private Animator _bodyAnim; + private AnimationSync _animationSync; + private PlayerCharacterController _playerController; + private Animator _bodyAnim; - public void Init(AnimationSync animationSync, PlayerCharacterController playerController, Animator bodyAnim) - { - _animationSync = animationSync; - _playerController = playerController; - _bodyAnim = bodyAnim; - } + public void Init(AnimationSync animationSync, PlayerCharacterController playerController, Animator bodyAnim) + { + _animationSync = animationSync; + _playerController = playerController; + _bodyAnim = bodyAnim; + } - private void Update() - { - if (isLocalPlayer) - { - SyncLocalCrouch(); - return; - } - SyncRemoteCrouch(); - } + private void Update() + { + if (isLocalPlayer) + { + SyncLocalCrouch(); + return; + } + SyncRemoteCrouch(); + } - private void SyncLocalCrouch() - { - if (_playerController == null) - { - return; - } - _sendTimer += Time.unscaledDeltaTime; - if (_sendTimer < CrouchSendInterval) - { - return; - } - var jumpChargeFraction = _playerController.GetJumpChargeFraction(); - if (Math.Abs(jumpChargeFraction - _lastSentJumpChargeFraction) < CrouchChargeThreshold) - { - return; - } - _animationSync.SendCrouch(jumpChargeFraction); - _lastSentJumpChargeFraction = jumpChargeFraction; - _sendTimer = 0; - } + private void SyncLocalCrouch() + { + if (_playerController == null) + { + return; + } + _sendTimer += Time.unscaledDeltaTime; + if (_sendTimer < CrouchSendInterval) + { + return; + } + var jumpChargeFraction = _playerController.GetJumpChargeFraction(); + if (Math.Abs(jumpChargeFraction - _lastSentJumpChargeFraction) < CrouchChargeThreshold) + { + return; + } + _animationSync.SendCrouch(jumpChargeFraction); + _lastSentJumpChargeFraction = jumpChargeFraction; + _sendTimer = 0; + } - private void SyncRemoteCrouch() - { - if (_bodyAnim == null) - { - return; - } - CrouchParam.Smooth(CrouchSmoothTime); - var jumpChargeFraction = CrouchParam.Current; - _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); - } - } + private void SyncRemoteCrouch() + { + if (_bodyAnim == null) + { + return; + } + CrouchParam.Smooth(CrouchSmoothTime); + var jumpChargeFraction = CrouchParam.Current; + _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 415c90fc9..76d96e680 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -5,26 +5,26 @@ namespace QSB.Animation.Events { - public class ChangeAnimTypeEvent : QSBEvent> - { - public override EventType Type => EventType.PlayInstrument; + public class ChangeAnimTypeEvent : QSBEvent> + { + public override EventType Type => EventType.PlayInstrument; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); - private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); + private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); - private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage - { - AboutId = player, - Value = type - }; + private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage + { + AboutId = player, + Value = type + }; - public override void OnReceiveRemote(EnumMessage message) - { - QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); - QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); - } - } + public override void OnReceiveRemote(EnumMessage message) + { + QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); + QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index 1a4191f6f..a38232cd2 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -4,30 +4,30 @@ namespace QSB.Animation.Events { - public class CrouchEvent : QSBEvent - { - public override EventType Type => EventType.AnimTrigger; + public class CrouchEvent : QSBEvent + { + public override EventType Type => EventType.AnimTrigger; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); - private void Handler(float value) => SendEvent(CreateMessage(value)); + private void Handler(float value) => SendEvent(CreateMessage(value)); - private FloatMessage CreateMessage(float value) => new FloatMessage - { - AboutId = LocalPlayerId, - Value = value - }; + private FloatMessage CreateMessage(float value) => new FloatMessage + { + AboutId = LocalPlayerId, + Value = value + }; - public override void OnReceiveRemote(FloatMessage message) - { - var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); - if (animationSync == null) - { - return; - } - animationSync.HandleCrouch(message.Value); - } - } + public override void OnReceiveRemote(FloatMessage message) + { + var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); + if (animationSync == null) + { + return; + } + animationSync.HandleCrouch(message.Value); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index b2924ab4e..57e5de49f 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -4,52 +4,52 @@ namespace QSB.Animation { - public class PlayerSuitEvent : QSBEvent - { - public override EventType Type => EventType.SuitActiveChange; - - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.SuitUp, HandleSuitUp); - GlobalMessenger.AddListener(EventNames.RemoveSuit, HandleSuitDown); - } - - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.SuitUp, HandleSuitUp); - GlobalMessenger.RemoveListener(EventNames.RemoveSuit, HandleSuitDown); - } - - private void HandleSuitUp() => SendEvent(CreateMessage(true)); - private void HandleSuitDown() => SendEvent(CreateMessage(false)); - - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; - - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player?.UpdateState(State.Suit, message.ToggleValue); - - if (!player.IsReady) - { - return; - } - - var animator = player.AnimationSync; - var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; - animator.SetAnimationType(type); - } - - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); - var animator = QSBPlayerManager.LocalPlayer.AnimationSync; - var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; - animator.CurrentType = type; - } - } + public class PlayerSuitEvent : QSBEvent + { + public override EventType Type => EventType.SuitActiveChange; + + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.SuitUp, HandleSuitUp); + GlobalMessenger.AddListener(EventNames.RemoveSuit, HandleSuitDown); + } + + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.SuitUp, HandleSuitUp); + GlobalMessenger.RemoveListener(EventNames.RemoveSuit, HandleSuitDown); + } + + private void HandleSuitUp() => SendEvent(CreateMessage(true)); + private void HandleSuitDown() => SendEvent(CreateMessage(false)); + + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; + + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player?.UpdateState(State.Suit, message.ToggleValue); + + if (!player.IsReady) + { + return; + } + + var animator = player.AnimationSync; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.SetAnimationType(type); + } + + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); + var animator = QSBPlayerManager.LocalPlayer.AnimationSync; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.CurrentType = type; + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs index ab6523b5c..85557fd9b 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -2,34 +2,34 @@ namespace QSB.Animation.Events { - class QSBAnimationMessage : MessageBase - { - public NetworkInstanceId netId; - public int stateHash; - public float normalizedTime; - public byte[] parameters; + class QSBAnimationMessage : MessageBase + { + public NetworkInstanceId netId; + public int stateHash; + public float normalizedTime; + public byte[] parameters; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - stateHash = (int)reader.ReadPackedUInt32(); - normalizedTime = reader.ReadSingle(); - parameters = reader.ReadBytesAndSize(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - writer.WritePackedUInt32((uint)stateHash); - writer.Write(normalizedTime); - if (parameters == null) - { - writer.WriteBytesAndSize(parameters, 0); - } - else - { - writer.WriteBytesAndSize(parameters, parameters.Length); - } - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)stateHash); + writer.Write(normalizedTime); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs index 4d34b97f6..a01082883 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -2,28 +2,28 @@ namespace QSB.Animation.Events { - class QSBAnimationParametersMessage : MessageBase - { - public NetworkInstanceId netId; - public byte[] parameters; + class QSBAnimationParametersMessage : MessageBase + { + public NetworkInstanceId netId; + public byte[] parameters; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - parameters = reader.ReadBytesAndSize(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + parameters = reader.ReadBytesAndSize(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - if (parameters == null) - { - writer.WriteBytesAndSize(parameters, 0); - } - else - { - writer.WriteBytesAndSize(parameters, parameters.Length); - } - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs index 1be48b7d9..414e2f029 100644 --- a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs +++ b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs @@ -2,21 +2,21 @@ namespace QSB.Animation.Events { - class QSBAnimationTriggerMessage : MessageBase - { - public NetworkInstanceId netId; - public int hash; + class QSBAnimationTriggerMessage : MessageBase + { + public NetworkInstanceId netId; + public int hash; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - hash = (int)reader.ReadPackedUInt32(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + hash = (int)reader.ReadPackedUInt32(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - writer.WritePackedUInt32((uint)hash); - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)hash); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 021ab5d91..130c197bc 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -11,10 +11,8 @@ public class OrbManager : MonoBehaviour { public static OrbManager Instance { get; private set; } - private void Awake() - { - Instance = this; - } + private void Awake() + => Instance = this; private void BuildOrbSlots() { diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 784dee43c..2903e7e95 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -11,15 +11,9 @@ public class PlayerSectorEvent : QSBEvent { public override EventType Type => EventType.PlayerSectorChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); - } + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); - } + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 3d16dbc32..05e5a3edc 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -45,10 +45,8 @@ public static void RemoveAllPlayers() PlayerList.Clear(); } - public static bool PlayerExists(uint id) - { - return id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); - } + public static bool PlayerExists(uint id) + => id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); public static void HandleFullStateMessage(PlayerStateMessage message) { @@ -62,15 +60,11 @@ public static void HandleFullStateMessage(PlayerStateMessage message) } } - public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - { - return PlayerSyncObjects.OfType().Where(x => x != null); - } + public static IEnumerable GetSyncObjects() where T : PlayerSyncObject + => PlayerSyncObjects.OfType().Where(x => x != null); - public static T GetSyncObject(uint id) where T : PlayerSyncObject - { - return GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); - } + public static T GetSyncObject(uint id) where T : PlayerSyncObject + => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); public static bool IsBelongingToLocalPlayer(uint id) { @@ -128,8 +122,8 @@ public static List GetPlayerNetIds(PlayerInfo player) { return default; } - int count = 0; - int totalCount = PlayerSyncObjects.Count; + var count = 0; + var totalCount = PlayerSyncObjects.Count; PlayerSyncObjects.RemoveAll(x => x == null); PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); if (PlayerSyncObjects.Count != totalCount) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 0ab625c0d..8b52c337d 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -71,10 +71,8 @@ private void Awake() QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - private void OnDestroy() - { - QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; - } + private void OnDestroy() + => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; private void OnSceneLoaded(OWScene scene) { diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index b6ca1f60a..365de1d12 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -30,9 +30,7 @@ private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) } } - private static bool InUniverse(OWScene scene) - { - return scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) + => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; } } diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 504c8dba3..a932e8aea 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -23,10 +23,9 @@ private void Awake() QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } - private void OnDestroy() - { - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); - } + + private void OnDestroy() + => QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); public void RebuildSectors() { diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 4fbd3343b..a5446b298 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -41,9 +41,7 @@ private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) SendSector(transformSync.netId.Value, closestSector); } - private void SendSector(uint id, QSBSector sector) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); - } + private void SendSector(uint id, QSBSector sector) + => GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); } } diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index c3829b76e..ecc7eaa8e 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -19,9 +19,7 @@ public class ServerTimeEvent : QSBEvent LoopCount = count }; - public override void OnReceiveRemote(ServerTimeMessage message) - { - WakeUpSync.LocalInstance.OnClientReceiveMessage(message); - } + public override void OnReceiveRemote(ServerTimeMessage message) + => WakeUpSync.Instance.OnClientReceiveMessage(message); } } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 580df58d1..1f965dd32 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -9,7 +9,7 @@ namespace QSB.TimeSync { public class WakeUpSync : NetworkBehaviour { - public static WakeUpSync LocalInstance { get; private set; } + public static WakeUpSync Instance { get; private set; } private const float TimeThreshold = 0.5f; private const float MaxFastForwardSpeed = 60f; @@ -27,10 +27,8 @@ private enum State { NotLoaded, Loaded, FastForwarding, Pausing } private int _localLoopCount; private int _serverLoopCount; - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } + public override void OnStartLocalPlayer() + => Instance = this; private void Start() { @@ -78,10 +76,8 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) } } - private void OnLoopStart() - { - _localLoopCount++; - } + private void OnLoopStart() + => _localLoopCount++; private void Init() { @@ -98,10 +94,8 @@ private void Init() } } - private void SendServerTime() - { - GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); - } + private void SendServerTime() + => GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); public void OnClientReceiveMessage(ServerTimeMessage message) { diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index d76d58d24..b701beb94 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -188,9 +188,7 @@ private static GameObject CreateProbeLauncher(Transform cameraBody) return launcherRoot; } - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) - { - return root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); - } + private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) + => root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 319af39a0..b56c84173 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -10,10 +10,8 @@ public class PlayerCameraSync : TransformSync { public static PlayerCameraSync LocalInstance { get; private set; } - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } + public override void OnStartLocalPlayer() + => LocalInstance = this; protected override Transform InitLocalTransform() { diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 12a4d491c..a90428871 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -12,15 +12,11 @@ public class PlayerProbeSync : TransformSync private Transform _disabledSocket; - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } + public override void OnStartLocalPlayer() + => LocalInstance = this; - private Transform GetProbe() - { - return Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - } + private Transform GetProbe() + => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); protected override Transform InitLocalTransform() { diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 94ecefcf1..e067ce2cc 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -29,15 +29,10 @@ protected virtual void Awake() QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } - protected virtual void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } + protected virtual void OnDestroy() + => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - _isInitialized = false; - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; protected void Init() { diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 81f9f0a71..de23d5766 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -25,20 +25,14 @@ public static void AddObject(WorldObject worldObject) WorldObjects.Add(worldObject); } - public static IEnumerable GetObjects() - { - return WorldObjects.OfType(); - } + public static IEnumerable GetObjects() + => WorldObjects.OfType(); - public static T GetObject(int id) where T : WorldObject - { - return GetObjects().FirstOrDefault(x => x.ObjectId == id); - } + public static T GetObject(int id) where T : WorldObject + => GetObjects().FirstOrDefault(x => x.ObjectId == id); - public static void RemoveObjects() where T : WorldObject - { - WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); - } + public static void RemoveObjects() where T : WorldObject + => WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) { From d31f1fa86d4203710f1737c4d3d664b8b104da4b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 19:08:50 +0000 Subject: [PATCH 093/207] more --- QSB/Animation/PlayerHeadRotationSync.cs | 34 +- QSB/Animation/QSBNetworkAnimator.cs | 684 +++++++++--------- QSB/ConversationSync/ConversationManager.cs | 260 +++---- QSB/ConversationSync/ConversationPatches.cs | 192 ++--- QSB/ConversationSync/ConversationType.cs | 14 +- .../Events/ConversationEvent.cs | 76 +- .../Events/ConversationMessage.cs | 40 +- .../Events/ConversationStartEndEvent.cs | 104 +-- .../Events/ConversationStartEndMessage.cs | 40 +- QSB/DeathSync/DeathPatches.cs | 50 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 38 +- QSB/DeathSync/Necronomicon.cs | 190 ++--- QSB/DeathSync/PreventShipDestruction.cs | 60 +- QSB/DeathSync/RespawnOnDeath.cs | 258 +++---- QSB/ElevatorSync/ElevatorManager.cs | 50 +- QSB/ElevatorSync/ElevatorPatches.cs | 28 +- QSB/ElevatorSync/Events/ElevatorEvent.cs | 34 +- QSB/ElevatorSync/QSBElevator.cs | 88 +-- QSB/EventsCore/EventNames.cs | 72 +- QSB/EventsCore/EventType.cs | 52 +- QSB/EventsCore/IQSBEvent.cs | 10 +- QSB/EventsCore/QSBEvent.cs | 100 +-- QSB/EventsCore/QSBEventManager.cs | 84 +-- QSB/GeyserSync/Events/GeyserEvent.cs | 48 +- QSB/GeyserSync/GeyserManager.cs | 66 +- QSB/GeyserSync/QSBGeyser.cs | 58 +- QSB/Instruments/InstrumentsManager.cs | 206 +++--- QSB/Instruments/QSBCamera/CameraController.cs | 136 ++-- QSB/Instruments/QSBCamera/CameraManager.cs | 192 ++--- QSB/Instruments/QSBCamera/CameraMode.cs | 10 +- QSB/MessagesCore/EnumMessage.cs | 28 +- QSB/MessagesCore/FloatMessage.cs | 28 +- QSB/MessagesCore/MessageHandler.cs | 112 +-- QSB/MessagesCore/PlayerMessage.cs | 30 +- QSB/MessagesCore/ToggleMessage.cs | 28 +- QSB/OrbSync/Events/OrbSlotEvent.cs | 36 +- QSB/OrbSync/Events/OrbUserEvent.cs | 108 +-- QSB/OrbSync/OrbManager.cs | 94 +-- QSB/OrbSync/OrbPatches.cs | 106 +-- QSB/OrbSync/QSBOrbSlot.cs | 56 +- QSB/Patches/QSBPatch.cs | 10 +- QSB/Patches/QSBPatchManager.cs | 58 +- QSB/Patches/QSBPatchTypes.cs | 12 +- QSB/Player/Events/PlayerJoinEvent.cs | 52 +- QSB/Player/Events/PlayerJoinMessage.cs | 28 +- QSB/Player/Events/PlayerLeaveEvent.cs | 40 +- QSB/Player/Events/PlayerLeaveMessage.cs | 28 +- QSB/Player/Events/PlayerReadyEvent.cs | 72 +- QSB/Player/Events/PlayerSectorEvent.cs | 56 +- QSB/Player/Events/PlayerStateMessage.cs | 52 +- QSB/Player/Events/PlayerStatesRequestEvent.cs | 42 +- .../Events/ServerSendPlayerStatesEvent.cs | 56 +- QSB/Player/PlayerHUDMarker.cs | 108 +-- QSB/Player/PlayerInfo.cs | 132 ++-- QSB/Player/PlayerSyncObject.cs | 14 +- QSB/Player/QSBPlayerManager.cs | 242 +++---- QSB/Player/State.cs | 24 +- QSB/SectorSync/QSBSector.cs | 26 +- QSB/SectorSync/QSBSectorManager.cs | 74 +- QSB/SectorSync/SectorSync.cs | 72 +- 60 files changed, 2549 insertions(+), 2549 deletions(-) diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index 4905a7cf8..9d29335e8 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -2,23 +2,23 @@ namespace QSB.Animation { - public class PlayerHeadRotationSync : MonoBehaviour - { - private Animator _attachedAnimator; - private Transform _lookBase; + public class PlayerHeadRotationSync : MonoBehaviour + { + private Animator _attachedAnimator; + private Transform _lookBase; - public void Init(Transform lookBase) - { - _attachedAnimator = GetComponent(); - _lookBase = lookBase; - } + public void Init(Transform lookBase) + { + _attachedAnimator = GetComponent(); + _lookBase = lookBase; + } - void LateUpdate() - { - var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); - // Get the camera's local rotation with respect to the player body - var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; - bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); - } - } + void LateUpdate() + { + var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); + // Get the camera's local rotation with respect to the player body + var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; + bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); + } + } } \ No newline at end of file diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index fd4d89f06..220fd6333 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -4,372 +4,372 @@ namespace QSB.Animation { - // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. + // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. - [RequireComponent(typeof(NetworkIdentity))] - [RequireComponent(typeof(Animator))] - class QSBNetworkAnimator : NetworkBehaviour - { - private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); - private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); - private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); + [RequireComponent(typeof(NetworkIdentity))] + [RequireComponent(typeof(Animator))] + class QSBNetworkAnimator : NetworkBehaviour + { + private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); + private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); + private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); - private Animator m_Animator; - private uint m_ParameterSendBits; - private int m_AnimationHash; - private int m_TransitionHash; - private NetworkWriter m_ParameterWriter; - private float m_SendTimer; + private Animator m_Animator; + private uint m_ParameterSendBits; + private int m_AnimationHash; + private int m_TransitionHash; + private NetworkWriter m_ParameterWriter; + private float m_SendTimer; - public Animator animator - { - get - { - return m_Animator; - } - set - { - m_Animator = value; - m_ParameterSendBits = 0U; - } - } + public Animator animator + { + get + { + return m_Animator; + } + set + { + m_Animator = value; + m_ParameterSendBits = 0U; + } + } - public void SetParameterAutoSend(int index, bool value) - { - if (value) - m_ParameterSendBits |= (uint)(1 << index); - else - m_ParameterSendBits &= (uint)~(1 << index); - } + public void SetParameterAutoSend(int index, bool value) + { + if (value) + m_ParameterSendBits |= (uint)(1 << index); + else + m_ParameterSendBits &= (uint)~(1 << index); + } - public bool GetParameterAutoSend(int index) - { - return ((int)m_ParameterSendBits & 1 << index) != 0; - } + public bool GetParameterAutoSend(int index) + { + return ((int)m_ParameterSendBits & 1 << index) != 0; + } - public override void OnStartAuthority() - { - m_ParameterWriter = new NetworkWriter(); - } + public override void OnStartAuthority() + { + m_ParameterWriter = new NetworkWriter(); + } - private void FixedUpdate() - { - if (m_ParameterWriter == null) - { - return; - } - CheckSendRate(); - if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) - { - return; - } - var animationMessage = new QSBAnimationMessage - { - netId = netId, - stateHash = stateHash, - normalizedTime = normalizedTime - }; + private void FixedUpdate() + { + if (m_ParameterWriter == null) + { + return; + } + CheckSendRate(); + if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) + { + return; + } + var animationMessage = new QSBAnimationMessage + { + netId = netId, + stateHash = stateHash, + normalizedTime = normalizedTime + }; - m_ParameterWriter.SeekZero(); - WriteParameters(m_ParameterWriter, false); - animationMessage.parameters = m_ParameterWriter.ToArray(); + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, false); + animationMessage.parameters = m_ParameterWriter.ToArray(); - if (hasAuthority || ClientScene.readyConnection != null) - { - ClientScene.readyConnection.Send(40, animationMessage); - } - else - { - if (!isServer || localPlayerAuthority) - { - return; - } - NetworkServer.SendToReady(gameObject, 40, animationMessage); - } - } + if (hasAuthority || ClientScene.readyConnection != null) + { + ClientScene.readyConnection.Send(40, animationMessage); + } + else + { + if (!isServer || localPlayerAuthority) + { + return; + } + NetworkServer.SendToReady(gameObject, 40, animationMessage); + } + } - private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) - { - stateHash = 0; - normalizedTime = 0.0f; - if (m_Animator.IsInTransition(0)) - { - var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); - if (animatorTransitionInfo.fullPathHash == m_TransitionHash) - { - return false; - } - m_TransitionHash = animatorTransitionInfo.fullPathHash; - m_AnimationHash = 0; - return true; - } - var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); - if (animatorStateInfo.fullPathHash == m_AnimationHash) - { - return false; - } - if (m_AnimationHash != 0) - { - stateHash = animatorStateInfo.fullPathHash; - normalizedTime = animatorStateInfo.normalizedTime; - } - m_TransitionHash = 0; - m_AnimationHash = animatorStateInfo.fullPathHash; - return true; - } + private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) + { + stateHash = 0; + normalizedTime = 0.0f; + if (m_Animator.IsInTransition(0)) + { + var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); + if (animatorTransitionInfo.fullPathHash == m_TransitionHash) + { + return false; + } + m_TransitionHash = animatorTransitionInfo.fullPathHash; + m_AnimationHash = 0; + return true; + } + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + if (animatorStateInfo.fullPathHash == m_AnimationHash) + { + return false; + } + if (m_AnimationHash != 0) + { + stateHash = animatorStateInfo.fullPathHash; + normalizedTime = animatorStateInfo.normalizedTime; + } + m_TransitionHash = 0; + m_AnimationHash = animatorStateInfo.fullPathHash; + return true; + } - private void CheckSendRate() - { - if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) - { - return; - } - m_SendTimer = Time.time + GetNetworkSendInterval(); - var parametersMessage = new QSBAnimationParametersMessage - { - netId = netId - }; - m_ParameterWriter.SeekZero(); - WriteParameters(m_ParameterWriter, true); - parametersMessage.parameters = m_ParameterWriter.ToArray(); - if (hasAuthority && ClientScene.readyConnection != null) - { - ClientScene.readyConnection.Send(41, parametersMessage); - } - else - { - if (!isServer || localPlayerAuthority) - return; - NetworkServer.SendToReady(gameObject, 41, parametersMessage); - } - } + private void CheckSendRate() + { + if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) + { + return; + } + m_SendTimer = Time.time + GetNetworkSendInterval(); + var parametersMessage = new QSBAnimationParametersMessage + { + netId = netId + }; + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, true); + parametersMessage.parameters = m_ParameterWriter.ToArray(); + if (hasAuthority && ClientScene.readyConnection != null) + { + ClientScene.readyConnection.Send(41, parametersMessage); + } + else + { + if (!isServer || localPlayerAuthority) + return; + NetworkServer.SendToReady(gameObject, 41, parametersMessage); + } + } - internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) - { - if (hasAuthority) - { - return; - } - if (msg.stateHash != 0) - { - m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); - } - ReadParameters(reader, false); - } + internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) + { + if (hasAuthority) + { + return; + } + if (msg.stateHash != 0) + { + m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); + } + ReadParameters(reader, false); + } - internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) - { - if (hasAuthority) - { - return; - } - ReadParameters(reader, true); - } + internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) + { + if (hasAuthority) + { + return; + } + ReadParameters(reader, true); + } - internal void HandleAnimTriggerMsg(int hash) - { - m_Animator.SetTrigger(hash); - } + internal void HandleAnimTriggerMsg(int hash) + { + m_Animator.SetTrigger(hash); + } - private void WriteParameters(NetworkWriter writer, bool autoSend) - { - for (int index = 0; index < m_Animator.parameters.Length; ++index) - { - if (!autoSend || GetParameterAutoSend(index)) - { - var parameter = m_Animator.parameters[index]; - switch (parameter.type) - { - case AnimatorControllerParameterType.Int: - writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); - break; - case AnimatorControllerParameterType.Float: - writer.Write(m_Animator.GetFloat(parameter.nameHash)); - break; - case AnimatorControllerParameterType.Bool: - writer.Write(m_Animator.GetBool(parameter.nameHash)); - break; - } - } - } - } + private void WriteParameters(NetworkWriter writer, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Float: + writer.Write(m_Animator.GetFloat(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Bool: + writer.Write(m_Animator.GetBool(parameter.nameHash)); + break; + } + } + } + } - private void ReadParameters(NetworkReader reader, bool autoSend) - { - for (int index = 0; index < m_Animator.parameters.Length; ++index) - { - if (!autoSend || GetParameterAutoSend(index)) - { - var parameter = m_Animator.parameters[index]; - if (reader.Length == reader.Position) - { - return; - } - switch (parameter.type) - { - case AnimatorControllerParameterType.Int: - var num = (int)reader.ReadPackedUInt32(); - m_Animator.SetInteger(parameter.nameHash, num); - break; - case AnimatorControllerParameterType.Float: - var single = reader.ReadSingle(); - m_Animator.SetFloat(parameter.nameHash, single); - break; - case AnimatorControllerParameterType.Bool: - var flag = reader.ReadBoolean(); - m_Animator.SetBool(parameter.nameHash, flag); - break; - } - } - } - } + private void ReadParameters(NetworkReader reader, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + if (reader.Length == reader.Position) + { + return; + } + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + var num = (int)reader.ReadPackedUInt32(); + m_Animator.SetInteger(parameter.nameHash, num); + break; + case AnimatorControllerParameterType.Float: + var single = reader.ReadSingle(); + m_Animator.SetFloat(parameter.nameHash, single); + break; + case AnimatorControllerParameterType.Bool: + var flag = reader.ReadBoolean(); + m_Animator.SetBool(parameter.nameHash, flag); + break; + } + } + } + } - public override bool OnSerialize(NetworkWriter writer, bool forceAll) - { - if (!forceAll) - { - return false; - } - if (m_Animator.IsInTransition(0)) - { - var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); - writer.Write(animatorStateInfo.fullPathHash); - writer.Write(animatorStateInfo.normalizedTime); - } - else - { - var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); - writer.Write(animatorStateInfo.fullPathHash); - writer.Write(animatorStateInfo.normalizedTime); - } - WriteParameters(writer, false); - return true; - } + public override bool OnSerialize(NetworkWriter writer, bool forceAll) + { + if (!forceAll) + { + return false; + } + if (m_Animator.IsInTransition(0)) + { + var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + else + { + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + WriteParameters(writer, false); + return true; + } - public override void OnDeserialize(NetworkReader reader, bool initialState) - { - if (!initialState) - { - return; - } - var stateNameHash = reader.ReadInt32(); - var normalizedTime = reader.ReadSingle(); - ReadParameters(reader, false); - m_Animator.Play(stateNameHash, 0, normalizedTime); - } + public override void OnDeserialize(NetworkReader reader, bool initialState) + { + if (!initialState) + { + return; + } + var stateNameHash = reader.ReadInt32(); + var normalizedTime = reader.ReadSingle(); + ReadParameters(reader, false); + m_Animator.Play(stateNameHash, 0, normalizedTime); + } - public void SetTrigger(string triggerName) - { - SetTrigger(Animator.StringToHash(triggerName)); - } + public void SetTrigger(string triggerName) + { + SetTrigger(Animator.StringToHash(triggerName)); + } - public void SetTrigger(int hash) - { - var animationTriggerMessage = new QSBAnimationTriggerMessage - { - netId = netId, - hash = hash - }; - if (hasAuthority && localPlayerAuthority) - { - if (NetworkClient.allClients.Count <= 0) - { - return; - } - var readyConnection = ClientScene.readyConnection; - if (readyConnection == null) - { - return; - } - readyConnection.Send(42, animationTriggerMessage); - } - else - { - if (!isServer || localPlayerAuthority) - { - return; - } - NetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); - } - } + public void SetTrigger(int hash) + { + var animationTriggerMessage = new QSBAnimationTriggerMessage + { + netId = netId, + hash = hash + }; + if (hasAuthority && localPlayerAuthority) + { + if (NetworkClient.allClients.Count <= 0) + { + return; + } + var readyConnection = ClientScene.readyConnection; + if (readyConnection == null) + { + return; + } + readyConnection.Send(42, animationTriggerMessage); + } + else + { + if (!isServer || localPlayerAuthority) + { + return; + } + NetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); + } + } - internal static void OnAnimationServerMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(AnimationMessage); - var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - var reader = new NetworkReader(AnimationMessage.parameters); - component?.HandleAnimMsg(AnimationMessage, reader); - NetworkServer.SendToReady(localObject, 40, AnimationMessage); - } + internal static void OnAnimationServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(AnimationMessage); + var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(AnimationMessage.parameters); + component?.HandleAnimMsg(AnimationMessage, reader); + NetworkServer.SendToReady(localObject, 40, AnimationMessage); + } - internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(ParametersMessage); - var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - var reader = new NetworkReader(ParametersMessage.parameters); - component?.HandleAnimParamsMsg(ParametersMessage, reader); - NetworkServer.SendToReady(localObject, 41, ParametersMessage); - } + internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(ParametersMessage); + var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(ParametersMessage.parameters); + component?.HandleAnimParamsMsg(ParametersMessage, reader); + NetworkServer.SendToReady(localObject, 41, ParametersMessage); + } - internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(TriggersMessage); - var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - component?.HandleAnimTriggerMsg(TriggersMessage.hash); - NetworkServer.SendToReady(localObject, 42, TriggersMessage); - } + internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(TriggersMessage); + var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + component?.HandleAnimTriggerMsg(TriggersMessage.hash); + NetworkServer.SendToReady(localObject, 42, TriggersMessage); + } - internal static void OnAnimationClientMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(AnimationMessage); - var localObject = ClientScene.FindLocalObject(AnimationMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - var reader = new NetworkReader(AnimationMessage.parameters); - component.HandleAnimMsg(AnimationMessage, reader); - } + internal static void OnAnimationClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(AnimationMessage); + var localObject = ClientScene.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + var reader = new NetworkReader(AnimationMessage.parameters); + component.HandleAnimMsg(AnimationMessage, reader); + } - internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(ParametersMessage); - var localObject = ClientScene.FindLocalObject(ParametersMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - var reader = new NetworkReader(ParametersMessage.parameters); - component.HandleAnimParamsMsg(ParametersMessage, reader); - } + internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(ParametersMessage); + var localObject = ClientScene.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + var reader = new NetworkReader(ParametersMessage.parameters); + component.HandleAnimParamsMsg(ParametersMessage, reader); + } - internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(TriggersMessage); - var localObject = ClientScene.FindLocalObject(TriggersMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - component.HandleAnimTriggerMsg(TriggersMessage.hash); - } - } + internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(TriggersMessage); + var localObject = ClientScene.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + component.HandleAnimTriggerMsg(TriggersMessage.hash); + } + } } \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index ebfc74d38..b2a25d83e 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -11,134 +11,134 @@ namespace QSB.ConversationSync { - public class ConversationManager : MonoBehaviour - { - public static ConversationManager Instance { get; private set; } - public AssetBundle ConversationAssetBundle { get; private set; } - private GameObject BoxPrefab; - public Dictionary BoxMappings = new Dictionary(); - - private void Start() - { - Instance = this; - - ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); - - BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); - var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); - if (font == null) - { - DebugLog.ToConsole("Error - Font is null!", MessageType.Error); - } - BoxPrefab.GetComponent().font = font; - BoxPrefab.GetComponent().color = Color.white; - } - - public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) - { - var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); - if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) - { - // No player talking to tree - return uint.MaxValue; - } - // .First() should be fine here as only one player should be talking to a character. - return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; - } - - public void SendPlayerOption(string text) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); - } - - public void SendCharacterDialogue(int id, string text) - { - if (id == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); - } - - public void CloseBoxPlayer() - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); - } - - public void CloseBoxCharacter(int id) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); - } - - public void SendConvState(int charId, bool state) - { - if (charId == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); - } - - public void DisplayPlayerConversationBox(uint playerId, string text) - { - if (playerId == QSBPlayerManager.LocalPlayerId) - { - DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); - return; - } - - var player = QSBPlayerManager.GetPlayer(playerId); - - // Destroy old box if it exists - var playerBox = player.CurrentDialogueBox; - if (playerBox != null) - { - Destroy(playerBox); - } - - QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); - } - - public void DisplayCharacterConversationBox(int index, string text) - { - if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) - { - DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); - return; - } - - // Remove old box if it exists - var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; - if (BoxMappings.ContainsKey(oldDialogueTree)) - { - Destroy(BoxMappings[oldDialogueTree]); - BoxMappings.Remove(oldDialogueTree); - } - - BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); - } - - private GameObject CreateBox(Transform parent, float vertOffset, string text) - { - var newBox = Instantiate(BoxPrefab); - newBox.SetActive(false); - newBox.transform.parent = parent; - newBox.transform.localPosition = new Vector3(0, vertOffset, 0); - newBox.transform.rotation = parent.rotation; - var lookAt = newBox.AddComponent(); - lookAt.SetValue("_useLookAt", false); - lookAt.SetValue("_localFacingVector", Vector3.back); - lookAt.SetValue("_localRotationAxis", Vector3.up); - newBox.GetComponent().text = text; - newBox.SetActive(true); - return newBox; - } - } + public class ConversationManager : MonoBehaviour + { + public static ConversationManager Instance { get; private set; } + public AssetBundle ConversationAssetBundle { get; private set; } + private GameObject BoxPrefab; + public Dictionary BoxMappings = new Dictionary(); + + private void Start() + { + Instance = this; + + ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); + + BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); + if (font == null) + { + DebugLog.ToConsole("Error - Font is null!", MessageType.Error); + } + BoxPrefab.GetComponent().font = font; + BoxPrefab.GetComponent().color = Color.white; + } + + public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) + { + var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); + if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) + { + // No player talking to tree + return uint.MaxValue; + } + // .First() should be fine here as only one player should be talking to a character. + return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + } + + public void SendPlayerOption(string text) + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); + } + + public void SendCharacterDialogue(int id, string text) + { + if (id == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + } + + public void CloseBoxPlayer() + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); + } + + public void CloseBoxCharacter(int id) + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + } + + public void SendConvState(int charId, bool state) + { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); + } + + public void DisplayPlayerConversationBox(uint playerId, string text) + { + if (playerId == QSBPlayerManager.LocalPlayerId) + { + DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); + return; + } + + var player = QSBPlayerManager.GetPlayer(playerId); + + // Destroy old box if it exists + var playerBox = player.CurrentDialogueBox; + if (playerBox != null) + { + Destroy(playerBox); + } + + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); + } + + public void DisplayCharacterConversationBox(int index, string text) + { + if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) + { + DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); + return; + } + + // Remove old box if it exists + var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; + if (BoxMappings.ContainsKey(oldDialogueTree)) + { + Destroy(BoxMappings[oldDialogueTree]); + BoxMappings.Remove(oldDialogueTree); + } + + BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); + } + + private GameObject CreateBox(Transform parent, float vertOffset, string text) + { + var newBox = Instantiate(BoxPrefab); + newBox.SetActive(false); + newBox.transform.parent = parent; + newBox.transform.localPosition = new Vector3(0, vertOffset, 0); + newBox.transform.rotation = parent.rotation; + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); + newBox.GetComponent().text = text; + newBox.SetActive(true); + return newBox; + } + } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 8b77d4441..a22917f14 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -7,108 +7,108 @@ namespace QSB.ConversationSync { - public class ConversationPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public class ConversationPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static void StartConversation(CharacterDialogueTree __instance) - { - var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); - if (index == -1) - { - DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); - } - QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; - ConversationManager.Instance.SendConvState(index, true); - } + public static void StartConversation(CharacterDialogueTree __instance) + { + var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); + if (index == -1) + { + DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); + } + QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; + ConversationManager.Instance.SendConvState(index, true); + } - public static bool EndConversation(CharacterDialogueTree __instance) - { - if (!__instance.enabled) - { - return false; - } - if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) - { - DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); - return false; - } - ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); - ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); - QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; - ConversationManager.Instance.CloseBoxPlayer(); - return true; - } + public static bool EndConversation(CharacterDialogueTree __instance) + { + if (!__instance.enabled) + { + return false; + } + if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) + { + DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); + return false; + } + ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); + ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); + QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; + ConversationManager.Instance.CloseBoxPlayer(); + return true; + } - public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) - { - if (optionIndex < 0) - { - // in a page where there is no selectable options - ConversationManager.Instance.CloseBoxPlayer(); - return true; - } + public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) + { + if (optionIndex < 0) + { + // in a page where there is no selectable options + ConversationManager.Instance.CloseBoxPlayer(); + return true; + } - var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); - ConversationManager.Instance.SendPlayerOption(selectedOption.Text); - return true; - } + var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); + ConversationManager.Instance.SendPlayerOption(selectedOption.Text); + return true; + } - public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) - { - var key = ____name + ____listPagesToDisplay[____currentPage]; - // Sending key so translation can be done on client side - should make different language-d clients compatible - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, - () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); - } + public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) + { + var key = ____name + ____listPagesToDisplay[____currentPage]; + // Sending key so translation can be done on client side - should make different language-d clients compatible + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, + () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); + } - public static bool OnAnimatorIK(float ___headTrackingWeight, - bool ___lookOnlyWhenTalking, - bool ____playerInHeadZone, - bool ____inConversation, - ref float ____currentLookWeight, - ref Vector3 ____currentLookTarget, - DampedSpring3D ___lookSpring, - Animator ____animator, - CharacterDialogueTree ____dialogueTree) - { - var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - Vector3 position; - if (playerId == uint.MaxValue) - { - // TODO : Find closest player and track to that camera. - position = Locator.GetActiveCamera().transform.position; - } - else - { - position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; - } - float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); - ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); - ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); - ____animator.SetLookAtPosition(____currentLookTarget); - ____animator.SetLookAtWeight(____currentLookWeight); - return false; - } + public static bool OnAnimatorIK(float ___headTrackingWeight, + bool ___lookOnlyWhenTalking, + bool ____playerInHeadZone, + bool ____inConversation, + ref float ____currentLookWeight, + ref Vector3 ____currentLookTarget, + DampedSpring3D ___lookSpring, + Animator ____animator, + CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + Vector3 position; + if (playerId == uint.MaxValue) + { + // TODO : Find closest player and track to that camera. + position = Locator.GetActiveCamera().transform.position; + } + else + { + position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; + } + float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); + ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); + ____animator.SetLookAtPosition(____currentLookTarget); + ____animator.SetLookAtWeight(____currentLookWeight); + return false; + } - public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) - { - var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - if (playerId == uint.MaxValue) - { - return true; - } - return false; - } + public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + if (playerId == uint.MaxValue) + { + return true; + } + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); - QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); - QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); - QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); + QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); + QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); + QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); + } + } } diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 5384727e1..660c77e59 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -1,10 +1,10 @@ namespace QSB.ConversationSync { - public enum ConversationType - { - Character, - Player, - CloseCharacter, - ClosePlayer - } + public enum ConversationType + { + Character, + Player, + CloseCharacter, + ClosePlayer + } } diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 119f0f2cd..502945556 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -4,47 +4,47 @@ namespace QSB.ConversationSync.Events { - public class ConversationEvent : QSBEvent - { - public override EventType Type => EventType.Conversation; + public class ConversationEvent : QSBEvent + { + public override EventType Type => EventType.Conversation; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); - private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); + private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); - private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage - { - AboutId = LocalPlayerId, - ObjectId = (int)id, - Type = type, - Message = message - }; + private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage + { + AboutId = LocalPlayerId, + ObjectId = (int)id, + Type = type, + Message = message + }; - public override void OnReceiveRemote(ConversationMessage message) - { - switch (message.Type) - { - case ConversationType.Character: - var translated = TextTranslation.Translate(message.Message).Trim(); - ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); - break; - case ConversationType.Player: - ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); - break; - case ConversationType.CloseCharacter: - if (message.ObjectId == -1) - { - break; - } - var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; - UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); - break; - case ConversationType.ClosePlayer: - UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); - break; - } - } - } + public override void OnReceiveRemote(ConversationMessage message) + { + switch (message.Type) + { + case ConversationType.Character: + var translated = TextTranslation.Translate(message.Message).Trim(); + ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); + break; + case ConversationType.Player: + ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); + break; + case ConversationType.CloseCharacter: + if (message.ObjectId == -1) + { + break; + } + var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; + UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); + break; + case ConversationType.ClosePlayer: + UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); + break; + } + } + } } diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 5bf1ea0c7..3064358f5 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -3,26 +3,26 @@ namespace QSB.ConversationSync.Events { - public class ConversationMessage : PlayerMessage - { - public ConversationType Type { get; set; } - public int ObjectId { get; set; } - public string Message { get; set; } + public class ConversationMessage : PlayerMessage + { + public ConversationType Type { get; set; } + public int ObjectId { get; set; } + public string Message { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ObjectId = reader.ReadInt32(); - Type = (ConversationType)reader.ReadInt32(); - Message = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + Type = (ConversationType)reader.ReadInt32(); + Message = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ObjectId); - writer.Write((int)Type); - writer.Write(Message); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + writer.Write((int)Type); + writer.Write(Message); + } + } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 5313451f1..0c98039c4 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -9,62 +9,62 @@ namespace QSB.ConversationSync.Events { - public class ConversationStartEndEvent : QSBEvent - { - public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; + public class ConversationStartEndEvent : QSBEvent + { + public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); - private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); + private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); - private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage - { - AboutId = LocalPlayerId, - CharacterId = charId, - PlayerId = playerId, - State = state - }; + private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage + { + AboutId = LocalPlayerId, + CharacterId = charId, + PlayerId = playerId, + State = state + }; - public override void OnReceiveRemote(ConversationStartEndMessage message) - { - if (message.CharacterId == -1) - { - DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); - return; - } - var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; - var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); + public override void OnReceiveRemote(ConversationStartEndMessage message) + { + if (message.CharacterId == -1) + { + DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); + return; + } + var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; + var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); - // Make character face player and talk - if (animController != default(CharacterAnimController)) - { - if (message.State) - { - // Start talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; - animController.SetValue("_inConversation", true); - animController.SetValue("_playerInHeadZone", true); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Talking"); - } - dialogueTree.GetComponent().DisableInteraction(); - } - else - { - // Stop talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; - animController.SetValue("_inConversation", false); - animController.SetValue("_playerInHeadZone", false); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Idle"); - } - dialogueTree.GetComponent().EnableInteraction(); - } - } - } - } + // Make character face player and talk + if (animController != default(CharacterAnimController)) + { + if (message.State) + { + // Start talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + animController.SetValue("_inConversation", true); + animController.SetValue("_playerInHeadZone", true); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Talking"); + } + dialogueTree.GetComponent().DisableInteraction(); + } + else + { + // Stop talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + animController.SetValue("_inConversation", false); + animController.SetValue("_playerInHeadZone", false); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Idle"); + } + dialogueTree.GetComponent().EnableInteraction(); + } + } + } + } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index f53657c10..2054ca48e 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -3,26 +3,26 @@ namespace QSB.ConversationSync.Events { - public class ConversationStartEndMessage : PlayerMessage - { - public int CharacterId { get; set; } - public uint PlayerId { get; set; } - public bool State { get; set; } + public class ConversationStartEndMessage : PlayerMessage + { + public int CharacterId { get; set; } + public uint PlayerId { get; set; } + public bool State { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - CharacterId = reader.ReadInt32(); - PlayerId = reader.ReadUInt32(); - State = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + CharacterId = reader.ReadInt32(); + PlayerId = reader.ReadUInt32(); + State = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(CharacterId); - writer.Write(PlayerId); - writer.Write(State); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(CharacterId); + writer.Write(PlayerId); + writer.Write(State); + } + } } diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index c395c9e00..d8df9943e 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -3,34 +3,34 @@ namespace QSB.DeathSync { - public class DeathPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class DeathPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - public static bool PreFinishDeathSequence(DeathType deathType) - { - if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) - { - // Allow real death - return true; - } + public static bool PreFinishDeathSequence(DeathType deathType) + { + if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) + { + // Allow real death + return true; + } - RespawnOnDeath.Instance.ResetShip(); - RespawnOnDeath.Instance.ResetPlayer(); + RespawnOnDeath.Instance.ResetShip(); + RespawnOnDeath.Instance.ResetPlayer(); - // Prevent original death method from running. - return false; - } + // Prevent original death method from running. + return false; + } - public static void BroadcastDeath(DeathType deathType) - { - GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); - } + public static void BroadcastDeath(DeathType deathType) + { + GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); - QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); + QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); + } + } } \ No newline at end of file diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 57cd35c1f..6aea56ba1 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -5,29 +5,29 @@ namespace QSB.DeathSync.Events { - public class PlayerDeathEvent : QSBEvent> - { - public override EventType Type => EventType.PlayerDeath; + public class PlayerDeathEvent : QSBEvent> + { + public override EventType Type => EventType.PlayerDeath; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); - private void Handler(DeathType type) => SendEvent(CreateMessage(type)); + private void Handler(DeathType type) => SendEvent(CreateMessage(type)); - private EnumMessage CreateMessage(DeathType type) => new EnumMessage - { - AboutId = LocalPlayerId, - Value = type - }; + private EnumMessage CreateMessage(DeathType type) => new EnumMessage + { + AboutId = LocalPlayerId, + Value = type + }; - public override void OnReceiveRemote(EnumMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - var deathMessage = Necronomicon.GetPhrase(message.Value); - DebugLog.ToAll(string.Format(deathMessage, playerName)); - } + public override void OnReceiveRemote(EnumMessage message) + { + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; + var deathMessage = Necronomicon.GetPhrase(message.Value); + DebugLog.ToAll(string.Format(deathMessage, playerName)); + } - public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); - } + public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); + } } diff --git a/QSB/DeathSync/Necronomicon.cs b/QSB/DeathSync/Necronomicon.cs index e9dfda79a..5aa9407e2 100644 --- a/QSB/DeathSync/Necronomicon.cs +++ b/QSB/DeathSync/Necronomicon.cs @@ -4,102 +4,102 @@ namespace QSB.DeathSync { - public static class Necronomicon - { + public static class Necronomicon + { - private static readonly Dictionary DeathDictionary = new Dictionary - { - { DeathType.Default, new[] - { - "{0} died" - } }, - { DeathType.Impact, new[] - { - "{0} forgot to use retro-rockets", - "{0} bonked into the ground too hard", - "{0} went splat" - } }, - { DeathType.Asphyxiation, new[] - { - "{0} forgot to breathe", - "{0} forgot how to breathe", - "{0} forgot to check their oxygen meter", - "{0} lacked oxygen", - "{0} didn't need air anyway" - } }, - { DeathType.Energy, new[] - { - "{0} was cooked", - "{0} failed the Hotshot achievement", - "{0} forgot to install an AC unit", - "{0} got too hot" - } }, - { DeathType.Supernova, new[] - { - "{0} ran out of time", - "{0} got vaporized", - "{0} lost track of time", - "{0} got front row seats to the supernova", - "{0} heard the End of Times music", - "{0} watched the sun go kaboom", - "{0} became cosmic marshmallow", - "{0} photosynthesized too much" - } }, - { DeathType.Digestion, new[] - { - "{0} was eaten", - "{0} found a fish", - "{0} encountered an evil creature", - "{0} followed the light, then was followed by it", - "{0} messed with the wrong species of fish" - } }, - { DeathType.BigBang, new[] - { - "{0} sacrificed themself for the universe", - "{0} knows the true meaning of sacrifice", - "{0} won at the cost of their life" - } }, - { DeathType.Crushed, new[] - { - "{0} went through the tunnel too slow", - "{0} didn't make it out in time", - "{0} was squished", - "{0} thought the Sunless City was safe", - "{0} was buried" - } }, - { DeathType.Meditation, new[] - { - "{0} took a deep breath and died", - "{0} fell asleep", - "{0} got killed by Gabbro's advice" - } }, - { DeathType.TimeLoop, new[] - { - "{0} ran out of time", - "{0} was caught by a statue", - "{0}'s memories were pilfered", - "{0}'s memories fell into a black hole", - "{0}'s universe was eaten by Grobletombus" - } }, - { DeathType.Lava, new[] - { - "{0} tried to swim in lava", - "{0} didn't know what the glowy orange liquid was", - "{0} slipped in lava", - "{0} became one with the glowing gooey rock" - } }, - { DeathType.BlackHole, new[] - { - "{0} should visit the Ash Twin Project again", - "{0} waited inside the Ash Twin Project", - "{0} chased their memories" - } } - }; + private static readonly Dictionary DeathDictionary = new Dictionary + { + { DeathType.Default, new[] + { + "{0} died" + } }, + { DeathType.Impact, new[] + { + "{0} forgot to use retro-rockets", + "{0} bonked into the ground too hard", + "{0} went splat" + } }, + { DeathType.Asphyxiation, new[] + { + "{0} forgot to breathe", + "{0} forgot how to breathe", + "{0} forgot to check their oxygen meter", + "{0} lacked oxygen", + "{0} didn't need air anyway" + } }, + { DeathType.Energy, new[] + { + "{0} was cooked", + "{0} failed the Hotshot achievement", + "{0} forgot to install an AC unit", + "{0} got too hot" + } }, + { DeathType.Supernova, new[] + { + "{0} ran out of time", + "{0} got vaporized", + "{0} lost track of time", + "{0} got front row seats to the supernova", + "{0} heard the End of Times music", + "{0} watched the sun go kaboom", + "{0} became cosmic marshmallow", + "{0} photosynthesized too much" + } }, + { DeathType.Digestion, new[] + { + "{0} was eaten", + "{0} found a fish", + "{0} encountered an evil creature", + "{0} followed the light, then was followed by it", + "{0} messed with the wrong species of fish" + } }, + { DeathType.BigBang, new[] + { + "{0} sacrificed themself for the universe", + "{0} knows the true meaning of sacrifice", + "{0} won at the cost of their life" + } }, + { DeathType.Crushed, new[] + { + "{0} went through the tunnel too slow", + "{0} didn't make it out in time", + "{0} was squished", + "{0} thought the Sunless City was safe", + "{0} was buried" + } }, + { DeathType.Meditation, new[] + { + "{0} took a deep breath and died", + "{0} fell asleep", + "{0} got killed by Gabbro's advice" + } }, + { DeathType.TimeLoop, new[] + { + "{0} ran out of time", + "{0} was caught by a statue", + "{0}'s memories were pilfered", + "{0}'s memories fell into a black hole", + "{0}'s universe was eaten by Grobletombus" + } }, + { DeathType.Lava, new[] + { + "{0} tried to swim in lava", + "{0} didn't know what the glowy orange liquid was", + "{0} slipped in lava", + "{0} became one with the glowing gooey rock" + } }, + { DeathType.BlackHole, new[] + { + "{0} should visit the Ash Twin Project again", + "{0} waited inside the Ash Twin Project", + "{0} chased their memories" + } } + }; - public static string GetPhrase(DeathType deathType) - { - return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); - } + public static string GetPhrase(DeathType deathType) + { + return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); + } - } + } } diff --git a/QSB/DeathSync/PreventShipDestruction.cs b/QSB/DeathSync/PreventShipDestruction.cs index 4ab33b415..01d190fcf 100644 --- a/QSB/DeathSync/PreventShipDestruction.cs +++ b/QSB/DeathSync/PreventShipDestruction.cs @@ -6,38 +6,38 @@ namespace QSB.DeathSync { - public class PreventShipDestruction : MonoBehaviour - { - private void Awake() - { - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + public class PreventShipDestruction : MonoBehaviour + { + private void Awake() + { + QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); + QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); - QSB.Helper.Events.Event += OnEvent; - } + QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); + QSB.Helper.Events.Event += OnEvent; + } - private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is ShipDamageController shipDamageController && - ev == OWML.Common.Events.AfterAwake) - { - shipDamageController.SetValue("_exploded", true); - } - } + private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is ShipDamageController shipDamageController && + ev == OWML.Common.Events.AfterAwake) + { + shipDamageController.SetValue("_exploded", true); + } + } - private static class Patch - { - public static IEnumerable ReturnNull(IEnumerable instructions) - { - return new List - { - new CodeInstruction(OpCodes.Ldnull), - new CodeInstruction(OpCodes.Ret) - }; - } - } - } + private static class Patch + { + public static IEnumerable ReturnNull(IEnumerable instructions) + { + return new List + { + new CodeInstruction(OpCodes.Ldnull), + new CodeInstruction(OpCodes.Ret) + }; + } + } + } } diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index 30f3de784..a142a7973 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -7,133 +7,133 @@ namespace QSB.DeathSync { - ///

          - /// Client-only-side component for managing respawning after death. - /// - public class RespawnOnDeath : MonoBehaviour - { - public static RespawnOnDeath Instance; - - public readonly DeathType[] AllowedDeathTypes = { - DeathType.BigBang, - DeathType.Supernova, - DeathType.TimeLoop - }; - - private SpawnPoint _shipSpawnPoint; - private SpawnPoint _playerSpawnPoint; - private OWRigidbody _shipBody; - private PlayerSpawner _playerSpawner; - private FluidDetector _fluidDetector; - private PlayerResources _playerResources; - private ShipComponent[] _shipComponents; - private HatchController _hatchController; - private ShipCockpitController _cockpitController; - private PlayerSpacesuit _spaceSuit; - - private void Awake() - { - Instance = this; - - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); - QSB.Helper.Events.Event += OnEvent; - } - - private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is PlayerResources && ev == OWML.Common.Events.AfterStart) - { - Init(); - } - } - - public void Init() - { - var playerTransform = Locator.GetPlayerTransform(); - _playerResources = playerTransform.GetComponent(); - _spaceSuit = playerTransform.GetComponentInChildren(true); - _playerSpawner = FindObjectOfType(); - _fluidDetector = Locator.GetPlayerCamera().GetComponentInChildren(); - - var shipTransform = Locator.GetShipTransform(); - if (shipTransform == null) - { - return; - } - _shipComponents = shipTransform.GetComponentsInChildren(); - _hatchController = shipTransform.GetComponentInChildren(); - _cockpitController = shipTransform.GetComponentInChildren(); - _shipBody = Locator.GetShipBody(); - _shipSpawnPoint = GetSpawnPoint(true); - - // Move debug spawn point to initial ship position. - _playerSpawnPoint = GetSpawnPoint(); - _shipSpawnPoint.transform.position = shipTransform.position; - _shipSpawnPoint.transform.rotation = shipTransform.rotation; - } - - public void ResetShip() - { - if (_shipBody == null) - { - return; - } - - // Reset ship position. - if (_shipSpawnPoint == null) - { - DebugLog.ToConsole("_shipSpawnPoint is null!", MessageType.Warning); - return; - } - _shipBody.SetVelocity(_shipSpawnPoint.GetPointVelocity()); - _shipBody.WarpToPositionRotation(_shipSpawnPoint.transform.position, _shipSpawnPoint.transform.rotation); - - // Reset ship damage. - if (Locator.GetShipTransform()) - { - foreach (var shipComponent in _shipComponents) - { - shipComponent.SetDamaged(false); - } - } - - Invoke(nameof(ExitShip), 0.01f); - } - - private void ExitShip() - { - _cockpitController.Invoke("ExitFlightConsole"); - _cockpitController.Invoke("CompleteExitFlightConsole"); - _hatchController.SetValue("_isPlayerInShip", false); - _hatchController.Invoke("OpenHatch"); - GlobalMessenger.FireEvent(EventNames.ExitShip); - } - - public void ResetPlayer() - { - // Reset player position. - var playerBody = Locator.GetPlayerBody(); - playerBody.WarpToPositionRotation(_playerSpawnPoint.transform.position, _playerSpawnPoint.transform.rotation); - playerBody.SetVelocity(_playerSpawnPoint.GetPointVelocity()); - _playerSpawnPoint.AddObjectToTriggerVolumes(Locator.GetPlayerDetector().gameObject); - _playerSpawnPoint.AddObjectToTriggerVolumes(_fluidDetector.gameObject); - _playerSpawnPoint.OnSpawnPlayer(); - - // Stop suffocation sound effect. - _playerResources.SetValue("_isSuffocating", false); - - // Reset player health and resources. - _playerResources.DebugRefillResources(); - - // Remove space suit. - _spaceSuit.RemoveSuit(true); - } - - private SpawnPoint GetSpawnPoint(bool isShip = false) - { - return _playerSpawner - .GetValue("_spawnList") - .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); - } - } + /// + /// Client-only-side component for managing respawning after death. + /// + public class RespawnOnDeath : MonoBehaviour + { + public static RespawnOnDeath Instance; + + public readonly DeathType[] AllowedDeathTypes = { + DeathType.BigBang, + DeathType.Supernova, + DeathType.TimeLoop + }; + + private SpawnPoint _shipSpawnPoint; + private SpawnPoint _playerSpawnPoint; + private OWRigidbody _shipBody; + private PlayerSpawner _playerSpawner; + private FluidDetector _fluidDetector; + private PlayerResources _playerResources; + private ShipComponent[] _shipComponents; + private HatchController _hatchController; + private ShipCockpitController _cockpitController; + private PlayerSpacesuit _spaceSuit; + + private void Awake() + { + Instance = this; + + QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); + QSB.Helper.Events.Event += OnEvent; + } + + private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is PlayerResources && ev == OWML.Common.Events.AfterStart) + { + Init(); + } + } + + public void Init() + { + var playerTransform = Locator.GetPlayerTransform(); + _playerResources = playerTransform.GetComponent(); + _spaceSuit = playerTransform.GetComponentInChildren(true); + _playerSpawner = FindObjectOfType(); + _fluidDetector = Locator.GetPlayerCamera().GetComponentInChildren(); + + var shipTransform = Locator.GetShipTransform(); + if (shipTransform == null) + { + return; + } + _shipComponents = shipTransform.GetComponentsInChildren(); + _hatchController = shipTransform.GetComponentInChildren(); + _cockpitController = shipTransform.GetComponentInChildren(); + _shipBody = Locator.GetShipBody(); + _shipSpawnPoint = GetSpawnPoint(true); + + // Move debug spawn point to initial ship position. + _playerSpawnPoint = GetSpawnPoint(); + _shipSpawnPoint.transform.position = shipTransform.position; + _shipSpawnPoint.transform.rotation = shipTransform.rotation; + } + + public void ResetShip() + { + if (_shipBody == null) + { + return; + } + + // Reset ship position. + if (_shipSpawnPoint == null) + { + DebugLog.ToConsole("_shipSpawnPoint is null!", MessageType.Warning); + return; + } + _shipBody.SetVelocity(_shipSpawnPoint.GetPointVelocity()); + _shipBody.WarpToPositionRotation(_shipSpawnPoint.transform.position, _shipSpawnPoint.transform.rotation); + + // Reset ship damage. + if (Locator.GetShipTransform()) + { + foreach (var shipComponent in _shipComponents) + { + shipComponent.SetDamaged(false); + } + } + + Invoke(nameof(ExitShip), 0.01f); + } + + private void ExitShip() + { + _cockpitController.Invoke("ExitFlightConsole"); + _cockpitController.Invoke("CompleteExitFlightConsole"); + _hatchController.SetValue("_isPlayerInShip", false); + _hatchController.Invoke("OpenHatch"); + GlobalMessenger.FireEvent(EventNames.ExitShip); + } + + public void ResetPlayer() + { + // Reset player position. + var playerBody = Locator.GetPlayerBody(); + playerBody.WarpToPositionRotation(_playerSpawnPoint.transform.position, _playerSpawnPoint.transform.rotation); + playerBody.SetVelocity(_playerSpawnPoint.GetPointVelocity()); + _playerSpawnPoint.AddObjectToTriggerVolumes(Locator.GetPlayerDetector().gameObject); + _playerSpawnPoint.AddObjectToTriggerVolumes(_fluidDetector.gameObject); + _playerSpawnPoint.OnSpawnPlayer(); + + // Stop suffocation sound effect. + _playerResources.SetValue("_isSuffocating", false); + + // Reset player health and resources. + _playerResources.DebugRefillResources(); + + // Remove space suit. + _spaceSuit.RemoveSuit(true); + } + + private SpawnPoint GetSpawnPoint(bool isShip = false) + { + return _playerSpawner + .GetValue("_spawnList") + .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); + } + } } diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index 377d01cd8..375a33cfe 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -5,34 +5,34 @@ namespace QSB.ElevatorSync { - public class ElevatorManager : MonoBehaviour - { - public static ElevatorManager Instance { get; private set; } + public class ElevatorManager : MonoBehaviour + { + public static ElevatorManager Instance { get; private set; } - private List _elevators; + private List _elevators; - private void Awake() - { - Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - _elevators = Resources.FindObjectsOfTypeAll().ToList(); - for (var id = 0; id < _elevators.Count; id++) - { - var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); - qsbElevator.Init(_elevators[id], id); - WorldRegistry.AddObject(qsbElevator); - } - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + _elevators = Resources.FindObjectsOfTypeAll().ToList(); + for (var id = 0; id < _elevators.Count; id++) + { + var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); + qsbElevator.Init(_elevators[id], id); + WorldRegistry.AddObject(qsbElevator); + } + } - public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); - } + public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); + } } diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 7c8012803..7b1e8c62a 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -3,20 +3,20 @@ namespace QSB.ElevatorSync { - public class ElevatorPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class ElevatorPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - public static void StartLift(Elevator __instance) - { - var isGoingUp = __instance.GetValue("_goingToTheEnd"); - var id = ElevatorManager.Instance.GetId(__instance); - GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); - } + public static void StartLift(Elevator __instance) + { + var isGoingUp = __instance.GetValue("_goingToTheEnd"); + var id = ElevatorManager.Instance.GetId(__instance); + GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); + } + } } diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 4a7060fc1..4489ea415 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -4,26 +4,26 @@ namespace QSB.ElevatorSync.Events { - public class ElevatorEvent : QSBEvent - { - public override EventType Type => EventType.Elevator; + public class ElevatorEvent : QSBEvent + { + public override EventType Type => EventType.Elevator; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); - private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); + private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); - private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage - { - State = isGoingUp, - ObjectId = id - }; + private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage + { + State = isGoingUp, + ObjectId = id + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var elevator = WorldRegistry.GetObject(message.ObjectId); - elevator?.RemoteCall(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var elevator = WorldRegistry.GetObject(message.ObjectId); + elevator?.RemoteCall(message.State); + } + } } diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index c04d023d6..8958e4b0f 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -4,54 +4,54 @@ namespace QSB.ElevatorSync { - public class QSBElevator : WorldObject - { - private Elevator _elevator; - private Vector3 _startLocalPos; - private Vector3 _endLocalPos; + public class QSBElevator : WorldObject + { + private Elevator _elevator; + private Vector3 _startLocalPos; + private Vector3 _endLocalPos; - private SingleInteractionVolume _interactVolume; - private OWAudioSource _owAudioSourceOneShot; - private OWAudioSource _owAudioSourceLP; + private SingleInteractionVolume _interactVolume; + private OWAudioSource _owAudioSourceOneShot; + private OWAudioSource _owAudioSourceLP; - public void Init(Elevator elevator, int id) - { - _elevator = elevator; - ObjectId = id; - QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); - } + public void Init(Elevator elevator, int id) + { + _elevator = elevator; + ObjectId = id; + QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); + } - private void InitValues() - { - _startLocalPos = _elevator.GetValue("_startLocalPos"); - _endLocalPos = _elevator.GetValue("_endLocalPos"); - _interactVolume = _elevator.GetValue("_interactVolume"); - _owAudioSourceOneShot = _elevator.GetValue("_owAudioSourceOneShot"); - _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); - } + private void InitValues() + { + _startLocalPos = _elevator.GetValue("_startLocalPos"); + _endLocalPos = _elevator.GetValue("_endLocalPos"); + _interactVolume = _elevator.GetValue("_interactVolume"); + _owAudioSourceOneShot = _elevator.GetValue("_owAudioSourceOneShot"); + _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); + } - public void RemoteCall(bool isGoingUp) - { - SetDirection(isGoingUp); - RemoteStartLift(); - } + public void RemoteCall(bool isGoingUp) + { + SetDirection(isGoingUp); + RemoteStartLift(); + } - private void SetDirection(bool isGoingUp) - { - var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; - _elevator.SetValue("_goingToTheEnd", isGoingUp); - _elevator.SetValue("_targetLocalPos", targetPos); - _interactVolume.transform.Rotate(0f, 180f, 0f); - } + private void SetDirection(bool isGoingUp) + { + var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; + _elevator.SetValue("_goingToTheEnd", isGoingUp); + _elevator.SetValue("_targetLocalPos", targetPos); + _interactVolume.transform.Rotate(0f, 180f, 0f); + } - private void RemoteStartLift() - { - _elevator.enabled = true; - _elevator.SetValue("_initLocalPos", _elevator.transform.localPosition); - _elevator.SetValue("_initLiftTime", Time.time); - _owAudioSourceOneShot.PlayOneShot(AudioType.TH_LiftActivate); - _owAudioSourceLP.FadeIn(0.5f); - _interactVolume.DisableInteraction(); - } - } + private void RemoteStartLift() + { + _elevator.enabled = true; + _elevator.SetValue("_initLocalPos", _elevator.transform.localPosition); + _elevator.SetValue("_initLiftTime", Time.time); + _owAudioSourceOneShot.PlayOneShot(AudioType.TH_LiftActivate); + _owAudioSourceLP.FadeIn(0.5f); + _interactVolume.DisableInteraction(); + } + } } diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index 9012f9a9c..a2cd8543e 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -1,40 +1,40 @@ namespace QSB.EventsCore { - public static class EventNames - { - public static string TurnOnFlashlight = "TurnOnFlashlight"; - public static string TurnOffFlashlight = "TurnOffFlashlight"; - public static string LaunchProbe = "LaunchProbe"; - public static string RetrieveProbe = "RetrieveProbe"; - public static string ProbeLauncherEquipped = "ProbeLauncherEquipped"; - public static string ProbeLauncherUnequipped = "ProbeLauncherUnequipped"; - public static string EquipSignalscope = "EquipSignalscope"; - public static string UnequipSignalscope = "UnequipSignalscope"; - public static string SuitUp = "SuitUp"; - public static string RemoveSuit = "RemoveSuit"; - public static string EquipTranslator = "EquipTranslator"; - public static string UnequipTranslator = "UnequipTranslator"; - public static string ExitShip = "ExitShip"; - public static string RestartTimeLoop = "RestartTimeLoop"; - public static string WakeUp = "WakeUp"; + public static class EventNames + { + public static string TurnOnFlashlight = "TurnOnFlashlight"; + public static string TurnOffFlashlight = "TurnOffFlashlight"; + public static string LaunchProbe = "LaunchProbe"; + public static string RetrieveProbe = "RetrieveProbe"; + public static string ProbeLauncherEquipped = "ProbeLauncherEquipped"; + public static string ProbeLauncherUnequipped = "ProbeLauncherUnequipped"; + public static string EquipSignalscope = "EquipSignalscope"; + public static string UnequipSignalscope = "UnequipSignalscope"; + public static string SuitUp = "SuitUp"; + public static string RemoveSuit = "RemoveSuit"; + public static string EquipTranslator = "EquipTranslator"; + public static string UnequipTranslator = "UnequipTranslator"; + public static string ExitShip = "ExitShip"; + public static string RestartTimeLoop = "RestartTimeLoop"; + public static string WakeUp = "WakeUp"; - public static string QSBPlayerDeath = "QSBPlayerDeath"; - public static string QSBPlayerJoin = "QSBPlayerJoin"; - public static string QSBPlayerLeave = "QSBPlayerLeave"; - public static string QSBPlayerReady = "QSBPlayerReady"; - public static string QSBSectorChange = "QSBSectorChange"; - public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; - public static string QSBServerTime = "QSBServerTime"; - public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; - public static string QSBOnProbeWarp = "QSBOnProbeWarp"; - public static string QSBStartLift = "QSBStartLift"; - public static string QSBGeyserState = "QSBGeyserState"; - public static string QSBCrouch = "QSBAnimTrigger"; - public static string QSBOrbSlot = "QSBOrbSlot"; - public static string QSBOrbUser = "QSBOrbUser"; - public static string QSBConversation = "QSBConversation"; - public static string QSBConversationStartEnd = "QSBConversationStartEnd"; - public static string QSBChangeAnimType = "QSBPlayInstrument"; - public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; - } + public static string QSBPlayerDeath = "QSBPlayerDeath"; + public static string QSBPlayerJoin = "QSBPlayerJoin"; + public static string QSBPlayerLeave = "QSBPlayerLeave"; + public static string QSBPlayerReady = "QSBPlayerReady"; + public static string QSBSectorChange = "QSBSectorChange"; + public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; + public static string QSBServerTime = "QSBServerTime"; + public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; + public static string QSBOnProbeWarp = "QSBOnProbeWarp"; + public static string QSBStartLift = "QSBStartLift"; + public static string QSBGeyserState = "QSBGeyserState"; + public static string QSBCrouch = "QSBAnimTrigger"; + public static string QSBOrbSlot = "QSBOrbSlot"; + public static string QSBOrbUser = "QSBOrbUser"; + public static string QSBConversation = "QSBConversation"; + public static string QSBConversationStartEnd = "QSBConversationStartEnd"; + public static string QSBChangeAnimType = "QSBPlayInstrument"; + public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; + } } diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index 660f1e481..b082285cd 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -1,29 +1,29 @@ namespace QSB.EventsCore { - public enum EventType - { - Sector, - ServerTime, - AnimTrigger, - PlayerState, - PlayerStatesRequest, - FlashlightActiveChange, - SignalscopeActiveChange, - TranslatorActiveChange, - ProbeLauncherActiveChange, - SuitActiveChange, - PlayerJoin, - PlayerLeave, - PlayerDeath, - PlayerSectorChange, - PlayerReady, - ProbeActiveChange, - Elevator, - Geyser, - OrbSlot, - OrbUser, - Conversation, - ConversationStartEnd, - PlayInstrument - } + public enum EventType + { + Sector, + ServerTime, + AnimTrigger, + PlayerState, + PlayerStatesRequest, + FlashlightActiveChange, + SignalscopeActiveChange, + TranslatorActiveChange, + ProbeLauncherActiveChange, + SuitActiveChange, + PlayerJoin, + PlayerLeave, + PlayerDeath, + PlayerSectorChange, + PlayerReady, + ProbeActiveChange, + Elevator, + Geyser, + OrbSlot, + OrbUser, + Conversation, + ConversationStartEnd, + PlayInstrument + } } diff --git a/QSB/EventsCore/IQSBEvent.cs b/QSB/EventsCore/IQSBEvent.cs index 438a7d31f..4b8b8dc3d 100644 --- a/QSB/EventsCore/IQSBEvent.cs +++ b/QSB/EventsCore/IQSBEvent.cs @@ -1,8 +1,8 @@ namespace QSB.EventsCore { - public interface IQSBEvent - { - void SetupListener(); - void CloseListener(); - } + public interface IQSBEvent + { + void SetupListener(); + void CloseListener(); + } } diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 76b5ed6c4..6b94b0ffc 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -5,64 +5,64 @@ namespace QSB.EventsCore { - public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() - { - public abstract EventType Type { get; } - public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; - private readonly MessageHandler _eventHandler; + public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() + { + public abstract EventType Type { get; } + public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; + private readonly MessageHandler _eventHandler; - protected QSBEvent() - { - _eventHandler = new MessageHandler(Type); - _eventHandler.OnClientReceiveMessage += OnClientReceive; - _eventHandler.OnServerReceiveMessage += OnServerReceive; - } + protected QSBEvent() + { + _eventHandler = new MessageHandler(Type); + _eventHandler.OnClientReceiveMessage += OnClientReceive; + _eventHandler.OnServerReceiveMessage += OnServerReceive; + } - public abstract void SetupListener(); + public abstract void SetupListener(); - public abstract void CloseListener(); + public abstract void CloseListener(); - public virtual void OnReceiveRemote(T message) - { - } + public virtual void OnReceiveRemote(T message) + { + } - public virtual void OnReceiveLocal(T message) - { - } + public virtual void OnReceiveLocal(T message) + { + } - public virtual void OnServerReceive(T message) - { - _eventHandler.SendToAll(message); - } + public virtual void OnServerReceive(T message) + { + _eventHandler.SendToAll(message); + } - public void SendEvent(T message) - { - message.FromId = QSBPlayerManager.LocalPlayerId; - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); - } + public void SendEvent(T message) + { + message.FromId = QSBPlayerManager.LocalPlayerId; + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); + } - private void Send(T message) - { - if (NetworkServer.active) - { - _eventHandler.SendToAll(message); - } - else - { - _eventHandler.SendToServer(message); - } - } + private void Send(T message) + { + if (NetworkServer.active) + { + _eventHandler.SendToAll(message); + } + else + { + _eventHandler.SendToServer(message); + } + } - private void OnClientReceive(T message) - { - if (message.FromId == QSBPlayerManager.LocalPlayerId || - QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) - { - OnReceiveLocal(message); - return; - } + private void OnClientReceive(T message) + { + if (message.FromId == QSBPlayerManager.LocalPlayerId || + QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) + { + OnReceiveLocal(message); + return; + } - OnReceiveRemote(message); - } - } + OnReceiveRemote(message); + } + } } diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 0f20259be..0dafd0d70 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -14,54 +14,54 @@ namespace QSB.EventsCore { - public static class QSBEventManager - { - public static bool Ready { get; private set; } + public static class QSBEventManager + { + public static bool Ready { get; private set; } - private static List _eventList = new List(); + private static List _eventList = new List(); - public static void Init() - { - _eventList = new List - { - new PlayerReadyEvent(), - new PlayerJoinEvent(), - new PlayerSuitEvent(), - new PlayerFlashlightEvent(), - new PlayerSignalscopeEvent(), - new PlayerTranslatorEvent(), - new PlayerProbeLauncherEvent(), - new PlayerProbeEvent(), - new PlayerSectorEvent(), - new PlayerLeaveEvent(), - new PlayerDeathEvent(), - new PlayerStatesRequestEvent(), - new ElevatorEvent(), - new GeyserEvent(), - new ServerTimeEvent(), - new CrouchEvent(), - new OrbSlotEvent(), - new OrbUserEvent(), - new ConversationEvent(), - new ConversationStartEndEvent(), - new ChangeAnimTypeEvent(), - new ServerSendPlayerStatesEvent() - }; + public static void Init() + { + _eventList = new List + { + new PlayerReadyEvent(), + new PlayerJoinEvent(), + new PlayerSuitEvent(), + new PlayerFlashlightEvent(), + new PlayerSignalscopeEvent(), + new PlayerTranslatorEvent(), + new PlayerProbeLauncherEvent(), + new PlayerProbeEvent(), + new PlayerSectorEvent(), + new PlayerLeaveEvent(), + new PlayerDeathEvent(), + new PlayerStatesRequestEvent(), + new ElevatorEvent(), + new GeyserEvent(), + new ServerTimeEvent(), + new CrouchEvent(), + new OrbSlotEvent(), + new OrbUserEvent(), + new ConversationEvent(), + new ConversationStartEndEvent(), + new ChangeAnimTypeEvent(), + new ServerSendPlayerStatesEvent() + }; - _eventList.ForEach(ev => ev.SetupListener()); + _eventList.ForEach(ev => ev.SetupListener()); - Ready = true; + Ready = true; - DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); - } + DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); + } - public static void Reset() - { - Ready = false; + public static void Reset() + { + Ready = false; - _eventList.ForEach(ev => ev.CloseListener()); + _eventList.ForEach(ev => ev.CloseListener()); - _eventList = new List(); - } - } + _eventList = new List(); + } + } } diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 8cd7a7bd7..0ac1134be 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -4,33 +4,33 @@ namespace QSB.GeyserSync.Events { - public class GeyserEvent : QSBEvent - { - public override EventType Type => EventType.Geyser; + public class GeyserEvent : QSBEvent + { + public override EventType Type => EventType.Geyser; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); + } - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id, - State = state - }; + private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + State = state + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var geyser = WorldRegistry.GetObject(message.ObjectId); - geyser?.SetState(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var geyser = WorldRegistry.GetObject(message.ObjectId); + geyser?.SetState(message.State); + } + } } diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index 45f3d399f..b90c06a09 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -4,41 +4,41 @@ namespace QSB.GeyserSync { - public class GeyserManager : MonoBehaviour - { - public static GeyserManager Instance { get; private set; } + public class GeyserManager : MonoBehaviour + { + public static GeyserManager Instance { get; private set; } - private void Awake() - { - Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - QSBPatchManager.OnPatchType += OnPatchType; - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + QSBPatchManager.OnPatchType += OnPatchType; + } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - QSBPatchManager.OnPatchType -= OnPatchType; - } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + QSBPatchManager.OnPatchType -= OnPatchType; + } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - var geyserControllers = Resources.FindObjectsOfTypeAll(); - for (var id = 0; id < geyserControllers.Length; id++) - { - var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); - qsbGeyser.Init(geyserControllers[id], id); - WorldRegistry.AddObject(qsbGeyser); - } - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + var geyserControllers = Resources.FindObjectsOfTypeAll(); + for (var id = 0; id < geyserControllers.Length; id++) + { + var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); + qsbGeyser.Init(geyserControllers[id], id); + WorldRegistry.AddObject(qsbGeyser); + } + } - public void OnPatchType(QSBPatchTypes type) - { - if (type != QSBPatchTypes.OnNonServerClientConnect) - { - return; - } - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); - } - } + public void OnPatchType(QSBPatchTypes type) + { + if (type != QSBPatchTypes.OnNonServerClientConnect) + { + return; + } + QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + } + } } \ No newline at end of file diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index bd8a0ddcf..cbadaae6e 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -4,37 +4,37 @@ namespace QSB.GeyserSync { - public class QSBGeyser : WorldObject - { - private GeyserController _geyserController; + public class QSBGeyser : WorldObject + { + private GeyserController _geyserController; - public void Init(GeyserController geyserController, int id) - { - ObjectId = id; - _geyserController = geyserController; + public void Init(GeyserController geyserController, int id) + { + ObjectId = id; + _geyserController = geyserController; - geyserController.OnGeyserActivateEvent += () => HandleEvent(true); - geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false); - } + geyserController.OnGeyserActivateEvent += () => HandleEvent(true); + geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false); + } - private void HandleEvent(bool state) - { - if (NetworkServer.active) - { - GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); - } - } + private void HandleEvent(bool state) + { + if (NetworkServer.active) + { + GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); + } + } - public void SetState(bool state) - { - if (state) - { - _geyserController?.ActivateGeyser(); - } - else - { - _geyserController?.DeactivateGeyser(); - } - } - } + public void SetState(bool state) + { + if (state) + { + _geyserController?.ActivateGeyser(); + } + else + { + _geyserController?.DeactivateGeyser(); + } + } + } } diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index cba35394d..e41cd5a3e 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -8,121 +8,121 @@ namespace QSB.Instruments { - public class InstrumentsManager : PlayerSyncObject - { - private Transform rootObj; - private AnimationType _savedType; - private GameObject ChertDrum; + public class InstrumentsManager : PlayerSyncObject + { + private Transform rootObj; + private AnimationType _savedType; + private GameObject ChertDrum; - public void InitLocal(Transform root) - { - rootObj = root; - gameObject.AddComponent(); + public void InitLocal(Transform root) + { + rootObj = root; + gameObject.AddComponent(); - QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt += () => ReturnToPlayer(); + QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ExitTaunt += () => ReturnToPlayer(); - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - QSBPlayerManager.PlayerSyncObjects.Add(this); - } + QSBPlayerManager.PlayerSyncObjects.Add(this); + } - public void InitRemote(Transform root) - { - rootObj = root; - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + public void InitRemote(Transform root) + { + rootObj = root; + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - QSBPlayerManager.PlayerSyncObjects.Add(this); - } + QSBPlayerManager.PlayerSyncObjects.Add(this); + } - private void OnDestroy() - { - if (!isLocalPlayer) - { - return; - } - DebugLog.DebugWrite($"OnDestroy {PlayerId}"); - QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); - } + private void OnDestroy() + { + if (!isLocalPlayer) + { + return; + } + DebugLog.DebugWrite($"OnDestroy {PlayerId}"); + QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); + } - private void SetupInstruments() - { - var bundle = QSB.InstrumentAssetBundle; - ChertDrum = MakeChertDrum(bundle); - } + private void SetupInstruments() + { + var bundle = QSB.InstrumentAssetBundle; + ChertDrum = MakeChertDrum(bundle); + } - // EyeCompatibility : Need to find right object. - private GameObject MakeChertDrum(AssetBundle bundle) - { - var drum = new GameObject(); - var mf = drum.AddComponent(); - mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; - var mr = drum.AddComponent(); - mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; - drum.transform.parent = rootObj; - drum.transform.rotation = rootObj.rotation; - drum.transform.localPosition = Vector3.zero; - drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); - drum.SetActive(false); + // EyeCompatibility : Need to find right object. + private GameObject MakeChertDrum(AssetBundle bundle) + { + var drum = new GameObject(); + var mf = drum.AddComponent(); + mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; + var mr = drum.AddComponent(); + mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; + drum.transform.parent = rootObj; + drum.transform.rotation = rootObj.rotation; + drum.transform.localPosition = Vector3.zero; + drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); + drum.SetActive(false); - return drum; - } + return drum; + } - public void StartInstrument(AnimationType type) - { - if (!isLocalPlayer) - { - DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); - return; - } - if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) - { - return; - } - _savedType = Player.AnimationSync.CurrentType; - CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToType(type); - } + public void StartInstrument(AnimationType type) + { + if (!isLocalPlayer) + { + DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); + return; + } + if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) + { + return; + } + _savedType = Player.AnimationSync.CurrentType; + CameraManager.Instance.SwitchTo3rdPerson(); + SwitchToType(type); + } - public void ReturnToPlayer() - { - if (!Player.PlayingInstrument) - { - return; - } - CameraManager.Instance.SwitchTo1stPerson(); - SwitchToType(_savedType); - } + public void ReturnToPlayer() + { + if (!Player.PlayingInstrument) + { + return; + } + CameraManager.Instance.SwitchTo1stPerson(); + SwitchToType(_savedType); + } - public void SwitchToType(AnimationType type) - { - DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); - QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); - CheckInstrumentProps(type); - } + public void SwitchToType(AnimationType type) + { + DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); + QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); + CheckInstrumentProps(type); + } - public void CheckInstrumentProps(AnimationType type) - { - switch (type) - { - case AnimationType.Chert: - ChertDrum.SetActive(true); - break; - case AnimationType.PlayerSuited: - case AnimationType.PlayerUnsuited: - ChertDrum.SetActive(false); - break; - } - } - } + public void CheckInstrumentProps(AnimationType type) + { + switch (type) + { + case AnimationType.Chert: + ChertDrum.SetActive(true); + break; + case AnimationType.PlayerSuited: + case AnimationType.PlayerUnsuited: + ChertDrum.SetActive(false); + break; + } + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index 1dad97a0e..dccd8e236 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -2,78 +2,78 @@ namespace QSB.Instruments.QSBCamera { - class CameraController : MonoBehaviour - { - private float _degreesX; - private float _degreesY; - private Quaternion _rotationX; - private Quaternion _rotationY; + class CameraController : MonoBehaviour + { + private float _degreesX; + private float _degreesY; + private Quaternion _rotationX; + private Quaternion _rotationY; - // How far along the ray to move the camera. Avoids clipping into the walls. - private const float PercentToMove = 0.80f; - // Maximum distance for camera clipping - private const float RayLength = 5f; + // How far along the ray to move the camera. Avoids clipping into the walls. + private const float PercentToMove = 0.80f; + // Maximum distance for camera clipping + private const float RayLength = 5f; - public GameObject CameraObject; + public GameObject CameraObject; - void FixedUpdate() - { - if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) - { - return; - } - UpdatePosition(); - UpdateInput(); - UpdateRotation(); - } + void FixedUpdate() + { + if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) + { + return; + } + UpdatePosition(); + UpdateInput(); + UpdateRotation(); + } - private void UpdatePosition() - { - var origin = transform.position; - var localDirection = CameraObject.transform.localPosition.normalized; - Vector3 localTargetPoint; - if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) - { - // Raycast hit collider, get target from hitpoint. - localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; - } - else - { - // Raycast didn't hit collider, get target from camera direction - localTargetPoint = localDirection * RayLength * PercentToMove; - } - var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); - var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); - Vector3 movement; - if (targetDistance < currentDistance) - { - // Snap to target to avoid clipping - movement = localTargetPoint; - } - else - { - // Move camera out slowly - movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); - } - CameraObject.transform.localPosition = movement; - } + private void UpdatePosition() + { + var origin = transform.position; + var localDirection = CameraObject.transform.localPosition.normalized; + Vector3 localTargetPoint; + if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) + { + // Raycast hit collider, get target from hitpoint. + localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; + } + else + { + // Raycast didn't hit collider, get target from camera direction + localTargetPoint = localDirection * RayLength * PercentToMove; + } + var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); + var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); + Vector3 movement; + if (targetDistance < currentDistance) + { + // Snap to target to avoid clipping + movement = localTargetPoint; + } + else + { + // Move camera out slowly + movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); + } + CameraObject.transform.localPosition = movement; + } - private void UpdateInput() - { - var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); - _degreesX += input.x * 180f * Time.fixedDeltaTime; - _degreesY += input.y * 180f * Time.fixedDeltaTime; - } + private void UpdateInput() + { + var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); + _degreesX += input.x * 180f * Time.fixedDeltaTime; + _degreesY += input.y * 180f * Time.fixedDeltaTime; + } - private void UpdateRotation() - { - _degreesX %= 360f; - _degreesY %= 360f; - _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); - _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); - _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); - var localRotation = _rotationX * _rotationY * Quaternion.identity; - transform.localRotation = localRotation; - } - } + private void UpdateRotation() + { + _degreesX %= 360f; + _degreesY %= 360f; + _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); + _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); + _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); + var localRotation = _rotationX * _rotationY * Quaternion.identity; + transform.localRotation = localRotation; + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 41c956684..fc7478eab 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -5,110 +5,110 @@ namespace QSB.Instruments.QSBCamera { - public class CameraManager : MonoBehaviour - { - public static CameraManager Instance; - private GameObject CameraBase; - private GameObject CameraObj; - private Camera Camera; - private OWCamera OWCamera; - public bool IsSetUp { get; private set; } - public CameraMode Mode { get; private set; } + public class CameraManager : MonoBehaviour + { + public static CameraManager Instance; + private GameObject CameraBase; + private GameObject CameraObj; + private Camera Camera; + private OWCamera OWCamera; + public bool IsSetUp { get; private set; } + public CameraMode Mode { get; private set; } - public void Start() - { - Instance = this; - SetupCamera(); - } + public void Start() + { + Instance = this; + SetupCamera(); + } - private void SetupCamera() - { - CameraBase = new GameObject(); - CameraBase.SetActive(false); - CameraBase.AddComponent(); - CameraBase.transform.parent = Locator.GetPlayerTransform(); - CameraBase.transform.localPosition = Vector3.zero; - CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); + private void SetupCamera() + { + CameraBase = new GameObject(); + CameraBase.SetActive(false); + CameraBase.AddComponent(); + CameraBase.transform.parent = Locator.GetPlayerTransform(); + CameraBase.transform.localPosition = Vector3.zero; + CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); - CameraObj = new GameObject(); - CameraObj.transform.parent = CameraBase.transform; - CameraObj.transform.localPosition = new Vector3(0, 0, -5f); - CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); - Camera = CameraObj.AddComponent(); - Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); - Camera.clearFlags = CameraClearFlags.Color; - Camera.backgroundColor = Color.black; - Camera.fieldOfView = 90f; - Camera.nearClipPlane = 0.1f; - Camera.farClipPlane = 40000f; - Camera.depth = 0f; - Camera.enabled = false; - OWCamera = CameraObj.AddComponent(); - OWCamera.renderSkybox = true; + CameraObj = new GameObject(); + CameraObj.transform.parent = CameraBase.transform; + CameraObj.transform.localPosition = new Vector3(0, 0, -5f); + CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); + Camera = CameraObj.AddComponent(); + Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); + Camera.clearFlags = CameraClearFlags.Color; + Camera.backgroundColor = Color.black; + Camera.fieldOfView = 90f; + Camera.nearClipPlane = 0.1f; + Camera.farClipPlane = 40000f; + Camera.depth = 0f; + Camera.enabled = false; + OWCamera = CameraObj.AddComponent(); + OWCamera.renderSkybox = true; - CameraBase.AddComponent().CameraObject = CameraObj; + CameraBase.AddComponent().CameraObject = CameraObj; - var screenGrab = CameraObj.AddComponent(); - screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; + var screenGrab = CameraObj.AddComponent(); + screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; - var fogImage = CameraObj.AddComponent(); - fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; + var fogImage = CameraObj.AddComponent(); + fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; - CameraBase.SetActive(true); + CameraBase.SetActive(true); - IsSetUp = true; - } + IsSetUp = true; + } - public void SwitchTo3rdPerson() - { - if (!IsSetUp) - { - DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); - OWInput.ChangeInputMode(InputMode.None); - Mode = CameraMode.ThirdPerson; - return; - } - if (Mode == CameraMode.ThirdPerson) - { - DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); - return; - } - if (OWInput.GetInputMode() != InputMode.Character) - { - DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); - return; - } - OWInput.ChangeInputMode(InputMode.None); - GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); - Locator.GetPlayerCamera().mainCamera.enabled = false; - if (CameraObj.GetComponent() == null) - { - var postProcessing = CameraObj.AddComponent(); - postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; - } - Camera.enabled = true; - Mode = CameraMode.ThirdPerson; - } + public void SwitchTo3rdPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.None); + Mode = CameraMode.ThirdPerson; + return; + } + if (Mode == CameraMode.ThirdPerson) + { + DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); + return; + } + if (OWInput.GetInputMode() != InputMode.Character) + { + DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.None); + GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); + Locator.GetPlayerCamera().mainCamera.enabled = false; + if (CameraObj.GetComponent() == null) + { + var postProcessing = CameraObj.AddComponent(); + postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; + } + Camera.enabled = true; + Mode = CameraMode.ThirdPerson; + } - public void SwitchTo1stPerson() - { - if (!IsSetUp) - { - DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); - OWInput.ChangeInputMode(InputMode.Character); - Mode = CameraMode.FirstPerson; - return; - } - if (Mode == CameraMode.FirstPerson) - { - DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); - return; - } - OWInput.ChangeInputMode(InputMode.Character); - GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); - Locator.GetActiveCamera().mainCamera.enabled = true; - Camera.enabled = false; - Mode = CameraMode.FirstPerson; - } - } + public void SwitchTo1stPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.Character); + Mode = CameraMode.FirstPerson; + return; + } + if (Mode == CameraMode.FirstPerson) + { + DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.Character); + GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); + Locator.GetActiveCamera().mainCamera.enabled = true; + Camera.enabled = false; + Mode = CameraMode.FirstPerson; + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs index 738ca214d..7102ec52b 100644 --- a/QSB/Instruments/QSBCamera/CameraMode.cs +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -1,8 +1,8 @@ namespace QSB.Instruments.QSBCamera { - public enum CameraMode - { - FirstPerson, - ThirdPerson - } + public enum CameraMode + { + FirstPerson, + ThirdPerson + } } diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index 6138b2db2..adb8d4bfb 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -3,20 +3,20 @@ namespace QSB.MessagesCore { - public class EnumMessage : PlayerMessage - { - public T Value; + public class EnumMessage : PlayerMessage + { + public T Value; - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Value = (T)(object)reader.ReadInt32(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Value = (T)(object)reader.ReadInt32(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write((int)(object)Value); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write((int)(object)Value); + } + } } diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/MessagesCore/FloatMessage.cs index b0ce45a0e..9cc74f21f 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -3,20 +3,20 @@ namespace QSB.MessagesCore { - public class FloatMessage : PlayerMessage - { - public float Value; + public class FloatMessage : PlayerMessage + { + public float Value; - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Value = reader.ReadSingle(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Value = reader.ReadSingle(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(Value); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(Value); + } + } } \ No newline at end of file diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 125b1087e..f694ba533 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -7,68 +7,68 @@ namespace QSB.Messaging { - // Extend this to create new message handlers. - public class MessageHandler where T : MessageBase, new() - { - public event Action OnClientReceiveMessage; - public event Action OnServerReceiveMessage; + // Extend this to create new message handlers. + public class MessageHandler where T : MessageBase, new() + { + public event Action OnClientReceiveMessage; + public event Action OnServerReceiveMessage; - private readonly EventType _eventType; + private readonly EventType _eventType; - public MessageHandler(EventType eventType) - { - _eventType = eventType + MsgType.Highest + 1; - if (QSBNetworkManager.Instance.IsReady) - { - Init(); - } - else - { - QSBNetworkManager.Instance.OnNetworkManagerReady += Init; - } - } + public MessageHandler(EventType eventType) + { + _eventType = eventType + MsgType.Highest + 1; + if (QSBNetworkManager.Instance.IsReady) + { + Init(); + } + else + { + QSBNetworkManager.Instance.OnNetworkManagerReady += Init; + } + } - private void Init() - { - var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); - if (NetworkServer.handlers.Keys.Contains((short)_eventType)) - { - DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); - NetworkServer.handlers.Remove((short)_eventType); - } - NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); - NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); - } + private void Init() + { + var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); + if (NetworkServer.handlers.Keys.Contains((short)_eventType)) + { + DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); + NetworkServer.handlers.Remove((short)_eventType); + } + NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); + NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); + } - public void SendToAll(T message) - { - if (!QSBNetworkManager.Instance.IsReady) - { - return; - } - NetworkServer.SendToAll((short)_eventType, message); - } + public void SendToAll(T message) + { + if (!QSBNetworkManager.Instance.IsReady) + { + return; + } + NetworkServer.SendToAll((short)_eventType, message); + } - public void SendToServer(T message) - { - if (!QSBNetworkManager.Instance.IsReady) - { - return; - } - NetworkManager.singleton.client.Send((short)_eventType, message); - } + public void SendToServer(T message) + { + if (!QSBNetworkManager.Instance.IsReady) + { + return; + } + NetworkManager.singleton.client.Send((short)_eventType, message); + } - private void OnClientReceiveMessageHandler(NetworkMessage netMsg) - { - var message = netMsg.ReadMessage(); - OnClientReceiveMessage?.Invoke(message); - } + private void OnClientReceiveMessageHandler(NetworkMessage netMsg) + { + var message = netMsg.ReadMessage(); + OnClientReceiveMessage?.Invoke(message); + } - private void OnServerReceiveMessageHandler(NetworkMessage netMsg) - { - var message = netMsg.ReadMessage(); - OnServerReceiveMessage?.Invoke(message); - } + private void OnServerReceiveMessageHandler(NetworkMessage netMsg) + { + var message = netMsg.ReadMessage(); + OnServerReceiveMessage?.Invoke(message); + } - } + } } diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 054465e30..2a9f73d84 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -2,21 +2,21 @@ namespace QSB.Messaging { - public class PlayerMessage : MessageBase - { - public uint FromId { get; set; } - public uint AboutId { get; set; } + public class PlayerMessage : MessageBase + { + public uint FromId { get; set; } + public uint AboutId { get; set; } - public override void Deserialize(NetworkReader reader) - { - FromId = reader.ReadUInt32(); - AboutId = reader.ReadUInt32(); - } + public override void Deserialize(NetworkReader reader) + { + FromId = reader.ReadUInt32(); + AboutId = reader.ReadUInt32(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(FromId); - writer.Write(AboutId); - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(FromId); + writer.Write(AboutId); + } + } } diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs index 328cafedc..8e2f02926 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/MessagesCore/ToggleMessage.cs @@ -2,20 +2,20 @@ namespace QSB.Messaging { - public class ToggleMessage : PlayerMessage - { - public bool ToggleValue { get; set; } + public class ToggleMessage : PlayerMessage + { + public bool ToggleValue { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ToggleValue = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ToggleValue = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ToggleValue); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ToggleValue); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 5ade3e1e5..11e4dedc8 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -4,27 +4,27 @@ namespace QSB.OrbSync.Events { - public class OrbSlotEvent : QSBEvent - { - public override EventType Type => EventType.OrbSlot; + public class OrbSlotEvent : QSBEvent + { + public override EventType Type => EventType.OrbSlot; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id, - State = state - }; + private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + State = state + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var orbSlot = WorldRegistry.GetObject(message.ObjectId); - orbSlot?.SetState(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var orbSlot = WorldRegistry.GetObject(message.ObjectId); + orbSlot?.SetState(message.State); + } + } } diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 11b648fa2..4f24d5e82 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -9,65 +9,65 @@ namespace QSB.OrbSync.Events { - public class OrbUserEvent : QSBEvent - { - public override EventType Type => EventType.OrbUser; + public class OrbUserEvent : QSBEvent + { + public override EventType Type => EventType.OrbUser; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); - private void Handler(int id) => SendEvent(CreateMessage(id)); + private void Handler(int id) => SendEvent(CreateMessage(id)); - private WorldObjectMessage CreateMessage(int id) => new WorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id - }; + private WorldObjectMessage CreateMessage(int id) => new WorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id + }; - public override void OnServerReceive(WorldObjectMessage message) - { - var fromPlayer = NetworkServer.connections - .First(x => x.playerControllers[0].gameObject.GetComponent().netId.Value == message.FromId); - if (WorldRegistry.OrbSyncList.Count == 0) - { - DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); - if (orb == null) - { - DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orbIdentity = orb.GetComponent(); - if (orbIdentity == null) - { - DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (orbIdentity.clientAuthorityOwner != null) - { - orbIdentity.RemoveClientAuthority(orbIdentity.clientAuthorityOwner); - } - orbIdentity.AssignClientAuthority(fromPlayer); - orb.enabled = true; - } + public override void OnServerReceive(WorldObjectMessage message) + { + var fromPlayer = NetworkServer.connections + .First(x => x.playerControllers[0].gameObject.GetComponent().netId.Value == message.FromId); + if (WorldRegistry.OrbSyncList.Count == 0) + { + DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orb = WorldRegistry.OrbSyncList + .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + if (orb == null) + { + DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orbIdentity = orb.GetComponent(); + if (orbIdentity == null) + { + DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (orbIdentity.clientAuthorityOwner != null) + { + orbIdentity.RemoveClientAuthority(orbIdentity.clientAuthorityOwner); + } + orbIdentity.AssignClientAuthority(fromPlayer); + orb.enabled = true; + } - public override void OnReceiveRemote(WorldObjectMessage message) - { - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); - orb.enabled = true; - } + public override void OnReceiveRemote(WorldObjectMessage message) + { + var orb = WorldRegistry.OrbSyncList + .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + orb.enabled = true; + } - public override void OnReceiveLocal(WorldObjectMessage message) - { - if (NetworkServer.active) - { - OnServerReceive(message); - } - } - } + public override void OnReceiveLocal(WorldObjectMessage message) + { + if (NetworkServer.active) + { + OnServerReceive(message); + } + } + } } diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 130c197bc..37b812337 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -7,51 +7,51 @@ namespace QSB.OrbSync { - public class OrbManager : MonoBehaviour - { - public static OrbManager Instance { get; private set; } - - private void Awake() - => Instance = this; - - private void BuildOrbSlots() - { - DebugLog.DebugWrite("Building QSBOrbSlots..."); - - var orbSlots = Resources.FindObjectsOfTypeAll(); - for (var id = 0; id < orbSlots.Length; id++) - { - var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); - qsbOrbSlot.Init(orbSlots[id], id); - } - - DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs.", MessageType.Success); - } - - public void BuildOrbs() - { - DebugLog.DebugWrite("Building orb syncs..."); - WorldRegistry.OldOrbList.Clear(); - - WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); - if (NetworkServer.active) - { - DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); - } - } - - public void QueueBuildSlots() - { - DebugLog.DebugWrite("Queueing build of QSBOrbSlots..."); - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); - } - - public void QueueBuildOrbs() - { - DebugLog.DebugWrite("Queueing build of NetworkOrbs..."); - QSB.Helper.Events.Unity.RunWhen(() => NetworkServer.active, BuildOrbs); - } - } + public class OrbManager : MonoBehaviour + { + public static OrbManager Instance { get; private set; } + + private void Awake() + => Instance = this; + + private void BuildOrbSlots() + { + DebugLog.DebugWrite("Building QSBOrbSlots..."); + + var orbSlots = Resources.FindObjectsOfTypeAll(); + for (var id = 0; id < orbSlots.Length; id++) + { + var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); + qsbOrbSlot.Init(orbSlots[id], id); + } + + DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs.", MessageType.Success); + } + + public void BuildOrbs() + { + DebugLog.DebugWrite("Building orb syncs..."); + WorldRegistry.OldOrbList.Clear(); + + WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); + if (NetworkServer.active) + { + DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); + WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + } + } + + public void QueueBuildSlots() + { + DebugLog.DebugWrite("Queueing build of QSBOrbSlots..."); + QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); + } + + public void QueueBuildOrbs() + { + DebugLog.DebugWrite("Queueing build of NetworkOrbs..."); + QSB.Helper.Events.Unity.RunWhen(() => NetworkServer.active, BuildOrbs); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 436dc6fdc..8fd21ceba 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -4,60 +4,60 @@ namespace QSB.OrbSync { - public class OrbPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public class OrbPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) - { - if (__result) - { - GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); - } - } + public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) + { + if (__result) + { + GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); + } + } - public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __instance, NomaiInterfaceOrb orb, - bool ____ignoreDraggedOrbs, float ____radius, float ____exitRadius, ref NomaiInterfaceOrb ____occupyingOrb) - { - if (____ignoreDraggedOrbs && orb.IsBeingDragged()) - { - __result = false; - return false; - } - var orbDistance = Vector3.Distance(orb.transform.position, __instance.transform.position); - var triggerRadius = orb.IsBeingDragged() ? ____exitRadius : ____radius; - if (____occupyingOrb == null && orbDistance < ____radius) - { - ____occupyingOrb = orb; - if (Time.timeSinceLevelLoad > 1f) - { - WorldRegistry.HandleSlotStateChange(__instance, orb, true); - WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); - } - __result = true; - return false; - } - if (____occupyingOrb == null || ____occupyingOrb != orb) - { - __result = false; - return false; - } - if (orbDistance > triggerRadius) - { - WorldRegistry.HandleSlotStateChange(__instance, orb, false); - ____occupyingOrb = null; - WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); - __result = false; - return false; - } - __result = true; - return false; - } + public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __instance, NomaiInterfaceOrb orb, + bool ____ignoreDraggedOrbs, float ____radius, float ____exitRadius, ref NomaiInterfaceOrb ____occupyingOrb) + { + if (____ignoreDraggedOrbs && orb.IsBeingDragged()) + { + __result = false; + return false; + } + var orbDistance = Vector3.Distance(orb.transform.position, __instance.transform.position); + var triggerRadius = orb.IsBeingDragged() ? ____exitRadius : ____radius; + if (____occupyingOrb == null && orbDistance < ____radius) + { + ____occupyingOrb = orb; + if (Time.timeSinceLevelLoad > 1f) + { + WorldRegistry.HandleSlotStateChange(__instance, orb, true); + WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); + } + __result = true; + return false; + } + if (____occupyingOrb == null || ____occupyingOrb != orb) + { + __result = false; + return false; + } + if (orbDistance > triggerRadius) + { + WorldRegistry.HandleSlotStateChange(__instance, orb, false); + ____occupyingOrb = null; + WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); + __result = false; + return false; + } + __result = true; + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); - QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); + QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); + } + } } diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index 9358557c3..ff3af77a8 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -3,36 +3,36 @@ namespace QSB.OrbSync { - public class QSBOrbSlot : WorldObject - { - public NomaiInterfaceSlot InterfaceSlot { get; private set; } + public class QSBOrbSlot : WorldObject + { + public NomaiInterfaceSlot InterfaceSlot { get; private set; } - private bool _initialized; + private bool _initialized; - public void Init(NomaiInterfaceSlot slot, int id) - { - ObjectId = id; - InterfaceSlot = slot; - _initialized = true; - WorldRegistry.AddObject(this); - } + public void Init(NomaiInterfaceSlot slot, int id) + { + ObjectId = id; + InterfaceSlot = slot; + _initialized = true; + WorldRegistry.AddObject(this); + } - public void HandleEvent(bool state) - { - if (QSB.HasWokenUp) - { - GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); - } - } + public void HandleEvent(bool state) + { + if (QSB.HasWokenUp) + { + GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); + } + } - public void SetState(bool state) - { - if (!_initialized) - { - return; - } - var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; - WorldRegistry.RaiseEvent(InterfaceSlot, ev); - } - } + public void SetState(bool state) + { + if (!_initialized) + { + return; + } + var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; + WorldRegistry.RaiseEvent(InterfaceSlot, ev); + } + } } diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index bafc9edbf..6bdeacd50 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -1,9 +1,9 @@ namespace QSB { - public abstract class QSBPatch - { - public abstract QSBPatchTypes Type { get; } + public abstract class QSBPatch + { + public abstract QSBPatchTypes Type { get; } - public abstract void DoPatches(); - } + public abstract void DoPatches(); + } } diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index f558f71c0..c12473b8e 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -12,38 +12,38 @@ namespace QSB.Patches { - public delegate void PatchEvent(QSBPatchTypes type); + public delegate void PatchEvent(QSBPatchTypes type); - public static class QSBPatchManager - { - public static List _patchList = new List(); + public static class QSBPatchManager + { + public static List _patchList = new List(); - public static event PatchEvent OnPatchType; + public static event PatchEvent OnPatchType; - public static void Init() - { - _patchList = new List - { - new ConversationPatches(), - new DeathPatches(), - new ElevatorPatches(), - new OrbPatches(), - new WakeUpPatches(), - new ProbePatches() - }; + public static void Init() + { + _patchList = new List + { + new ConversationPatches(), + new DeathPatches(), + new ElevatorPatches(), + new OrbPatches(), + new WakeUpPatches(), + new ProbePatches() + }; - DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); - } + DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); + } - public static void DoPatchType(QSBPatchTypes type) - { - OnPatchType?.Invoke(type); - DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); - foreach (var patch in _patchList.Where(x => x.Type == type)) - { - DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); - patch.DoPatches(); - } - } - } + public static void DoPatchType(QSBPatchTypes type) + { + OnPatchType?.Invoke(type); + DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); + foreach (var patch in _patchList.Where(x => x.Type == type)) + { + DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); + patch.DoPatches(); + } + } + } } diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 53ff573de..4b2e689ed 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -1,9 +1,9 @@ namespace QSB { - public enum QSBPatchTypes - { - OnModStart, - OnClientConnect, - OnNonServerClientConnect - } + public enum QSBPatchTypes + { + OnModStart, + OnClientConnect, + OnNonServerClientConnect + } } diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index 07bb919c9..ed1fa4542 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -4,36 +4,36 @@ namespace QSB.Player.Events { - public class PlayerJoinEvent : QSBEvent - { - public override EventType Type => EventType.PlayerJoin; + public class PlayerJoinEvent : QSBEvent + { + public override EventType Type => EventType.PlayerJoin; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); - private void Handler(string name) => SendEvent(CreateMessage(name)); + private void Handler(string name) => SendEvent(CreateMessage(name)); - private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage - { - AboutId = LocalPlayerId, - PlayerName = name - }; + private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage + { + AboutId = LocalPlayerId, + PlayerName = name + }; - public override void OnReceiveRemote(PlayerJoinMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.Name = message.PlayerName; - DebugLog.ToHud($"{player.Name} joined!"); - DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); - } + public override void OnReceiveRemote(PlayerJoinMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.Name = message.PlayerName; + DebugLog.ToHud($"{player.Name} joined!"); + DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); + } - public override void OnReceiveLocal(PlayerJoinMessage message) - { - var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); - player.Name = message.PlayerName; - var text = $"Connected to server as {player.Name}."; - DebugLog.ToAll(text, MessageType.Info); - } - } + public override void OnReceiveLocal(PlayerJoinMessage message) + { + var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); + player.Name = message.PlayerName; + var text = $"Connected to server as {player.Name}."; + DebugLog.ToAll(text, MessageType.Info); + } + } } diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 97a1efa39..d313e050e 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -3,20 +3,20 @@ namespace QSB.Player.Events { - public class PlayerJoinMessage : PlayerMessage - { - public string PlayerName { get; set; } + public class PlayerJoinMessage : PlayerMessage + { + public string PlayerName { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - PlayerName = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + PlayerName = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(PlayerName); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(PlayerName); + } + } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index bf7fca673..3141e6148 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -5,29 +5,29 @@ namespace QSB.Player.Events { - public class PlayerLeaveEvent : QSBEvent - { - public override EventType Type => EventType.PlayerLeave; + public class PlayerLeaveEvent : QSBEvent + { + public override EventType Type => EventType.PlayerLeave; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); - private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); + private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); - private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage - { - AboutId = playerId, - NetIds = netIds - }; + private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage + { + AboutId = playerId, + NetIds = netIds + }; - public override void OnReceiveRemote(PlayerLeaveMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); - QSBPlayerManager.RemovePlayer(message.AboutId); - message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); - } - } + public override void OnReceiveRemote(PlayerLeaveMessage message) + { + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; + DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); + QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(message.AboutId); + message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); + } + } } diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs index 216700437..d4c559aba 100644 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -5,20 +5,20 @@ namespace QSB.Player.Events { - public class PlayerLeaveMessage : PlayerMessage - { - public uint[] NetIds { get; set; } + public class PlayerLeaveMessage : PlayerMessage + { + public uint[] NetIds { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); + } + } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 796955ae0..0b30f8fe8 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -7,46 +7,46 @@ namespace QSB.Player.Events { - public class PlayerReadyEvent : QSBEvent - { - public override EventType Type => EventType.PlayerReady; + public class PlayerReadyEvent : QSBEvent + { + public override EventType Type => EventType.PlayerReady; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); - private void Handler(bool ready) => SendEvent(CreateMessage(ready)); + private void Handler(bool ready) => SendEvent(CreateMessage(ready)); - private ToggleMessage CreateMessage(bool ready) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = ready - }; + private ToggleMessage CreateMessage(bool ready) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = ready + }; - public override void OnServerReceive(ToggleMessage message) - { - DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); - if (message.FromId == QSBPlayerManager.LocalPlayerId) - { - return; - } - QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - } + public override void OnServerReceive(ToggleMessage message) + { + DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); + if (message.FromId == QSBPlayerManager.LocalPlayerId) + { + return; + } + QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + } - public override void OnReceiveRemote(ToggleMessage message) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - if (!QSBPlayerManager.PlayerExists(message.FromId)) - { - DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); - return; - } - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); - } - } - } + public override void OnReceiveRemote(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); + return; + } + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + } + } + } } diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 2903e7e95..7ed3bd9e1 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -7,41 +7,41 @@ namespace QSB.Player.Events { - public class PlayerSectorEvent : QSBEvent - { - public override EventType Type => EventType.PlayerSectorChange; + public class PlayerSectorEvent : QSBEvent + { + public override EventType Type => EventType.PlayerSectorChange; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); - private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); + private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); - private WorldObjectMessage CreateMessage(uint netId, QSBSector sector) => new WorldObjectMessage - { - AboutId = netId, - ObjectId = sector.ObjectId - }; + private WorldObjectMessage CreateMessage(uint netId, QSBSector sector) => new WorldObjectMessage + { + AboutId = netId, + ObjectId = sector.ObjectId + }; - public override void OnReceiveRemote(WorldObjectMessage message) - { - if (!QSBSceneManager.IsInUniverse) - { - return; - } - var sector = WorldRegistry.GetObject(message.ObjectId); + public override void OnReceiveRemote(WorldObjectMessage message) + { + if (!QSBSceneManager.IsInUniverse) + { + return; + } + var sector = WorldRegistry.GetObject(message.ObjectId); - if (sector == null) - { - DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); - return; - } + if (sector == null) + { + DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); + return; + } - var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); + var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); - QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, - () => transformSync?.SetReferenceSector(sector)); - } + QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, + () => transformSync?.SetReferenceSector(sector)); + } - } + } } diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index b881e4c1d..a1dcef64f 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -3,32 +3,32 @@ namespace QSB.Player.Events { - public class PlayerStateMessage : PlayerMessage - { - public string PlayerName { get; set; } - public bool PlayerReady { get; set; } - public State PlayerState { get; set; } - public Sector.Name SectorID { get; set; } - public string SectorName { get; set; } + public class PlayerStateMessage : PlayerMessage + { + public string PlayerName { get; set; } + public bool PlayerReady { get; set; } + public State PlayerState { get; set; } + public Sector.Name SectorID { get; set; } + public string SectorName { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - PlayerName = reader.ReadString(); - PlayerReady = reader.ReadBoolean(); - PlayerState = (State)reader.ReadInt32(); - SectorID = (Sector.Name)reader.ReadInt32(); - SectorName = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + PlayerName = reader.ReadString(); + PlayerReady = reader.ReadBoolean(); + PlayerState = (State)reader.ReadInt32(); + SectorID = (Sector.Name)reader.ReadInt32(); + SectorName = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(PlayerName); - writer.Write(PlayerReady); - writer.Write((int)PlayerState); - writer.Write((int)SectorID); - writer.Write(SectorName); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(PlayerName); + writer.Write(PlayerReady); + writer.Write((int)PlayerState); + writer.Write((int)SectorID); + writer.Write(SectorName); + } + } } diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 3afb3fa3a..302c0966e 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -6,30 +6,30 @@ namespace QSB.Player.Events { - public class PlayerStatesRequestEvent : QSBEvent - { - public override EventType Type => EventType.PlayerStatesRequest; + public class PlayerStatesRequestEvent : QSBEvent + { + public override EventType Type => EventType.PlayerStatesRequest; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); - private void Handler() => SendEvent(CreateMessage()); + private void Handler() => SendEvent(CreateMessage()); - private PlayerMessage CreateMessage() => new PlayerMessage - { - AboutId = LocalPlayerId - }; + private PlayerMessage CreateMessage() => new PlayerMessage + { + AboutId = LocalPlayerId + }; - public override void OnServerReceive(PlayerMessage message) - { - DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); - } - } - } + public override void OnServerReceive(PlayerMessage message) + { + DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + } + } + } } diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index ac9230bd5..53d0f082e 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -4,37 +4,37 @@ namespace QSB.Player.Events { - public class ServerSendPlayerStatesEvent : QSBEvent - { - public override EventType Type => EventType.PlayerState; + public class ServerSendPlayerStatesEvent : QSBEvent + { + public override EventType Type => EventType.PlayerState; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); - private void Handler() - { - foreach (var player in QSBPlayerManager.PlayerList) - { - DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); - SendEvent(CreateMessage(player)); - } - } + private void Handler() + { + foreach (var player in QSBPlayerManager.PlayerList) + { + DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); + SendEvent(CreateMessage(player)); + } + } - private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage - { - AboutId = player.PlayerId, - PlayerName = player.Name, - PlayerReady = player.IsReady, - PlayerState = player.State - }; + private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage + { + AboutId = player.PlayerId, + PlayerName = player.Name, + PlayerReady = player.IsReady, + PlayerState = player.State + }; - public override void OnReceiveRemote(PlayerStateMessage message) - { - DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen( - () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, - () => QSBPlayerManager.HandleFullStateMessage(message)); - } - } + public override void OnReceiveRemote(PlayerStateMessage message) + { + DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); + QSB.Helper.Events.Unity.RunWhen( + () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, + () => QSBPlayerManager.HandleFullStateMessage(message)); + } + } } diff --git a/QSB/Player/PlayerHUDMarker.cs b/QSB/Player/PlayerHUDMarker.cs index afc3a167b..61ea6f4f2 100644 --- a/QSB/Player/PlayerHUDMarker.cs +++ b/QSB/Player/PlayerHUDMarker.cs @@ -2,58 +2,58 @@ namespace QSB.Player { - public class PlayerHUDMarker : HUDDistanceMarker - { - private PlayerInfo _player; - private bool _isReady; - - protected override void InitCanvasMarker() - { - _markerRadius = 2f; - - _markerTarget = new GameObject().transform; - _markerTarget.parent = transform; - - _markerTarget.localPosition = Vector3.up * 2; - } - - public void Init(PlayerInfo player) - { - _player = player; - _player.HudMarker = this; - _isReady = true; - } - - protected override void RefreshOwnVisibility() - { - if (_canvasMarker != null) - { - _canvasMarker.SetVisibility(true); - } - } - - private void Update() - { - if (!_isReady || !_player.IsReady) - { - return; - } - _markerLabel = _player.Name.ToUpper(); - _isReady = false; - - base.InitCanvasMarker(); - } - - public void Remove() - { - // do N O T destroy the parent - it completely breaks the ENTIRE GAME - if (_canvasMarker?.gameObject != null) - { - _canvasMarker.DestroyMarker(); - } - Destroy(_markerTarget.gameObject); - Destroy(this); - } - - } + public class PlayerHUDMarker : HUDDistanceMarker + { + private PlayerInfo _player; + private bool _isReady; + + protected override void InitCanvasMarker() + { + _markerRadius = 2f; + + _markerTarget = new GameObject().transform; + _markerTarget.parent = transform; + + _markerTarget.localPosition = Vector3.up * 2; + } + + public void Init(PlayerInfo player) + { + _player = player; + _player.HudMarker = this; + _isReady = true; + } + + protected override void RefreshOwnVisibility() + { + if (_canvasMarker != null) + { + _canvasMarker.SetVisibility(true); + } + } + + private void Update() + { + if (!_isReady || !_player.IsReady) + { + return; + } + _markerLabel = _player.Name.ToUpper(); + _isReady = false; + + base.InitCanvasMarker(); + } + + public void Remove() + { + // do N O T destroy the parent - it completely breaks the ENTIRE GAME + if (_canvasMarker?.gameObject != null) + { + _canvasMarker.DestroyMarker(); + } + Destroy(_markerTarget.gameObject); + Destroy(this); + } + + } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 27ec6bc4c..dec375615 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -6,79 +6,79 @@ namespace QSB.Player { - public class PlayerInfo - { - public uint PlayerId { get; } - public string Name { get; set; } - public bool IsReady { get; set; } - public PlayerHUDMarker HudMarker { get; set; } - public State State { get; set; } + public class PlayerInfo + { + public uint PlayerId { get; } + public string Name { get; set; } + public bool IsReady { get; set; } + public PlayerHUDMarker HudMarker { get; set; } + public State State { get; set; } - // Body Objects - public GameObject Camera { get; set; } - public GameObject Body { get; set; } + // Body Objects + public GameObject Camera { get; set; } + public GameObject Body { get; set; } - // Tools - public GameObject ProbeBody { get; set; } - public QSBProbe Probe { get; set; } - public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); - public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); - public QSBTool Translator => GetToolByType(ToolType.Translator); - public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); + // Tools + public GameObject ProbeBody { get; set; } + public QSBProbe Probe { get; set; } + public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); + public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); + public QSBTool Translator => GetToolByType(ToolType.Translator); + public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); - // Conversation - public int CurrentDialogueID { get; set; } - public GameObject CurrentDialogueBox { get; set; } + // Conversation + public int CurrentDialogueID { get; set; } + public GameObject CurrentDialogueBox { get; set; } - // Animation - public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); - public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited - && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; + // Animation + public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); + public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited + && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; - public PlayerInfo(uint id) - { - DebugLog.DebugWrite($"Creating PlayerInfo with id {id}"); - PlayerId = id; - CurrentDialogueID = -1; - } + public PlayerInfo(uint id) + { + DebugLog.DebugWrite($"Creating PlayerInfo with id {id}"); + PlayerId = id; + CurrentDialogueID = -1; + } - public void UpdateState(State state, bool value) - { - var states = State; - if (value) - { - FlagsHelper.Set(ref states, state); - } - else - { - FlagsHelper.Unset(ref states, state); - } - State = states; - } + public void UpdateState(State state, bool value) + { + var states = State; + if (value) + { + FlagsHelper.Set(ref states, state); + } + else + { + FlagsHelper.Unset(ref states, state); + } + State = states; + } - public void UpdateStateObjects() - { - if (OWInput.GetInputMode() == InputMode.None) - { - return; - } - FlashLight?.UpdateState(FlagsHelper.IsSet(State, State.Flashlight)); - Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); - ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); - Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, - () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); - } + public void UpdateStateObjects() + { + if (OWInput.GetInputMode() == InputMode.None) + { + return; + } + FlashLight?.UpdateState(FlagsHelper.IsSet(State, State.Flashlight)); + Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); + ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); + Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, + () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); + } - public bool GetState(State state) - { - return FlagsHelper.IsSet(State, state); - } + public bool GetState(State state) + { + return FlagsHelper.IsSet(State, state); + } - private QSBTool GetToolByType(ToolType type) - { - return Camera?.GetComponentsInChildren() - .FirstOrDefault(x => x.Type == type); - } - } + private QSBTool GetToolByType(ToolType type) + { + return Camera?.GetComponentsInChildren() + .FirstOrDefault(x => x.Type == type); + } + } } \ No newline at end of file diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 923fbe857..6b6be8379 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -2,11 +2,11 @@ namespace QSB.Player { - public abstract class PlayerSyncObject : NetworkBehaviour - { - public uint AttachedNetId => GetComponent()?.netId.Value ?? uint.MaxValue; - public uint PlayerId => this.GetPlayerOfObject(); - public uint PreviousPlayerId { get; set; } - public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); - } + public abstract class PlayerSyncObject : NetworkBehaviour + { + public uint AttachedNetId => GetComponent()?.netId.Value ?? uint.MaxValue; + public uint PlayerId => this.GetPlayerOfObject(); + public uint PreviousPlayerId { get; set; } + public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); + } } diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 05e5a3edc..1dd2431b7 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -8,136 +8,136 @@ namespace QSB.Player { - public static class QSBPlayerManager - { - public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.netId.Value ?? uint.MaxValue; - public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); - public static List PlayerList { get; } = new List(); + public static class QSBPlayerManager + { + public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.netId.Value ?? uint.MaxValue; + public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); + public static List PlayerList { get; } = new List(); - public static List PlayerSyncObjects { get; } = new List(); + public static List PlayerSyncObjects { get; } = new List(); - public static PlayerInfo GetPlayer(uint id) - { - if (id == uint.MaxValue || id == 0U) - { - return default; - } - var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); - if (player != null) - { - return player; - } - DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); - player = new PlayerInfo(id); - PlayerList.Add(player); - return player; - } + public static PlayerInfo GetPlayer(uint id) + { + if (id == uint.MaxValue || id == 0U) + { + return default; + } + var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); + if (player != null) + { + return player; + } + DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); + player = new PlayerInfo(id); + PlayerList.Add(player); + return player; + } - public static void RemovePlayer(uint id) - { - DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); - PlayerList.Remove(GetPlayer(id)); - } + public static void RemovePlayer(uint id) + { + DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); + PlayerList.Remove(GetPlayer(id)); + } - public static void RemoveAllPlayers() - { - DebugLog.DebugWrite($"Removing all players.", MessageType.Info); - PlayerList.Clear(); - } + public static void RemoveAllPlayers() + { + DebugLog.DebugWrite($"Removing all players.", MessageType.Info); + PlayerList.Clear(); + } - public static bool PlayerExists(uint id) - => id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); + public static bool PlayerExists(uint id) + => id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); - public static void HandleFullStateMessage(PlayerStateMessage message) - { - var player = GetPlayer(message.AboutId); - player.Name = message.PlayerName; - player.IsReady = message.PlayerReady; - player.State = message.PlayerState; - if (LocalPlayer.IsReady) - { - player.UpdateStateObjects(); - } - } + public static void HandleFullStateMessage(PlayerStateMessage message) + { + var player = GetPlayer(message.AboutId); + player.Name = message.PlayerName; + player.IsReady = message.PlayerReady; + player.State = message.PlayerState; + if (LocalPlayer.IsReady) + { + player.UpdateStateObjects(); + } + } - public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - => PlayerSyncObjects.OfType().Where(x => x != null); + public static IEnumerable GetSyncObjects() where T : PlayerSyncObject + => PlayerSyncObjects.OfType().Where(x => x != null); - public static T GetSyncObject(uint id) where T : PlayerSyncObject - => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + public static T GetSyncObject(uint id) where T : PlayerSyncObject + => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); - public static bool IsBelongingToLocalPlayer(uint id) - { - return id == LocalPlayerId || - PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.isLocalPlayer); - } + public static bool IsBelongingToLocalPlayer(uint id) + { + return id == LocalPlayerId || + PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.isLocalPlayer); + } - public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) - { - if (PlayerList.Count == 0) - { - DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // Get all Player IDs - var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); - // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. - var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); - if (playerIds.Min() > syncObject.AttachedNetId) - { - DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) - // and the highest ID below the syncobject's id is the same as the highest player id. - if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) - { - // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. - if (syncObject.PreviousPlayerId != uint.MaxValue) - { - return syncObject.PreviousPlayerId; - } - // If the syncobject is a PlayerTransformSync, make a player. - if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) - { - return GetPlayer(syncObject.AttachedNetId).PlayerId; - } - DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - if (syncObject.PreviousPlayerId == uint.MaxValue) - { - DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - } - syncObject.PreviousPlayerId = lowerBound; - return lowerBound; - } + public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) + { + if (PlayerList.Count == 0) + { + DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + // Get all Player IDs + var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); + // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. + var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); + if (playerIds.Min() > syncObject.AttachedNetId) + { + DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) + // and the highest ID below the syncobject's id is the same as the highest player id. + if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) + { + // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. + if (syncObject.PreviousPlayerId != uint.MaxValue) + { + return syncObject.PreviousPlayerId; + } + // If the syncobject is a PlayerTransformSync, make a player. + if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) + { + return GetPlayer(syncObject.AttachedNetId).PlayerId; + } + DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + if (syncObject.PreviousPlayerId == uint.MaxValue) + { + DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + } + syncObject.PreviousPlayerId = lowerBound; + return lowerBound; + } - public static List GetPlayerNetIds(PlayerInfo player) - { - if (PlayerSyncObjects.Count == 0) - { - return default; - } - var count = 0; - var totalCount = PlayerSyncObjects.Count; - PlayerSyncObjects.RemoveAll(x => x == null); - PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); - if (PlayerSyncObjects.Count != totalCount) - { - DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); - } - foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) - { - if (item.PlayerId == player.PlayerId) - { - count++; - } - } - return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); - } - } + public static List GetPlayerNetIds(PlayerInfo player) + { + if (PlayerSyncObjects.Count == 0) + { + return default; + } + var count = 0; + var totalCount = PlayerSyncObjects.Count; + PlayerSyncObjects.RemoveAll(x => x == null); + PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); + if (PlayerSyncObjects.Count != totalCount) + { + DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); + } + foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) + { + if (item.PlayerId == player.PlayerId) + { + count++; + } + } + return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); + } + } } diff --git a/QSB/Player/State.cs b/QSB/Player/State.cs index d0217277f..49b666abb 100644 --- a/QSB/Player/State.cs +++ b/QSB/Player/State.cs @@ -2,16 +2,16 @@ namespace QSB.Player { - [Flags] - public enum State - { - None = 0, - Flashlight = 1, - Suit = 2, - ProbeLauncher = 4, - Signalscope = 8, - Translator = 16, - ProbeActive = 32 - //Increment these in binary to add more states - } + [Flags] + public enum State + { + None = 0, + Flashlight = 1, + Suit = 2, + ProbeLauncher = 4, + Signalscope = 8, + Translator = 16, + ProbeActive = 32 + //Increment these in binary to add more states + } } \ No newline at end of file diff --git a/QSB/SectorSync/QSBSector.cs b/QSB/SectorSync/QSBSector.cs index 8634d445c..1b39882e8 100644 --- a/QSB/SectorSync/QSBSector.cs +++ b/QSB/SectorSync/QSBSector.cs @@ -3,18 +3,18 @@ namespace QSB.SectorSync { - public class QSBSector : WorldObject - { - public Sector Sector { get; private set; } - public Sector.Name Type => Sector.GetName(); - public string Name => Sector.name; - public Transform Transform => Sector.transform; - public Vector3 Position => Transform.position; + public class QSBSector : WorldObject + { + public Sector Sector { get; private set; } + public Sector.Name Type => Sector.GetName(); + public string Name => Sector.name; + public Transform Transform => Sector.transform; + public Vector3 Position => Transform.position; - public void Init(Sector sector, int id) - { - Sector = sector; - ObjectId = id; - } - } + public void Init(Sector sector, int id) + { + Sector = sector; + ObjectId = id; + } + } } diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index a932e8aea..e09afb7a0 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -6,47 +6,47 @@ namespace QSB.SectorSync { - public class QSBSectorManager : MonoBehaviour - { - public static QSBSectorManager Instance { get; private set; } + public class QSBSectorManager : MonoBehaviour + { + public static QSBSectorManager Instance { get; private set; } - public bool IsReady { get; private set; } + public bool IsReady { get; private set; } - private readonly Sector.Name[] _sectorBlacklist = - { - Sector.Name.Ship - }; + private readonly Sector.Name[] _sectorBlacklist = + { + Sector.Name.Ship + }; - private void Awake() - { - Instance = this; - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); - DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); + DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); + } - private void OnDestroy() - => QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); + private void OnDestroy() + => QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); - public void RebuildSectors() - { - DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); - WorldRegistry.RemoveObjects(); - var sectors = Resources.FindObjectsOfTypeAll().ToList(); - for (var id = 0; id < sectors.Count; id++) - { - var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); - qsbSector.Init(sectors[id], id); - WorldRegistry.AddObject(qsbSector); - } - IsReady = WorldRegistry.GetObjects().Any(); - } + public void RebuildSectors() + { + DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); + WorldRegistry.RemoveObjects(); + var sectors = Resources.FindObjectsOfTypeAll().ToList(); + for (var id = 0; id < sectors.Count; id++) + { + var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); + qsbSector.Init(sectors[id], id); + WorldRegistry.AddObject(qsbSector); + } + IsReady = WorldRegistry.GetObjects().Any(); + } - public QSBSector GetClosestSector(Transform trans) - { - return WorldRegistry.GetObjects() - .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) - .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) - .First(); - } - } + public QSBSector GetClosestSector(Transform trans) + { + return WorldRegistry.GetObjects() + .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) + .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) + .First(); + } + } } diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index a5446b298..10e2ccd21 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -5,43 +5,43 @@ namespace QSB.SectorSync { - public class SectorSync : MonoBehaviour - { - private const float CheckInterval = 0.5f; - private float _checkTimer = CheckInterval; + public class SectorSync : MonoBehaviour + { + private const float CheckInterval = 0.5f; + private float _checkTimer = CheckInterval; - private void Update() - { - if (!QSBSectorManager.Instance.IsReady) - { - return; - } - _checkTimer += Time.unscaledDeltaTime; - if (_checkTimer < CheckInterval) - { - return; - } - QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); - _checkTimer = 0; - } + private void Update() + { + if (!QSBSectorManager.Instance.IsReady) + { + return; + } + _checkTimer += Time.unscaledDeltaTime; + if (_checkTimer < CheckInterval) + { + return; + } + QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); + _checkTimer = 0; + } - private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) - { - var syncedTransform = transformSync.SyncedTransform; - if (syncedTransform == null || syncedTransform.position == Vector3.zero) - { - return; - } - var closestSector = QSBSectorManager.Instance.GetClosestSector(syncedTransform); - if (closestSector == transformSync.ReferenceSector) - { - return; - } - transformSync.SetReferenceSector(closestSector); - SendSector(transformSync.netId.Value, closestSector); - } + private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) + { + var syncedTransform = transformSync.SyncedTransform; + if (syncedTransform == null || syncedTransform.position == Vector3.zero) + { + return; + } + var closestSector = QSBSectorManager.Instance.GetClosestSector(syncedTransform); + if (closestSector == transformSync.ReferenceSector) + { + return; + } + transformSync.SetReferenceSector(closestSector); + SendSector(transformSync.netId.Value, closestSector); + } - private void SendSector(uint id, QSBSector sector) - => GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); - } + private void SendSector(uint id, QSBSector sector) + => GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); + } } From 6a3ce0ce6da7ef6d49c7944f254f56f757c2bfd3 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 19:11:29 +0000 Subject: [PATCH 094/207] m o r e --- QSB/QSB.cs | 106 ++-- QSB/QSBInputManager.cs | 94 +-- QSB/QSBNetworkLobby.cs | 114 ++-- QSB/QSBNetworkManager.cs | 544 +++++++++--------- QSB/QSBSceneManager.cs | 48 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 30 +- QSB/TimeSync/Events/ServerTimeMessage.cs | 34 +- QSB/TimeSync/PreserveTimeScale.cs | 34 +- QSB/TimeSync/TimeSyncType.cs | 12 +- QSB/TimeSync/WakeUpPatches.cs | 32 +- QSB/TimeSync/WakeUpSync.cs | 480 ++++++++-------- QSB/Tools/Events/PlayerFlashlightEvent.cs | 62 +- QSB/Tools/Events/PlayerProbeEvent.cs | 62 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 62 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 62 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 62 +- QSB/Tools/PlayerToolsManager.cs | 370 ++++++------ QSB/Tools/ProbePatches.cs | 42 +- QSB/Tools/QSBFlashlight.cs | 142 ++--- QSB/Tools/QSBProbe.cs | 46 +- QSB/Tools/QSBTool.cs | 102 ++-- QSB/Tools/ToolType.cs | 12 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 178 +++--- QSB/TransformSync/PlayerCameraSync.cs | 56 +- QSB/TransformSync/PlayerProbeSync.cs | 176 +++--- QSB/TransformSync/PlayerTransformSync.cs | 80 +-- QSB/TransformSync/ShipTransformSync.cs | 108 ++-- QSB/TransformSync/TransformSync.cs | 244 ++++---- QSB/Utility/DebugActions.cs | 72 +-- QSB/Utility/DebugLog.cs | 80 +-- QSB/Utility/FlagsHelper.cs | 44 +- QSB/Utility/GOExtensions.cs | 48 +- QSB/Utility/ListExtensions.cs | 28 +- QSB/Utility/QuaternionHelper.cs | 56 +- .../Events/BoolWorldObjectMessage.cs | 28 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 28 +- QSB/WorldSync/WorldObject.cs | 8 +- QSB/WorldSync/WorldRegistry.cs | 94 +-- 38 files changed, 1940 insertions(+), 1940 deletions(-) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 09c19bdc8..57a29a639 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -14,67 +14,67 @@ namespace QSB { - public class QSB : ModBehaviour - { - public static IModBehaviour ModBehaviour { get; private set; } - public static IModHelper Helper { get; private set; } - public static string DefaultServerIP { get; private set; } - public static int Port { get; private set; } - public static bool DebugMode { get; private set; } - public static AssetBundle NetworkAssetBundle { get; private set; } - public static AssetBundle InstrumentAssetBundle { get; private set; } - public static bool HasWokenUp { get; set; } + public class QSB : ModBehaviour + { + public static IModBehaviour ModBehaviour { get; private set; } + public static IModHelper Helper { get; private set; } + public static string DefaultServerIP { get; private set; } + public static int Port { get; private set; } + public static bool DebugMode { get; private set; } + public static AssetBundle NetworkAssetBundle { get; private set; } + public static AssetBundle InstrumentAssetBundle { get; private set; } + public static bool HasWokenUp { get; set; } - private void Awake() - { - Application.runInBackground = true; + private void Awake() + { + Application.runInBackground = true; - var instance = TextTranslation.Get().GetValue("m_table"); - instance.theUITable[(int)UITextType.PleaseUseController] = - "Quantum Space Buddies is best experienced with friends..."; + var instance = TextTranslation.Get().GetValue("m_table"); + instance.theUITable[(int)UITextType.PleaseUseController] = + "Quantum Space Buddies is best experienced with friends..."; - ModBehaviour = this; - } + ModBehaviour = this; + } - private void Start() - { - Helper = ModHelper; - DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); + private void Start() + { + Helper = ModHelper; + DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); - NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); - InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); + NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); + InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); - QSBPatchManager.Init(); + QSBPatchManager.Init(); - QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); + QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); - // Turns out these are very finicky about what order they go. QSBNetworkManager seems to - // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being - // null (even though it isn't...) - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); + // Turns out these are very finicky about what order they go. QSBNetworkManager seems to + // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being + // null (even though it isn't...) + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); - // Stop players being able to pause - Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); - } + // Stop players being able to pause + Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); + } - public override void Configure(IModConfig config) - { - DefaultServerIP = config.GetSettingsValue("defaultServerIP"); - Port = config.GetSettingsValue("port"); - if (QSBNetworkManager.Instance != null) - { - QSBNetworkManager.Instance.networkPort = Port; - } - DebugMode = config.GetSettingsValue("debugMode"); - } - } + public override void Configure(IModConfig config) + { + DefaultServerIP = config.GetSettingsValue("defaultServerIP"); + Port = config.GetSettingsValue("port"); + if (QSBNetworkManager.Instance != null) + { + QSBNetworkManager.Instance.networkPort = Port; + } + DebugMode = config.GetSettingsValue("debugMode"); + } + } } diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index ffd10ac06..2b335f6dd 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -2,56 +2,56 @@ namespace QSB { - public delegate void InputEvent(); + public delegate void InputEvent(); - public class QSBInputManager : MonoBehaviour - { - public static QSBInputManager Instance; + public class QSBInputManager : MonoBehaviour + { + public static QSBInputManager Instance; - public static event InputEvent ChertTaunt; - public static event InputEvent EskerTaunt; - public static event InputEvent RiebeckTaunt; - public static event InputEvent GabbroTaunt; - public static event InputEvent FeldsparTaunt; - public static event InputEvent ExitTaunt; + public static event InputEvent ChertTaunt; + public static event InputEvent EskerTaunt; + public static event InputEvent RiebeckTaunt; + public static event InputEvent GabbroTaunt; + public static event InputEvent FeldsparTaunt; + public static event InputEvent ExitTaunt; - public void Awake() - { - Instance = this; - } + public void Awake() + { + Instance = this; + } - public void Update() - { - if (Input.GetKey(KeyCode.T)) - { - // Listed order is from sun to dark bramble - if (Input.GetKeyDown(KeyCode.Alpha1)) - { - ChertTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha2)) - { - EskerTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha5)) - { - RiebeckTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha4)) - { - GabbroTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha3)) - { - FeldsparTaunt?.Invoke(); - } - } + public void Update() + { + if (Input.GetKey(KeyCode.T)) + { + // Listed order is from sun to dark bramble + if (Input.GetKeyDown(KeyCode.Alpha1)) + { + ChertTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha2)) + { + EskerTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha5)) + { + RiebeckTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha4)) + { + GabbroTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha3)) + { + FeldsparTaunt?.Invoke(); + } + } - if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero - || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) - { - ExitTaunt?.Invoke(); - } - } - } + if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero + || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) + { + ExitTaunt?.Invoke(); + } + } + } } diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index a19582a4e..d7f10c0e6 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -6,65 +6,65 @@ namespace QSB { - public class QSBNetworkLobby : NetworkBehaviour - { - public bool CanEditName { get; set; } - public string PlayerName { get; private set; } + public class QSBNetworkLobby : NetworkBehaviour + { + public bool CanEditName { get; set; } + public string PlayerName { get; private set; } - private readonly string[] _defaultNames = { - "Arkose", - "Chert", - "Esker", - "Hal", - "Hornfels", - "Feldspar", - "Gabbro", - "Galena", - "Gneiss", - "Gossan", - "Marl", - "Mica", - "Moraine", - "Porphy", - "Riebeck", - "Rutile", - "Slate", - "Spinel", - "Tektite", - "Tephra", - "Tuff", - "Jinha" - }; + private readonly string[] _defaultNames = { + "Arkose", + "Chert", + "Esker", + "Hal", + "Hornfels", + "Feldspar", + "Gabbro", + "Galena", + "Gneiss", + "Gossan", + "Marl", + "Mica", + "Moraine", + "Porphy", + "Riebeck", + "Rutile", + "Slate", + "Spinel", + "Tektite", + "Tephra", + "Tuff", + "Jinha" + }; - private void Awake() - { - PlayerName = GetPlayerName(); - CanEditName = true; - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); - } + private void Awake() + { + PlayerName = GetPlayerName(); + CanEditName = true; + QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + } - private string GetPlayerName() - { - var profileManager = StandaloneProfileManager.SharedInstance; - profileManager.Initialize(); - var profile = profileManager.GetValue("_currentProfile"); - var profileName = profile?.profileName; - return !string.IsNullOrEmpty(profileName) - ? profileName - : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); - } + private string GetPlayerName() + { + var profileManager = StandaloneProfileManager.SharedInstance; + profileManager.Initialize(); + var profile = profileManager.GetValue("_currentProfile"); + var profileName = profile?.profileName; + return !string.IsNullOrEmpty(profileName) + ? profileName + : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); + } - private void OnGUI() - { - GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); - if (CanEditName) - { - PlayerName = GUI.TextField(new Rect(60, 10, 145, 20f), PlayerName); - } - else - { - GUI.Label(new Rect(60, 10, 145, 20f), PlayerName); - } - } - } + private void OnGUI() + { + GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); + if (CanEditName) + { + PlayerName = GUI.TextField(new Rect(60, 10, 145, 20f), PlayerName); + } + else + { + GUI.Label(new Rect(60, 10, 145, 20f), PlayerName); + } + } + } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 8b52c337d..19e1bad17 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -21,276 +21,276 @@ namespace QSB { - public class QSBNetworkManager : NetworkManager - { - private const int MaxConnections = 128; - private const int MaxBufferedPackets = 64; - - public static QSBNetworkManager Instance { get; private set; } - - public event Action OnNetworkManagerReady; - public bool IsReady { get; private set; } - - private QSBNetworkLobby _lobby; - private AssetBundle _assetBundle; - private GameObject _shipPrefab; - private GameObject _cameraPrefab; - private GameObject _probePrefab; - public GameObject OrbPrefab; - - private void Awake() - { - Instance = this; - - _lobby = gameObject.AddComponent(); - _assetBundle = QSB.NetworkAssetBundle; - - playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - - _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); - _shipPrefab.AddComponent(); - spawnPrefabs.Add(_shipPrefab); - - _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); - _cameraPrefab.AddComponent(); - spawnPrefabs.Add(_cameraPrefab); - - _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); - _probePrefab.AddComponent(); - spawnPrefabs.Add(_probePrefab); - - OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - OrbPrefab.AddComponent(); - spawnPrefabs.Add(OrbPrefab); - - ConfigureNetworkManager(); - QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; - } - - private void OnDestroy() - => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; - - private void OnSceneLoaded(OWScene scene) - { - DebugLog.DebugWrite("scene loaded"); - OrbManager.Instance.BuildOrbs(); - OrbManager.Instance.QueueBuildSlots(); - WorldRegistry.OldDialogueTrees.Clear(); - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - - private void ConfigureNetworkManager() - { - networkAddress = QSB.DefaultServerIP; - networkPort = QSB.Port; - maxConnections = MaxConnections; - customConfig = true; - connectionConfig.AddChannel(QosType.Reliable); - connectionConfig.AddChannel(QosType.Unreliable); - this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); - channels.Add(QosType.Reliable); - channels.Add(QosType.Unreliable); - - DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); - } - - public override void OnStartServer() - { - DebugLog.DebugWrite("~~ ON START SERVER ~~", MessageType.Info); - if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) - { - OrbManager.Instance.QueueBuildOrbs(); - } - if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) - { - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - - NetworkServer.UnregisterHandler(40); - NetworkServer.UnregisterHandler(41); - NetworkServer.UnregisterHandler(42); - NetworkServer.RegisterHandler(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); - NetworkServer.RegisterHandler(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); - NetworkServer.RegisterHandler(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); - } - - public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins - { - DebugLog.DebugWrite("[S] Add player"); - base.OnServerAddPlayer(connection, playerControllerId); - - // These have to be in a constant order (for now, until we get a better netId getting system...) - NetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); - NetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); - NetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); - } - - public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server - { - base.OnClientConnect(connection); - - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - - if (QSBSceneManager.IsInUniverse) - { - QSBSectorManager.Instance.RebuildSectors(); - } - OrbManager.Instance.QueueBuildSlots(); - - if (!NetworkServer.localClientActive) - { - QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); - singleton.client.UnregisterHandler(40); - singleton.client.UnregisterHandler(41); - singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); - } - singleton.client.UnregisterHandler(42); - singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); - - QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); - - _lobby.CanEditName = false; - - OnNetworkManagerReady?.Invoke(); - IsReady = true; - - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, - () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, - () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); - } - - public override void OnStopClient() // Called on the client when closing connection - { - DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); - Destroy(GetComponent()); - Destroy(GetComponent()); - Destroy(GetComponent()); - QSBEventManager.Reset(); - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - - foreach (var player in QSBPlayerManager.PlayerList) - { - QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); - } - QSBPlayerManager.RemoveAllPlayers(); - - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldDialogueTrees.Clear(); - - _lobby.CanEditName = true; - } - - public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects - { - var playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; - var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, playerId, netIds); - - foreach (var item in WorldRegistry.OrbSyncList) - { - var identity = item.GetComponent(); - if (identity.clientAuthorityOwner == connection) - { - identity.RemoveClientAuthority(connection); - } - } - - QSBPlayerManager.GetPlayer(playerId).HudMarker?.Remove(); - CleanupConnection(connection); - } - - public override void OnStopServer() - { - Destroy(GetComponent()); - Destroy(GetComponent()); - Destroy(GetComponent()); - QSBEventManager.Reset(); - DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - NetworkServer.connections.ToList().ForEach(CleanupConnection); - - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - - base.OnStopServer(); - } - - private void CleanupConnection(NetworkConnection connection) - { - uint playerId; - try - { - playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; - } - catch (Exception ex) - { - DebugLog.ToConsole("Error when getting playerId in CleanupConnection: " + ex.Message, MessageType.Error); - return; - } - if (!QSBPlayerManager.PlayerExists(playerId)) - { - return; - } - var playerName = QSBPlayerManager.GetPlayer(playerId).Name; - DebugLog.ToConsole($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.RemovePlayer(playerId); - - var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); - netIds.ForEach(CleanupNetworkBehaviour); - } - - public void CleanupNetworkBehaviour(uint netId) - { - DebugLog.DebugWrite($"Cleaning up netId {netId}"); - // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them - var networkBehaviours = FindObjectsOfType() - .Where(x => x != null && x.netId.Value == netId); - foreach (var networkBehaviour in networkBehaviours) - { - var transformSync = networkBehaviour.GetComponent(); - - if (transformSync != null) - { - DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); - if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.hasAuthority) - { - DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); - Destroy(transformSync.SyncedTransform.gameObject); - } - } - - var animationSync = networkBehaviour.GetComponent(); - - if (animationSync != null) - { - DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); - } - - if (!networkBehaviour.hasAuthority) - { - DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); - Destroy(networkBehaviour.gameObject); - } - } - } - } + public class QSBNetworkManager : NetworkManager + { + private const int MaxConnections = 128; + private const int MaxBufferedPackets = 64; + + public static QSBNetworkManager Instance { get; private set; } + + public event Action OnNetworkManagerReady; + public bool IsReady { get; private set; } + + private QSBNetworkLobby _lobby; + private AssetBundle _assetBundle; + private GameObject _shipPrefab; + private GameObject _cameraPrefab; + private GameObject _probePrefab; + public GameObject OrbPrefab; + + private void Awake() + { + Instance = this; + + _lobby = gameObject.AddComponent(); + _assetBundle = QSB.NetworkAssetBundle; + + playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + + _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); + _shipPrefab.AddComponent(); + spawnPrefabs.Add(_shipPrefab); + + _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); + _cameraPrefab.AddComponent(); + spawnPrefabs.Add(_cameraPrefab); + + _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); + _probePrefab.AddComponent(); + spawnPrefabs.Add(_probePrefab); + + OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); + OrbPrefab.AddComponent(); + spawnPrefabs.Add(OrbPrefab); + + ConfigureNetworkManager(); + QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; + } + + private void OnDestroy() + => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; + + private void OnSceneLoaded(OWScene scene) + { + DebugLog.DebugWrite("scene loaded"); + OrbManager.Instance.BuildOrbs(); + OrbManager.Instance.QueueBuildSlots(); + WorldRegistry.OldDialogueTrees.Clear(); + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } + + private void ConfigureNetworkManager() + { + networkAddress = QSB.DefaultServerIP; + networkPort = QSB.Port; + maxConnections = MaxConnections; + customConfig = true; + connectionConfig.AddChannel(QosType.Reliable); + connectionConfig.AddChannel(QosType.Unreliable); + this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); + channels.Add(QosType.Reliable); + channels.Add(QosType.Unreliable); + + DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); + } + + public override void OnStartServer() + { + DebugLog.DebugWrite("~~ ON START SERVER ~~", MessageType.Info); + if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) + { + OrbManager.Instance.QueueBuildOrbs(); + } + if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) + { + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } + + NetworkServer.UnregisterHandler(40); + NetworkServer.UnregisterHandler(41); + NetworkServer.UnregisterHandler(42); + NetworkServer.RegisterHandler(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + NetworkServer.RegisterHandler(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + NetworkServer.RegisterHandler(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); + } + + public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins + { + DebugLog.DebugWrite("[S] Add player"); + base.OnServerAddPlayer(connection, playerControllerId); + + // These have to be in a constant order (for now, until we get a better netId getting system...) + NetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); + NetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); + NetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); + } + + public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server + { + base.OnClientConnect(connection); + + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + + if (QSBSceneManager.IsInUniverse) + { + QSBSectorManager.Instance.RebuildSectors(); + } + OrbManager.Instance.QueueBuildSlots(); + + if (!NetworkServer.localClientActive) + { + QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); + singleton.client.UnregisterHandler(40); + singleton.client.UnregisterHandler(41); + singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + } + singleton.client.UnregisterHandler(42); + singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + + QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); + + _lobby.CanEditName = false; + + OnNetworkManagerReady?.Invoke(); + IsReady = true; + + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); + + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); + + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); + } + + public override void OnStopClient() // Called on the client when closing connection + { + DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); + Destroy(GetComponent()); + Destroy(GetComponent()); + Destroy(GetComponent()); + QSBEventManager.Reset(); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); + + foreach (var player in QSBPlayerManager.PlayerList) + { + QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); + } + QSBPlayerManager.RemoveAllPlayers(); + + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldDialogueTrees.Clear(); + + _lobby.CanEditName = true; + } + + public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects + { + var playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; + var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); + GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, playerId, netIds); + + foreach (var item in WorldRegistry.OrbSyncList) + { + var identity = item.GetComponent(); + if (identity.clientAuthorityOwner == connection) + { + identity.RemoveClientAuthority(connection); + } + } + + QSBPlayerManager.GetPlayer(playerId).HudMarker?.Remove(); + CleanupConnection(connection); + } + + public override void OnStopServer() + { + Destroy(GetComponent()); + Destroy(GetComponent()); + Destroy(GetComponent()); + QSBEventManager.Reset(); + DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); + NetworkServer.connections.ToList().ForEach(CleanupConnection); + + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + + base.OnStopServer(); + } + + private void CleanupConnection(NetworkConnection connection) + { + uint playerId; + try + { + playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; + } + catch (Exception ex) + { + DebugLog.ToConsole("Error when getting playerId in CleanupConnection: " + ex.Message, MessageType.Error); + return; + } + if (!QSBPlayerManager.PlayerExists(playerId)) + { + return; + } + var playerName = QSBPlayerManager.GetPlayer(playerId).Name; + DebugLog.ToConsole($"{playerName} disconnected.", MessageType.Info); + QSBPlayerManager.RemovePlayer(playerId); + + var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); + netIds.ForEach(CleanupNetworkBehaviour); + } + + public void CleanupNetworkBehaviour(uint netId) + { + DebugLog.DebugWrite($"Cleaning up netId {netId}"); + // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them + var networkBehaviours = FindObjectsOfType() + .Where(x => x != null && x.netId.Value == netId); + foreach (var networkBehaviour in networkBehaviours) + { + var transformSync = networkBehaviour.GetComponent(); + + if (transformSync != null) + { + DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); + QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); + if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.hasAuthority) + { + DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); + Destroy(transformSync.SyncedTransform.gameObject); + } + } + + var animationSync = networkBehaviour.GetComponent(); + + if (animationSync != null) + { + DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); + QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); + } + + if (!networkBehaviour.hasAuthority) + { + DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); + Destroy(networkBehaviour.gameObject); + } + } + } + } } \ No newline at end of file diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 365de1d12..bcebde3c1 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -4,33 +4,33 @@ namespace QSB { - public static class QSBSceneManager - { - public static OWScene CurrentScene => LoadManager.GetCurrentScene(); + public static class QSBSceneManager + { + public static OWScene CurrentScene => LoadManager.GetCurrentScene(); - public static bool IsInUniverse => InUniverse(CurrentScene); + public static bool IsInUniverse => InUniverse(CurrentScene); - public static event Action OnSceneLoaded; - public static event Action OnUniverseSceneLoaded; + public static event Action OnSceneLoaded; + public static event Action OnUniverseSceneLoaded; - static QSBSceneManager() - { - LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; - DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); - } + static QSBSceneManager() + { + LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; + DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); + } - private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) - { - DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); - var universe = InUniverse(newScene); - OnSceneLoaded?.Invoke(newScene, universe); - if (universe) - { - OnUniverseSceneLoaded?.Invoke(newScene); - } - } + private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) + { + DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); + var universe = InUniverse(newScene); + OnSceneLoaded?.Invoke(newScene, universe); + if (universe) + { + OnUniverseSceneLoaded?.Invoke(newScene); + } + } - private static bool InUniverse(OWScene scene) - => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) + => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; + } } diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index ecc7eaa8e..2c938ce10 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -2,24 +2,24 @@ namespace QSB.TimeSync.Events { - public class ServerTimeEvent : QSBEvent - { - public override EventType Type => EventType.ServerTime; + public class ServerTimeEvent : QSBEvent + { + public override EventType Type => EventType.ServerTime; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); - private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); + private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); - private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage - { - AboutId = LocalPlayerId, - ServerTime = time, - LoopCount = count - }; + private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage + { + AboutId = LocalPlayerId, + ServerTime = time, + LoopCount = count + }; - public override void OnReceiveRemote(ServerTimeMessage message) - => WakeUpSync.Instance.OnClientReceiveMessage(message); - } + public override void OnReceiveRemote(ServerTimeMessage message) + => WakeUpSync.Instance.OnClientReceiveMessage(message); + } } diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 9831ed726..8f31071a4 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -3,23 +3,23 @@ namespace QSB.TimeSync.Events { - public class ServerTimeMessage : PlayerMessage - { - public float ServerTime { get; set; } - public int LoopCount { get; set; } + public class ServerTimeMessage : PlayerMessage + { + public float ServerTime { get; set; } + public int LoopCount { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ServerTime = reader.ReadSingle(); - LoopCount = reader.ReadInt16(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ServerTime = reader.ReadSingle(); + LoopCount = reader.ReadInt16(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ServerTime); - writer.Write(LoopCount); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ServerTime); + writer.Write(LoopCount); + } + } } \ No newline at end of file diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index acd6881d7..9035bee5e 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -3,23 +3,23 @@ namespace QSB.TimeSync { - public class PreserveTimeScale : NetworkBehaviour - { - private void Start() - { - QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button + public class PreserveTimeScale : NetworkBehaviour + { + private void Start() + { + QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button - // Allow server to sleep at campfires - if (isServer) - { - return; - } + // Allow server to sleep at campfires + if (isServer) + { + return; + } - var campfires = FindObjectsOfType(); - foreach (var campfire in campfires) - { - campfire.SetValue("_canSleepHere", false); // Stop players from sleeping at campfires - } - } - } + var campfires = FindObjectsOfType(); + foreach (var campfire in campfires) + { + campfire.SetValue("_canSleepHere", false); // Stop players from sleeping at campfires + } + } + } } diff --git a/QSB/TimeSync/TimeSyncType.cs b/QSB/TimeSync/TimeSyncType.cs index 2fe1ca0c1..6556cbeca 100644 --- a/QSB/TimeSync/TimeSyncType.cs +++ b/QSB/TimeSync/TimeSyncType.cs @@ -1,9 +1,9 @@ namespace QSB.TimeSync { - public enum TimeSyncType - { - None, - Pausing, - Fastforwarding - } + public enum TimeSyncType + { + None, + Pausing, + Fastforwarding + } } diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index 8bd2bffaf..65364a8e9 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -2,22 +2,22 @@ namespace QSB.TimeSync { - public class WakeUpPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; + public class WakeUpPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; - public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) - { - if (__instance.gameObject.CompareTag("MainCamera") && QSBSceneManager.CurrentScene != OWScene.EyeOfTheUniverse) - { - __instance.Invoke("WakeUp"); - } - return false; - } + public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) + { + if (__instance.gameObject.CompareTag("MainCamera") && QSBSceneManager.CurrentScene != OWScene.EyeOfTheUniverse) + { + __instance.Invoke("WakeUp"); + } + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); + } + } } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 1f965dd32..55838156b 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -7,244 +7,244 @@ namespace QSB.TimeSync { - public class WakeUpSync : NetworkBehaviour - { - public static WakeUpSync Instance { get; private set; } - - private const float TimeThreshold = 0.5f; - private const float MaxFastForwardSpeed = 60f; - private const float MaxFastForwardDiff = 20f; - private const float MinFastForwardSpeed = 2f; - - private enum State { NotLoaded, Loaded, FastForwarding, Pausing } - private State _state = State.NotLoaded; - - private float _sendTimer; - private float _serverTime; - private float _timeScale; - private bool _isInputEnabled = true; - private bool _isFirstFastForward = true; - private int _localLoopCount; - private int _serverLoopCount; - - public override void OnStartLocalPlayer() - => Instance = this; - - private void Start() - { - if (!isLocalPlayer) - { - return; - } - - if (QSBSceneManager.IsInUniverse) - { - Init(); - } - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - - GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); - GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); - } - - private void OnWakeUp() - { - DebugLog.DebugWrite("ON WAKE UP!"); - if (NetworkServer.active) - { - QSB.HasWokenUp = true; - } - } - - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); - GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); - } - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); - if (isInUniverse) - { - Init(); - } - else - { - _state = State.NotLoaded; - } - } - - private void OnLoopStart() - => _localLoopCount++; - - private void Init() - { - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - _state = State.Loaded; - gameObject.AddComponent(); - if (isServer) - { - SendServerTime(); - } - else - { - WakeUpOrSleep(); - } - } - - private void SendServerTime() - => GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); - - public void OnClientReceiveMessage(ServerTimeMessage message) - { - _serverTime = message.ServerTime; - _serverLoopCount = message.LoopCount; - WakeUpOrSleep(); - } - - private void WakeUpOrSleep() - { - if (_state == State.NotLoaded || _localLoopCount != _serverLoopCount) - { - return; - } - - var myTime = Time.timeSinceLevelLoad; - var diff = myTime - _serverTime; - - if (diff > TimeThreshold) - { - StartPausing(); - return; - } - - if (diff < -TimeThreshold) - { - StartFastForwarding(); - } - } - - private void StartFastForwarding() - { - if (_state == State.FastForwarding) - { - return; - } - _timeScale = MaxFastForwardSpeed; - _state = State.FastForwarding; - TimeSyncUI.Start(TimeSyncType.Fastforwarding); - } - - private void StartPausing() - { - if (_state == State.Pausing) - { - return; - } - _timeScale = 0f; - _state = State.Pausing; - SpinnerUI.Show(); - TimeSyncUI.Start(TimeSyncType.Pausing); - } - - private void ResetTimeScale() - { - _timeScale = 1f; - _state = State.Loaded; - - if (!_isInputEnabled) - { - EnableInput(); - } - _isFirstFastForward = false; - QSB.HasWokenUp = true; - Physics.SyncTransforms(); - SpinnerUI.Hide(); - TimeSyncUI.Stop(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - RespawnOnDeath.Instance.Init(); - } - - private void DisableInput() - { - _isInputEnabled = false; - OWInput.ChangeInputMode(InputMode.None); - } - - private void EnableInput() - { - _isInputEnabled = true; - OWInput.ChangeInputMode(InputMode.Character); - } - - private void Update() - { - if (isServer) - { - UpdateServer(); - } - else if (isLocalPlayer) - { - UpdateLocal(); - } - } - - private void UpdateServer() - { - if (_state != State.Loaded) - { - return; - } - - _sendTimer += Time.unscaledDeltaTime; - if (_sendTimer > 1) - { - SendServerTime(); - _sendTimer = 0; - } - } - - private void UpdateLocal() - { - _serverTime += Time.unscaledDeltaTime; - - if (_state == State.NotLoaded) - { - return; - } - - if (_state == State.FastForwarding) - { - var diff = _serverTime - Time.timeSinceLevelLoad; - Time.timeScale = Mathf.Lerp(MinFastForwardSpeed, MaxFastForwardSpeed, Mathf.Abs(diff) / MaxFastForwardDiff); - - if (QSBSceneManager.CurrentScene == OWScene.SolarSystem && _isFirstFastForward) - { - var spawnPoint = Locator.GetPlayerBody().GetComponent().GetInitialSpawnPoint().transform; - Locator.GetPlayerTransform().position = spawnPoint.position; - Locator.GetPlayerTransform().rotation = spawnPoint.rotation; - Physics.SyncTransforms(); - } - } - else - { - Time.timeScale = _timeScale; - } - - var isDoneFastForwarding = _state == State.FastForwarding && Time.timeSinceLevelLoad >= _serverTime; - var isDonePausing = _state == State.Pausing && Time.timeSinceLevelLoad < _serverTime; - - if (isDoneFastForwarding || isDonePausing) - { - ResetTimeScale(); - } - - if (!_isInputEnabled && OWInput.GetInputMode() != InputMode.None) - { - DisableInput(); - } - } - } + public class WakeUpSync : NetworkBehaviour + { + public static WakeUpSync Instance { get; private set; } + + private const float TimeThreshold = 0.5f; + private const float MaxFastForwardSpeed = 60f; + private const float MaxFastForwardDiff = 20f; + private const float MinFastForwardSpeed = 2f; + + private enum State { NotLoaded, Loaded, FastForwarding, Pausing } + private State _state = State.NotLoaded; + + private float _sendTimer; + private float _serverTime; + private float _timeScale; + private bool _isInputEnabled = true; + private bool _isFirstFastForward = true; + private int _localLoopCount; + private int _serverLoopCount; + + public override void OnStartLocalPlayer() + => Instance = this; + + private void Start() + { + if (!isLocalPlayer) + { + return; + } + + if (QSBSceneManager.IsInUniverse) + { + Init(); + } + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + + GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); + } + + private void OnWakeUp() + { + DebugLog.DebugWrite("ON WAKE UP!"); + if (NetworkServer.active) + { + QSB.HasWokenUp = true; + } + } + + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); + if (isInUniverse) + { + Init(); + } + else + { + _state = State.NotLoaded; + } + } + + private void OnLoopStart() + => _localLoopCount++; + + private void Init() + { + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + _state = State.Loaded; + gameObject.AddComponent(); + if (isServer) + { + SendServerTime(); + } + else + { + WakeUpOrSleep(); + } + } + + private void SendServerTime() + => GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); + + public void OnClientReceiveMessage(ServerTimeMessage message) + { + _serverTime = message.ServerTime; + _serverLoopCount = message.LoopCount; + WakeUpOrSleep(); + } + + private void WakeUpOrSleep() + { + if (_state == State.NotLoaded || _localLoopCount != _serverLoopCount) + { + return; + } + + var myTime = Time.timeSinceLevelLoad; + var diff = myTime - _serverTime; + + if (diff > TimeThreshold) + { + StartPausing(); + return; + } + + if (diff < -TimeThreshold) + { + StartFastForwarding(); + } + } + + private void StartFastForwarding() + { + if (_state == State.FastForwarding) + { + return; + } + _timeScale = MaxFastForwardSpeed; + _state = State.FastForwarding; + TimeSyncUI.Start(TimeSyncType.Fastforwarding); + } + + private void StartPausing() + { + if (_state == State.Pausing) + { + return; + } + _timeScale = 0f; + _state = State.Pausing; + SpinnerUI.Show(); + TimeSyncUI.Start(TimeSyncType.Pausing); + } + + private void ResetTimeScale() + { + _timeScale = 1f; + _state = State.Loaded; + + if (!_isInputEnabled) + { + EnableInput(); + } + _isFirstFastForward = false; + QSB.HasWokenUp = true; + Physics.SyncTransforms(); + SpinnerUI.Hide(); + TimeSyncUI.Stop(); + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + RespawnOnDeath.Instance.Init(); + } + + private void DisableInput() + { + _isInputEnabled = false; + OWInput.ChangeInputMode(InputMode.None); + } + + private void EnableInput() + { + _isInputEnabled = true; + OWInput.ChangeInputMode(InputMode.Character); + } + + private void Update() + { + if (isServer) + { + UpdateServer(); + } + else if (isLocalPlayer) + { + UpdateLocal(); + } + } + + private void UpdateServer() + { + if (_state != State.Loaded) + { + return; + } + + _sendTimer += Time.unscaledDeltaTime; + if (_sendTimer > 1) + { + SendServerTime(); + _sendTimer = 0; + } + } + + private void UpdateLocal() + { + _serverTime += Time.unscaledDeltaTime; + + if (_state == State.NotLoaded) + { + return; + } + + if (_state == State.FastForwarding) + { + var diff = _serverTime - Time.timeSinceLevelLoad; + Time.timeScale = Mathf.Lerp(MinFastForwardSpeed, MaxFastForwardSpeed, Mathf.Abs(diff) / MaxFastForwardDiff); + + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem && _isFirstFastForward) + { + var spawnPoint = Locator.GetPlayerBody().GetComponent().GetInitialSpawnPoint().transform; + Locator.GetPlayerTransform().position = spawnPoint.position; + Locator.GetPlayerTransform().rotation = spawnPoint.rotation; + Physics.SyncTransforms(); + } + } + else + { + Time.timeScale = _timeScale; + } + + var isDoneFastForwarding = _state == State.FastForwarding && Time.timeSinceLevelLoad >= _serverTime; + var isDonePausing = _state == State.Pausing && Time.timeSinceLevelLoad < _serverTime; + + if (isDoneFastForwarding || isDonePausing) + { + ResetTimeScale(); + } + + if (!_isInputEnabled && OWInput.GetInputMode() != InputMode.None) + { + DisableInput(); + } + } + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 10a71aaef..3cc770c83 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerFlashlightEvent : QSBEvent - { - public override EventType Type => EventType.FlashlightActiveChange; + public class PlayerFlashlightEvent : QSBEvent + { + public override EventType Type => EventType.FlashlightActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.TurnOnFlashlight, HandleTurnOn); - GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, HandleTurnOff); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.TurnOnFlashlight, HandleTurnOn); + GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, HandleTurnOff); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, HandleTurnOn); - GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, HandleTurnOff); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, HandleTurnOn); + GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, HandleTurnOff); + } - private void HandleTurnOn() => SendEvent(CreateMessage(true)); - private void HandleTurnOff() => SendEvent(CreateMessage(false)); + private void HandleTurnOn() => SendEvent(CreateMessage(true)); + private void HandleTurnOff() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Flashlight, message.ToggleValue); - player.FlashLight?.UpdateState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Flashlight, message.ToggleValue); + player.FlashLight?.UpdateState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index de6fa3435..638223560 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerProbeEvent : QSBEvent - { - public override EventType Type => EventType.ProbeActiveChange; + public class PlayerProbeEvent : QSBEvent + { + public override EventType Type => EventType.ProbeActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.LaunchProbe, HandleLaunch); - GlobalMessenger.AddListener(EventNames.RetrieveProbe, HandleRetrieve); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.LaunchProbe, HandleLaunch); + GlobalMessenger.AddListener(EventNames.RetrieveProbe, HandleRetrieve); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.LaunchProbe, HandleLaunch); - GlobalMessenger.RemoveListener(EventNames.RetrieveProbe, HandleRetrieve); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.LaunchProbe, HandleLaunch); + GlobalMessenger.RemoveListener(EventNames.RetrieveProbe, HandleRetrieve); + } - private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); - private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); + private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); + private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.ProbeActive, message.ToggleValue); - player.Probe?.SetState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.ProbeActive, message.ToggleValue); + player.Probe?.SetState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 38e8651cb..4973595dc 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerProbeLauncherEvent : QSBEvent - { - public override EventType Type => EventType.ProbeLauncherActiveChange; + public class PlayerProbeLauncherEvent : QSBEvent + { + public override EventType Type => EventType.ProbeLauncherActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.ProbeLauncherEquipped, HandleEquip); - GlobalMessenger.AddListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.ProbeLauncherEquipped, HandleEquip); + GlobalMessenger.AddListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.ProbeLauncherEquipped, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.ProbeLauncherEquipped, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); + } - private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); - private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); + private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); + private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.ProbeLauncher, message.ToggleValue); - player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.ProbeLauncher, message.ToggleValue); + player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 9a7f0bc19..f0c4461d7 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerSignalscopeEvent : QSBEvent - { - public override EventType Type => EventType.SignalscopeActiveChange; + public class PlayerSignalscopeEvent : QSBEvent + { + public override EventType Type => EventType.SignalscopeActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.EquipSignalscope, HandleEquip); - GlobalMessenger.AddListener(EventNames.UnequipSignalscope, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.EquipSignalscope, HandleEquip); + GlobalMessenger.AddListener(EventNames.UnequipSignalscope, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.EquipSignalscope, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.EquipSignalscope, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, HandleUnequip); + } - private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); + private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Signalscope, message.ToggleValue); - player.Signalscope?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Signalscope, message.ToggleValue); + player.Signalscope?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 9c3f05a35..741aeda3e 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerTranslatorEvent : QSBEvent - { - public override EventType Type => EventType.TranslatorActiveChange; + public class PlayerTranslatorEvent : QSBEvent + { + public override EventType Type => EventType.TranslatorActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.EquipTranslator, HandleEquip); - GlobalMessenger.AddListener(EventNames.UnequipTranslator, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.EquipTranslator, HandleEquip); + GlobalMessenger.AddListener(EventNames.UnequipTranslator, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.EquipTranslator, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.EquipTranslator, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, HandleUnequip); + } - private void HandleEquip() => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); + private void HandleEquip() => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Translator, message.ToggleValue); - player.Translator?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Translator, message.ToggleValue); + player.Translator?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); + } + } } diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index b701beb94..db883e65b 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -6,189 +6,189 @@ namespace QSB.Tools { - public class PlayerToolsManager - { - private static Transform _toolStowTransform; - private static Transform _toolHoldTransform; - private static Material _playerToolsMaterial; - private static Material _lightbulbMaterial; - - private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); - private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); - private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); - private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); - - public static void Init(Transform camera) - { - CreateStowTransforms(camera); - - if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) - { - _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; - _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; - } - else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) - { - // EyeCompatibility : Get these materials another way. - _playerToolsMaterial = null; - _lightbulbMaterial = null; - } - - CreateFlashlight(camera); - CreateSignalscope(camera); - CreateProbeLauncher(camera); - CreateTranslator(camera); - } - - public static void CreateProbe(Transform body, PlayerInfo player) - { - var newProbe = body.gameObject.AddComponent(); - player.Probe = newProbe; - } - - private static void CreateStowTransforms(Transform cameraBody) - { - var stow = new GameObject("ToolStowTransform"); - _toolStowTransform = stow.transform; - stow.transform.parent = cameraBody; - stow.transform.localPosition = Vector3.zero; - stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); - - var hold = new GameObject("ToolHoldTransform"); - _toolHoldTransform = hold.transform; - hold.transform.parent = cameraBody; - hold.transform.localPosition = Vector3.zero; - hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); - } - - private static GameObject CreateFlashlight(Transform cameraBody) - { - var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); - flashlightRoot.SetActive(false); - var oldComponent = flashlightRoot.GetComponent(); - var component = flashlightRoot.AddComponent(); - - component.Init(oldComponent); - oldComponent.enabled = false; - - flashlightRoot.transform.parent = cameraBody; - flashlightRoot.transform.localPosition = FlashlightOffset; - flashlightRoot.SetActive(true); - - return flashlightRoot; - } - - private static GameObject CreateSignalscope(Transform cameraBody) - { - var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); - signalscopeRoot.SetActive(false); - - Object.Destroy(signalscopeRoot.GetComponent()); - Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") - .Find("Props_HEA_Signalscope_Prepass").gameObject); - - var oldSignalscope = signalscopeRoot.GetComponent(); - var tool = signalscopeRoot.AddComponent(); - tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Signalscope; - tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; - oldSignalscope.enabled = false; - - GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial; - - signalscopeRoot.transform.parent = cameraBody; - signalscopeRoot.transform.localPosition = Vector3.zero; - signalscopeRoot.transform.localScale = SignalscopeScale; - signalscopeRoot.SetActive(true); - - return signalscopeRoot; - } - - private static GameObject CreateTranslator(Transform cameraBody) - { - var original = GameObject.Find("NomaiTranslatorProp"); - - var translatorRoot = original.InstantiateInactive(); - - var group = translatorRoot.transform.Find("TranslatorGroup"); - var model = group.Find("Props_HEA_Translator"); - - Object.Destroy(translatorRoot.GetComponent()); - Object.Destroy(group.Find("Canvas").gameObject); - Object.Destroy(group.Find("Lighting").gameObject); - Object.Destroy(group.Find("TranslatorBeams").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); - - var oldTranslator = translatorRoot.GetComponent(); - var tool = translatorRoot.AddComponent(); - tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Translator; - tool.ToolGameObject = group.gameObject; - Object.Destroy(oldTranslator); - - GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial; - - translatorRoot.transform.parent = cameraBody; - translatorRoot.transform.localPosition = Vector3.zero; - translatorRoot.transform.localScale = TranslatorScale; - QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); - - return translatorRoot; - } - - private static GameObject CreateProbeLauncher(Transform cameraBody) - { - var launcherRoot = new GameObject("ProbeLauncher"); - var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); - var model = Object.Instantiate(modelOrig); - model.transform.parent = launcherRoot.transform; - - Object.Destroy(model.transform.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); - Object.Destroy(model.transform.Find("Props_HEA_Probe_Prelaunch").Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); - - var tool = launcherRoot.AddComponent(); - var spring = new DampedSpringQuat - { - velocity = Vector4.zero, - settings = new DampedSpringSettings - { - springConstant = 50f, - dampingCoefficient = 8.485282f, - mass = 1 - } - }; - tool.MoveSpring = spring; - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.ProbeLauncher; - tool.ToolGameObject = model; - - GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[0] = _playerToolsMaterial; - GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[1] = _lightbulbMaterial; - GetRenderer(launcherRoot, "PressureGauge_Arrow").material = _playerToolsMaterial; - GetRenderer(launcherRoot, "ProbeLauncherChassis").material = _playerToolsMaterial; - - launcherRoot.transform.parent = cameraBody; - launcherRoot.transform.localPosition = ProbeLauncherOffset; - launcherRoot.SetActive(true); - - return launcherRoot; - } - - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) - => root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); - } + public class PlayerToolsManager + { + private static Transform _toolStowTransform; + private static Transform _toolHoldTransform; + private static Material _playerToolsMaterial; + private static Material _lightbulbMaterial; + + private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); + private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); + private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); + private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); + + public static void Init(Transform camera) + { + CreateStowTransforms(camera); + + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) + { + _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; + _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; + } + else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) + { + // EyeCompatibility : Get these materials another way. + _playerToolsMaterial = null; + _lightbulbMaterial = null; + } + + CreateFlashlight(camera); + CreateSignalscope(camera); + CreateProbeLauncher(camera); + CreateTranslator(camera); + } + + public static void CreateProbe(Transform body, PlayerInfo player) + { + var newProbe = body.gameObject.AddComponent(); + player.Probe = newProbe; + } + + private static void CreateStowTransforms(Transform cameraBody) + { + var stow = new GameObject("ToolStowTransform"); + _toolStowTransform = stow.transform; + stow.transform.parent = cameraBody; + stow.transform.localPosition = Vector3.zero; + stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); + + var hold = new GameObject("ToolHoldTransform"); + _toolHoldTransform = hold.transform; + hold.transform.parent = cameraBody; + hold.transform.localPosition = Vector3.zero; + hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); + } + + private static GameObject CreateFlashlight(Transform cameraBody) + { + var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); + flashlightRoot.SetActive(false); + var oldComponent = flashlightRoot.GetComponent(); + var component = flashlightRoot.AddComponent(); + + component.Init(oldComponent); + oldComponent.enabled = false; + + flashlightRoot.transform.parent = cameraBody; + flashlightRoot.transform.localPosition = FlashlightOffset; + flashlightRoot.SetActive(true); + + return flashlightRoot; + } + + private static GameObject CreateSignalscope(Transform cameraBody) + { + var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); + signalscopeRoot.SetActive(false); + + Object.Destroy(signalscopeRoot.GetComponent()); + Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") + .Find("Props_HEA_Signalscope_Prepass").gameObject); + + var oldSignalscope = signalscopeRoot.GetComponent(); + var tool = signalscopeRoot.AddComponent(); + tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Signalscope; + tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; + oldSignalscope.enabled = false; + + GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial; + + signalscopeRoot.transform.parent = cameraBody; + signalscopeRoot.transform.localPosition = Vector3.zero; + signalscopeRoot.transform.localScale = SignalscopeScale; + signalscopeRoot.SetActive(true); + + return signalscopeRoot; + } + + private static GameObject CreateTranslator(Transform cameraBody) + { + var original = GameObject.Find("NomaiTranslatorProp"); + + var translatorRoot = original.InstantiateInactive(); + + var group = translatorRoot.transform.Find("TranslatorGroup"); + var model = group.Find("Props_HEA_Translator"); + + Object.Destroy(translatorRoot.GetComponent()); + Object.Destroy(group.Find("Canvas").gameObject); + Object.Destroy(group.Find("Lighting").gameObject); + Object.Destroy(group.Find("TranslatorBeams").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); + + var oldTranslator = translatorRoot.GetComponent(); + var tool = translatorRoot.AddComponent(); + tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Translator; + tool.ToolGameObject = group.gameObject; + Object.Destroy(oldTranslator); + + GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial; + + translatorRoot.transform.parent = cameraBody; + translatorRoot.transform.localPosition = Vector3.zero; + translatorRoot.transform.localScale = TranslatorScale; + QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + + return translatorRoot; + } + + private static GameObject CreateProbeLauncher(Transform cameraBody) + { + var launcherRoot = new GameObject("ProbeLauncher"); + var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); + var model = Object.Instantiate(modelOrig); + model.transform.parent = launcherRoot.transform; + + Object.Destroy(model.transform.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); + Object.Destroy(model.transform.Find("Props_HEA_Probe_Prelaunch").Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); + + var tool = launcherRoot.AddComponent(); + var spring = new DampedSpringQuat + { + velocity = Vector4.zero, + settings = new DampedSpringSettings + { + springConstant = 50f, + dampingCoefficient = 8.485282f, + mass = 1 + } + }; + tool.MoveSpring = spring; + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.ProbeLauncher; + tool.ToolGameObject = model; + + GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[0] = _playerToolsMaterial; + GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[1] = _lightbulbMaterial; + GetRenderer(launcherRoot, "PressureGauge_Arrow").material = _playerToolsMaterial; + GetRenderer(launcherRoot, "ProbeLauncherChassis").material = _playerToolsMaterial; + + launcherRoot.transform.parent = cameraBody; + launcherRoot.transform.localPosition = ProbeLauncherOffset; + launcherRoot.SetActive(true); + + return launcherRoot; + } + + private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) + => root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); + } } \ No newline at end of file diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs index 0564aa513..e26196aac 100644 --- a/QSB/Tools/ProbePatches.cs +++ b/QSB/Tools/ProbePatches.cs @@ -2,28 +2,28 @@ namespace QSB.Tools { - public class ProbePatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class ProbePatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - private static void ProbeAnchor() - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); - } + private static void ProbeAnchor() + { + GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); + } - private static bool ProbeWarp(ref bool ____isRetrieving) - { - if (!____isRetrieving) - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); - } - return true; - } + private static bool ProbeWarp(ref bool ____isRetrieving) + { + if (!____isRetrieving) + { + GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); + } + return true; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); - QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); + QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); + } + } } diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index bf9a32d55..2c1860576 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -3,82 +3,82 @@ namespace QSB.Tools { - public class QSBFlashlight : MonoBehaviour - { - private OWLight2[] _lights; - private Transform _root; - private Transform _basePivot; - private Transform _wobblePivot; + public class QSBFlashlight : MonoBehaviour + { + private OWLight2[] _lights; + private Transform _root; + private Transform _basePivot; + private Transform _wobblePivot; - private bool _flashlightOn; - private Vector3 _baseForward; - private Quaternion _baseRotation; + private bool _flashlightOn; + private Vector3 _baseForward; + private Quaternion _baseRotation; - private void Start() - { - _baseForward = _basePivot.forward; - _baseRotation = _basePivot.rotation; - } + private void Start() + { + _baseForward = _basePivot.forward; + _baseRotation = _basePivot.rotation; + } - public void Init(Flashlight oldComponent) - { - _lights = oldComponent.GetValue("_lights"); - _root = oldComponent.GetValue("_root"); - _basePivot = oldComponent.GetValue("_basePivot"); - _wobblePivot = oldComponent.GetValue("_wobblePivot"); - } + public void Init(Flashlight oldComponent) + { + _lights = oldComponent.GetValue("_lights"); + _root = oldComponent.GetValue("_root"); + _basePivot = oldComponent.GetValue("_basePivot"); + _wobblePivot = oldComponent.GetValue("_wobblePivot"); + } - public void UpdateState(bool value) - { - if (value) - { - TurnOn(); - } - else - { - TurnOff(); - } - } + public void UpdateState(bool value) + { + if (value) + { + TurnOn(); + } + else + { + TurnOff(); + } + } - private void TurnOn() - { - if (_flashlightOn) - { - return; - } - foreach (var light in _lights) - { - light.GetLight().enabled = true; - } - _flashlightOn = true; - var rotation = _root.rotation; - _basePivot.rotation = rotation; - _baseRotation = rotation; - _baseForward = _basePivot.forward; - } + private void TurnOn() + { + if (_flashlightOn) + { + return; + } + foreach (var light in _lights) + { + light.GetLight().enabled = true; + } + _flashlightOn = true; + var rotation = _root.rotation; + _basePivot.rotation = rotation; + _baseRotation = rotation; + _baseForward = _basePivot.forward; + } - private void TurnOff() - { - if (!_flashlightOn) - { - return; - } - foreach (var light in _lights) - { - light.GetLight().enabled = false; - } - _flashlightOn = false; - } + private void TurnOff() + { + if (!_flashlightOn) + { + return; + } + foreach (var light in _lights) + { + light.GetLight().enabled = false; + } + _flashlightOn = false; + } - private void FixedUpdate() - { - // This really isn't needed... but it makes it look that extra bit nicer. - var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); - var b = lhs * _baseRotation; - _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); - _basePivot.rotation = _baseRotation; - _baseForward = _basePivot.forward; - _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; - } - } + private void FixedUpdate() + { + // This really isn't needed... but it makes it look that extra bit nicer. + var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); + var b = lhs * _baseRotation; + _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); + _basePivot.rotation = _baseRotation; + _baseForward = _basePivot.forward; + _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; + } + } } diff --git a/QSB/Tools/QSBProbe.cs b/QSB/Tools/QSBProbe.cs index fece67832..aa876086b 100644 --- a/QSB/Tools/QSBProbe.cs +++ b/QSB/Tools/QSBProbe.cs @@ -3,29 +3,29 @@ namespace QSB.Tools { - public class QSBProbe : MonoBehaviour - { - public void SetState(bool state) - { - if (state) - { - Activate(); - } - else - { - Deactivate(); - } - } + public class QSBProbe : MonoBehaviour + { + public void SetState(bool state) + { + if (state) + { + Activate(); + } + else + { + Deactivate(); + } + } - private void Activate() - { - gameObject.SetActive(true); - gameObject.Show(); - } + private void Activate() + { + gameObject.SetActive(true); + gameObject.Show(); + } - private void Deactivate() - { - gameObject.Hide(); - } - } + private void Deactivate() + { + gameObject.Hide(); + } + } } diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index 40a26e3d2..237c13f30 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -2,55 +2,55 @@ namespace QSB.Tools { - public class QSBTool : PlayerTool - { - public ToolType Type { get; set; } - public GameObject ToolGameObject { get; set; } - - public DampedSpringQuat MoveSpring - { - get => _moveSpring; - set => _moveSpring = value; - } - - public Transform StowTransform - { - get => _stowTransform; - set => _stowTransform = value; - } - - public Transform HoldTransform - { - get => _holdTransform; - set => _holdTransform = value; - } - - public float ArrivalDegrees - { - get => _arrivalDegrees; - set => _arrivalDegrees = value; - } - - private void OnEnable() - { - ToolGameObject?.SetActive(true); - } - - private void OnDisable() - { - ToolGameObject?.SetActive(false); - } - - public void ChangeEquipState(bool equipState) - { - if (equipState) - { - EquipTool(); - } - else - { - UnequipTool(); - } - } - } + public class QSBTool : PlayerTool + { + public ToolType Type { get; set; } + public GameObject ToolGameObject { get; set; } + + public DampedSpringQuat MoveSpring + { + get => _moveSpring; + set => _moveSpring = value; + } + + public Transform StowTransform + { + get => _stowTransform; + set => _stowTransform = value; + } + + public Transform HoldTransform + { + get => _holdTransform; + set => _holdTransform = value; + } + + public float ArrivalDegrees + { + get => _arrivalDegrees; + set => _arrivalDegrees = value; + } + + private void OnEnable() + { + ToolGameObject?.SetActive(true); + } + + private void OnDisable() + { + ToolGameObject?.SetActive(false); + } + + public void ChangeEquipState(bool equipState) + { + if (equipState) + { + EquipTool(); + } + else + { + UnequipTool(); + } + } + } } \ No newline at end of file diff --git a/QSB/Tools/ToolType.cs b/QSB/Tools/ToolType.cs index 1021097df..a1e2a7efd 100644 --- a/QSB/Tools/ToolType.cs +++ b/QSB/Tools/ToolType.cs @@ -1,9 +1,9 @@ namespace QSB.Tools { - public enum ToolType - { - Signalscope, - ProbeLauncher, - Translator - } + public enum ToolType + { + Signalscope, + ProbeLauncher, + Translator + } } \ No newline at end of file diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index d905a3712..9a5ca3e4b 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -4,93 +4,93 @@ namespace QSB.TransformSync { - public class NomaiOrbTransformSync : NetworkBehaviour - { - public NomaiInterfaceOrb AttachedOrb { get; private set; } - public Transform OrbTransform { get; private set; } - - private int Index => WorldRegistry.OrbSyncList.IndexOf(this); - - private const int MaxUpdatesBeforeDisable = 5; - - private bool _isInitialized; - private bool _isReady; - private Transform _orbParent; - private int _updateCount; - - public override void OnStartClient() - { - WorldRegistry.OrbSyncList.Add(this); - - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); - } - - private void OnReady() - { - AttachedOrb = WorldRegistry.OldOrbList[Index]; - _isReady = true; - } - - private void Awake() - { - DontDestroyOnLoad(this); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - private void OnDestroy() - { - WorldRegistry.OrbSyncList.Remove(this); - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; - - protected void Init() - { - OrbTransform = AttachedOrb.transform; - _orbParent = AttachedOrb.GetAttachedOWRigidbody().GetOrigParent(); - _isInitialized = true; - } - - private void Update() - { - if (!_isInitialized && _isReady) - { - Init(); - } - else if (_isInitialized && !_isReady) - { - _isInitialized = false; - } - - if (OrbTransform == null || !_isInitialized) - { - return; - } - - UpdateTransform(); - } - - protected virtual void UpdateTransform() - { - if (hasAuthority) - { - transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); - transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - return; - } - OrbTransform.position = _orbParent.TransformPoint(transform.position); - OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - - if (transform.localPosition == Vector3.zero) - { - _updateCount++; - } - if (_updateCount >= MaxUpdatesBeforeDisable) - { - enabled = false; - _updateCount = 0; - } - } - } + public class NomaiOrbTransformSync : NetworkBehaviour + { + public NomaiInterfaceOrb AttachedOrb { get; private set; } + public Transform OrbTransform { get; private set; } + + private int Index => WorldRegistry.OrbSyncList.IndexOf(this); + + private const int MaxUpdatesBeforeDisable = 5; + + private bool _isInitialized; + private bool _isReady; + private Transform _orbParent; + private int _updateCount; + + public override void OnStartClient() + { + WorldRegistry.OrbSyncList.Add(this); + + QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); + } + + private void OnReady() + { + AttachedOrb = WorldRegistry.OldOrbList[Index]; + _isReady = true; + } + + private void Awake() + { + DontDestroyOnLoad(this); + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + private void OnDestroy() + { + WorldRegistry.OrbSyncList.Remove(this); + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; + + protected void Init() + { + OrbTransform = AttachedOrb.transform; + _orbParent = AttachedOrb.GetAttachedOWRigidbody().GetOrigParent(); + _isInitialized = true; + } + + private void Update() + { + if (!_isInitialized && _isReady) + { + Init(); + } + else if (_isInitialized && !_isReady) + { + _isInitialized = false; + } + + if (OrbTransform == null || !_isInitialized) + { + return; + } + + UpdateTransform(); + } + + protected virtual void UpdateTransform() + { + if (hasAuthority) + { + transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); + transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + return; + } + OrbTransform.position = _orbParent.TransformPoint(transform.position); + OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + + if (transform.localPosition == Vector3.zero) + { + _updateCount++; + } + if (_updateCount >= MaxUpdatesBeforeDisable) + { + enabled = false; + _updateCount = 0; + } + } + } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index b56c84173..077ee3f57 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -6,42 +6,42 @@ namespace QSB.TransformSync { - public class PlayerCameraSync : TransformSync - { - public static PlayerCameraSync LocalInstance { get; private set; } + public class PlayerCameraSync : TransformSync + { + public static PlayerCameraSync LocalInstance { get; private set; } - public override void OnStartLocalPlayer() - => LocalInstance = this; + public override void OnStartLocalPlayer() + => LocalInstance = this; - protected override Transform InitLocalTransform() - { - var body = Locator.GetPlayerCamera().gameObject.transform; + protected override Transform InitLocalTransform() + { + var body = Locator.GetPlayerCamera().gameObject.transform; - Player.Camera = body.gameObject; + Player.Camera = body.gameObject; - Player.IsReady = true; - GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); - DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + Player.IsReady = true; + GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); + DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = new GameObject("RemotePlayerCamera"); + protected override Transform InitRemoteTransform() + { + var body = new GameObject("RemotePlayerCamera"); - PlayerToolsManager.Init(body.transform); + PlayerToolsManager.Init(body.transform); - Player.Camera = body; + Player.Camera = body; - return body.transform; - } + return body.transform; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index a90428871..3fb3d2015 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -6,92 +6,92 @@ namespace QSB.TransformSync { - public class PlayerProbeSync : TransformSync - { - public static PlayerProbeSync LocalInstance { get; private set; } - - private Transform _disabledSocket; - - public override void OnStartLocalPlayer() - => LocalInstance = this; - - private Transform GetProbe() - => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - - protected override Transform InitLocalTransform() - { - var body = GetProbe(); - - SetSocket(Player.Camera.transform); - Player.ProbeBody = body.gameObject; - - return body; - } - - protected override Transform InitRemoteTransform() - { - var probe = GetProbe(); - - if (probe == null) - { - DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); - return default; - } - - var body = probe.InstantiateInactive(); - body.name = "RemoteProbeTransform"; - - Destroy(body.GetComponentInChildren()); - - PlayerToolsManager.CreateProbe(body, Player); - - QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); - Player.ProbeBody = body.gameObject; - - return body; - } - - private void SetSocket(Transform socket) - { - DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); - _disabledSocket = socket; - } - - protected override void UpdateTransform() - { - base.UpdateTransform(); - if (Player == null) - { - DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); - return; - } - if (_disabledSocket == null) - { - DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); - return; - } - if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) - { - return; - } - if (hasAuthority) - { - transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - return; - } - if (SyncedTransform.position == Vector3.zero || - SyncedTransform.position == Locator.GetAstroObject(AstroObject.Name.Sun).transform.position) - { - return; - } - SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - } - - public override bool IsReady => Locator.GetProbe() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public class PlayerProbeSync : TransformSync + { + public static PlayerProbeSync LocalInstance { get; private set; } + + private Transform _disabledSocket; + + public override void OnStartLocalPlayer() + => LocalInstance = this; + + private Transform GetProbe() + => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); + + protected override Transform InitLocalTransform() + { + var body = GetProbe(); + + SetSocket(Player.Camera.transform); + Player.ProbeBody = body.gameObject; + + return body; + } + + protected override Transform InitRemoteTransform() + { + var probe = GetProbe(); + + if (probe == null) + { + DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); + return default; + } + + var body = probe.InstantiateInactive(); + body.name = "RemoteProbeTransform"; + + Destroy(body.GetComponentInChildren()); + + PlayerToolsManager.CreateProbe(body, Player); + + QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); + Player.ProbeBody = body.gameObject; + + return body; + } + + private void SetSocket(Transform socket) + { + DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); + _disabledSocket = socket; + } + + protected override void UpdateTransform() + { + base.UpdateTransform(); + if (Player == null) + { + DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); + return; + } + if (_disabledSocket == null) + { + DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); + return; + } + if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) + { + return; + } + if (hasAuthority) + { + transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + return; + } + if (SyncedTransform.position == Vector3.zero || + SyncedTransform.position == Locator.GetAstroObject(AstroObject.Name.Sun).transform.position) + { + return; + } + SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + } + + public override bool IsReady => Locator.GetProbe() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index db80416aa..92b89be08 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -5,57 +5,57 @@ namespace QSB.TransformSync { - public class PlayerTransformSync : TransformSync - { - public static PlayerTransformSync LocalInstance { get; private set; } + public class PlayerTransformSync : TransformSync + { + public static PlayerTransformSync LocalInstance { get; private set; } - static PlayerTransformSync() - { - AnimControllerPatch.Init(); - } + static PlayerTransformSync() + { + AnimControllerPatch.Init(); + } - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } - private Transform GetPlayerModel() - { - return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); - } + private Transform GetPlayerModel() + { + return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); + } - protected override Transform InitLocalTransform() - { - var body = GetPlayerModel(); + protected override Transform InitLocalTransform() + { + var body = GetPlayerModel(); - GetComponent().InitLocal(body); - GetComponent().InitLocal(body); + GetComponent().InitLocal(body); + GetComponent().InitLocal(body); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = Instantiate(GetPlayerModel()); + protected override Transform InitRemoteTransform() + { + var body = Instantiate(GetPlayerModel()); - GetComponent().InitRemote(body); - GetComponent().InitRemote(body); + GetComponent().InitRemote(body); + GetComponent().InitRemote(body); - var marker = body.gameObject.AddComponent(); - marker.Init(Player); + var marker = body.gameObject.AddComponent(); + marker.Init(Player); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index ba4864f55..2b488b559 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -3,58 +3,58 @@ namespace QSB.TransformSync { - public class ShipTransformSync : TransformSync - { - public static ShipTransformSync LocalInstance { get; private set; } - - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } - - private Transform GetShipModel() - { - return Locator.GetShipTransform(); - } - - protected override Transform InitLocalTransform() - { - return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); - } - - protected override Transform InitRemoteTransform() - { - var shipModel = GetShipModel(); - - var remoteTransform = new GameObject("RemoteShipTransform").transform; - - Instantiate(shipModel.Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Geometry/Cabin_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Tech/Cabin_Tech_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Supplies/Geo_Supplies/Supplies_Geometry/Supplies_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Engine/Geo_Engine/Engine_Geometry/Engine_Exterior"), remoteTransform); - - var landingGearFront = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Front/Geo_LandingGear_Front"), remoteTransform); - var landingGearLeft = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Left/Geo_LandingGear_Left"), remoteTransform); - var landingGearRight = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Right/Geo_LandingGear_Right"), remoteTransform); - - Destroy(landingGearFront.Find("LandingGear_FrontCollision").gameObject); - Destroy(landingGearLeft.Find("LandingGear_LeftCollision").gameObject); - Destroy(landingGearRight.Find("LandingGear_RightCollision").gameObject); - - landingGearFront.localPosition - = landingGearLeft.localPosition - = landingGearRight.localPosition - += Vector3.up * 3.762f; - - return remoteTransform; - } - - public override bool IsReady => GetShipModel() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public class ShipTransformSync : TransformSync + { + public static ShipTransformSync LocalInstance { get; private set; } + + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } + + private Transform GetShipModel() + { + return Locator.GetShipTransform(); + } + + protected override Transform InitLocalTransform() + { + return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); + } + + protected override Transform InitRemoteTransform() + { + var shipModel = GetShipModel(); + + var remoteTransform = new GameObject("RemoteShipTransform").transform; + + Instantiate(shipModel.Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Geometry/Cabin_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Tech/Cabin_Tech_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Supplies/Geo_Supplies/Supplies_Geometry/Supplies_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Engine/Geo_Engine/Engine_Geometry/Engine_Exterior"), remoteTransform); + + var landingGearFront = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Front/Geo_LandingGear_Front"), remoteTransform); + var landingGearLeft = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Left/Geo_LandingGear_Left"), remoteTransform); + var landingGearRight = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Right/Geo_LandingGear_Right"), remoteTransform); + + Destroy(landingGearFront.Find("LandingGear_FrontCollision").gameObject); + Destroy(landingGearLeft.Find("LandingGear_LeftCollision").gameObject); + Destroy(landingGearRight.Find("LandingGear_RightCollision").gameObject); + + landingGearFront.localPosition + = landingGearLeft.localPosition + = landingGearRight.localPosition + += Vector3.up * 3.762f; + + return remoteTransform; + } + + public override bool IsReady => GetShipModel() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index e067ce2cc..756a664d3 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -6,126 +6,126 @@ namespace QSB.TransformSync { - public abstract class TransformSync : PlayerSyncObject - { - public abstract bool IsReady { get; } - protected abstract Transform InitLocalTransform(); - protected abstract Transform InitRemoteTransform(); - - public Transform SyncedTransform { get; private set; } - public QSBSector ReferenceSector { get; set; } - - private const float SmoothTime = 0.1f; - private bool _isInitialized; - private Vector3 _positionSmoothVelocity; - private Quaternion _rotationSmoothVelocity; - private bool _isVisible; - - protected virtual void Awake() - { - DebugLog.DebugWrite($"Awake of {AttachedNetId} ({GetType().Name})"); - QSBPlayerManager.PlayerSyncObjects.Add(this); - DontDestroyOnLoad(gameObject); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - protected virtual void OnDestroy() - => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; - - protected void Init() - { - DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); - SyncedTransform = hasAuthority ? InitLocalTransform() : InitRemoteTransform(); - _isInitialized = true; - _isVisible = true; - } - - private void Update() - { - if (!_isInitialized && IsReady) - { - Init(); - } - else if (_isInitialized && !IsReady) - { - _isInitialized = false; - return; - } - - if (!_isInitialized) - { - return; - } - - if (SyncedTransform == null) - { - DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); - return; - } - - UpdateTransform(); - } - - protected virtual void UpdateTransform() - { - if (hasAuthority) // If this script is attached to the client's own body on the client's side. - { - if (ReferenceSector == null || ReferenceSector.Sector == null) - { - DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); - return; - } - transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); - transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); - return; - } - - // If this script is attached to any other body, eg the representations of other players - if (SyncedTransform.position == Vector3.zero) - { - Hide(); - } - else - { - Show(); - } - - SyncedTransform.localPosition = Vector3.SmoothDamp(SyncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); - SyncedTransform.localRotation = QuaternionHelper.SmoothDamp(SyncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); - } - - public void SetReferenceSector(QSBSector sector) - { - DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); - _positionSmoothVelocity = Vector3.zero; - ReferenceSector = sector; - if (!hasAuthority) - { - SyncedTransform.SetParent(sector.Transform, true); - transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); - transform.rotation = sector.Transform.InverseTransformRotation(SyncedTransform.rotation); - } - } - - private void Show() - { - if (!_isVisible) - { - SyncedTransform.gameObject.Show(); - _isVisible = true; - } - } - - private void Hide() - { - if (_isVisible) - { - SyncedTransform.gameObject.Hide(); - _isVisible = false; - } - } - - } + public abstract class TransformSync : PlayerSyncObject + { + public abstract bool IsReady { get; } + protected abstract Transform InitLocalTransform(); + protected abstract Transform InitRemoteTransform(); + + public Transform SyncedTransform { get; private set; } + public QSBSector ReferenceSector { get; set; } + + private const float SmoothTime = 0.1f; + private bool _isInitialized; + private Vector3 _positionSmoothVelocity; + private Quaternion _rotationSmoothVelocity; + private bool _isVisible; + + protected virtual void Awake() + { + DebugLog.DebugWrite($"Awake of {AttachedNetId} ({GetType().Name})"); + QSBPlayerManager.PlayerSyncObjects.Add(this); + DontDestroyOnLoad(gameObject); + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + protected virtual void OnDestroy() + => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; + + protected void Init() + { + DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); + SyncedTransform = hasAuthority ? InitLocalTransform() : InitRemoteTransform(); + _isInitialized = true; + _isVisible = true; + } + + private void Update() + { + if (!_isInitialized && IsReady) + { + Init(); + } + else if (_isInitialized && !IsReady) + { + _isInitialized = false; + return; + } + + if (!_isInitialized) + { + return; + } + + if (SyncedTransform == null) + { + DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); + return; + } + + UpdateTransform(); + } + + protected virtual void UpdateTransform() + { + if (hasAuthority) // If this script is attached to the client's own body on the client's side. + { + if (ReferenceSector == null || ReferenceSector.Sector == null) + { + DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); + return; + } + transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); + transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); + return; + } + + // If this script is attached to any other body, eg the representations of other players + if (SyncedTransform.position == Vector3.zero) + { + Hide(); + } + else + { + Show(); + } + + SyncedTransform.localPosition = Vector3.SmoothDamp(SyncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); + SyncedTransform.localRotation = QuaternionHelper.SmoothDamp(SyncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); + } + + public void SetReferenceSector(QSBSector sector) + { + DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); + _positionSmoothVelocity = Vector3.zero; + ReferenceSector = sector; + if (!hasAuthority) + { + SyncedTransform.SetParent(sector.Transform, true); + transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); + transform.rotation = sector.Transform.InverseTransformRotation(SyncedTransform.rotation); + } + } + + private void Show() + { + if (!_isVisible) + { + SyncedTransform.gameObject.Show(); + _isVisible = true; + } + } + + private void Hide() + { + if (_isVisible) + { + SyncedTransform.gameObject.Hide(); + _isVisible = false; + } + } + + } } \ No newline at end of file diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index c81622515..96f85616c 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -2,44 +2,44 @@ namespace QSB.Utility { - public class DebugActions : MonoBehaviour - { - private void GoToVessel() - { - var spawnPoint = GameObject.Find("Spawn_Vessel").GetComponent(); + public class DebugActions : MonoBehaviour + { + private void GoToVessel() + { + var spawnPoint = GameObject.Find("Spawn_Vessel").GetComponent(); - var playerBody = Locator.GetPlayerBody(); - playerBody.WarpToPositionRotation(spawnPoint.transform.position, spawnPoint.transform.rotation); - playerBody.SetVelocity(spawnPoint.GetPointVelocity()); - } + var playerBody = Locator.GetPlayerBody(); + playerBody.WarpToPositionRotation(spawnPoint.transform.position, spawnPoint.transform.rotation); + playerBody.SetVelocity(spawnPoint.GetPointVelocity()); + } - private void InsertWarpCore() - { - var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); - var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); - socket.PlaceIntoSocket(warpCore); + private void InsertWarpCore() + { + var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); + var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); + socket.PlaceIntoSocket(warpCore); - GetComponent().SetPillarRaised(true, true); - } + GetComponent().SetPillarRaised(true, true); + } - private void Update() - { - if (!QSB.DebugMode) - { - return; - } - if (Input.GetKeyDown(KeyCode.Keypad1)) - { - GoToVessel(); - } - if (Input.GetKeyDown(KeyCode.Keypad2)) - { - InsertWarpCore(); - } - if (Input.GetKeyDown(KeyCode.Keypad3)) - { - LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); - } - } - } + private void Update() + { + if (!QSB.DebugMode) + { + return; + } + if (Input.GetKeyDown(KeyCode.Keypad1)) + { + GoToVessel(); + } + if (Input.GetKeyDown(KeyCode.Keypad2)) + { + InsertWarpCore(); + } + if (Input.GetKeyDown(KeyCode.Keypad3)) + { + LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); + } + } + } } \ No newline at end of file diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index 141e56017..a49870676 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -5,48 +5,48 @@ namespace QSB.Utility { - public static class DebugLog - { - public static void ToConsole(string message, MessageType type = MessageType.Message) - { - // make custom method name in owml log. - // i wrote the owml code for this so this is fine?? shut up i dont want to change owml - var console = (ModSocketOutput)QSB.Helper.Console; - var method = console.GetType() - .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) - .Last(x => x.Name == "WriteLine"); - var callingType = GetCallingType(new StackTrace()); - method.Invoke(console, new object[] { type, message, callingType }); - } + public static class DebugLog + { + public static void ToConsole(string message, MessageType type = MessageType.Message) + { + // make custom method name in owml log. + // i wrote the owml code for this so this is fine?? shut up i dont want to change owml + var console = (ModSocketOutput)QSB.Helper.Console; + var method = console.GetType() + .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) + .Last(x => x.Name == "WriteLine"); + var callingType = GetCallingType(new StackTrace()); + method.Invoke(console, new object[] { type, message, callingType }); + } - public static void ToHud(string message) - { - if (Locator.GetPlayerBody() == null) - { - return; - } - var data = new NotificationData(NotificationTarget.Player, message.ToUpper()); - NotificationManager.SharedInstance.PostNotification(data); - } + public static void ToHud(string message) + { + if (Locator.GetPlayerBody() == null) + { + return; + } + var data = new NotificationData(NotificationTarget.Player, message.ToUpper()); + NotificationManager.SharedInstance.PostNotification(data); + } - public static void ToAll(string message, MessageType type = MessageType.Message) - { - ToConsole(message, type); - ToHud(message); - } + public static void ToAll(string message, MessageType type = MessageType.Message) + { + ToConsole(message, type); + ToHud(message); + } - public static void DebugWrite(string message, MessageType type = MessageType.Message) - { - if (QSB.DebugMode) - { - ToConsole(message, type); - } - } + public static void DebugWrite(string message, MessageType type = MessageType.Message) + { + if (QSB.DebugMode) + { + ToConsole(message, type); + } + } - private static string GetCallingType(StackTrace frame) - { - var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); - return stackFrame.GetMethod().DeclaringType.Name; - } - } + private static string GetCallingType(StackTrace frame) + { + var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); + return stackFrame.GetMethod().DeclaringType.Name; + } + } } diff --git a/QSB/Utility/FlagsHelper.cs b/QSB/Utility/FlagsHelper.cs index 2854cf0bc..c68b8e926 100644 --- a/QSB/Utility/FlagsHelper.cs +++ b/QSB/Utility/FlagsHelper.cs @@ -1,31 +1,31 @@ namespace QSB.Utility { - // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp + // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp - public static class FlagsHelper - { - public static bool IsSet(T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static class FlagsHelper + { + public static bool IsSet(T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - return (flagsValue & flagValue) != 0; - } + return (flagsValue & flagValue) != 0; + } - public static void Set(ref T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static void Set(ref T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - flags = (T)(object)(flagsValue | flagValue); - } + flags = (T)(object)(flagsValue | flagValue); + } - public static void Unset(ref T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static void Unset(ref T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - flags = (T)(object)(flagsValue & ~flagValue); - } - } + flags = (T)(object)(flagsValue & ~flagValue); + } + } } diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index 9d1e53e54..e734ac455 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -2,32 +2,32 @@ namespace QSB.Utility { - public static class GOExtensions - { - public static void Show(this GameObject gameObject) => SetVisibility(gameObject, true); + public static class GOExtensions + { + public static void Show(this GameObject gameObject) => SetVisibility(gameObject, true); - public static void Hide(this GameObject gameObject) => SetVisibility(gameObject, false); + public static void Hide(this GameObject gameObject) => SetVisibility(gameObject, false); - private static void SetVisibility(GameObject gameObject, bool isVisible) - { - var renderers = gameObject.GetComponentsInChildren(); - foreach (var renderer in renderers) - { - renderer.enabled = isVisible; - } - } + private static void SetVisibility(GameObject gameObject, bool isVisible) + { + var renderers = gameObject.GetComponentsInChildren(); + foreach (var renderer in renderers) + { + renderer.enabled = isVisible; + } + } - public static GameObject InstantiateInactive(this GameObject original) - { - original.SetActive(false); - var copy = Object.Instantiate(original); - original.SetActive(true); - return copy; - } + public static GameObject InstantiateInactive(this GameObject original) + { + original.SetActive(false); + var copy = Object.Instantiate(original); + original.SetActive(true); + return copy; + } - public static Transform InstantiateInactive(this Transform original) - { - return original.gameObject.InstantiateInactive().transform; - } - } + public static Transform InstantiateInactive(this Transform original) + { + return original.gameObject.InstantiateInactive().transform; + } + } } diff --git a/QSB/Utility/ListExtensions.cs b/QSB/Utility/ListExtensions.cs index c0ae8fddf..b01174049 100644 --- a/QSB/Utility/ListExtensions.cs +++ b/QSB/Utility/ListExtensions.cs @@ -3,18 +3,18 @@ namespace QSB.Utility { - public static class ListExtensions - { - public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) - { - var seenKeys = new HashSet(); - foreach (var element in source) - { - if (seenKeys.Add(keySelector(element))) - { - yield return element; - } - } - } - } + public static class ListExtensions + { + public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) + { + var seenKeys = new HashSet(); + foreach (var element in source) + { + if (seenKeys.Add(keySelector(element))) + { + yield return element; + } + } + } + } } diff --git a/QSB/Utility/QuaternionHelper.cs b/QSB/Utility/QuaternionHelper.cs index 8be8a0dee..363f5f9c3 100644 --- a/QSB/Utility/QuaternionHelper.cs +++ b/QSB/Utility/QuaternionHelper.cs @@ -2,32 +2,32 @@ namespace QSB.Utility { - public static class QuaternionHelper - { - // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b - public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) - { - // account for double-cover - var dot = Quaternion.Dot(rot, target); - var multi = dot > 0f ? 1f : -1f; - target.x *= multi; - target.y *= multi; - target.z *= multi; - target.w *= multi; - // smooth damp (nlerp approx) - var result = new Vector4( - Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), - Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), - Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), - Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) - ).normalized; - // compute deriv - var dtInv = 1f / Time.deltaTime; - deriv.x = (result.x - rot.x) * dtInv; - deriv.y = (result.y - rot.y) * dtInv; - deriv.z = (result.z - rot.z) * dtInv; - deriv.w = (result.w - rot.w) * dtInv; - return new Quaternion(result.x, result.y, result.z, result.w); - } - } + public static class QuaternionHelper + { + // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b + public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) + { + // account for double-cover + var dot = Quaternion.Dot(rot, target); + var multi = dot > 0f ? 1f : -1f; + target.x *= multi; + target.y *= multi; + target.z *= multi; + target.w *= multi; + // smooth damp (nlerp approx) + var result = new Vector4( + Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), + Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), + Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), + Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) + ).normalized; + // compute deriv + var dtInv = 1f / Time.deltaTime; + deriv.x = (result.x - rot.x) * dtInv; + deriv.y = (result.y - rot.y) * dtInv; + deriv.z = (result.z - rot.z) * dtInv; + deriv.w = (result.w - rot.w) * dtInv; + return new Quaternion(result.x, result.y, result.z, result.w); + } + } } diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 533a2b1ba..fa02052a1 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -2,20 +2,20 @@ namespace QSB.WorldSync.Events { - public class BoolWorldObjectMessage : WorldObjectMessage - { - public bool State { get; set; } + public class BoolWorldObjectMessage : WorldObjectMessage + { + public bool State { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - State = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + State = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(State); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(State); + } + } } diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 0a7631d88..e86442178 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -3,20 +3,20 @@ namespace QSB.WorldSync.Events { - public class WorldObjectMessage : PlayerMessage - { - public int ObjectId { get; set; } + public class WorldObjectMessage : PlayerMessage + { + public int ObjectId { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ObjectId = reader.ReadInt32(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ObjectId); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + } + } } \ No newline at end of file diff --git a/QSB/WorldSync/WorldObject.cs b/QSB/WorldSync/WorldObject.cs index 89ec54b02..b8f423bd8 100644 --- a/QSB/WorldSync/WorldObject.cs +++ b/QSB/WorldSync/WorldObject.cs @@ -1,7 +1,7 @@ namespace QSB.WorldSync { - public class WorldObject - { - public int ObjectId { get; protected set; } - } + public class WorldObject + { + public int ObjectId { get; protected set; } + } } diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index de23d5766..dad07d798 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -9,57 +9,57 @@ namespace QSB.WorldSync { - public static class WorldRegistry - { - private static readonly List WorldObjects = new List(); - public static List OrbSyncList = new List(); - public static List OldOrbList = new List(); - public static List OldDialogueTrees = new List(); + public static class WorldRegistry + { + private static readonly List WorldObjects = new List(); + public static List OrbSyncList = new List(); + public static List OldOrbList = new List(); + public static List OldDialogueTrees = new List(); - public static void AddObject(WorldObject worldObject) - { - if (WorldObjects.Contains(worldObject)) - { - return; - } - WorldObjects.Add(worldObject); - } + public static void AddObject(WorldObject worldObject) + { + if (WorldObjects.Contains(worldObject)) + { + return; + } + WorldObjects.Add(worldObject); + } - public static IEnumerable GetObjects() - => WorldObjects.OfType(); + public static IEnumerable GetObjects() + => WorldObjects.OfType(); - public static T GetObject(int id) where T : WorldObject - => GetObjects().FirstOrDefault(x => x.ObjectId == id); + public static T GetObject(int id) where T : WorldObject + => GetObjects().FirstOrDefault(x => x.ObjectId == id); - public static void RemoveObjects() where T : WorldObject - => WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); + public static void RemoveObjects() where T : WorldObject + => WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); - public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) - { - var slotList = GetObjects(); - if (slotList.Count() == 0) - { - DebugLog.ToConsole($"Error - No QSBOrbSlots found when handling slot state change.", MessageType.Error); - return; - } - var qsbSlot = slotList.First(x => x.InterfaceSlot == slot); - var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); - if (orbSync.hasAuthority) - { - qsbSlot.HandleEvent(state); - } - } + public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) + { + var slotList = GetObjects(); + if (slotList.Count() == 0) + { + DebugLog.ToConsole($"Error - No QSBOrbSlots found when handling slot state change.", MessageType.Error); + return; + } + var qsbSlot = slotList.First(x => x.InterfaceSlot == slot); + var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); + if (orbSync.hasAuthority) + { + qsbSlot.HandleEvent(state); + } + } - public static void RaiseEvent(object instance, string eventName) - { - if (!(instance.GetType() - .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)? - .GetValue(instance) is MulticastDelegate multiDelegate)) - { - return; - } - var delegateList = multiDelegate.GetInvocationList().ToList(); - delegateList.ForEach(x => x.DynamicInvoke(instance)); - } - } + public static void RaiseEvent(object instance, string eventName) + { + if (!(instance.GetType() + .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)? + .GetValue(instance) is MulticastDelegate multiDelegate)) + { + return; + } + var delegateList = multiDelegate.GetInvocationList().ToList(); + delegateList.ForEach(x => x.DynamicInvoke(instance)); + } + } } From 7d67bdb0dd00e0e40d5eee47a919ac78d48a9a73 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 19:16:03 +0000 Subject: [PATCH 095/207] Revert "death to spaces. tabs forever." --- QSB/Animation/AnimControllerPatch.cs | 36 +- QSB/Animation/AnimFloatParam.cs | 22 +- QSB/Animation/AnimationSync.cs | 458 ++++++------ QSB/Animation/AnimationType.cs | 20 +- QSB/Animation/AnimatorMirror.cs | 158 ++-- QSB/Animation/CrouchSync.cs | 116 +-- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 34 +- QSB/Animation/Events/CrouchEvent.cs | 42 +- QSB/Animation/Events/PlayerSuitEvent.cs | 96 +-- QSB/Animation/Events/QSBAnimationMessage.cs | 56 +- .../Events/QSBAnimationParametersMessage.cs | 44 +- .../Events/QSBAnimationTriggerMessage.cs | 30 +- QSB/Animation/PlayerHeadRotationSync.cs | 34 +- QSB/Animation/QSBNetworkAnimator.cs | 684 +++++++++--------- QSB/ConversationSync/ConversationManager.cs | 260 +++---- QSB/ConversationSync/ConversationPatches.cs | 192 ++--- QSB/ConversationSync/ConversationType.cs | 14 +- .../Events/ConversationEvent.cs | 76 +- .../Events/ConversationMessage.cs | 40 +- .../Events/ConversationStartEndEvent.cs | 104 +-- .../Events/ConversationStartEndMessage.cs | 40 +- QSB/DeathSync/DeathPatches.cs | 50 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 38 +- QSB/DeathSync/Necronomicon.cs | 190 ++--- QSB/DeathSync/PreventShipDestruction.cs | 60 +- QSB/DeathSync/RespawnOnDeath.cs | 258 +++---- QSB/ElevatorSync/ElevatorManager.cs | 50 +- QSB/ElevatorSync/ElevatorPatches.cs | 28 +- QSB/ElevatorSync/Events/ElevatorEvent.cs | 34 +- QSB/ElevatorSync/QSBElevator.cs | 88 +-- QSB/EventsCore/EventNames.cs | 72 +- QSB/EventsCore/EventType.cs | 52 +- QSB/EventsCore/IQSBEvent.cs | 10 +- QSB/EventsCore/QSBEvent.cs | 100 +-- QSB/EventsCore/QSBEventManager.cs | 84 +-- QSB/GeyserSync/Events/GeyserEvent.cs | 48 +- QSB/GeyserSync/GeyserManager.cs | 66 +- QSB/GeyserSync/QSBGeyser.cs | 58 +- QSB/Instruments/InstrumentsManager.cs | 206 +++--- QSB/Instruments/QSBCamera/CameraController.cs | 136 ++-- QSB/Instruments/QSBCamera/CameraManager.cs | 192 ++--- QSB/Instruments/QSBCamera/CameraMode.cs | 10 +- QSB/MessagesCore/EnumMessage.cs | 28 +- QSB/MessagesCore/FloatMessage.cs | 28 +- QSB/MessagesCore/MessageHandler.cs | 112 +-- QSB/MessagesCore/PlayerMessage.cs | 30 +- QSB/MessagesCore/ToggleMessage.cs | 28 +- QSB/OrbSync/Events/OrbSlotEvent.cs | 36 +- QSB/OrbSync/Events/OrbUserEvent.cs | 108 +-- QSB/OrbSync/OrbManager.cs | 96 +-- QSB/OrbSync/OrbPatches.cs | 106 +-- QSB/OrbSync/QSBOrbSlot.cs | 56 +- QSB/Patches/QSBPatch.cs | 10 +- QSB/Patches/QSBPatchManager.cs | 58 +- QSB/Patches/QSBPatchTypes.cs | 12 +- QSB/Player/Events/PlayerJoinEvent.cs | 52 +- QSB/Player/Events/PlayerJoinMessage.cs | 28 +- QSB/Player/Events/PlayerLeaveEvent.cs | 40 +- QSB/Player/Events/PlayerLeaveMessage.cs | 28 +- QSB/Player/Events/PlayerReadyEvent.cs | 72 +- QSB/Player/Events/PlayerSectorEvent.cs | 80 +- QSB/Player/Events/PlayerStateMessage.cs | 52 +- QSB/Player/Events/PlayerStatesRequestEvent.cs | 42 +- .../Events/ServerSendPlayerStatesEvent.cs | 56 +- QSB/Player/PlayerHUDMarker.cs | 108 +-- QSB/Player/PlayerInfo.cs | 132 ++-- QSB/Player/PlayerSyncObject.cs | 14 +- QSB/Player/QSBPlayerManager.cs | 248 +++---- QSB/Player/State.cs | 24 +- QSB/QSB.cs | 106 +-- QSB/QSBInputManager.cs | 94 +-- QSB/QSBNetworkLobby.cs | 114 +-- QSB/QSBNetworkManager.cs | 546 +++++++------- QSB/QSBSceneManager.cs | 50 +- QSB/SectorSync/QSBSector.cs | 26 +- QSB/SectorSync/QSBSectorManager.cs | 77 +- QSB/SectorSync/SectorSync.cs | 74 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 32 +- QSB/TimeSync/Events/ServerTimeMessage.cs | 34 +- QSB/TimeSync/PreserveTimeScale.cs | 34 +- QSB/TimeSync/TimeSyncType.cs | 12 +- QSB/TimeSync/WakeUpPatches.cs | 32 +- QSB/TimeSync/WakeUpSync.cs | 486 +++++++------ QSB/Tools/Events/PlayerFlashlightEvent.cs | 62 +- QSB/Tools/Events/PlayerProbeEvent.cs | 62 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 62 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 62 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 62 +- QSB/Tools/PlayerToolsManager.cs | 372 +++++----- QSB/Tools/ProbePatches.cs | 42 +- QSB/Tools/QSBFlashlight.cs | 142 ++-- QSB/Tools/QSBProbe.cs | 46 +- QSB/Tools/QSBTool.cs | 102 +-- QSB/Tools/ToolType.cs | 12 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 178 ++--- QSB/TransformSync/PlayerCameraSync.cs | 58 +- QSB/TransformSync/PlayerProbeSync.cs | 180 ++--- QSB/TransformSync/PlayerTransformSync.cs | 80 +- QSB/TransformSync/ShipTransformSync.cs | 108 +-- QSB/TransformSync/TransformSync.cs | 249 +++---- QSB/Utility/DebugActions.cs | 72 +- QSB/Utility/DebugLog.cs | 80 +- QSB/Utility/FlagsHelper.cs | 44 +- QSB/Utility/GOExtensions.cs | 48 +- QSB/Utility/ListExtensions.cs | 28 +- QSB/Utility/QuaternionHelper.cs | 56 +- .../Events/BoolWorldObjectMessage.cs | 28 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 28 +- QSB/WorldSync/WorldObject.cs | 8 +- QSB/WorldSync/WorldRegistry.cs | 100 +-- 110 files changed, 5108 insertions(+), 5050 deletions(-) diff --git a/QSB/Animation/AnimControllerPatch.cs b/QSB/Animation/AnimControllerPatch.cs index 00f411ff3..725702ae1 100644 --- a/QSB/Animation/AnimControllerPatch.cs +++ b/QSB/Animation/AnimControllerPatch.cs @@ -3,24 +3,24 @@ namespace QSB.Animation { - public static class AnimControllerPatch - { - public static RuntimeAnimatorController SuitedAnimController { get; private set; } + public static class AnimControllerPatch + { + public static RuntimeAnimatorController SuitedAnimController { get; private set; } - public static void Init() - { - QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); - QSB.Helper.Events.Event += OnEvent; - } + public static void Init() + { + QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); + QSB.Helper.Events.Event += OnEvent; + } - private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is PlayerAnimController playerAnimController && - ev == OWML.Common.Events.BeforeStart && - SuitedAnimController == null) - { - SuitedAnimController = playerAnimController.GetValue("_baseAnimController"); - } - } - } + private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is PlayerAnimController playerAnimController && + ev == OWML.Common.Events.BeforeStart && + SuitedAnimController == null) + { + SuitedAnimController = playerAnimController.GetValue("_baseAnimController"); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimFloatParam.cs b/QSB/Animation/AnimFloatParam.cs index be3a71a04..8b4f2e78a 100644 --- a/QSB/Animation/AnimFloatParam.cs +++ b/QSB/Animation/AnimFloatParam.cs @@ -2,17 +2,17 @@ namespace QSB.Animation { - public class AnimFloatParam - { - public float Current { get; private set; } - public float Target { get; set; } + public class AnimFloatParam + { + public float Current { get; private set; } + public float Target { get; set; } - private float _velocity; + private float _velocity; - public float Smooth(float smoothTime) - { - Current = Mathf.SmoothDamp(Current, Target, ref _velocity, smoothTime); - return Current; - } - } + public float Smooth(float smoothTime) + { + Current = Mathf.SmoothDamp(Current, Target, ref _velocity, smoothTime); + return Current; + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 58518feb5..318aeaba0 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -8,229 +8,237 @@ namespace QSB.Animation { - public class AnimationSync : PlayerSyncObject - { - private Animator _anim; - private QSBNetworkAnimator _netAnim; - - private RuntimeAnimatorController _suitedAnimController; - private AnimatorOverrideController _unsuitedAnimController; - private GameObject _suitedGraphics; - private GameObject _unsuitedGraphics; - private PlayerCharacterController _playerController; - private CrouchSync _crouchSync; - - private RuntimeAnimatorController _chertController; - private RuntimeAnimatorController _eskerController; - private RuntimeAnimatorController _feldsparController; - private RuntimeAnimatorController _gabbroController; - private RuntimeAnimatorController _riebeckController; - - public AnimatorMirror Mirror { get; private set; } - public AnimationType CurrentType = AnimationType.PlayerUnsuited; - public Animator Animator { get; private set; } - - private void Awake() - { - _anim = gameObject.AddComponent(); - _netAnim = gameObject.AddComponent(); - _netAnim.enabled = false; - _netAnim.animator = _anim; - - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); - } - - private void OnDestroy() - { - _netAnim.enabled = false; - if (_playerController == null) - { - return; - } - _playerController.OnJump -= OnJump; - _playerController.OnBecomeGrounded -= OnBecomeGrounded; - _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); - } - - private void LoadControllers() - { - var bundle = QSB.InstrumentAssetBundle; - _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; - _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; - } - - private void InitCommon(Transform body) - { - if (QSBSceneManager.IsInUniverse) - { - LoadControllers(); - } - _netAnim.enabled = true; - Animator = body.GetComponent(); - Mirror = body.gameObject.AddComponent(); - if (isLocalPlayer) - { - Mirror.Init(Animator, _anim); - } - else - { - Mirror.Init(_anim, Animator); - } - - QSBPlayerManager.PlayerSyncObjects.Add(this); - - for (var i = 0; i < _anim.parameterCount; i++) - { - _netAnim.SetParameterAutoSend(i, true); - } - - var playerAnimController = body.GetComponent(); - _suitedAnimController = AnimControllerPatch.SuitedAnimController; - _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); - _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); - _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); - } - - public void InitLocal(Transform body) - { - InitCommon(body); - - _playerController = body.parent.GetComponent(); - _playerController.OnJump += OnJump; - _playerController.OnBecomeGrounded += OnBecomeGrounded; - _playerController.OnBecomeUngrounded += OnBecomeUngrounded; - - InitCrouchSync(); - } - - public void InitRemote(Transform body) - { - InitCommon(body); - - var playerAnimController = body.GetComponent(); - playerAnimController.enabled = false; - - playerAnimController.SetValue("_suitedGroup", new GameObject()); - playerAnimController.SetValue("_unsuitedGroup", new GameObject()); - playerAnimController.SetValue("_baseAnimController", null); - playerAnimController.SetValue("_unsuitedAnimOverride", null); - playerAnimController.SetValue("_rightArmHidden", false); - - var rightArmObjects = playerAnimController.GetValue("_rightArmObjects").ToList(); - rightArmObjects.ForEach(rightArmObject => rightArmObject.layer = LayerMask.NameToLayer("Default")); - - body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; - body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; - - InitCrouchSync(); - - var ikSync = body.gameObject.AddComponent(); - QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); - } - - private void InitCrouchSync() - { - _crouchSync = gameObject.AddComponent(); - _crouchSync.Init(this, _playerController, Animator); - } - - private void OnJump() => _netAnim.SetTrigger("Jump"); - private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); - private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - - public void SendCrouch(float value = 0) - => GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - - public void HandleCrouch(float value) - => _crouchSync.CrouchParam.Target = value; - - private void SuitUp() - { - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); - SetAnimationType(AnimationType.PlayerSuited); - } - - private void SuitDown() - { - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); - SetAnimationType(AnimationType.PlayerUnsuited); - } - - public void SetSuitState(bool state) - { - if (state) - { - SuitUp(); - return; - } - SuitDown(); - } - - public void SetAnimationType(AnimationType type) - { - if (CurrentType == type) - { - return; - } - CurrentType = type; - if (_unsuitedAnimController == null) - { - DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); - } - if (_suitedAnimController == null) - { - DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); - } - RuntimeAnimatorController controller = default; - switch (type) - { - case AnimationType.PlayerSuited: - controller = _suitedAnimController; - _unsuitedGraphics?.SetActive(false); - _suitedGraphics?.SetActive(true); - break; - case AnimationType.PlayerUnsuited: - controller = _unsuitedAnimController; - _unsuitedGraphics?.SetActive(true); - _suitedGraphics?.SetActive(false); - break; - case AnimationType.Chert: - controller = _chertController; - break; - case AnimationType.Esker: - controller = _eskerController; - break; - case AnimationType.Feldspar: - controller = _feldsparController; - break; - case AnimationType.Gabbro: - controller = _gabbroController; - break; - case AnimationType.Riebeck: - controller = _riebeckController; - break; - } - _anim.runtimeAnimatorController = controller; - Animator.runtimeAnimatorController = controller; - if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) - { - Animator.SetTrigger("Playing"); - _anim.SetTrigger("Playing"); - } - else - { - // Avoids "jumping" when exiting instrument and putting on suit - Animator.SetTrigger("Grounded"); - _anim.SetTrigger("Grounded"); - } - _netAnim.animator = _anim; // Probably not needed. - Mirror.RebuildFloatParams(); - for (var i = 0; i < _anim.parameterCount; i++) - { - _netAnim.SetParameterAutoSend(i, true); - } - } - } + public class AnimationSync : PlayerSyncObject + { + private Animator _anim; + private Animator _bodyAnim; + private QSBNetworkAnimator _netAnim; + + private RuntimeAnimatorController _suitedAnimController; + private AnimatorOverrideController _unsuitedAnimController; + private GameObject _suitedGraphics; + private GameObject _unsuitedGraphics; + private PlayerCharacterController _playerController; + private CrouchSync _crouchSync; + + private RuntimeAnimatorController _chertController; + private RuntimeAnimatorController _eskerController; + private RuntimeAnimatorController _feldsparController; + private RuntimeAnimatorController _gabbroController; + private RuntimeAnimatorController _riebeckController; + + public AnimatorMirror Mirror { get; private set; } + public AnimationType CurrentType = AnimationType.PlayerUnsuited; + public Animator Animator + { + get { return _bodyAnim; } + } + + private void Awake() + { + _anim = gameObject.AddComponent(); + _netAnim = gameObject.AddComponent(); + _netAnim.enabled = false; + _netAnim.animator = _anim; + + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); + } + + private void OnDestroy() + { + _netAnim.enabled = false; + if (_playerController == null) + { + return; + } + _playerController.OnJump -= OnJump; + _playerController.OnBecomeGrounded -= OnBecomeGrounded; + _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; + + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); + } + + private void LoadControllers() + { + var bundle = QSB.InstrumentAssetBundle; + _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; + _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; + } + + private void InitCommon(Transform body) + { + if (QSBSceneManager.IsInUniverse) + { + LoadControllers(); + } + _netAnim.enabled = true; + _bodyAnim = body.GetComponent(); + Mirror = body.gameObject.AddComponent(); + if (isLocalPlayer) + { + Mirror.Init(_bodyAnim, _anim); + } + else + { + Mirror.Init(_anim, _bodyAnim); + } + + QSBPlayerManager.PlayerSyncObjects.Add(this); + + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } + + var playerAnimController = body.GetComponent(); + _suitedAnimController = AnimControllerPatch.SuitedAnimController; + _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); + _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); + _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); + } + + public void InitLocal(Transform body) + { + InitCommon(body); + + _playerController = body.parent.GetComponent(); + _playerController.OnJump += OnJump; + _playerController.OnBecomeGrounded += OnBecomeGrounded; + _playerController.OnBecomeUngrounded += OnBecomeUngrounded; + + InitCrouchSync(); + } + + public void InitRemote(Transform body) + { + InitCommon(body); + + var playerAnimController = body.GetComponent(); + playerAnimController.enabled = false; + + playerAnimController.SetValue("_suitedGroup", new GameObject()); + playerAnimController.SetValue("_unsuitedGroup", new GameObject()); + playerAnimController.SetValue("_baseAnimController", null); + playerAnimController.SetValue("_unsuitedAnimOverride", null); + playerAnimController.SetValue("_rightArmHidden", false); + + var rightArmObjects = playerAnimController.GetValue("_rightArmObjects").ToList(); + rightArmObjects.ForEach(rightArmObject => rightArmObject.layer = LayerMask.NameToLayer("Default")); + + body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; + body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; + + InitCrouchSync(); + + var ikSync = body.gameObject.AddComponent(); + QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); + } + + private void InitCrouchSync() + { + _crouchSync = gameObject.AddComponent(); + _crouchSync.Init(this, _playerController, _bodyAnim); + } + + private void OnJump() => _netAnim.SetTrigger("Jump"); + private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); + private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); + + public void SendCrouch(float value = 0) + { + GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); + } + + public void HandleCrouch(float value) + { + _crouchSync.CrouchParam.Target = value; + } + + private void SuitUp() + { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); + SetAnimationType(AnimationType.PlayerSuited); + } + + private void SuitDown() + { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); + SetAnimationType(AnimationType.PlayerUnsuited); + } + + public void SetSuitState(bool state) + { + if (state) + { + SuitUp(); + return; + } + SuitDown(); + } + + public void SetAnimationType(AnimationType type) + { + if (CurrentType == type) + { + return; + } + CurrentType = type; + if (_unsuitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); + } + if (_suitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); + } + RuntimeAnimatorController controller = default; + switch (type) + { + case AnimationType.PlayerSuited: + controller = _suitedAnimController; + _unsuitedGraphics?.SetActive(false); + _suitedGraphics?.SetActive(true); + break; + case AnimationType.PlayerUnsuited: + controller = _unsuitedAnimController; + _unsuitedGraphics?.SetActive(true); + _suitedGraphics?.SetActive(false); + break; + case AnimationType.Chert: + controller = _chertController; + break; + case AnimationType.Esker: + controller = _eskerController; + break; + case AnimationType.Feldspar: + controller = _feldsparController; + break; + case AnimationType.Gabbro: + controller = _gabbroController; + break; + case AnimationType.Riebeck: + controller = _riebeckController; + break; + } + _anim.runtimeAnimatorController = controller; + _bodyAnim.runtimeAnimatorController = controller; + if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) + { + _bodyAnim.SetTrigger("Playing"); + _anim.SetTrigger("Playing"); + } + else + { + // Avoids "jumping" when exiting instrument and putting on suit + _bodyAnim.SetTrigger("Grounded"); + _anim.SetTrigger("Grounded"); + } + _netAnim.animator = _anim; // Probably not needed. + Mirror.RebuildFloatParams(); + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs index 977bcda4f..6b6e44ba9 100644 --- a/QSB/Animation/AnimationType.cs +++ b/QSB/Animation/AnimationType.cs @@ -1,13 +1,13 @@ namespace QSB.Animation { - public enum AnimationType - { - Chert, - Esker, - Feldspar, - Gabbro, - PlayerSuited, - PlayerUnsuited, - Riebeck - } + public enum AnimationType + { + Chert, + Esker, + Feldspar, + Gabbro, + PlayerSuited, + PlayerUnsuited, + Riebeck + } } \ No newline at end of file diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 8a0debd9c..3fb87fd0d 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -7,90 +7,92 @@ namespace QSB.Animation { - public class AnimatorMirror : MonoBehaviour - { - private const float SmoothTime = 0.05f; + public class AnimatorMirror : MonoBehaviour + { + private const float SmoothTime = 0.05f; - private Animator _from; - private Animator _to; + private Animator _from; + private Animator _to; - private readonly Dictionary _floatParams = new Dictionary(); + private readonly Dictionary _floatParams = new Dictionary(); - public void Init(Animator from, Animator to) - { - _from = from; - _to = to; - if (_from.runtimeAnimatorController == null) - { - DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); - _from.runtimeAnimatorController = _to.runtimeAnimatorController; - } - else if (_to.runtimeAnimatorController == null) - { - DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); - _to.runtimeAnimatorController = _from.runtimeAnimatorController; - } - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } - } + public void Init(Animator from, Animator to) + { + _from = from; + _to = to; + if (_from.runtimeAnimatorController == null) + { + DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); + _from.runtimeAnimatorController = _to.runtimeAnimatorController; + } + else if (_to.runtimeAnimatorController == null) + { + DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); + _to.runtimeAnimatorController = _from.runtimeAnimatorController; + } + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } - private PlayerInfo GetPlayer() - => QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; + private PlayerInfo GetPlayer() + { + return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; + } - private void Update() - { - if (_to == null || _from == null) - { - return; - } - if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) - { - _to.runtimeAnimatorController = _from.runtimeAnimatorController; - } - SyncParams(); - SmoothFloats(); - } + private void Update() + { + if (_to == null || _from == null) + { + return; + } + if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) + { + _to.runtimeAnimatorController = _from.runtimeAnimatorController; + } + SyncParams(); + SmoothFloats(); + } - private void SyncParams() - { - foreach (var fromParam in _from.parameters) - { - switch (fromParam.type) - { - case AnimatorControllerParameterType.Float: - if (!_floatParams.ContainsKey(fromParam.name)) - { - DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); - RebuildFloatParams(); - break; - } - _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); - break; - case AnimatorControllerParameterType.Bool: - _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); - break; - } - } - } + private void SyncParams() + { + foreach (var fromParam in _from.parameters) + { + switch (fromParam.type) + { + case AnimatorControllerParameterType.Float: + if (!_floatParams.ContainsKey(fromParam.name)) + { + DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); + RebuildFloatParams(); + break; + } + _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); + break; + case AnimatorControllerParameterType.Bool: + _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); + break; + } + } + } - private void SmoothFloats() - { - foreach (var floatParam in _floatParams) - { - var current = floatParam.Value.Smooth(SmoothTime); - _to.SetFloat(floatParam.Key, current); - } - } + private void SmoothFloats() + { + foreach (var floatParam in _floatParams) + { + var current = floatParam.Value.Smooth(SmoothTime); + _to.SetFloat(floatParam.Key, current); + } + } - public void RebuildFloatParams() - { - _floatParams.Clear(); - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } - } - } + public void RebuildFloatParams() + { + _floatParams.Clear(); + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 51b6cb529..559762cb0 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -4,69 +4,69 @@ namespace QSB.Animation { - public class CrouchSync : NetworkBehaviour - { - public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); + public class CrouchSync : NetworkBehaviour + { + public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); - private const float CrouchSendInterval = 0.1f; - private const float CrouchChargeThreshold = 0.01f; - private const float CrouchSmoothTime = 0.05f; - private const int CrouchLayerIndex = 1; + private const float CrouchSendInterval = 0.1f; + private const float CrouchChargeThreshold = 0.01f; + private const float CrouchSmoothTime = 0.05f; + private const int CrouchLayerIndex = 1; - private float _sendTimer; - private float _lastSentJumpChargeFraction; + private float _sendTimer; + private float _lastSentJumpChargeFraction; - private AnimationSync _animationSync; - private PlayerCharacterController _playerController; - private Animator _bodyAnim; + private AnimationSync _animationSync; + private PlayerCharacterController _playerController; + private Animator _bodyAnim; - public void Init(AnimationSync animationSync, PlayerCharacterController playerController, Animator bodyAnim) - { - _animationSync = animationSync; - _playerController = playerController; - _bodyAnim = bodyAnim; - } + public void Init(AnimationSync animationSync, PlayerCharacterController playerController, Animator bodyAnim) + { + _animationSync = animationSync; + _playerController = playerController; + _bodyAnim = bodyAnim; + } - private void Update() - { - if (isLocalPlayer) - { - SyncLocalCrouch(); - return; - } - SyncRemoteCrouch(); - } + private void Update() + { + if (isLocalPlayer) + { + SyncLocalCrouch(); + return; + } + SyncRemoteCrouch(); + } - private void SyncLocalCrouch() - { - if (_playerController == null) - { - return; - } - _sendTimer += Time.unscaledDeltaTime; - if (_sendTimer < CrouchSendInterval) - { - return; - } - var jumpChargeFraction = _playerController.GetJumpChargeFraction(); - if (Math.Abs(jumpChargeFraction - _lastSentJumpChargeFraction) < CrouchChargeThreshold) - { - return; - } - _animationSync.SendCrouch(jumpChargeFraction); - _lastSentJumpChargeFraction = jumpChargeFraction; - _sendTimer = 0; - } + private void SyncLocalCrouch() + { + if (_playerController == null) + { + return; + } + _sendTimer += Time.unscaledDeltaTime; + if (_sendTimer < CrouchSendInterval) + { + return; + } + var jumpChargeFraction = _playerController.GetJumpChargeFraction(); + if (Math.Abs(jumpChargeFraction - _lastSentJumpChargeFraction) < CrouchChargeThreshold) + { + return; + } + _animationSync.SendCrouch(jumpChargeFraction); + _lastSentJumpChargeFraction = jumpChargeFraction; + _sendTimer = 0; + } - private void SyncRemoteCrouch() - { - if (_bodyAnim == null) - { - return; - } - CrouchParam.Smooth(CrouchSmoothTime); - var jumpChargeFraction = CrouchParam.Current; - _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); - } - } + private void SyncRemoteCrouch() + { + if (_bodyAnim == null) + { + return; + } + CrouchParam.Smooth(CrouchSmoothTime); + var jumpChargeFraction = CrouchParam.Current; + _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 76d96e680..415c90fc9 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -5,26 +5,26 @@ namespace QSB.Animation.Events { - public class ChangeAnimTypeEvent : QSBEvent> - { - public override EventType Type => EventType.PlayInstrument; + public class ChangeAnimTypeEvent : QSBEvent> + { + public override EventType Type => EventType.PlayInstrument; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); - private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); + private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); - private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage - { - AboutId = player, - Value = type - }; + private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage + { + AboutId = player, + Value = type + }; - public override void OnReceiveRemote(EnumMessage message) - { - QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); - QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); - } - } + public override void OnReceiveRemote(EnumMessage message) + { + QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); + QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index a38232cd2..1a4191f6f 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -4,30 +4,30 @@ namespace QSB.Animation.Events { - public class CrouchEvent : QSBEvent - { - public override EventType Type => EventType.AnimTrigger; + public class CrouchEvent : QSBEvent + { + public override EventType Type => EventType.AnimTrigger; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); - private void Handler(float value) => SendEvent(CreateMessage(value)); + private void Handler(float value) => SendEvent(CreateMessage(value)); - private FloatMessage CreateMessage(float value) => new FloatMessage - { - AboutId = LocalPlayerId, - Value = value - }; + private FloatMessage CreateMessage(float value) => new FloatMessage + { + AboutId = LocalPlayerId, + Value = value + }; - public override void OnReceiveRemote(FloatMessage message) - { - var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); - if (animationSync == null) - { - return; - } - animationSync.HandleCrouch(message.Value); - } - } + public override void OnReceiveRemote(FloatMessage message) + { + var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); + if (animationSync == null) + { + return; + } + animationSync.HandleCrouch(message.Value); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 57e5de49f..b2924ab4e 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -4,52 +4,52 @@ namespace QSB.Animation { - public class PlayerSuitEvent : QSBEvent - { - public override EventType Type => EventType.SuitActiveChange; - - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.SuitUp, HandleSuitUp); - GlobalMessenger.AddListener(EventNames.RemoveSuit, HandleSuitDown); - } - - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.SuitUp, HandleSuitUp); - GlobalMessenger.RemoveListener(EventNames.RemoveSuit, HandleSuitDown); - } - - private void HandleSuitUp() => SendEvent(CreateMessage(true)); - private void HandleSuitDown() => SendEvent(CreateMessage(false)); - - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; - - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player?.UpdateState(State.Suit, message.ToggleValue); - - if (!player.IsReady) - { - return; - } - - var animator = player.AnimationSync; - var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; - animator.SetAnimationType(type); - } - - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); - var animator = QSBPlayerManager.LocalPlayer.AnimationSync; - var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; - animator.CurrentType = type; - } - } + public class PlayerSuitEvent : QSBEvent + { + public override EventType Type => EventType.SuitActiveChange; + + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.SuitUp, HandleSuitUp); + GlobalMessenger.AddListener(EventNames.RemoveSuit, HandleSuitDown); + } + + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.SuitUp, HandleSuitUp); + GlobalMessenger.RemoveListener(EventNames.RemoveSuit, HandleSuitDown); + } + + private void HandleSuitUp() => SendEvent(CreateMessage(true)); + private void HandleSuitDown() => SendEvent(CreateMessage(false)); + + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; + + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player?.UpdateState(State.Suit, message.ToggleValue); + + if (!player.IsReady) + { + return; + } + + var animator = player.AnimationSync; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.SetAnimationType(type); + } + + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); + var animator = QSBPlayerManager.LocalPlayer.AnimationSync; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.CurrentType = type; + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs index 85557fd9b..ab6523b5c 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -2,34 +2,34 @@ namespace QSB.Animation.Events { - class QSBAnimationMessage : MessageBase - { - public NetworkInstanceId netId; - public int stateHash; - public float normalizedTime; - public byte[] parameters; + class QSBAnimationMessage : MessageBase + { + public NetworkInstanceId netId; + public int stateHash; + public float normalizedTime; + public byte[] parameters; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - stateHash = (int)reader.ReadPackedUInt32(); - normalizedTime = reader.ReadSingle(); - parameters = reader.ReadBytesAndSize(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - writer.WritePackedUInt32((uint)stateHash); - writer.Write(normalizedTime); - if (parameters == null) - { - writer.WriteBytesAndSize(parameters, 0); - } - else - { - writer.WriteBytesAndSize(parameters, parameters.Length); - } - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)stateHash); + writer.Write(normalizedTime); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs index a01082883..4d34b97f6 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -2,28 +2,28 @@ namespace QSB.Animation.Events { - class QSBAnimationParametersMessage : MessageBase - { - public NetworkInstanceId netId; - public byte[] parameters; + class QSBAnimationParametersMessage : MessageBase + { + public NetworkInstanceId netId; + public byte[] parameters; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - parameters = reader.ReadBytesAndSize(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + parameters = reader.ReadBytesAndSize(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - if (parameters == null) - { - writer.WriteBytesAndSize(parameters, 0); - } - else - { - writer.WriteBytesAndSize(parameters, parameters.Length); - } - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs index 414e2f029..1be48b7d9 100644 --- a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs +++ b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs @@ -2,21 +2,21 @@ namespace QSB.Animation.Events { - class QSBAnimationTriggerMessage : MessageBase - { - public NetworkInstanceId netId; - public int hash; + class QSBAnimationTriggerMessage : MessageBase + { + public NetworkInstanceId netId; + public int hash; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - hash = (int)reader.ReadPackedUInt32(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + hash = (int)reader.ReadPackedUInt32(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - writer.WritePackedUInt32((uint)hash); - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)hash); + } + } } \ No newline at end of file diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index 9d29335e8..4905a7cf8 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -2,23 +2,23 @@ namespace QSB.Animation { - public class PlayerHeadRotationSync : MonoBehaviour - { - private Animator _attachedAnimator; - private Transform _lookBase; + public class PlayerHeadRotationSync : MonoBehaviour + { + private Animator _attachedAnimator; + private Transform _lookBase; - public void Init(Transform lookBase) - { - _attachedAnimator = GetComponent(); - _lookBase = lookBase; - } + public void Init(Transform lookBase) + { + _attachedAnimator = GetComponent(); + _lookBase = lookBase; + } - void LateUpdate() - { - var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); - // Get the camera's local rotation with respect to the player body - var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; - bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); - } - } + void LateUpdate() + { + var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); + // Get the camera's local rotation with respect to the player body + var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; + bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); + } + } } \ No newline at end of file diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index 220fd6333..fd4d89f06 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -4,372 +4,372 @@ namespace QSB.Animation { - // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. + // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. - [RequireComponent(typeof(NetworkIdentity))] - [RequireComponent(typeof(Animator))] - class QSBNetworkAnimator : NetworkBehaviour - { - private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); - private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); - private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); + [RequireComponent(typeof(NetworkIdentity))] + [RequireComponent(typeof(Animator))] + class QSBNetworkAnimator : NetworkBehaviour + { + private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); + private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); + private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); - private Animator m_Animator; - private uint m_ParameterSendBits; - private int m_AnimationHash; - private int m_TransitionHash; - private NetworkWriter m_ParameterWriter; - private float m_SendTimer; + private Animator m_Animator; + private uint m_ParameterSendBits; + private int m_AnimationHash; + private int m_TransitionHash; + private NetworkWriter m_ParameterWriter; + private float m_SendTimer; - public Animator animator - { - get - { - return m_Animator; - } - set - { - m_Animator = value; - m_ParameterSendBits = 0U; - } - } + public Animator animator + { + get + { + return m_Animator; + } + set + { + m_Animator = value; + m_ParameterSendBits = 0U; + } + } - public void SetParameterAutoSend(int index, bool value) - { - if (value) - m_ParameterSendBits |= (uint)(1 << index); - else - m_ParameterSendBits &= (uint)~(1 << index); - } + public void SetParameterAutoSend(int index, bool value) + { + if (value) + m_ParameterSendBits |= (uint)(1 << index); + else + m_ParameterSendBits &= (uint)~(1 << index); + } - public bool GetParameterAutoSend(int index) - { - return ((int)m_ParameterSendBits & 1 << index) != 0; - } + public bool GetParameterAutoSend(int index) + { + return ((int)m_ParameterSendBits & 1 << index) != 0; + } - public override void OnStartAuthority() - { - m_ParameterWriter = new NetworkWriter(); - } + public override void OnStartAuthority() + { + m_ParameterWriter = new NetworkWriter(); + } - private void FixedUpdate() - { - if (m_ParameterWriter == null) - { - return; - } - CheckSendRate(); - if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) - { - return; - } - var animationMessage = new QSBAnimationMessage - { - netId = netId, - stateHash = stateHash, - normalizedTime = normalizedTime - }; + private void FixedUpdate() + { + if (m_ParameterWriter == null) + { + return; + } + CheckSendRate(); + if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) + { + return; + } + var animationMessage = new QSBAnimationMessage + { + netId = netId, + stateHash = stateHash, + normalizedTime = normalizedTime + }; - m_ParameterWriter.SeekZero(); - WriteParameters(m_ParameterWriter, false); - animationMessage.parameters = m_ParameterWriter.ToArray(); + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, false); + animationMessage.parameters = m_ParameterWriter.ToArray(); - if (hasAuthority || ClientScene.readyConnection != null) - { - ClientScene.readyConnection.Send(40, animationMessage); - } - else - { - if (!isServer || localPlayerAuthority) - { - return; - } - NetworkServer.SendToReady(gameObject, 40, animationMessage); - } - } + if (hasAuthority || ClientScene.readyConnection != null) + { + ClientScene.readyConnection.Send(40, animationMessage); + } + else + { + if (!isServer || localPlayerAuthority) + { + return; + } + NetworkServer.SendToReady(gameObject, 40, animationMessage); + } + } - private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) - { - stateHash = 0; - normalizedTime = 0.0f; - if (m_Animator.IsInTransition(0)) - { - var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); - if (animatorTransitionInfo.fullPathHash == m_TransitionHash) - { - return false; - } - m_TransitionHash = animatorTransitionInfo.fullPathHash; - m_AnimationHash = 0; - return true; - } - var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); - if (animatorStateInfo.fullPathHash == m_AnimationHash) - { - return false; - } - if (m_AnimationHash != 0) - { - stateHash = animatorStateInfo.fullPathHash; - normalizedTime = animatorStateInfo.normalizedTime; - } - m_TransitionHash = 0; - m_AnimationHash = animatorStateInfo.fullPathHash; - return true; - } + private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) + { + stateHash = 0; + normalizedTime = 0.0f; + if (m_Animator.IsInTransition(0)) + { + var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); + if (animatorTransitionInfo.fullPathHash == m_TransitionHash) + { + return false; + } + m_TransitionHash = animatorTransitionInfo.fullPathHash; + m_AnimationHash = 0; + return true; + } + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + if (animatorStateInfo.fullPathHash == m_AnimationHash) + { + return false; + } + if (m_AnimationHash != 0) + { + stateHash = animatorStateInfo.fullPathHash; + normalizedTime = animatorStateInfo.normalizedTime; + } + m_TransitionHash = 0; + m_AnimationHash = animatorStateInfo.fullPathHash; + return true; + } - private void CheckSendRate() - { - if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) - { - return; - } - m_SendTimer = Time.time + GetNetworkSendInterval(); - var parametersMessage = new QSBAnimationParametersMessage - { - netId = netId - }; - m_ParameterWriter.SeekZero(); - WriteParameters(m_ParameterWriter, true); - parametersMessage.parameters = m_ParameterWriter.ToArray(); - if (hasAuthority && ClientScene.readyConnection != null) - { - ClientScene.readyConnection.Send(41, parametersMessage); - } - else - { - if (!isServer || localPlayerAuthority) - return; - NetworkServer.SendToReady(gameObject, 41, parametersMessage); - } - } + private void CheckSendRate() + { + if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) + { + return; + } + m_SendTimer = Time.time + GetNetworkSendInterval(); + var parametersMessage = new QSBAnimationParametersMessage + { + netId = netId + }; + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, true); + parametersMessage.parameters = m_ParameterWriter.ToArray(); + if (hasAuthority && ClientScene.readyConnection != null) + { + ClientScene.readyConnection.Send(41, parametersMessage); + } + else + { + if (!isServer || localPlayerAuthority) + return; + NetworkServer.SendToReady(gameObject, 41, parametersMessage); + } + } - internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) - { - if (hasAuthority) - { - return; - } - if (msg.stateHash != 0) - { - m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); - } - ReadParameters(reader, false); - } + internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) + { + if (hasAuthority) + { + return; + } + if (msg.stateHash != 0) + { + m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); + } + ReadParameters(reader, false); + } - internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) - { - if (hasAuthority) - { - return; - } - ReadParameters(reader, true); - } + internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) + { + if (hasAuthority) + { + return; + } + ReadParameters(reader, true); + } - internal void HandleAnimTriggerMsg(int hash) - { - m_Animator.SetTrigger(hash); - } + internal void HandleAnimTriggerMsg(int hash) + { + m_Animator.SetTrigger(hash); + } - private void WriteParameters(NetworkWriter writer, bool autoSend) - { - for (int index = 0; index < m_Animator.parameters.Length; ++index) - { - if (!autoSend || GetParameterAutoSend(index)) - { - var parameter = m_Animator.parameters[index]; - switch (parameter.type) - { - case AnimatorControllerParameterType.Int: - writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); - break; - case AnimatorControllerParameterType.Float: - writer.Write(m_Animator.GetFloat(parameter.nameHash)); - break; - case AnimatorControllerParameterType.Bool: - writer.Write(m_Animator.GetBool(parameter.nameHash)); - break; - } - } - } - } + private void WriteParameters(NetworkWriter writer, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Float: + writer.Write(m_Animator.GetFloat(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Bool: + writer.Write(m_Animator.GetBool(parameter.nameHash)); + break; + } + } + } + } - private void ReadParameters(NetworkReader reader, bool autoSend) - { - for (int index = 0; index < m_Animator.parameters.Length; ++index) - { - if (!autoSend || GetParameterAutoSend(index)) - { - var parameter = m_Animator.parameters[index]; - if (reader.Length == reader.Position) - { - return; - } - switch (parameter.type) - { - case AnimatorControllerParameterType.Int: - var num = (int)reader.ReadPackedUInt32(); - m_Animator.SetInteger(parameter.nameHash, num); - break; - case AnimatorControllerParameterType.Float: - var single = reader.ReadSingle(); - m_Animator.SetFloat(parameter.nameHash, single); - break; - case AnimatorControllerParameterType.Bool: - var flag = reader.ReadBoolean(); - m_Animator.SetBool(parameter.nameHash, flag); - break; - } - } - } - } + private void ReadParameters(NetworkReader reader, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + if (reader.Length == reader.Position) + { + return; + } + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + var num = (int)reader.ReadPackedUInt32(); + m_Animator.SetInteger(parameter.nameHash, num); + break; + case AnimatorControllerParameterType.Float: + var single = reader.ReadSingle(); + m_Animator.SetFloat(parameter.nameHash, single); + break; + case AnimatorControllerParameterType.Bool: + var flag = reader.ReadBoolean(); + m_Animator.SetBool(parameter.nameHash, flag); + break; + } + } + } + } - public override bool OnSerialize(NetworkWriter writer, bool forceAll) - { - if (!forceAll) - { - return false; - } - if (m_Animator.IsInTransition(0)) - { - var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); - writer.Write(animatorStateInfo.fullPathHash); - writer.Write(animatorStateInfo.normalizedTime); - } - else - { - var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); - writer.Write(animatorStateInfo.fullPathHash); - writer.Write(animatorStateInfo.normalizedTime); - } - WriteParameters(writer, false); - return true; - } + public override bool OnSerialize(NetworkWriter writer, bool forceAll) + { + if (!forceAll) + { + return false; + } + if (m_Animator.IsInTransition(0)) + { + var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + else + { + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + WriteParameters(writer, false); + return true; + } - public override void OnDeserialize(NetworkReader reader, bool initialState) - { - if (!initialState) - { - return; - } - var stateNameHash = reader.ReadInt32(); - var normalizedTime = reader.ReadSingle(); - ReadParameters(reader, false); - m_Animator.Play(stateNameHash, 0, normalizedTime); - } + public override void OnDeserialize(NetworkReader reader, bool initialState) + { + if (!initialState) + { + return; + } + var stateNameHash = reader.ReadInt32(); + var normalizedTime = reader.ReadSingle(); + ReadParameters(reader, false); + m_Animator.Play(stateNameHash, 0, normalizedTime); + } - public void SetTrigger(string triggerName) - { - SetTrigger(Animator.StringToHash(triggerName)); - } + public void SetTrigger(string triggerName) + { + SetTrigger(Animator.StringToHash(triggerName)); + } - public void SetTrigger(int hash) - { - var animationTriggerMessage = new QSBAnimationTriggerMessage - { - netId = netId, - hash = hash - }; - if (hasAuthority && localPlayerAuthority) - { - if (NetworkClient.allClients.Count <= 0) - { - return; - } - var readyConnection = ClientScene.readyConnection; - if (readyConnection == null) - { - return; - } - readyConnection.Send(42, animationTriggerMessage); - } - else - { - if (!isServer || localPlayerAuthority) - { - return; - } - NetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); - } - } + public void SetTrigger(int hash) + { + var animationTriggerMessage = new QSBAnimationTriggerMessage + { + netId = netId, + hash = hash + }; + if (hasAuthority && localPlayerAuthority) + { + if (NetworkClient.allClients.Count <= 0) + { + return; + } + var readyConnection = ClientScene.readyConnection; + if (readyConnection == null) + { + return; + } + readyConnection.Send(42, animationTriggerMessage); + } + else + { + if (!isServer || localPlayerAuthority) + { + return; + } + NetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); + } + } - internal static void OnAnimationServerMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(AnimationMessage); - var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - var reader = new NetworkReader(AnimationMessage.parameters); - component?.HandleAnimMsg(AnimationMessage, reader); - NetworkServer.SendToReady(localObject, 40, AnimationMessage); - } + internal static void OnAnimationServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(AnimationMessage); + var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(AnimationMessage.parameters); + component?.HandleAnimMsg(AnimationMessage, reader); + NetworkServer.SendToReady(localObject, 40, AnimationMessage); + } - internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(ParametersMessage); - var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - var reader = new NetworkReader(ParametersMessage.parameters); - component?.HandleAnimParamsMsg(ParametersMessage, reader); - NetworkServer.SendToReady(localObject, 41, ParametersMessage); - } + internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(ParametersMessage); + var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(ParametersMessage.parameters); + component?.HandleAnimParamsMsg(ParametersMessage, reader); + NetworkServer.SendToReady(localObject, 41, ParametersMessage); + } - internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(TriggersMessage); - var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - component?.HandleAnimTriggerMsg(TriggersMessage.hash); - NetworkServer.SendToReady(localObject, 42, TriggersMessage); - } + internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(TriggersMessage); + var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + component?.HandleAnimTriggerMsg(TriggersMessage.hash); + NetworkServer.SendToReady(localObject, 42, TriggersMessage); + } - internal static void OnAnimationClientMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(AnimationMessage); - var localObject = ClientScene.FindLocalObject(AnimationMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - var reader = new NetworkReader(AnimationMessage.parameters); - component.HandleAnimMsg(AnimationMessage, reader); - } + internal static void OnAnimationClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(AnimationMessage); + var localObject = ClientScene.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + var reader = new NetworkReader(AnimationMessage.parameters); + component.HandleAnimMsg(AnimationMessage, reader); + } - internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(ParametersMessage); - var localObject = ClientScene.FindLocalObject(ParametersMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - var reader = new NetworkReader(ParametersMessage.parameters); - component.HandleAnimParamsMsg(ParametersMessage, reader); - } + internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(ParametersMessage); + var localObject = ClientScene.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + var reader = new NetworkReader(ParametersMessage.parameters); + component.HandleAnimParamsMsg(ParametersMessage, reader); + } - internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) - { - netMsg.ReadMessage(TriggersMessage); - var localObject = ClientScene.FindLocalObject(TriggersMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - component.HandleAnimTriggerMsg(TriggersMessage.hash); - } - } + internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(TriggersMessage); + var localObject = ClientScene.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + component.HandleAnimTriggerMsg(TriggersMessage.hash); + } + } } \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index b2a25d83e..ebfc74d38 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -11,134 +11,134 @@ namespace QSB.ConversationSync { - public class ConversationManager : MonoBehaviour - { - public static ConversationManager Instance { get; private set; } - public AssetBundle ConversationAssetBundle { get; private set; } - private GameObject BoxPrefab; - public Dictionary BoxMappings = new Dictionary(); - - private void Start() - { - Instance = this; - - ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); - - BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); - var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); - if (font == null) - { - DebugLog.ToConsole("Error - Font is null!", MessageType.Error); - } - BoxPrefab.GetComponent().font = font; - BoxPrefab.GetComponent().color = Color.white; - } - - public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) - { - var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); - if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) - { - // No player talking to tree - return uint.MaxValue; - } - // .First() should be fine here as only one player should be talking to a character. - return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; - } - - public void SendPlayerOption(string text) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); - } - - public void SendCharacterDialogue(int id, string text) - { - if (id == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); - } - - public void CloseBoxPlayer() - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); - } - - public void CloseBoxCharacter(int id) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); - } - - public void SendConvState(int charId, bool state) - { - if (charId == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); - } - - public void DisplayPlayerConversationBox(uint playerId, string text) - { - if (playerId == QSBPlayerManager.LocalPlayerId) - { - DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); - return; - } - - var player = QSBPlayerManager.GetPlayer(playerId); - - // Destroy old box if it exists - var playerBox = player.CurrentDialogueBox; - if (playerBox != null) - { - Destroy(playerBox); - } - - QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); - } - - public void DisplayCharacterConversationBox(int index, string text) - { - if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) - { - DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); - return; - } - - // Remove old box if it exists - var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; - if (BoxMappings.ContainsKey(oldDialogueTree)) - { - Destroy(BoxMappings[oldDialogueTree]); - BoxMappings.Remove(oldDialogueTree); - } - - BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); - } - - private GameObject CreateBox(Transform parent, float vertOffset, string text) - { - var newBox = Instantiate(BoxPrefab); - newBox.SetActive(false); - newBox.transform.parent = parent; - newBox.transform.localPosition = new Vector3(0, vertOffset, 0); - newBox.transform.rotation = parent.rotation; - var lookAt = newBox.AddComponent(); - lookAt.SetValue("_useLookAt", false); - lookAt.SetValue("_localFacingVector", Vector3.back); - lookAt.SetValue("_localRotationAxis", Vector3.up); - newBox.GetComponent().text = text; - newBox.SetActive(true); - return newBox; - } - } + public class ConversationManager : MonoBehaviour + { + public static ConversationManager Instance { get; private set; } + public AssetBundle ConversationAssetBundle { get; private set; } + private GameObject BoxPrefab; + public Dictionary BoxMappings = new Dictionary(); + + private void Start() + { + Instance = this; + + ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); + + BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); + if (font == null) + { + DebugLog.ToConsole("Error - Font is null!", MessageType.Error); + } + BoxPrefab.GetComponent().font = font; + BoxPrefab.GetComponent().color = Color.white; + } + + public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) + { + var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); + if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) + { + // No player talking to tree + return uint.MaxValue; + } + // .First() should be fine here as only one player should be talking to a character. + return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + } + + public void SendPlayerOption(string text) + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); + } + + public void SendCharacterDialogue(int id, string text) + { + if (id == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + } + + public void CloseBoxPlayer() + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); + } + + public void CloseBoxCharacter(int id) + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + } + + public void SendConvState(int charId, bool state) + { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); + } + + public void DisplayPlayerConversationBox(uint playerId, string text) + { + if (playerId == QSBPlayerManager.LocalPlayerId) + { + DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); + return; + } + + var player = QSBPlayerManager.GetPlayer(playerId); + + // Destroy old box if it exists + var playerBox = player.CurrentDialogueBox; + if (playerBox != null) + { + Destroy(playerBox); + } + + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); + } + + public void DisplayCharacterConversationBox(int index, string text) + { + if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) + { + DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); + return; + } + + // Remove old box if it exists + var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; + if (BoxMappings.ContainsKey(oldDialogueTree)) + { + Destroy(BoxMappings[oldDialogueTree]); + BoxMappings.Remove(oldDialogueTree); + } + + BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); + } + + private GameObject CreateBox(Transform parent, float vertOffset, string text) + { + var newBox = Instantiate(BoxPrefab); + newBox.SetActive(false); + newBox.transform.parent = parent; + newBox.transform.localPosition = new Vector3(0, vertOffset, 0); + newBox.transform.rotation = parent.rotation; + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); + newBox.GetComponent().text = text; + newBox.SetActive(true); + return newBox; + } + } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index a22917f14..8b77d4441 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -7,108 +7,108 @@ namespace QSB.ConversationSync { - public class ConversationPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public class ConversationPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static void StartConversation(CharacterDialogueTree __instance) - { - var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); - if (index == -1) - { - DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); - } - QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; - ConversationManager.Instance.SendConvState(index, true); - } + public static void StartConversation(CharacterDialogueTree __instance) + { + var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); + if (index == -1) + { + DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); + } + QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; + ConversationManager.Instance.SendConvState(index, true); + } - public static bool EndConversation(CharacterDialogueTree __instance) - { - if (!__instance.enabled) - { - return false; - } - if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) - { - DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); - return false; - } - ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); - ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); - QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; - ConversationManager.Instance.CloseBoxPlayer(); - return true; - } + public static bool EndConversation(CharacterDialogueTree __instance) + { + if (!__instance.enabled) + { + return false; + } + if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) + { + DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); + return false; + } + ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); + ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); + QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; + ConversationManager.Instance.CloseBoxPlayer(); + return true; + } - public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) - { - if (optionIndex < 0) - { - // in a page where there is no selectable options - ConversationManager.Instance.CloseBoxPlayer(); - return true; - } + public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) + { + if (optionIndex < 0) + { + // in a page where there is no selectable options + ConversationManager.Instance.CloseBoxPlayer(); + return true; + } - var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); - ConversationManager.Instance.SendPlayerOption(selectedOption.Text); - return true; - } + var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); + ConversationManager.Instance.SendPlayerOption(selectedOption.Text); + return true; + } - public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) - { - var key = ____name + ____listPagesToDisplay[____currentPage]; - // Sending key so translation can be done on client side - should make different language-d clients compatible - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, - () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); - } + public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) + { + var key = ____name + ____listPagesToDisplay[____currentPage]; + // Sending key so translation can be done on client side - should make different language-d clients compatible + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, + () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); + } - public static bool OnAnimatorIK(float ___headTrackingWeight, - bool ___lookOnlyWhenTalking, - bool ____playerInHeadZone, - bool ____inConversation, - ref float ____currentLookWeight, - ref Vector3 ____currentLookTarget, - DampedSpring3D ___lookSpring, - Animator ____animator, - CharacterDialogueTree ____dialogueTree) - { - var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - Vector3 position; - if (playerId == uint.MaxValue) - { - // TODO : Find closest player and track to that camera. - position = Locator.GetActiveCamera().transform.position; - } - else - { - position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; - } - float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); - ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); - ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); - ____animator.SetLookAtPosition(____currentLookTarget); - ____animator.SetLookAtWeight(____currentLookWeight); - return false; - } + public static bool OnAnimatorIK(float ___headTrackingWeight, + bool ___lookOnlyWhenTalking, + bool ____playerInHeadZone, + bool ____inConversation, + ref float ____currentLookWeight, + ref Vector3 ____currentLookTarget, + DampedSpring3D ___lookSpring, + Animator ____animator, + CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + Vector3 position; + if (playerId == uint.MaxValue) + { + // TODO : Find closest player and track to that camera. + position = Locator.GetActiveCamera().transform.position; + } + else + { + position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; + } + float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); + ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); + ____animator.SetLookAtPosition(____currentLookTarget); + ____animator.SetLookAtWeight(____currentLookWeight); + return false; + } - public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) - { - var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - if (playerId == uint.MaxValue) - { - return true; - } - return false; - } + public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + if (playerId == uint.MaxValue) + { + return true; + } + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); - QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); - QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); - QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); + QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); + QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); + QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); + } + } } diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 660c77e59..5384727e1 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -1,10 +1,10 @@ namespace QSB.ConversationSync { - public enum ConversationType - { - Character, - Player, - CloseCharacter, - ClosePlayer - } + public enum ConversationType + { + Character, + Player, + CloseCharacter, + ClosePlayer + } } diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 502945556..119f0f2cd 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -4,47 +4,47 @@ namespace QSB.ConversationSync.Events { - public class ConversationEvent : QSBEvent - { - public override EventType Type => EventType.Conversation; + public class ConversationEvent : QSBEvent + { + public override EventType Type => EventType.Conversation; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); - private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); + private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); - private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage - { - AboutId = LocalPlayerId, - ObjectId = (int)id, - Type = type, - Message = message - }; + private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage + { + AboutId = LocalPlayerId, + ObjectId = (int)id, + Type = type, + Message = message + }; - public override void OnReceiveRemote(ConversationMessage message) - { - switch (message.Type) - { - case ConversationType.Character: - var translated = TextTranslation.Translate(message.Message).Trim(); - ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); - break; - case ConversationType.Player: - ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); - break; - case ConversationType.CloseCharacter: - if (message.ObjectId == -1) - { - break; - } - var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; - UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); - break; - case ConversationType.ClosePlayer: - UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); - break; - } - } - } + public override void OnReceiveRemote(ConversationMessage message) + { + switch (message.Type) + { + case ConversationType.Character: + var translated = TextTranslation.Translate(message.Message).Trim(); + ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); + break; + case ConversationType.Player: + ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); + break; + case ConversationType.CloseCharacter: + if (message.ObjectId == -1) + { + break; + } + var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; + UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); + break; + case ConversationType.ClosePlayer: + UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); + break; + } + } + } } diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 3064358f5..5bf1ea0c7 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -3,26 +3,26 @@ namespace QSB.ConversationSync.Events { - public class ConversationMessage : PlayerMessage - { - public ConversationType Type { get; set; } - public int ObjectId { get; set; } - public string Message { get; set; } + public class ConversationMessage : PlayerMessage + { + public ConversationType Type { get; set; } + public int ObjectId { get; set; } + public string Message { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ObjectId = reader.ReadInt32(); - Type = (ConversationType)reader.ReadInt32(); - Message = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + Type = (ConversationType)reader.ReadInt32(); + Message = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ObjectId); - writer.Write((int)Type); - writer.Write(Message); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + writer.Write((int)Type); + writer.Write(Message); + } + } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 0c98039c4..5313451f1 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -9,62 +9,62 @@ namespace QSB.ConversationSync.Events { - public class ConversationStartEndEvent : QSBEvent - { - public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; + public class ConversationStartEndEvent : QSBEvent + { + public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); - private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); + private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); - private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage - { - AboutId = LocalPlayerId, - CharacterId = charId, - PlayerId = playerId, - State = state - }; + private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage + { + AboutId = LocalPlayerId, + CharacterId = charId, + PlayerId = playerId, + State = state + }; - public override void OnReceiveRemote(ConversationStartEndMessage message) - { - if (message.CharacterId == -1) - { - DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); - return; - } - var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; - var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); + public override void OnReceiveRemote(ConversationStartEndMessage message) + { + if (message.CharacterId == -1) + { + DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); + return; + } + var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; + var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); - // Make character face player and talk - if (animController != default(CharacterAnimController)) - { - if (message.State) - { - // Start talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; - animController.SetValue("_inConversation", true); - animController.SetValue("_playerInHeadZone", true); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Talking"); - } - dialogueTree.GetComponent().DisableInteraction(); - } - else - { - // Stop talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; - animController.SetValue("_inConversation", false); - animController.SetValue("_playerInHeadZone", false); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Idle"); - } - dialogueTree.GetComponent().EnableInteraction(); - } - } - } - } + // Make character face player and talk + if (animController != default(CharacterAnimController)) + { + if (message.State) + { + // Start talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + animController.SetValue("_inConversation", true); + animController.SetValue("_playerInHeadZone", true); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Talking"); + } + dialogueTree.GetComponent().DisableInteraction(); + } + else + { + // Stop talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + animController.SetValue("_inConversation", false); + animController.SetValue("_playerInHeadZone", false); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Idle"); + } + dialogueTree.GetComponent().EnableInteraction(); + } + } + } + } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 2054ca48e..f53657c10 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -3,26 +3,26 @@ namespace QSB.ConversationSync.Events { - public class ConversationStartEndMessage : PlayerMessage - { - public int CharacterId { get; set; } - public uint PlayerId { get; set; } - public bool State { get; set; } + public class ConversationStartEndMessage : PlayerMessage + { + public int CharacterId { get; set; } + public uint PlayerId { get; set; } + public bool State { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - CharacterId = reader.ReadInt32(); - PlayerId = reader.ReadUInt32(); - State = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + CharacterId = reader.ReadInt32(); + PlayerId = reader.ReadUInt32(); + State = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(CharacterId); - writer.Write(PlayerId); - writer.Write(State); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(CharacterId); + writer.Write(PlayerId); + writer.Write(State); + } + } } diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index d8df9943e..c395c9e00 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -3,34 +3,34 @@ namespace QSB.DeathSync { - public class DeathPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class DeathPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - public static bool PreFinishDeathSequence(DeathType deathType) - { - if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) - { - // Allow real death - return true; - } + public static bool PreFinishDeathSequence(DeathType deathType) + { + if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) + { + // Allow real death + return true; + } - RespawnOnDeath.Instance.ResetShip(); - RespawnOnDeath.Instance.ResetPlayer(); + RespawnOnDeath.Instance.ResetShip(); + RespawnOnDeath.Instance.ResetPlayer(); - // Prevent original death method from running. - return false; - } + // Prevent original death method from running. + return false; + } - public static void BroadcastDeath(DeathType deathType) - { - GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); - } + public static void BroadcastDeath(DeathType deathType) + { + GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); - QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); + QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); + } + } } \ No newline at end of file diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 6aea56ba1..57cd35c1f 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -5,29 +5,29 @@ namespace QSB.DeathSync.Events { - public class PlayerDeathEvent : QSBEvent> - { - public override EventType Type => EventType.PlayerDeath; + public class PlayerDeathEvent : QSBEvent> + { + public override EventType Type => EventType.PlayerDeath; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); - private void Handler(DeathType type) => SendEvent(CreateMessage(type)); + private void Handler(DeathType type) => SendEvent(CreateMessage(type)); - private EnumMessage CreateMessage(DeathType type) => new EnumMessage - { - AboutId = LocalPlayerId, - Value = type - }; + private EnumMessage CreateMessage(DeathType type) => new EnumMessage + { + AboutId = LocalPlayerId, + Value = type + }; - public override void OnReceiveRemote(EnumMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - var deathMessage = Necronomicon.GetPhrase(message.Value); - DebugLog.ToAll(string.Format(deathMessage, playerName)); - } + public override void OnReceiveRemote(EnumMessage message) + { + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; + var deathMessage = Necronomicon.GetPhrase(message.Value); + DebugLog.ToAll(string.Format(deathMessage, playerName)); + } - public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); - } + public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); + } } diff --git a/QSB/DeathSync/Necronomicon.cs b/QSB/DeathSync/Necronomicon.cs index 5aa9407e2..e9dfda79a 100644 --- a/QSB/DeathSync/Necronomicon.cs +++ b/QSB/DeathSync/Necronomicon.cs @@ -4,102 +4,102 @@ namespace QSB.DeathSync { - public static class Necronomicon - { + public static class Necronomicon + { - private static readonly Dictionary DeathDictionary = new Dictionary - { - { DeathType.Default, new[] - { - "{0} died" - } }, - { DeathType.Impact, new[] - { - "{0} forgot to use retro-rockets", - "{0} bonked into the ground too hard", - "{0} went splat" - } }, - { DeathType.Asphyxiation, new[] - { - "{0} forgot to breathe", - "{0} forgot how to breathe", - "{0} forgot to check their oxygen meter", - "{0} lacked oxygen", - "{0} didn't need air anyway" - } }, - { DeathType.Energy, new[] - { - "{0} was cooked", - "{0} failed the Hotshot achievement", - "{0} forgot to install an AC unit", - "{0} got too hot" - } }, - { DeathType.Supernova, new[] - { - "{0} ran out of time", - "{0} got vaporized", - "{0} lost track of time", - "{0} got front row seats to the supernova", - "{0} heard the End of Times music", - "{0} watched the sun go kaboom", - "{0} became cosmic marshmallow", - "{0} photosynthesized too much" - } }, - { DeathType.Digestion, new[] - { - "{0} was eaten", - "{0} found a fish", - "{0} encountered an evil creature", - "{0} followed the light, then was followed by it", - "{0} messed with the wrong species of fish" - } }, - { DeathType.BigBang, new[] - { - "{0} sacrificed themself for the universe", - "{0} knows the true meaning of sacrifice", - "{0} won at the cost of their life" - } }, - { DeathType.Crushed, new[] - { - "{0} went through the tunnel too slow", - "{0} didn't make it out in time", - "{0} was squished", - "{0} thought the Sunless City was safe", - "{0} was buried" - } }, - { DeathType.Meditation, new[] - { - "{0} took a deep breath and died", - "{0} fell asleep", - "{0} got killed by Gabbro's advice" - } }, - { DeathType.TimeLoop, new[] - { - "{0} ran out of time", - "{0} was caught by a statue", - "{0}'s memories were pilfered", - "{0}'s memories fell into a black hole", - "{0}'s universe was eaten by Grobletombus" - } }, - { DeathType.Lava, new[] - { - "{0} tried to swim in lava", - "{0} didn't know what the glowy orange liquid was", - "{0} slipped in lava", - "{0} became one with the glowing gooey rock" - } }, - { DeathType.BlackHole, new[] - { - "{0} should visit the Ash Twin Project again", - "{0} waited inside the Ash Twin Project", - "{0} chased their memories" - } } - }; + private static readonly Dictionary DeathDictionary = new Dictionary + { + { DeathType.Default, new[] + { + "{0} died" + } }, + { DeathType.Impact, new[] + { + "{0} forgot to use retro-rockets", + "{0} bonked into the ground too hard", + "{0} went splat" + } }, + { DeathType.Asphyxiation, new[] + { + "{0} forgot to breathe", + "{0} forgot how to breathe", + "{0} forgot to check their oxygen meter", + "{0} lacked oxygen", + "{0} didn't need air anyway" + } }, + { DeathType.Energy, new[] + { + "{0} was cooked", + "{0} failed the Hotshot achievement", + "{0} forgot to install an AC unit", + "{0} got too hot" + } }, + { DeathType.Supernova, new[] + { + "{0} ran out of time", + "{0} got vaporized", + "{0} lost track of time", + "{0} got front row seats to the supernova", + "{0} heard the End of Times music", + "{0} watched the sun go kaboom", + "{0} became cosmic marshmallow", + "{0} photosynthesized too much" + } }, + { DeathType.Digestion, new[] + { + "{0} was eaten", + "{0} found a fish", + "{0} encountered an evil creature", + "{0} followed the light, then was followed by it", + "{0} messed with the wrong species of fish" + } }, + { DeathType.BigBang, new[] + { + "{0} sacrificed themself for the universe", + "{0} knows the true meaning of sacrifice", + "{0} won at the cost of their life" + } }, + { DeathType.Crushed, new[] + { + "{0} went through the tunnel too slow", + "{0} didn't make it out in time", + "{0} was squished", + "{0} thought the Sunless City was safe", + "{0} was buried" + } }, + { DeathType.Meditation, new[] + { + "{0} took a deep breath and died", + "{0} fell asleep", + "{0} got killed by Gabbro's advice" + } }, + { DeathType.TimeLoop, new[] + { + "{0} ran out of time", + "{0} was caught by a statue", + "{0}'s memories were pilfered", + "{0}'s memories fell into a black hole", + "{0}'s universe was eaten by Grobletombus" + } }, + { DeathType.Lava, new[] + { + "{0} tried to swim in lava", + "{0} didn't know what the glowy orange liquid was", + "{0} slipped in lava", + "{0} became one with the glowing gooey rock" + } }, + { DeathType.BlackHole, new[] + { + "{0} should visit the Ash Twin Project again", + "{0} waited inside the Ash Twin Project", + "{0} chased their memories" + } } + }; - public static string GetPhrase(DeathType deathType) - { - return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); - } + public static string GetPhrase(DeathType deathType) + { + return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); + } - } + } } diff --git a/QSB/DeathSync/PreventShipDestruction.cs b/QSB/DeathSync/PreventShipDestruction.cs index 01d190fcf..4ab33b415 100644 --- a/QSB/DeathSync/PreventShipDestruction.cs +++ b/QSB/DeathSync/PreventShipDestruction.cs @@ -6,38 +6,38 @@ namespace QSB.DeathSync { - public class PreventShipDestruction : MonoBehaviour - { - private void Awake() - { - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + public class PreventShipDestruction : MonoBehaviour + { + private void Awake() + { + QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); + QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); - QSB.Helper.Events.Event += OnEvent; - } + QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); + QSB.Helper.Events.Event += OnEvent; + } - private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is ShipDamageController shipDamageController && - ev == OWML.Common.Events.AfterAwake) - { - shipDamageController.SetValue("_exploded", true); - } - } + private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is ShipDamageController shipDamageController && + ev == OWML.Common.Events.AfterAwake) + { + shipDamageController.SetValue("_exploded", true); + } + } - private static class Patch - { - public static IEnumerable ReturnNull(IEnumerable instructions) - { - return new List - { - new CodeInstruction(OpCodes.Ldnull), - new CodeInstruction(OpCodes.Ret) - }; - } - } - } + private static class Patch + { + public static IEnumerable ReturnNull(IEnumerable instructions) + { + return new List + { + new CodeInstruction(OpCodes.Ldnull), + new CodeInstruction(OpCodes.Ret) + }; + } + } + } } diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index a142a7973..30f3de784 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -7,133 +7,133 @@ namespace QSB.DeathSync { - /// - /// Client-only-side component for managing respawning after death. - /// - public class RespawnOnDeath : MonoBehaviour - { - public static RespawnOnDeath Instance; - - public readonly DeathType[] AllowedDeathTypes = { - DeathType.BigBang, - DeathType.Supernova, - DeathType.TimeLoop - }; - - private SpawnPoint _shipSpawnPoint; - private SpawnPoint _playerSpawnPoint; - private OWRigidbody _shipBody; - private PlayerSpawner _playerSpawner; - private FluidDetector _fluidDetector; - private PlayerResources _playerResources; - private ShipComponent[] _shipComponents; - private HatchController _hatchController; - private ShipCockpitController _cockpitController; - private PlayerSpacesuit _spaceSuit; - - private void Awake() - { - Instance = this; - - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); - QSB.Helper.Events.Event += OnEvent; - } - - private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is PlayerResources && ev == OWML.Common.Events.AfterStart) - { - Init(); - } - } - - public void Init() - { - var playerTransform = Locator.GetPlayerTransform(); - _playerResources = playerTransform.GetComponent(); - _spaceSuit = playerTransform.GetComponentInChildren(true); - _playerSpawner = FindObjectOfType(); - _fluidDetector = Locator.GetPlayerCamera().GetComponentInChildren(); - - var shipTransform = Locator.GetShipTransform(); - if (shipTransform == null) - { - return; - } - _shipComponents = shipTransform.GetComponentsInChildren(); - _hatchController = shipTransform.GetComponentInChildren(); - _cockpitController = shipTransform.GetComponentInChildren(); - _shipBody = Locator.GetShipBody(); - _shipSpawnPoint = GetSpawnPoint(true); - - // Move debug spawn point to initial ship position. - _playerSpawnPoint = GetSpawnPoint(); - _shipSpawnPoint.transform.position = shipTransform.position; - _shipSpawnPoint.transform.rotation = shipTransform.rotation; - } - - public void ResetShip() - { - if (_shipBody == null) - { - return; - } - - // Reset ship position. - if (_shipSpawnPoint == null) - { - DebugLog.ToConsole("_shipSpawnPoint is null!", MessageType.Warning); - return; - } - _shipBody.SetVelocity(_shipSpawnPoint.GetPointVelocity()); - _shipBody.WarpToPositionRotation(_shipSpawnPoint.transform.position, _shipSpawnPoint.transform.rotation); - - // Reset ship damage. - if (Locator.GetShipTransform()) - { - foreach (var shipComponent in _shipComponents) - { - shipComponent.SetDamaged(false); - } - } - - Invoke(nameof(ExitShip), 0.01f); - } - - private void ExitShip() - { - _cockpitController.Invoke("ExitFlightConsole"); - _cockpitController.Invoke("CompleteExitFlightConsole"); - _hatchController.SetValue("_isPlayerInShip", false); - _hatchController.Invoke("OpenHatch"); - GlobalMessenger.FireEvent(EventNames.ExitShip); - } - - public void ResetPlayer() - { - // Reset player position. - var playerBody = Locator.GetPlayerBody(); - playerBody.WarpToPositionRotation(_playerSpawnPoint.transform.position, _playerSpawnPoint.transform.rotation); - playerBody.SetVelocity(_playerSpawnPoint.GetPointVelocity()); - _playerSpawnPoint.AddObjectToTriggerVolumes(Locator.GetPlayerDetector().gameObject); - _playerSpawnPoint.AddObjectToTriggerVolumes(_fluidDetector.gameObject); - _playerSpawnPoint.OnSpawnPlayer(); - - // Stop suffocation sound effect. - _playerResources.SetValue("_isSuffocating", false); - - // Reset player health and resources. - _playerResources.DebugRefillResources(); - - // Remove space suit. - _spaceSuit.RemoveSuit(true); - } - - private SpawnPoint GetSpawnPoint(bool isShip = false) - { - return _playerSpawner - .GetValue("_spawnList") - .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); - } - } + /// + /// Client-only-side component for managing respawning after death. + /// + public class RespawnOnDeath : MonoBehaviour + { + public static RespawnOnDeath Instance; + + public readonly DeathType[] AllowedDeathTypes = { + DeathType.BigBang, + DeathType.Supernova, + DeathType.TimeLoop + }; + + private SpawnPoint _shipSpawnPoint; + private SpawnPoint _playerSpawnPoint; + private OWRigidbody _shipBody; + private PlayerSpawner _playerSpawner; + private FluidDetector _fluidDetector; + private PlayerResources _playerResources; + private ShipComponent[] _shipComponents; + private HatchController _hatchController; + private ShipCockpitController _cockpitController; + private PlayerSpacesuit _spaceSuit; + + private void Awake() + { + Instance = this; + + QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); + QSB.Helper.Events.Event += OnEvent; + } + + private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is PlayerResources && ev == OWML.Common.Events.AfterStart) + { + Init(); + } + } + + public void Init() + { + var playerTransform = Locator.GetPlayerTransform(); + _playerResources = playerTransform.GetComponent(); + _spaceSuit = playerTransform.GetComponentInChildren(true); + _playerSpawner = FindObjectOfType(); + _fluidDetector = Locator.GetPlayerCamera().GetComponentInChildren(); + + var shipTransform = Locator.GetShipTransform(); + if (shipTransform == null) + { + return; + } + _shipComponents = shipTransform.GetComponentsInChildren(); + _hatchController = shipTransform.GetComponentInChildren(); + _cockpitController = shipTransform.GetComponentInChildren(); + _shipBody = Locator.GetShipBody(); + _shipSpawnPoint = GetSpawnPoint(true); + + // Move debug spawn point to initial ship position. + _playerSpawnPoint = GetSpawnPoint(); + _shipSpawnPoint.transform.position = shipTransform.position; + _shipSpawnPoint.transform.rotation = shipTransform.rotation; + } + + public void ResetShip() + { + if (_shipBody == null) + { + return; + } + + // Reset ship position. + if (_shipSpawnPoint == null) + { + DebugLog.ToConsole("_shipSpawnPoint is null!", MessageType.Warning); + return; + } + _shipBody.SetVelocity(_shipSpawnPoint.GetPointVelocity()); + _shipBody.WarpToPositionRotation(_shipSpawnPoint.transform.position, _shipSpawnPoint.transform.rotation); + + // Reset ship damage. + if (Locator.GetShipTransform()) + { + foreach (var shipComponent in _shipComponents) + { + shipComponent.SetDamaged(false); + } + } + + Invoke(nameof(ExitShip), 0.01f); + } + + private void ExitShip() + { + _cockpitController.Invoke("ExitFlightConsole"); + _cockpitController.Invoke("CompleteExitFlightConsole"); + _hatchController.SetValue("_isPlayerInShip", false); + _hatchController.Invoke("OpenHatch"); + GlobalMessenger.FireEvent(EventNames.ExitShip); + } + + public void ResetPlayer() + { + // Reset player position. + var playerBody = Locator.GetPlayerBody(); + playerBody.WarpToPositionRotation(_playerSpawnPoint.transform.position, _playerSpawnPoint.transform.rotation); + playerBody.SetVelocity(_playerSpawnPoint.GetPointVelocity()); + _playerSpawnPoint.AddObjectToTriggerVolumes(Locator.GetPlayerDetector().gameObject); + _playerSpawnPoint.AddObjectToTriggerVolumes(_fluidDetector.gameObject); + _playerSpawnPoint.OnSpawnPlayer(); + + // Stop suffocation sound effect. + _playerResources.SetValue("_isSuffocating", false); + + // Reset player health and resources. + _playerResources.DebugRefillResources(); + + // Remove space suit. + _spaceSuit.RemoveSuit(true); + } + + private SpawnPoint GetSpawnPoint(bool isShip = false) + { + return _playerSpawner + .GetValue("_spawnList") + .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); + } + } } diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index 375a33cfe..377d01cd8 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -5,34 +5,34 @@ namespace QSB.ElevatorSync { - public class ElevatorManager : MonoBehaviour - { - public static ElevatorManager Instance { get; private set; } + public class ElevatorManager : MonoBehaviour + { + public static ElevatorManager Instance { get; private set; } - private List _elevators; + private List _elevators; - private void Awake() - { - Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - _elevators = Resources.FindObjectsOfTypeAll().ToList(); - for (var id = 0; id < _elevators.Count; id++) - { - var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); - qsbElevator.Init(_elevators[id], id); - WorldRegistry.AddObject(qsbElevator); - } - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + _elevators = Resources.FindObjectsOfTypeAll().ToList(); + for (var id = 0; id < _elevators.Count; id++) + { + var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); + qsbElevator.Init(_elevators[id], id); + WorldRegistry.AddObject(qsbElevator); + } + } - public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); - } + public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); + } } diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 7b1e8c62a..7c8012803 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -3,20 +3,20 @@ namespace QSB.ElevatorSync { - public class ElevatorPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class ElevatorPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - public static void StartLift(Elevator __instance) - { - var isGoingUp = __instance.GetValue("_goingToTheEnd"); - var id = ElevatorManager.Instance.GetId(__instance); - GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); - } + public static void StartLift(Elevator __instance) + { + var isGoingUp = __instance.GetValue("_goingToTheEnd"); + var id = ElevatorManager.Instance.GetId(__instance); + GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); + } + } } diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 4489ea415..4a7060fc1 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -4,26 +4,26 @@ namespace QSB.ElevatorSync.Events { - public class ElevatorEvent : QSBEvent - { - public override EventType Type => EventType.Elevator; + public class ElevatorEvent : QSBEvent + { + public override EventType Type => EventType.Elevator; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); - private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); + private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); - private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage - { - State = isGoingUp, - ObjectId = id - }; + private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage + { + State = isGoingUp, + ObjectId = id + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var elevator = WorldRegistry.GetObject(message.ObjectId); - elevator?.RemoteCall(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var elevator = WorldRegistry.GetObject(message.ObjectId); + elevator?.RemoteCall(message.State); + } + } } diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index 8958e4b0f..c04d023d6 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -4,54 +4,54 @@ namespace QSB.ElevatorSync { - public class QSBElevator : WorldObject - { - private Elevator _elevator; - private Vector3 _startLocalPos; - private Vector3 _endLocalPos; + public class QSBElevator : WorldObject + { + private Elevator _elevator; + private Vector3 _startLocalPos; + private Vector3 _endLocalPos; - private SingleInteractionVolume _interactVolume; - private OWAudioSource _owAudioSourceOneShot; - private OWAudioSource _owAudioSourceLP; + private SingleInteractionVolume _interactVolume; + private OWAudioSource _owAudioSourceOneShot; + private OWAudioSource _owAudioSourceLP; - public void Init(Elevator elevator, int id) - { - _elevator = elevator; - ObjectId = id; - QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); - } + public void Init(Elevator elevator, int id) + { + _elevator = elevator; + ObjectId = id; + QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); + } - private void InitValues() - { - _startLocalPos = _elevator.GetValue("_startLocalPos"); - _endLocalPos = _elevator.GetValue("_endLocalPos"); - _interactVolume = _elevator.GetValue("_interactVolume"); - _owAudioSourceOneShot = _elevator.GetValue("_owAudioSourceOneShot"); - _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); - } + private void InitValues() + { + _startLocalPos = _elevator.GetValue("_startLocalPos"); + _endLocalPos = _elevator.GetValue("_endLocalPos"); + _interactVolume = _elevator.GetValue("_interactVolume"); + _owAudioSourceOneShot = _elevator.GetValue("_owAudioSourceOneShot"); + _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); + } - public void RemoteCall(bool isGoingUp) - { - SetDirection(isGoingUp); - RemoteStartLift(); - } + public void RemoteCall(bool isGoingUp) + { + SetDirection(isGoingUp); + RemoteStartLift(); + } - private void SetDirection(bool isGoingUp) - { - var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; - _elevator.SetValue("_goingToTheEnd", isGoingUp); - _elevator.SetValue("_targetLocalPos", targetPos); - _interactVolume.transform.Rotate(0f, 180f, 0f); - } + private void SetDirection(bool isGoingUp) + { + var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; + _elevator.SetValue("_goingToTheEnd", isGoingUp); + _elevator.SetValue("_targetLocalPos", targetPos); + _interactVolume.transform.Rotate(0f, 180f, 0f); + } - private void RemoteStartLift() - { - _elevator.enabled = true; - _elevator.SetValue("_initLocalPos", _elevator.transform.localPosition); - _elevator.SetValue("_initLiftTime", Time.time); - _owAudioSourceOneShot.PlayOneShot(AudioType.TH_LiftActivate); - _owAudioSourceLP.FadeIn(0.5f); - _interactVolume.DisableInteraction(); - } - } + private void RemoteStartLift() + { + _elevator.enabled = true; + _elevator.SetValue("_initLocalPos", _elevator.transform.localPosition); + _elevator.SetValue("_initLiftTime", Time.time); + _owAudioSourceOneShot.PlayOneShot(AudioType.TH_LiftActivate); + _owAudioSourceLP.FadeIn(0.5f); + _interactVolume.DisableInteraction(); + } + } } diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index a2cd8543e..9012f9a9c 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -1,40 +1,40 @@ namespace QSB.EventsCore { - public static class EventNames - { - public static string TurnOnFlashlight = "TurnOnFlashlight"; - public static string TurnOffFlashlight = "TurnOffFlashlight"; - public static string LaunchProbe = "LaunchProbe"; - public static string RetrieveProbe = "RetrieveProbe"; - public static string ProbeLauncherEquipped = "ProbeLauncherEquipped"; - public static string ProbeLauncherUnequipped = "ProbeLauncherUnequipped"; - public static string EquipSignalscope = "EquipSignalscope"; - public static string UnequipSignalscope = "UnequipSignalscope"; - public static string SuitUp = "SuitUp"; - public static string RemoveSuit = "RemoveSuit"; - public static string EquipTranslator = "EquipTranslator"; - public static string UnequipTranslator = "UnequipTranslator"; - public static string ExitShip = "ExitShip"; - public static string RestartTimeLoop = "RestartTimeLoop"; - public static string WakeUp = "WakeUp"; + public static class EventNames + { + public static string TurnOnFlashlight = "TurnOnFlashlight"; + public static string TurnOffFlashlight = "TurnOffFlashlight"; + public static string LaunchProbe = "LaunchProbe"; + public static string RetrieveProbe = "RetrieveProbe"; + public static string ProbeLauncherEquipped = "ProbeLauncherEquipped"; + public static string ProbeLauncherUnequipped = "ProbeLauncherUnequipped"; + public static string EquipSignalscope = "EquipSignalscope"; + public static string UnequipSignalscope = "UnequipSignalscope"; + public static string SuitUp = "SuitUp"; + public static string RemoveSuit = "RemoveSuit"; + public static string EquipTranslator = "EquipTranslator"; + public static string UnequipTranslator = "UnequipTranslator"; + public static string ExitShip = "ExitShip"; + public static string RestartTimeLoop = "RestartTimeLoop"; + public static string WakeUp = "WakeUp"; - public static string QSBPlayerDeath = "QSBPlayerDeath"; - public static string QSBPlayerJoin = "QSBPlayerJoin"; - public static string QSBPlayerLeave = "QSBPlayerLeave"; - public static string QSBPlayerReady = "QSBPlayerReady"; - public static string QSBSectorChange = "QSBSectorChange"; - public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; - public static string QSBServerTime = "QSBServerTime"; - public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; - public static string QSBOnProbeWarp = "QSBOnProbeWarp"; - public static string QSBStartLift = "QSBStartLift"; - public static string QSBGeyserState = "QSBGeyserState"; - public static string QSBCrouch = "QSBAnimTrigger"; - public static string QSBOrbSlot = "QSBOrbSlot"; - public static string QSBOrbUser = "QSBOrbUser"; - public static string QSBConversation = "QSBConversation"; - public static string QSBConversationStartEnd = "QSBConversationStartEnd"; - public static string QSBChangeAnimType = "QSBPlayInstrument"; - public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; - } + public static string QSBPlayerDeath = "QSBPlayerDeath"; + public static string QSBPlayerJoin = "QSBPlayerJoin"; + public static string QSBPlayerLeave = "QSBPlayerLeave"; + public static string QSBPlayerReady = "QSBPlayerReady"; + public static string QSBSectorChange = "QSBSectorChange"; + public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; + public static string QSBServerTime = "QSBServerTime"; + public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; + public static string QSBOnProbeWarp = "QSBOnProbeWarp"; + public static string QSBStartLift = "QSBStartLift"; + public static string QSBGeyserState = "QSBGeyserState"; + public static string QSBCrouch = "QSBAnimTrigger"; + public static string QSBOrbSlot = "QSBOrbSlot"; + public static string QSBOrbUser = "QSBOrbUser"; + public static string QSBConversation = "QSBConversation"; + public static string QSBConversationStartEnd = "QSBConversationStartEnd"; + public static string QSBChangeAnimType = "QSBPlayInstrument"; + public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; + } } diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index b082285cd..660f1e481 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -1,29 +1,29 @@ namespace QSB.EventsCore { - public enum EventType - { - Sector, - ServerTime, - AnimTrigger, - PlayerState, - PlayerStatesRequest, - FlashlightActiveChange, - SignalscopeActiveChange, - TranslatorActiveChange, - ProbeLauncherActiveChange, - SuitActiveChange, - PlayerJoin, - PlayerLeave, - PlayerDeath, - PlayerSectorChange, - PlayerReady, - ProbeActiveChange, - Elevator, - Geyser, - OrbSlot, - OrbUser, - Conversation, - ConversationStartEnd, - PlayInstrument - } + public enum EventType + { + Sector, + ServerTime, + AnimTrigger, + PlayerState, + PlayerStatesRequest, + FlashlightActiveChange, + SignalscopeActiveChange, + TranslatorActiveChange, + ProbeLauncherActiveChange, + SuitActiveChange, + PlayerJoin, + PlayerLeave, + PlayerDeath, + PlayerSectorChange, + PlayerReady, + ProbeActiveChange, + Elevator, + Geyser, + OrbSlot, + OrbUser, + Conversation, + ConversationStartEnd, + PlayInstrument + } } diff --git a/QSB/EventsCore/IQSBEvent.cs b/QSB/EventsCore/IQSBEvent.cs index 4b8b8dc3d..438a7d31f 100644 --- a/QSB/EventsCore/IQSBEvent.cs +++ b/QSB/EventsCore/IQSBEvent.cs @@ -1,8 +1,8 @@ namespace QSB.EventsCore { - public interface IQSBEvent - { - void SetupListener(); - void CloseListener(); - } + public interface IQSBEvent + { + void SetupListener(); + void CloseListener(); + } } diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 6b94b0ffc..76b5ed6c4 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -5,64 +5,64 @@ namespace QSB.EventsCore { - public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() - { - public abstract EventType Type { get; } - public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; - private readonly MessageHandler _eventHandler; + public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() + { + public abstract EventType Type { get; } + public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; + private readonly MessageHandler _eventHandler; - protected QSBEvent() - { - _eventHandler = new MessageHandler(Type); - _eventHandler.OnClientReceiveMessage += OnClientReceive; - _eventHandler.OnServerReceiveMessage += OnServerReceive; - } + protected QSBEvent() + { + _eventHandler = new MessageHandler(Type); + _eventHandler.OnClientReceiveMessage += OnClientReceive; + _eventHandler.OnServerReceiveMessage += OnServerReceive; + } - public abstract void SetupListener(); + public abstract void SetupListener(); - public abstract void CloseListener(); + public abstract void CloseListener(); - public virtual void OnReceiveRemote(T message) - { - } + public virtual void OnReceiveRemote(T message) + { + } - public virtual void OnReceiveLocal(T message) - { - } + public virtual void OnReceiveLocal(T message) + { + } - public virtual void OnServerReceive(T message) - { - _eventHandler.SendToAll(message); - } + public virtual void OnServerReceive(T message) + { + _eventHandler.SendToAll(message); + } - public void SendEvent(T message) - { - message.FromId = QSBPlayerManager.LocalPlayerId; - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); - } + public void SendEvent(T message) + { + message.FromId = QSBPlayerManager.LocalPlayerId; + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); + } - private void Send(T message) - { - if (NetworkServer.active) - { - _eventHandler.SendToAll(message); - } - else - { - _eventHandler.SendToServer(message); - } - } + private void Send(T message) + { + if (NetworkServer.active) + { + _eventHandler.SendToAll(message); + } + else + { + _eventHandler.SendToServer(message); + } + } - private void OnClientReceive(T message) - { - if (message.FromId == QSBPlayerManager.LocalPlayerId || - QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) - { - OnReceiveLocal(message); - return; - } + private void OnClientReceive(T message) + { + if (message.FromId == QSBPlayerManager.LocalPlayerId || + QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) + { + OnReceiveLocal(message); + return; + } - OnReceiveRemote(message); - } - } + OnReceiveRemote(message); + } + } } diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 0dafd0d70..0f20259be 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -14,54 +14,54 @@ namespace QSB.EventsCore { - public static class QSBEventManager - { - public static bool Ready { get; private set; } + public static class QSBEventManager + { + public static bool Ready { get; private set; } - private static List _eventList = new List(); + private static List _eventList = new List(); - public static void Init() - { - _eventList = new List - { - new PlayerReadyEvent(), - new PlayerJoinEvent(), - new PlayerSuitEvent(), - new PlayerFlashlightEvent(), - new PlayerSignalscopeEvent(), - new PlayerTranslatorEvent(), - new PlayerProbeLauncherEvent(), - new PlayerProbeEvent(), - new PlayerSectorEvent(), - new PlayerLeaveEvent(), - new PlayerDeathEvent(), - new PlayerStatesRequestEvent(), - new ElevatorEvent(), - new GeyserEvent(), - new ServerTimeEvent(), - new CrouchEvent(), - new OrbSlotEvent(), - new OrbUserEvent(), - new ConversationEvent(), - new ConversationStartEndEvent(), - new ChangeAnimTypeEvent(), - new ServerSendPlayerStatesEvent() - }; + public static void Init() + { + _eventList = new List + { + new PlayerReadyEvent(), + new PlayerJoinEvent(), + new PlayerSuitEvent(), + new PlayerFlashlightEvent(), + new PlayerSignalscopeEvent(), + new PlayerTranslatorEvent(), + new PlayerProbeLauncherEvent(), + new PlayerProbeEvent(), + new PlayerSectorEvent(), + new PlayerLeaveEvent(), + new PlayerDeathEvent(), + new PlayerStatesRequestEvent(), + new ElevatorEvent(), + new GeyserEvent(), + new ServerTimeEvent(), + new CrouchEvent(), + new OrbSlotEvent(), + new OrbUserEvent(), + new ConversationEvent(), + new ConversationStartEndEvent(), + new ChangeAnimTypeEvent(), + new ServerSendPlayerStatesEvent() + }; - _eventList.ForEach(ev => ev.SetupListener()); + _eventList.ForEach(ev => ev.SetupListener()); - Ready = true; + Ready = true; - DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); - } + DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); + } - public static void Reset() - { - Ready = false; + public static void Reset() + { + Ready = false; - _eventList.ForEach(ev => ev.CloseListener()); + _eventList.ForEach(ev => ev.CloseListener()); - _eventList = new List(); - } - } + _eventList = new List(); + } + } } diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 0ac1134be..8cd7a7bd7 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -4,33 +4,33 @@ namespace QSB.GeyserSync.Events { - public class GeyserEvent : QSBEvent - { - public override EventType Type => EventType.Geyser; + public class GeyserEvent : QSBEvent + { + public override EventType Type => EventType.Geyser; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); + } - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id, - State = state - }; + private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + State = state + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var geyser = WorldRegistry.GetObject(message.ObjectId); - geyser?.SetState(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var geyser = WorldRegistry.GetObject(message.ObjectId); + geyser?.SetState(message.State); + } + } } diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index b90c06a09..45f3d399f 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -4,41 +4,41 @@ namespace QSB.GeyserSync { - public class GeyserManager : MonoBehaviour - { - public static GeyserManager Instance { get; private set; } + public class GeyserManager : MonoBehaviour + { + public static GeyserManager Instance { get; private set; } - private void Awake() - { - Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - QSBPatchManager.OnPatchType += OnPatchType; - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + QSBPatchManager.OnPatchType += OnPatchType; + } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - QSBPatchManager.OnPatchType -= OnPatchType; - } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + QSBPatchManager.OnPatchType -= OnPatchType; + } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - var geyserControllers = Resources.FindObjectsOfTypeAll(); - for (var id = 0; id < geyserControllers.Length; id++) - { - var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); - qsbGeyser.Init(geyserControllers[id], id); - WorldRegistry.AddObject(qsbGeyser); - } - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + var geyserControllers = Resources.FindObjectsOfTypeAll(); + for (var id = 0; id < geyserControllers.Length; id++) + { + var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); + qsbGeyser.Init(geyserControllers[id], id); + WorldRegistry.AddObject(qsbGeyser); + } + } - public void OnPatchType(QSBPatchTypes type) - { - if (type != QSBPatchTypes.OnNonServerClientConnect) - { - return; - } - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); - } - } + public void OnPatchType(QSBPatchTypes type) + { + if (type != QSBPatchTypes.OnNonServerClientConnect) + { + return; + } + QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + } + } } \ No newline at end of file diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index cbadaae6e..bd8a0ddcf 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -4,37 +4,37 @@ namespace QSB.GeyserSync { - public class QSBGeyser : WorldObject - { - private GeyserController _geyserController; + public class QSBGeyser : WorldObject + { + private GeyserController _geyserController; - public void Init(GeyserController geyserController, int id) - { - ObjectId = id; - _geyserController = geyserController; + public void Init(GeyserController geyserController, int id) + { + ObjectId = id; + _geyserController = geyserController; - geyserController.OnGeyserActivateEvent += () => HandleEvent(true); - geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false); - } + geyserController.OnGeyserActivateEvent += () => HandleEvent(true); + geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false); + } - private void HandleEvent(bool state) - { - if (NetworkServer.active) - { - GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); - } - } + private void HandleEvent(bool state) + { + if (NetworkServer.active) + { + GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); + } + } - public void SetState(bool state) - { - if (state) - { - _geyserController?.ActivateGeyser(); - } - else - { - _geyserController?.DeactivateGeyser(); - } - } - } + public void SetState(bool state) + { + if (state) + { + _geyserController?.ActivateGeyser(); + } + else + { + _geyserController?.DeactivateGeyser(); + } + } + } } diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index e41cd5a3e..cba35394d 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -8,121 +8,121 @@ namespace QSB.Instruments { - public class InstrumentsManager : PlayerSyncObject - { - private Transform rootObj; - private AnimationType _savedType; - private GameObject ChertDrum; + public class InstrumentsManager : PlayerSyncObject + { + private Transform rootObj; + private AnimationType _savedType; + private GameObject ChertDrum; - public void InitLocal(Transform root) - { - rootObj = root; - gameObject.AddComponent(); + public void InitLocal(Transform root) + { + rootObj = root; + gameObject.AddComponent(); - QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt += () => ReturnToPlayer(); + QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ExitTaunt += () => ReturnToPlayer(); - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - QSBPlayerManager.PlayerSyncObjects.Add(this); - } + QSBPlayerManager.PlayerSyncObjects.Add(this); + } - public void InitRemote(Transform root) - { - rootObj = root; - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + public void InitRemote(Transform root) + { + rootObj = root; + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - QSBPlayerManager.PlayerSyncObjects.Add(this); - } + QSBPlayerManager.PlayerSyncObjects.Add(this); + } - private void OnDestroy() - { - if (!isLocalPlayer) - { - return; - } - DebugLog.DebugWrite($"OnDestroy {PlayerId}"); - QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); - } + private void OnDestroy() + { + if (!isLocalPlayer) + { + return; + } + DebugLog.DebugWrite($"OnDestroy {PlayerId}"); + QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); + } - private void SetupInstruments() - { - var bundle = QSB.InstrumentAssetBundle; - ChertDrum = MakeChertDrum(bundle); - } + private void SetupInstruments() + { + var bundle = QSB.InstrumentAssetBundle; + ChertDrum = MakeChertDrum(bundle); + } - // EyeCompatibility : Need to find right object. - private GameObject MakeChertDrum(AssetBundle bundle) - { - var drum = new GameObject(); - var mf = drum.AddComponent(); - mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; - var mr = drum.AddComponent(); - mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; - drum.transform.parent = rootObj; - drum.transform.rotation = rootObj.rotation; - drum.transform.localPosition = Vector3.zero; - drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); - drum.SetActive(false); + // EyeCompatibility : Need to find right object. + private GameObject MakeChertDrum(AssetBundle bundle) + { + var drum = new GameObject(); + var mf = drum.AddComponent(); + mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; + var mr = drum.AddComponent(); + mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; + drum.transform.parent = rootObj; + drum.transform.rotation = rootObj.rotation; + drum.transform.localPosition = Vector3.zero; + drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); + drum.SetActive(false); - return drum; - } + return drum; + } - public void StartInstrument(AnimationType type) - { - if (!isLocalPlayer) - { - DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); - return; - } - if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) - { - return; - } - _savedType = Player.AnimationSync.CurrentType; - CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToType(type); - } + public void StartInstrument(AnimationType type) + { + if (!isLocalPlayer) + { + DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); + return; + } + if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) + { + return; + } + _savedType = Player.AnimationSync.CurrentType; + CameraManager.Instance.SwitchTo3rdPerson(); + SwitchToType(type); + } - public void ReturnToPlayer() - { - if (!Player.PlayingInstrument) - { - return; - } - CameraManager.Instance.SwitchTo1stPerson(); - SwitchToType(_savedType); - } + public void ReturnToPlayer() + { + if (!Player.PlayingInstrument) + { + return; + } + CameraManager.Instance.SwitchTo1stPerson(); + SwitchToType(_savedType); + } - public void SwitchToType(AnimationType type) - { - DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); - QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); - CheckInstrumentProps(type); - } + public void SwitchToType(AnimationType type) + { + DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); + QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); + CheckInstrumentProps(type); + } - public void CheckInstrumentProps(AnimationType type) - { - switch (type) - { - case AnimationType.Chert: - ChertDrum.SetActive(true); - break; - case AnimationType.PlayerSuited: - case AnimationType.PlayerUnsuited: - ChertDrum.SetActive(false); - break; - } - } - } + public void CheckInstrumentProps(AnimationType type) + { + switch (type) + { + case AnimationType.Chert: + ChertDrum.SetActive(true); + break; + case AnimationType.PlayerSuited: + case AnimationType.PlayerUnsuited: + ChertDrum.SetActive(false); + break; + } + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index dccd8e236..1dad97a0e 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -2,78 +2,78 @@ namespace QSB.Instruments.QSBCamera { - class CameraController : MonoBehaviour - { - private float _degreesX; - private float _degreesY; - private Quaternion _rotationX; - private Quaternion _rotationY; + class CameraController : MonoBehaviour + { + private float _degreesX; + private float _degreesY; + private Quaternion _rotationX; + private Quaternion _rotationY; - // How far along the ray to move the camera. Avoids clipping into the walls. - private const float PercentToMove = 0.80f; - // Maximum distance for camera clipping - private const float RayLength = 5f; + // How far along the ray to move the camera. Avoids clipping into the walls. + private const float PercentToMove = 0.80f; + // Maximum distance for camera clipping + private const float RayLength = 5f; - public GameObject CameraObject; + public GameObject CameraObject; - void FixedUpdate() - { - if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) - { - return; - } - UpdatePosition(); - UpdateInput(); - UpdateRotation(); - } + void FixedUpdate() + { + if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) + { + return; + } + UpdatePosition(); + UpdateInput(); + UpdateRotation(); + } - private void UpdatePosition() - { - var origin = transform.position; - var localDirection = CameraObject.transform.localPosition.normalized; - Vector3 localTargetPoint; - if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) - { - // Raycast hit collider, get target from hitpoint. - localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; - } - else - { - // Raycast didn't hit collider, get target from camera direction - localTargetPoint = localDirection * RayLength * PercentToMove; - } - var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); - var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); - Vector3 movement; - if (targetDistance < currentDistance) - { - // Snap to target to avoid clipping - movement = localTargetPoint; - } - else - { - // Move camera out slowly - movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); - } - CameraObject.transform.localPosition = movement; - } + private void UpdatePosition() + { + var origin = transform.position; + var localDirection = CameraObject.transform.localPosition.normalized; + Vector3 localTargetPoint; + if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) + { + // Raycast hit collider, get target from hitpoint. + localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; + } + else + { + // Raycast didn't hit collider, get target from camera direction + localTargetPoint = localDirection * RayLength * PercentToMove; + } + var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); + var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); + Vector3 movement; + if (targetDistance < currentDistance) + { + // Snap to target to avoid clipping + movement = localTargetPoint; + } + else + { + // Move camera out slowly + movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); + } + CameraObject.transform.localPosition = movement; + } - private void UpdateInput() - { - var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); - _degreesX += input.x * 180f * Time.fixedDeltaTime; - _degreesY += input.y * 180f * Time.fixedDeltaTime; - } + private void UpdateInput() + { + var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); + _degreesX += input.x * 180f * Time.fixedDeltaTime; + _degreesY += input.y * 180f * Time.fixedDeltaTime; + } - private void UpdateRotation() - { - _degreesX %= 360f; - _degreesY %= 360f; - _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); - _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); - _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); - var localRotation = _rotationX * _rotationY * Quaternion.identity; - transform.localRotation = localRotation; - } - } + private void UpdateRotation() + { + _degreesX %= 360f; + _degreesY %= 360f; + _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); + _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); + _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); + var localRotation = _rotationX * _rotationY * Quaternion.identity; + transform.localRotation = localRotation; + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index fc7478eab..41c956684 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -5,110 +5,110 @@ namespace QSB.Instruments.QSBCamera { - public class CameraManager : MonoBehaviour - { - public static CameraManager Instance; - private GameObject CameraBase; - private GameObject CameraObj; - private Camera Camera; - private OWCamera OWCamera; - public bool IsSetUp { get; private set; } - public CameraMode Mode { get; private set; } + public class CameraManager : MonoBehaviour + { + public static CameraManager Instance; + private GameObject CameraBase; + private GameObject CameraObj; + private Camera Camera; + private OWCamera OWCamera; + public bool IsSetUp { get; private set; } + public CameraMode Mode { get; private set; } - public void Start() - { - Instance = this; - SetupCamera(); - } + public void Start() + { + Instance = this; + SetupCamera(); + } - private void SetupCamera() - { - CameraBase = new GameObject(); - CameraBase.SetActive(false); - CameraBase.AddComponent(); - CameraBase.transform.parent = Locator.GetPlayerTransform(); - CameraBase.transform.localPosition = Vector3.zero; - CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); + private void SetupCamera() + { + CameraBase = new GameObject(); + CameraBase.SetActive(false); + CameraBase.AddComponent(); + CameraBase.transform.parent = Locator.GetPlayerTransform(); + CameraBase.transform.localPosition = Vector3.zero; + CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); - CameraObj = new GameObject(); - CameraObj.transform.parent = CameraBase.transform; - CameraObj.transform.localPosition = new Vector3(0, 0, -5f); - CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); - Camera = CameraObj.AddComponent(); - Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); - Camera.clearFlags = CameraClearFlags.Color; - Camera.backgroundColor = Color.black; - Camera.fieldOfView = 90f; - Camera.nearClipPlane = 0.1f; - Camera.farClipPlane = 40000f; - Camera.depth = 0f; - Camera.enabled = false; - OWCamera = CameraObj.AddComponent(); - OWCamera.renderSkybox = true; + CameraObj = new GameObject(); + CameraObj.transform.parent = CameraBase.transform; + CameraObj.transform.localPosition = new Vector3(0, 0, -5f); + CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); + Camera = CameraObj.AddComponent(); + Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); + Camera.clearFlags = CameraClearFlags.Color; + Camera.backgroundColor = Color.black; + Camera.fieldOfView = 90f; + Camera.nearClipPlane = 0.1f; + Camera.farClipPlane = 40000f; + Camera.depth = 0f; + Camera.enabled = false; + OWCamera = CameraObj.AddComponent(); + OWCamera.renderSkybox = true; - CameraBase.AddComponent().CameraObject = CameraObj; + CameraBase.AddComponent().CameraObject = CameraObj; - var screenGrab = CameraObj.AddComponent(); - screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; + var screenGrab = CameraObj.AddComponent(); + screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; - var fogImage = CameraObj.AddComponent(); - fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; + var fogImage = CameraObj.AddComponent(); + fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; - CameraBase.SetActive(true); + CameraBase.SetActive(true); - IsSetUp = true; - } + IsSetUp = true; + } - public void SwitchTo3rdPerson() - { - if (!IsSetUp) - { - DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); - OWInput.ChangeInputMode(InputMode.None); - Mode = CameraMode.ThirdPerson; - return; - } - if (Mode == CameraMode.ThirdPerson) - { - DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); - return; - } - if (OWInput.GetInputMode() != InputMode.Character) - { - DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); - return; - } - OWInput.ChangeInputMode(InputMode.None); - GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); - Locator.GetPlayerCamera().mainCamera.enabled = false; - if (CameraObj.GetComponent() == null) - { - var postProcessing = CameraObj.AddComponent(); - postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; - } - Camera.enabled = true; - Mode = CameraMode.ThirdPerson; - } + public void SwitchTo3rdPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.None); + Mode = CameraMode.ThirdPerson; + return; + } + if (Mode == CameraMode.ThirdPerson) + { + DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); + return; + } + if (OWInput.GetInputMode() != InputMode.Character) + { + DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.None); + GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); + Locator.GetPlayerCamera().mainCamera.enabled = false; + if (CameraObj.GetComponent() == null) + { + var postProcessing = CameraObj.AddComponent(); + postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; + } + Camera.enabled = true; + Mode = CameraMode.ThirdPerson; + } - public void SwitchTo1stPerson() - { - if (!IsSetUp) - { - DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); - OWInput.ChangeInputMode(InputMode.Character); - Mode = CameraMode.FirstPerson; - return; - } - if (Mode == CameraMode.FirstPerson) - { - DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); - return; - } - OWInput.ChangeInputMode(InputMode.Character); - GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); - Locator.GetActiveCamera().mainCamera.enabled = true; - Camera.enabled = false; - Mode = CameraMode.FirstPerson; - } - } + public void SwitchTo1stPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.Character); + Mode = CameraMode.FirstPerson; + return; + } + if (Mode == CameraMode.FirstPerson) + { + DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.Character); + GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); + Locator.GetActiveCamera().mainCamera.enabled = true; + Camera.enabled = false; + Mode = CameraMode.FirstPerson; + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs index 7102ec52b..738ca214d 100644 --- a/QSB/Instruments/QSBCamera/CameraMode.cs +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -1,8 +1,8 @@ namespace QSB.Instruments.QSBCamera { - public enum CameraMode - { - FirstPerson, - ThirdPerson - } + public enum CameraMode + { + FirstPerson, + ThirdPerson + } } diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index adb8d4bfb..6138b2db2 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -3,20 +3,20 @@ namespace QSB.MessagesCore { - public class EnumMessage : PlayerMessage - { - public T Value; + public class EnumMessage : PlayerMessage + { + public T Value; - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Value = (T)(object)reader.ReadInt32(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Value = (T)(object)reader.ReadInt32(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write((int)(object)Value); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write((int)(object)Value); + } + } } diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/MessagesCore/FloatMessage.cs index 9cc74f21f..b0ce45a0e 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -3,20 +3,20 @@ namespace QSB.MessagesCore { - public class FloatMessage : PlayerMessage - { - public float Value; + public class FloatMessage : PlayerMessage + { + public float Value; - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Value = reader.ReadSingle(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Value = reader.ReadSingle(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(Value); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(Value); + } + } } \ No newline at end of file diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index f694ba533..125b1087e 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -7,68 +7,68 @@ namespace QSB.Messaging { - // Extend this to create new message handlers. - public class MessageHandler where T : MessageBase, new() - { - public event Action OnClientReceiveMessage; - public event Action OnServerReceiveMessage; + // Extend this to create new message handlers. + public class MessageHandler where T : MessageBase, new() + { + public event Action OnClientReceiveMessage; + public event Action OnServerReceiveMessage; - private readonly EventType _eventType; + private readonly EventType _eventType; - public MessageHandler(EventType eventType) - { - _eventType = eventType + MsgType.Highest + 1; - if (QSBNetworkManager.Instance.IsReady) - { - Init(); - } - else - { - QSBNetworkManager.Instance.OnNetworkManagerReady += Init; - } - } + public MessageHandler(EventType eventType) + { + _eventType = eventType + MsgType.Highest + 1; + if (QSBNetworkManager.Instance.IsReady) + { + Init(); + } + else + { + QSBNetworkManager.Instance.OnNetworkManagerReady += Init; + } + } - private void Init() - { - var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); - if (NetworkServer.handlers.Keys.Contains((short)_eventType)) - { - DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); - NetworkServer.handlers.Remove((short)_eventType); - } - NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); - NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); - } + private void Init() + { + var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); + if (NetworkServer.handlers.Keys.Contains((short)_eventType)) + { + DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); + NetworkServer.handlers.Remove((short)_eventType); + } + NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); + NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); + } - public void SendToAll(T message) - { - if (!QSBNetworkManager.Instance.IsReady) - { - return; - } - NetworkServer.SendToAll((short)_eventType, message); - } + public void SendToAll(T message) + { + if (!QSBNetworkManager.Instance.IsReady) + { + return; + } + NetworkServer.SendToAll((short)_eventType, message); + } - public void SendToServer(T message) - { - if (!QSBNetworkManager.Instance.IsReady) - { - return; - } - NetworkManager.singleton.client.Send((short)_eventType, message); - } + public void SendToServer(T message) + { + if (!QSBNetworkManager.Instance.IsReady) + { + return; + } + NetworkManager.singleton.client.Send((short)_eventType, message); + } - private void OnClientReceiveMessageHandler(NetworkMessage netMsg) - { - var message = netMsg.ReadMessage(); - OnClientReceiveMessage?.Invoke(message); - } + private void OnClientReceiveMessageHandler(NetworkMessage netMsg) + { + var message = netMsg.ReadMessage(); + OnClientReceiveMessage?.Invoke(message); + } - private void OnServerReceiveMessageHandler(NetworkMessage netMsg) - { - var message = netMsg.ReadMessage(); - OnServerReceiveMessage?.Invoke(message); - } + private void OnServerReceiveMessageHandler(NetworkMessage netMsg) + { + var message = netMsg.ReadMessage(); + OnServerReceiveMessage?.Invoke(message); + } - } + } } diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 2a9f73d84..054465e30 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -2,21 +2,21 @@ namespace QSB.Messaging { - public class PlayerMessage : MessageBase - { - public uint FromId { get; set; } - public uint AboutId { get; set; } + public class PlayerMessage : MessageBase + { + public uint FromId { get; set; } + public uint AboutId { get; set; } - public override void Deserialize(NetworkReader reader) - { - FromId = reader.ReadUInt32(); - AboutId = reader.ReadUInt32(); - } + public override void Deserialize(NetworkReader reader) + { + FromId = reader.ReadUInt32(); + AboutId = reader.ReadUInt32(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(FromId); - writer.Write(AboutId); - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(FromId); + writer.Write(AboutId); + } + } } diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs index 8e2f02926..328cafedc 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/MessagesCore/ToggleMessage.cs @@ -2,20 +2,20 @@ namespace QSB.Messaging { - public class ToggleMessage : PlayerMessage - { - public bool ToggleValue { get; set; } + public class ToggleMessage : PlayerMessage + { + public bool ToggleValue { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ToggleValue = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ToggleValue = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ToggleValue); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ToggleValue); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 11e4dedc8..5ade3e1e5 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -4,27 +4,27 @@ namespace QSB.OrbSync.Events { - public class OrbSlotEvent : QSBEvent - { - public override EventType Type => EventType.OrbSlot; + public class OrbSlotEvent : QSBEvent + { + public override EventType Type => EventType.OrbSlot; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id, - State = state - }; + private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + State = state + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var orbSlot = WorldRegistry.GetObject(message.ObjectId); - orbSlot?.SetState(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var orbSlot = WorldRegistry.GetObject(message.ObjectId); + orbSlot?.SetState(message.State); + } + } } diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 4f24d5e82..11b648fa2 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -9,65 +9,65 @@ namespace QSB.OrbSync.Events { - public class OrbUserEvent : QSBEvent - { - public override EventType Type => EventType.OrbUser; + public class OrbUserEvent : QSBEvent + { + public override EventType Type => EventType.OrbUser; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); - private void Handler(int id) => SendEvent(CreateMessage(id)); + private void Handler(int id) => SendEvent(CreateMessage(id)); - private WorldObjectMessage CreateMessage(int id) => new WorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id - }; + private WorldObjectMessage CreateMessage(int id) => new WorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id + }; - public override void OnServerReceive(WorldObjectMessage message) - { - var fromPlayer = NetworkServer.connections - .First(x => x.playerControllers[0].gameObject.GetComponent().netId.Value == message.FromId); - if (WorldRegistry.OrbSyncList.Count == 0) - { - DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); - if (orb == null) - { - DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orbIdentity = orb.GetComponent(); - if (orbIdentity == null) - { - DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (orbIdentity.clientAuthorityOwner != null) - { - orbIdentity.RemoveClientAuthority(orbIdentity.clientAuthorityOwner); - } - orbIdentity.AssignClientAuthority(fromPlayer); - orb.enabled = true; - } + public override void OnServerReceive(WorldObjectMessage message) + { + var fromPlayer = NetworkServer.connections + .First(x => x.playerControllers[0].gameObject.GetComponent().netId.Value == message.FromId); + if (WorldRegistry.OrbSyncList.Count == 0) + { + DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orb = WorldRegistry.OrbSyncList + .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + if (orb == null) + { + DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orbIdentity = orb.GetComponent(); + if (orbIdentity == null) + { + DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (orbIdentity.clientAuthorityOwner != null) + { + orbIdentity.RemoveClientAuthority(orbIdentity.clientAuthorityOwner); + } + orbIdentity.AssignClientAuthority(fromPlayer); + orb.enabled = true; + } - public override void OnReceiveRemote(WorldObjectMessage message) - { - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); - orb.enabled = true; - } + public override void OnReceiveRemote(WorldObjectMessage message) + { + var orb = WorldRegistry.OrbSyncList + .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + orb.enabled = true; + } - public override void OnReceiveLocal(WorldObjectMessage message) - { - if (NetworkServer.active) - { - OnServerReceive(message); - } - } - } + public override void OnReceiveLocal(WorldObjectMessage message) + { + if (NetworkServer.active) + { + OnServerReceive(message); + } + } + } } diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 37b812337..021ab5d91 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -7,51 +7,53 @@ namespace QSB.OrbSync { - public class OrbManager : MonoBehaviour - { - public static OrbManager Instance { get; private set; } - - private void Awake() - => Instance = this; - - private void BuildOrbSlots() - { - DebugLog.DebugWrite("Building QSBOrbSlots..."); - - var orbSlots = Resources.FindObjectsOfTypeAll(); - for (var id = 0; id < orbSlots.Length; id++) - { - var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); - qsbOrbSlot.Init(orbSlots[id], id); - } - - DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs.", MessageType.Success); - } - - public void BuildOrbs() - { - DebugLog.DebugWrite("Building orb syncs..."); - WorldRegistry.OldOrbList.Clear(); - - WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); - if (NetworkServer.active) - { - DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); - } - } - - public void QueueBuildSlots() - { - DebugLog.DebugWrite("Queueing build of QSBOrbSlots..."); - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); - } - - public void QueueBuildOrbs() - { - DebugLog.DebugWrite("Queueing build of NetworkOrbs..."); - QSB.Helper.Events.Unity.RunWhen(() => NetworkServer.active, BuildOrbs); - } - } + public class OrbManager : MonoBehaviour + { + public static OrbManager Instance { get; private set; } + + private void Awake() + { + Instance = this; + } + + private void BuildOrbSlots() + { + DebugLog.DebugWrite("Building QSBOrbSlots..."); + + var orbSlots = Resources.FindObjectsOfTypeAll(); + for (var id = 0; id < orbSlots.Length; id++) + { + var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); + qsbOrbSlot.Init(orbSlots[id], id); + } + + DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs.", MessageType.Success); + } + + public void BuildOrbs() + { + DebugLog.DebugWrite("Building orb syncs..."); + WorldRegistry.OldOrbList.Clear(); + + WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); + if (NetworkServer.active) + { + DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); + WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + } + } + + public void QueueBuildSlots() + { + DebugLog.DebugWrite("Queueing build of QSBOrbSlots..."); + QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); + } + + public void QueueBuildOrbs() + { + DebugLog.DebugWrite("Queueing build of NetworkOrbs..."); + QSB.Helper.Events.Unity.RunWhen(() => NetworkServer.active, BuildOrbs); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 8fd21ceba..436dc6fdc 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -4,60 +4,60 @@ namespace QSB.OrbSync { - public class OrbPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public class OrbPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) - { - if (__result) - { - GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); - } - } + public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) + { + if (__result) + { + GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); + } + } - public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __instance, NomaiInterfaceOrb orb, - bool ____ignoreDraggedOrbs, float ____radius, float ____exitRadius, ref NomaiInterfaceOrb ____occupyingOrb) - { - if (____ignoreDraggedOrbs && orb.IsBeingDragged()) - { - __result = false; - return false; - } - var orbDistance = Vector3.Distance(orb.transform.position, __instance.transform.position); - var triggerRadius = orb.IsBeingDragged() ? ____exitRadius : ____radius; - if (____occupyingOrb == null && orbDistance < ____radius) - { - ____occupyingOrb = orb; - if (Time.timeSinceLevelLoad > 1f) - { - WorldRegistry.HandleSlotStateChange(__instance, orb, true); - WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); - } - __result = true; - return false; - } - if (____occupyingOrb == null || ____occupyingOrb != orb) - { - __result = false; - return false; - } - if (orbDistance > triggerRadius) - { - WorldRegistry.HandleSlotStateChange(__instance, orb, false); - ____occupyingOrb = null; - WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); - __result = false; - return false; - } - __result = true; - return false; - } + public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __instance, NomaiInterfaceOrb orb, + bool ____ignoreDraggedOrbs, float ____radius, float ____exitRadius, ref NomaiInterfaceOrb ____occupyingOrb) + { + if (____ignoreDraggedOrbs && orb.IsBeingDragged()) + { + __result = false; + return false; + } + var orbDistance = Vector3.Distance(orb.transform.position, __instance.transform.position); + var triggerRadius = orb.IsBeingDragged() ? ____exitRadius : ____radius; + if (____occupyingOrb == null && orbDistance < ____radius) + { + ____occupyingOrb = orb; + if (Time.timeSinceLevelLoad > 1f) + { + WorldRegistry.HandleSlotStateChange(__instance, orb, true); + WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); + } + __result = true; + return false; + } + if (____occupyingOrb == null || ____occupyingOrb != orb) + { + __result = false; + return false; + } + if (orbDistance > triggerRadius) + { + WorldRegistry.HandleSlotStateChange(__instance, orb, false); + ____occupyingOrb = null; + WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); + __result = false; + return false; + } + __result = true; + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); - QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); + QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); + } + } } diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index ff3af77a8..9358557c3 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -3,36 +3,36 @@ namespace QSB.OrbSync { - public class QSBOrbSlot : WorldObject - { - public NomaiInterfaceSlot InterfaceSlot { get; private set; } + public class QSBOrbSlot : WorldObject + { + public NomaiInterfaceSlot InterfaceSlot { get; private set; } - private bool _initialized; + private bool _initialized; - public void Init(NomaiInterfaceSlot slot, int id) - { - ObjectId = id; - InterfaceSlot = slot; - _initialized = true; - WorldRegistry.AddObject(this); - } + public void Init(NomaiInterfaceSlot slot, int id) + { + ObjectId = id; + InterfaceSlot = slot; + _initialized = true; + WorldRegistry.AddObject(this); + } - public void HandleEvent(bool state) - { - if (QSB.HasWokenUp) - { - GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); - } - } + public void HandleEvent(bool state) + { + if (QSB.HasWokenUp) + { + GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); + } + } - public void SetState(bool state) - { - if (!_initialized) - { - return; - } - var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; - WorldRegistry.RaiseEvent(InterfaceSlot, ev); - } - } + public void SetState(bool state) + { + if (!_initialized) + { + return; + } + var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; + WorldRegistry.RaiseEvent(InterfaceSlot, ev); + } + } } diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index 6bdeacd50..bafc9edbf 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -1,9 +1,9 @@ namespace QSB { - public abstract class QSBPatch - { - public abstract QSBPatchTypes Type { get; } + public abstract class QSBPatch + { + public abstract QSBPatchTypes Type { get; } - public abstract void DoPatches(); - } + public abstract void DoPatches(); + } } diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index c12473b8e..f558f71c0 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -12,38 +12,38 @@ namespace QSB.Patches { - public delegate void PatchEvent(QSBPatchTypes type); + public delegate void PatchEvent(QSBPatchTypes type); - public static class QSBPatchManager - { - public static List _patchList = new List(); + public static class QSBPatchManager + { + public static List _patchList = new List(); - public static event PatchEvent OnPatchType; + public static event PatchEvent OnPatchType; - public static void Init() - { - _patchList = new List - { - new ConversationPatches(), - new DeathPatches(), - new ElevatorPatches(), - new OrbPatches(), - new WakeUpPatches(), - new ProbePatches() - }; + public static void Init() + { + _patchList = new List + { + new ConversationPatches(), + new DeathPatches(), + new ElevatorPatches(), + new OrbPatches(), + new WakeUpPatches(), + new ProbePatches() + }; - DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); - } + DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); + } - public static void DoPatchType(QSBPatchTypes type) - { - OnPatchType?.Invoke(type); - DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); - foreach (var patch in _patchList.Where(x => x.Type == type)) - { - DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); - patch.DoPatches(); - } - } - } + public static void DoPatchType(QSBPatchTypes type) + { + OnPatchType?.Invoke(type); + DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); + foreach (var patch in _patchList.Where(x => x.Type == type)) + { + DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); + patch.DoPatches(); + } + } + } } diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 4b2e689ed..53ff573de 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -1,9 +1,9 @@ namespace QSB { - public enum QSBPatchTypes - { - OnModStart, - OnClientConnect, - OnNonServerClientConnect - } + public enum QSBPatchTypes + { + OnModStart, + OnClientConnect, + OnNonServerClientConnect + } } diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index ed1fa4542..07bb919c9 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -4,36 +4,36 @@ namespace QSB.Player.Events { - public class PlayerJoinEvent : QSBEvent - { - public override EventType Type => EventType.PlayerJoin; + public class PlayerJoinEvent : QSBEvent + { + public override EventType Type => EventType.PlayerJoin; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); - private void Handler(string name) => SendEvent(CreateMessage(name)); + private void Handler(string name) => SendEvent(CreateMessage(name)); - private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage - { - AboutId = LocalPlayerId, - PlayerName = name - }; + private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage + { + AboutId = LocalPlayerId, + PlayerName = name + }; - public override void OnReceiveRemote(PlayerJoinMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.Name = message.PlayerName; - DebugLog.ToHud($"{player.Name} joined!"); - DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); - } + public override void OnReceiveRemote(PlayerJoinMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.Name = message.PlayerName; + DebugLog.ToHud($"{player.Name} joined!"); + DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); + } - public override void OnReceiveLocal(PlayerJoinMessage message) - { - var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); - player.Name = message.PlayerName; - var text = $"Connected to server as {player.Name}."; - DebugLog.ToAll(text, MessageType.Info); - } - } + public override void OnReceiveLocal(PlayerJoinMessage message) + { + var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); + player.Name = message.PlayerName; + var text = $"Connected to server as {player.Name}."; + DebugLog.ToAll(text, MessageType.Info); + } + } } diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index d313e050e..97a1efa39 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -3,20 +3,20 @@ namespace QSB.Player.Events { - public class PlayerJoinMessage : PlayerMessage - { - public string PlayerName { get; set; } + public class PlayerJoinMessage : PlayerMessage + { + public string PlayerName { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - PlayerName = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + PlayerName = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(PlayerName); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(PlayerName); + } + } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index 3141e6148..bf7fca673 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -5,29 +5,29 @@ namespace QSB.Player.Events { - public class PlayerLeaveEvent : QSBEvent - { - public override EventType Type => EventType.PlayerLeave; + public class PlayerLeaveEvent : QSBEvent + { + public override EventType Type => EventType.PlayerLeave; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); - private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); + private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); - private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage - { - AboutId = playerId, - NetIds = netIds - }; + private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage + { + AboutId = playerId, + NetIds = netIds + }; - public override void OnReceiveRemote(PlayerLeaveMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); - QSBPlayerManager.RemovePlayer(message.AboutId); - message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); - } - } + public override void OnReceiveRemote(PlayerLeaveMessage message) + { + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; + DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); + QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(message.AboutId); + message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); + } + } } diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs index d4c559aba..216700437 100644 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -5,20 +5,20 @@ namespace QSB.Player.Events { - public class PlayerLeaveMessage : PlayerMessage - { - public uint[] NetIds { get; set; } + public class PlayerLeaveMessage : PlayerMessage + { + public uint[] NetIds { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); + } + } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 0b30f8fe8..796955ae0 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -7,46 +7,46 @@ namespace QSB.Player.Events { - public class PlayerReadyEvent : QSBEvent - { - public override EventType Type => EventType.PlayerReady; + public class PlayerReadyEvent : QSBEvent + { + public override EventType Type => EventType.PlayerReady; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); - private void Handler(bool ready) => SendEvent(CreateMessage(ready)); + private void Handler(bool ready) => SendEvent(CreateMessage(ready)); - private ToggleMessage CreateMessage(bool ready) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = ready - }; + private ToggleMessage CreateMessage(bool ready) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = ready + }; - public override void OnServerReceive(ToggleMessage message) - { - DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); - if (message.FromId == QSBPlayerManager.LocalPlayerId) - { - return; - } - QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - } + public override void OnServerReceive(ToggleMessage message) + { + DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); + if (message.FromId == QSBPlayerManager.LocalPlayerId) + { + return; + } + QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + } - public override void OnReceiveRemote(ToggleMessage message) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - if (!QSBPlayerManager.PlayerExists(message.FromId)) - { - DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); - return; - } - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); - } - } - } + public override void OnReceiveRemote(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); + return; + } + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + } + } + } } diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 7ed3bd9e1..784dee43c 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -7,41 +7,47 @@ namespace QSB.Player.Events { - public class PlayerSectorEvent : QSBEvent - { - public override EventType Type => EventType.PlayerSectorChange; - - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); - - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); - - private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); - - private WorldObjectMessage CreateMessage(uint netId, QSBSector sector) => new WorldObjectMessage - { - AboutId = netId, - ObjectId = sector.ObjectId - }; - - public override void OnReceiveRemote(WorldObjectMessage message) - { - if (!QSBSceneManager.IsInUniverse) - { - return; - } - var sector = WorldRegistry.GetObject(message.ObjectId); - - if (sector == null) - { - DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); - return; - } - - var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); - - QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, - () => transformSync?.SetReferenceSector(sector)); - } - - } + public class PlayerSectorEvent : QSBEvent + { + public override EventType Type => EventType.PlayerSectorChange; + + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); + } + + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); + } + + private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); + + private WorldObjectMessage CreateMessage(uint netId, QSBSector sector) => new WorldObjectMessage + { + AboutId = netId, + ObjectId = sector.ObjectId + }; + + public override void OnReceiveRemote(WorldObjectMessage message) + { + if (!QSBSceneManager.IsInUniverse) + { + return; + } + var sector = WorldRegistry.GetObject(message.ObjectId); + + if (sector == null) + { + DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); + return; + } + + var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); + + QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, + () => transformSync?.SetReferenceSector(sector)); + } + + } } diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index a1dcef64f..b881e4c1d 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -3,32 +3,32 @@ namespace QSB.Player.Events { - public class PlayerStateMessage : PlayerMessage - { - public string PlayerName { get; set; } - public bool PlayerReady { get; set; } - public State PlayerState { get; set; } - public Sector.Name SectorID { get; set; } - public string SectorName { get; set; } + public class PlayerStateMessage : PlayerMessage + { + public string PlayerName { get; set; } + public bool PlayerReady { get; set; } + public State PlayerState { get; set; } + public Sector.Name SectorID { get; set; } + public string SectorName { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - PlayerName = reader.ReadString(); - PlayerReady = reader.ReadBoolean(); - PlayerState = (State)reader.ReadInt32(); - SectorID = (Sector.Name)reader.ReadInt32(); - SectorName = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + PlayerName = reader.ReadString(); + PlayerReady = reader.ReadBoolean(); + PlayerState = (State)reader.ReadInt32(); + SectorID = (Sector.Name)reader.ReadInt32(); + SectorName = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(PlayerName); - writer.Write(PlayerReady); - writer.Write((int)PlayerState); - writer.Write((int)SectorID); - writer.Write(SectorName); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(PlayerName); + writer.Write(PlayerReady); + writer.Write((int)PlayerState); + writer.Write((int)SectorID); + writer.Write(SectorName); + } + } } diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 302c0966e..3afb3fa3a 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -6,30 +6,30 @@ namespace QSB.Player.Events { - public class PlayerStatesRequestEvent : QSBEvent - { - public override EventType Type => EventType.PlayerStatesRequest; + public class PlayerStatesRequestEvent : QSBEvent + { + public override EventType Type => EventType.PlayerStatesRequest; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); - private void Handler() => SendEvent(CreateMessage()); + private void Handler() => SendEvent(CreateMessage()); - private PlayerMessage CreateMessage() => new PlayerMessage - { - AboutId = LocalPlayerId - }; + private PlayerMessage CreateMessage() => new PlayerMessage + { + AboutId = LocalPlayerId + }; - public override void OnServerReceive(PlayerMessage message) - { - DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); - } - } - } + public override void OnServerReceive(PlayerMessage message) + { + DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + } + } + } } diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index 53d0f082e..ac9230bd5 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -4,37 +4,37 @@ namespace QSB.Player.Events { - public class ServerSendPlayerStatesEvent : QSBEvent - { - public override EventType Type => EventType.PlayerState; + public class ServerSendPlayerStatesEvent : QSBEvent + { + public override EventType Type => EventType.PlayerState; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); - private void Handler() - { - foreach (var player in QSBPlayerManager.PlayerList) - { - DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); - SendEvent(CreateMessage(player)); - } - } + private void Handler() + { + foreach (var player in QSBPlayerManager.PlayerList) + { + DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); + SendEvent(CreateMessage(player)); + } + } - private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage - { - AboutId = player.PlayerId, - PlayerName = player.Name, - PlayerReady = player.IsReady, - PlayerState = player.State - }; + private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage + { + AboutId = player.PlayerId, + PlayerName = player.Name, + PlayerReady = player.IsReady, + PlayerState = player.State + }; - public override void OnReceiveRemote(PlayerStateMessage message) - { - DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen( - () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, - () => QSBPlayerManager.HandleFullStateMessage(message)); - } - } + public override void OnReceiveRemote(PlayerStateMessage message) + { + DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); + QSB.Helper.Events.Unity.RunWhen( + () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, + () => QSBPlayerManager.HandleFullStateMessage(message)); + } + } } diff --git a/QSB/Player/PlayerHUDMarker.cs b/QSB/Player/PlayerHUDMarker.cs index 61ea6f4f2..afc3a167b 100644 --- a/QSB/Player/PlayerHUDMarker.cs +++ b/QSB/Player/PlayerHUDMarker.cs @@ -2,58 +2,58 @@ namespace QSB.Player { - public class PlayerHUDMarker : HUDDistanceMarker - { - private PlayerInfo _player; - private bool _isReady; - - protected override void InitCanvasMarker() - { - _markerRadius = 2f; - - _markerTarget = new GameObject().transform; - _markerTarget.parent = transform; - - _markerTarget.localPosition = Vector3.up * 2; - } - - public void Init(PlayerInfo player) - { - _player = player; - _player.HudMarker = this; - _isReady = true; - } - - protected override void RefreshOwnVisibility() - { - if (_canvasMarker != null) - { - _canvasMarker.SetVisibility(true); - } - } - - private void Update() - { - if (!_isReady || !_player.IsReady) - { - return; - } - _markerLabel = _player.Name.ToUpper(); - _isReady = false; - - base.InitCanvasMarker(); - } - - public void Remove() - { - // do N O T destroy the parent - it completely breaks the ENTIRE GAME - if (_canvasMarker?.gameObject != null) - { - _canvasMarker.DestroyMarker(); - } - Destroy(_markerTarget.gameObject); - Destroy(this); - } - - } + public class PlayerHUDMarker : HUDDistanceMarker + { + private PlayerInfo _player; + private bool _isReady; + + protected override void InitCanvasMarker() + { + _markerRadius = 2f; + + _markerTarget = new GameObject().transform; + _markerTarget.parent = transform; + + _markerTarget.localPosition = Vector3.up * 2; + } + + public void Init(PlayerInfo player) + { + _player = player; + _player.HudMarker = this; + _isReady = true; + } + + protected override void RefreshOwnVisibility() + { + if (_canvasMarker != null) + { + _canvasMarker.SetVisibility(true); + } + } + + private void Update() + { + if (!_isReady || !_player.IsReady) + { + return; + } + _markerLabel = _player.Name.ToUpper(); + _isReady = false; + + base.InitCanvasMarker(); + } + + public void Remove() + { + // do N O T destroy the parent - it completely breaks the ENTIRE GAME + if (_canvasMarker?.gameObject != null) + { + _canvasMarker.DestroyMarker(); + } + Destroy(_markerTarget.gameObject); + Destroy(this); + } + + } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index dec375615..27ec6bc4c 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -6,79 +6,79 @@ namespace QSB.Player { - public class PlayerInfo - { - public uint PlayerId { get; } - public string Name { get; set; } - public bool IsReady { get; set; } - public PlayerHUDMarker HudMarker { get; set; } - public State State { get; set; } + public class PlayerInfo + { + public uint PlayerId { get; } + public string Name { get; set; } + public bool IsReady { get; set; } + public PlayerHUDMarker HudMarker { get; set; } + public State State { get; set; } - // Body Objects - public GameObject Camera { get; set; } - public GameObject Body { get; set; } + // Body Objects + public GameObject Camera { get; set; } + public GameObject Body { get; set; } - // Tools - public GameObject ProbeBody { get; set; } - public QSBProbe Probe { get; set; } - public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); - public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); - public QSBTool Translator => GetToolByType(ToolType.Translator); - public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); + // Tools + public GameObject ProbeBody { get; set; } + public QSBProbe Probe { get; set; } + public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); + public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); + public QSBTool Translator => GetToolByType(ToolType.Translator); + public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); - // Conversation - public int CurrentDialogueID { get; set; } - public GameObject CurrentDialogueBox { get; set; } + // Conversation + public int CurrentDialogueID { get; set; } + public GameObject CurrentDialogueBox { get; set; } - // Animation - public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); - public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited - && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; + // Animation + public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); + public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited + && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; - public PlayerInfo(uint id) - { - DebugLog.DebugWrite($"Creating PlayerInfo with id {id}"); - PlayerId = id; - CurrentDialogueID = -1; - } + public PlayerInfo(uint id) + { + DebugLog.DebugWrite($"Creating PlayerInfo with id {id}"); + PlayerId = id; + CurrentDialogueID = -1; + } - public void UpdateState(State state, bool value) - { - var states = State; - if (value) - { - FlagsHelper.Set(ref states, state); - } - else - { - FlagsHelper.Unset(ref states, state); - } - State = states; - } + public void UpdateState(State state, bool value) + { + var states = State; + if (value) + { + FlagsHelper.Set(ref states, state); + } + else + { + FlagsHelper.Unset(ref states, state); + } + State = states; + } - public void UpdateStateObjects() - { - if (OWInput.GetInputMode() == InputMode.None) - { - return; - } - FlashLight?.UpdateState(FlagsHelper.IsSet(State, State.Flashlight)); - Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); - ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); - Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, - () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); - } + public void UpdateStateObjects() + { + if (OWInput.GetInputMode() == InputMode.None) + { + return; + } + FlashLight?.UpdateState(FlagsHelper.IsSet(State, State.Flashlight)); + Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); + ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); + Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, + () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); + } - public bool GetState(State state) - { - return FlagsHelper.IsSet(State, state); - } + public bool GetState(State state) + { + return FlagsHelper.IsSet(State, state); + } - private QSBTool GetToolByType(ToolType type) - { - return Camera?.GetComponentsInChildren() - .FirstOrDefault(x => x.Type == type); - } - } + private QSBTool GetToolByType(ToolType type) + { + return Camera?.GetComponentsInChildren() + .FirstOrDefault(x => x.Type == type); + } + } } \ No newline at end of file diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 6b6be8379..923fbe857 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -2,11 +2,11 @@ namespace QSB.Player { - public abstract class PlayerSyncObject : NetworkBehaviour - { - public uint AttachedNetId => GetComponent()?.netId.Value ?? uint.MaxValue; - public uint PlayerId => this.GetPlayerOfObject(); - public uint PreviousPlayerId { get; set; } - public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); - } + public abstract class PlayerSyncObject : NetworkBehaviour + { + public uint AttachedNetId => GetComponent()?.netId.Value ?? uint.MaxValue; + public uint PlayerId => this.GetPlayerOfObject(); + public uint PreviousPlayerId { get; set; } + public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); + } } diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 1dd2431b7..3d16dbc32 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -8,136 +8,142 @@ namespace QSB.Player { - public static class QSBPlayerManager - { - public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.netId.Value ?? uint.MaxValue; - public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); - public static List PlayerList { get; } = new List(); + public static class QSBPlayerManager + { + public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.netId.Value ?? uint.MaxValue; + public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); + public static List PlayerList { get; } = new List(); - public static List PlayerSyncObjects { get; } = new List(); + public static List PlayerSyncObjects { get; } = new List(); - public static PlayerInfo GetPlayer(uint id) - { - if (id == uint.MaxValue || id == 0U) - { - return default; - } - var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); - if (player != null) - { - return player; - } - DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); - player = new PlayerInfo(id); - PlayerList.Add(player); - return player; - } + public static PlayerInfo GetPlayer(uint id) + { + if (id == uint.MaxValue || id == 0U) + { + return default; + } + var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); + if (player != null) + { + return player; + } + DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); + player = new PlayerInfo(id); + PlayerList.Add(player); + return player; + } - public static void RemovePlayer(uint id) - { - DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); - PlayerList.Remove(GetPlayer(id)); - } + public static void RemovePlayer(uint id) + { + DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); + PlayerList.Remove(GetPlayer(id)); + } - public static void RemoveAllPlayers() - { - DebugLog.DebugWrite($"Removing all players.", MessageType.Info); - PlayerList.Clear(); - } + public static void RemoveAllPlayers() + { + DebugLog.DebugWrite($"Removing all players.", MessageType.Info); + PlayerList.Clear(); + } - public static bool PlayerExists(uint id) - => id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); + public static bool PlayerExists(uint id) + { + return id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); + } - public static void HandleFullStateMessage(PlayerStateMessage message) - { - var player = GetPlayer(message.AboutId); - player.Name = message.PlayerName; - player.IsReady = message.PlayerReady; - player.State = message.PlayerState; - if (LocalPlayer.IsReady) - { - player.UpdateStateObjects(); - } - } + public static void HandleFullStateMessage(PlayerStateMessage message) + { + var player = GetPlayer(message.AboutId); + player.Name = message.PlayerName; + player.IsReady = message.PlayerReady; + player.State = message.PlayerState; + if (LocalPlayer.IsReady) + { + player.UpdateStateObjects(); + } + } - public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - => PlayerSyncObjects.OfType().Where(x => x != null); + public static IEnumerable GetSyncObjects() where T : PlayerSyncObject + { + return PlayerSyncObjects.OfType().Where(x => x != null); + } - public static T GetSyncObject(uint id) where T : PlayerSyncObject - => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + public static T GetSyncObject(uint id) where T : PlayerSyncObject + { + return GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + } - public static bool IsBelongingToLocalPlayer(uint id) - { - return id == LocalPlayerId || - PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.isLocalPlayer); - } + public static bool IsBelongingToLocalPlayer(uint id) + { + return id == LocalPlayerId || + PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.isLocalPlayer); + } - public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) - { - if (PlayerList.Count == 0) - { - DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // Get all Player IDs - var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); - // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. - var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); - if (playerIds.Min() > syncObject.AttachedNetId) - { - DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) - // and the highest ID below the syncobject's id is the same as the highest player id. - if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) - { - // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. - if (syncObject.PreviousPlayerId != uint.MaxValue) - { - return syncObject.PreviousPlayerId; - } - // If the syncobject is a PlayerTransformSync, make a player. - if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) - { - return GetPlayer(syncObject.AttachedNetId).PlayerId; - } - DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - if (syncObject.PreviousPlayerId == uint.MaxValue) - { - DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - } - syncObject.PreviousPlayerId = lowerBound; - return lowerBound; - } + public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) + { + if (PlayerList.Count == 0) + { + DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + // Get all Player IDs + var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); + // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. + var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); + if (playerIds.Min() > syncObject.AttachedNetId) + { + DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) + // and the highest ID below the syncobject's id is the same as the highest player id. + if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) + { + // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. + if (syncObject.PreviousPlayerId != uint.MaxValue) + { + return syncObject.PreviousPlayerId; + } + // If the syncobject is a PlayerTransformSync, make a player. + if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) + { + return GetPlayer(syncObject.AttachedNetId).PlayerId; + } + DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + if (syncObject.PreviousPlayerId == uint.MaxValue) + { + DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + } + syncObject.PreviousPlayerId = lowerBound; + return lowerBound; + } - public static List GetPlayerNetIds(PlayerInfo player) - { - if (PlayerSyncObjects.Count == 0) - { - return default; - } - var count = 0; - var totalCount = PlayerSyncObjects.Count; - PlayerSyncObjects.RemoveAll(x => x == null); - PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); - if (PlayerSyncObjects.Count != totalCount) - { - DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); - } - foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) - { - if (item.PlayerId == player.PlayerId) - { - count++; - } - } - return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); - } - } + public static List GetPlayerNetIds(PlayerInfo player) + { + if (PlayerSyncObjects.Count == 0) + { + return default; + } + int count = 0; + int totalCount = PlayerSyncObjects.Count; + PlayerSyncObjects.RemoveAll(x => x == null); + PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); + if (PlayerSyncObjects.Count != totalCount) + { + DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); + } + foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) + { + if (item.PlayerId == player.PlayerId) + { + count++; + } + } + return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); + } + } } diff --git a/QSB/Player/State.cs b/QSB/Player/State.cs index 49b666abb..d0217277f 100644 --- a/QSB/Player/State.cs +++ b/QSB/Player/State.cs @@ -2,16 +2,16 @@ namespace QSB.Player { - [Flags] - public enum State - { - None = 0, - Flashlight = 1, - Suit = 2, - ProbeLauncher = 4, - Signalscope = 8, - Translator = 16, - ProbeActive = 32 - //Increment these in binary to add more states - } + [Flags] + public enum State + { + None = 0, + Flashlight = 1, + Suit = 2, + ProbeLauncher = 4, + Signalscope = 8, + Translator = 16, + ProbeActive = 32 + //Increment these in binary to add more states + } } \ No newline at end of file diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 57a29a639..09c19bdc8 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -14,67 +14,67 @@ namespace QSB { - public class QSB : ModBehaviour - { - public static IModBehaviour ModBehaviour { get; private set; } - public static IModHelper Helper { get; private set; } - public static string DefaultServerIP { get; private set; } - public static int Port { get; private set; } - public static bool DebugMode { get; private set; } - public static AssetBundle NetworkAssetBundle { get; private set; } - public static AssetBundle InstrumentAssetBundle { get; private set; } - public static bool HasWokenUp { get; set; } + public class QSB : ModBehaviour + { + public static IModBehaviour ModBehaviour { get; private set; } + public static IModHelper Helper { get; private set; } + public static string DefaultServerIP { get; private set; } + public static int Port { get; private set; } + public static bool DebugMode { get; private set; } + public static AssetBundle NetworkAssetBundle { get; private set; } + public static AssetBundle InstrumentAssetBundle { get; private set; } + public static bool HasWokenUp { get; set; } - private void Awake() - { - Application.runInBackground = true; + private void Awake() + { + Application.runInBackground = true; - var instance = TextTranslation.Get().GetValue("m_table"); - instance.theUITable[(int)UITextType.PleaseUseController] = - "Quantum Space Buddies is best experienced with friends..."; + var instance = TextTranslation.Get().GetValue("m_table"); + instance.theUITable[(int)UITextType.PleaseUseController] = + "Quantum Space Buddies is best experienced with friends..."; - ModBehaviour = this; - } + ModBehaviour = this; + } - private void Start() - { - Helper = ModHelper; - DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); + private void Start() + { + Helper = ModHelper; + DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); - NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); - InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); + NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); + InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); - QSBPatchManager.Init(); + QSBPatchManager.Init(); - QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); + QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); - // Turns out these are very finicky about what order they go. QSBNetworkManager seems to - // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being - // null (even though it isn't...) - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); + // Turns out these are very finicky about what order they go. QSBNetworkManager seems to + // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being + // null (even though it isn't...) + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); - // Stop players being able to pause - Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); - } + // Stop players being able to pause + Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); + } - public override void Configure(IModConfig config) - { - DefaultServerIP = config.GetSettingsValue("defaultServerIP"); - Port = config.GetSettingsValue("port"); - if (QSBNetworkManager.Instance != null) - { - QSBNetworkManager.Instance.networkPort = Port; - } - DebugMode = config.GetSettingsValue("debugMode"); - } - } + public override void Configure(IModConfig config) + { + DefaultServerIP = config.GetSettingsValue("defaultServerIP"); + Port = config.GetSettingsValue("port"); + if (QSBNetworkManager.Instance != null) + { + QSBNetworkManager.Instance.networkPort = Port; + } + DebugMode = config.GetSettingsValue("debugMode"); + } + } } diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index 2b335f6dd..ffd10ac06 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -2,56 +2,56 @@ namespace QSB { - public delegate void InputEvent(); + public delegate void InputEvent(); - public class QSBInputManager : MonoBehaviour - { - public static QSBInputManager Instance; + public class QSBInputManager : MonoBehaviour + { + public static QSBInputManager Instance; - public static event InputEvent ChertTaunt; - public static event InputEvent EskerTaunt; - public static event InputEvent RiebeckTaunt; - public static event InputEvent GabbroTaunt; - public static event InputEvent FeldsparTaunt; - public static event InputEvent ExitTaunt; + public static event InputEvent ChertTaunt; + public static event InputEvent EskerTaunt; + public static event InputEvent RiebeckTaunt; + public static event InputEvent GabbroTaunt; + public static event InputEvent FeldsparTaunt; + public static event InputEvent ExitTaunt; - public void Awake() - { - Instance = this; - } + public void Awake() + { + Instance = this; + } - public void Update() - { - if (Input.GetKey(KeyCode.T)) - { - // Listed order is from sun to dark bramble - if (Input.GetKeyDown(KeyCode.Alpha1)) - { - ChertTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha2)) - { - EskerTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha5)) - { - RiebeckTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha4)) - { - GabbroTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha3)) - { - FeldsparTaunt?.Invoke(); - } - } + public void Update() + { + if (Input.GetKey(KeyCode.T)) + { + // Listed order is from sun to dark bramble + if (Input.GetKeyDown(KeyCode.Alpha1)) + { + ChertTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha2)) + { + EskerTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha5)) + { + RiebeckTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha4)) + { + GabbroTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha3)) + { + FeldsparTaunt?.Invoke(); + } + } - if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero - || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) - { - ExitTaunt?.Invoke(); - } - } - } + if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero + || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) + { + ExitTaunt?.Invoke(); + } + } + } } diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index d7f10c0e6..a19582a4e 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -6,65 +6,65 @@ namespace QSB { - public class QSBNetworkLobby : NetworkBehaviour - { - public bool CanEditName { get; set; } - public string PlayerName { get; private set; } + public class QSBNetworkLobby : NetworkBehaviour + { + public bool CanEditName { get; set; } + public string PlayerName { get; private set; } - private readonly string[] _defaultNames = { - "Arkose", - "Chert", - "Esker", - "Hal", - "Hornfels", - "Feldspar", - "Gabbro", - "Galena", - "Gneiss", - "Gossan", - "Marl", - "Mica", - "Moraine", - "Porphy", - "Riebeck", - "Rutile", - "Slate", - "Spinel", - "Tektite", - "Tephra", - "Tuff", - "Jinha" - }; + private readonly string[] _defaultNames = { + "Arkose", + "Chert", + "Esker", + "Hal", + "Hornfels", + "Feldspar", + "Gabbro", + "Galena", + "Gneiss", + "Gossan", + "Marl", + "Mica", + "Moraine", + "Porphy", + "Riebeck", + "Rutile", + "Slate", + "Spinel", + "Tektite", + "Tephra", + "Tuff", + "Jinha" + }; - private void Awake() - { - PlayerName = GetPlayerName(); - CanEditName = true; - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); - } + private void Awake() + { + PlayerName = GetPlayerName(); + CanEditName = true; + QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + } - private string GetPlayerName() - { - var profileManager = StandaloneProfileManager.SharedInstance; - profileManager.Initialize(); - var profile = profileManager.GetValue("_currentProfile"); - var profileName = profile?.profileName; - return !string.IsNullOrEmpty(profileName) - ? profileName - : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); - } + private string GetPlayerName() + { + var profileManager = StandaloneProfileManager.SharedInstance; + profileManager.Initialize(); + var profile = profileManager.GetValue("_currentProfile"); + var profileName = profile?.profileName; + return !string.IsNullOrEmpty(profileName) + ? profileName + : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); + } - private void OnGUI() - { - GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); - if (CanEditName) - { - PlayerName = GUI.TextField(new Rect(60, 10, 145, 20f), PlayerName); - } - else - { - GUI.Label(new Rect(60, 10, 145, 20f), PlayerName); - } - } - } + private void OnGUI() + { + GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); + if (CanEditName) + { + PlayerName = GUI.TextField(new Rect(60, 10, 145, 20f), PlayerName); + } + else + { + GUI.Label(new Rect(60, 10, 145, 20f), PlayerName); + } + } + } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 19e1bad17..0ab625c0d 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -21,276 +21,278 @@ namespace QSB { - public class QSBNetworkManager : NetworkManager - { - private const int MaxConnections = 128; - private const int MaxBufferedPackets = 64; - - public static QSBNetworkManager Instance { get; private set; } - - public event Action OnNetworkManagerReady; - public bool IsReady { get; private set; } - - private QSBNetworkLobby _lobby; - private AssetBundle _assetBundle; - private GameObject _shipPrefab; - private GameObject _cameraPrefab; - private GameObject _probePrefab; - public GameObject OrbPrefab; - - private void Awake() - { - Instance = this; - - _lobby = gameObject.AddComponent(); - _assetBundle = QSB.NetworkAssetBundle; - - playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - - _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); - _shipPrefab.AddComponent(); - spawnPrefabs.Add(_shipPrefab); - - _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); - _cameraPrefab.AddComponent(); - spawnPrefabs.Add(_cameraPrefab); - - _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); - _probePrefab.AddComponent(); - spawnPrefabs.Add(_probePrefab); - - OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - OrbPrefab.AddComponent(); - spawnPrefabs.Add(OrbPrefab); - - ConfigureNetworkManager(); - QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; - } - - private void OnDestroy() - => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; - - private void OnSceneLoaded(OWScene scene) - { - DebugLog.DebugWrite("scene loaded"); - OrbManager.Instance.BuildOrbs(); - OrbManager.Instance.QueueBuildSlots(); - WorldRegistry.OldDialogueTrees.Clear(); - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - - private void ConfigureNetworkManager() - { - networkAddress = QSB.DefaultServerIP; - networkPort = QSB.Port; - maxConnections = MaxConnections; - customConfig = true; - connectionConfig.AddChannel(QosType.Reliable); - connectionConfig.AddChannel(QosType.Unreliable); - this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); - channels.Add(QosType.Reliable); - channels.Add(QosType.Unreliable); - - DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); - } - - public override void OnStartServer() - { - DebugLog.DebugWrite("~~ ON START SERVER ~~", MessageType.Info); - if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) - { - OrbManager.Instance.QueueBuildOrbs(); - } - if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) - { - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - - NetworkServer.UnregisterHandler(40); - NetworkServer.UnregisterHandler(41); - NetworkServer.UnregisterHandler(42); - NetworkServer.RegisterHandler(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); - NetworkServer.RegisterHandler(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); - NetworkServer.RegisterHandler(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); - } - - public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins - { - DebugLog.DebugWrite("[S] Add player"); - base.OnServerAddPlayer(connection, playerControllerId); - - // These have to be in a constant order (for now, until we get a better netId getting system...) - NetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); - NetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); - NetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); - } - - public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server - { - base.OnClientConnect(connection); - - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - - if (QSBSceneManager.IsInUniverse) - { - QSBSectorManager.Instance.RebuildSectors(); - } - OrbManager.Instance.QueueBuildSlots(); - - if (!NetworkServer.localClientActive) - { - QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); - singleton.client.UnregisterHandler(40); - singleton.client.UnregisterHandler(41); - singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); - } - singleton.client.UnregisterHandler(42); - singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); - - QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); - - _lobby.CanEditName = false; - - OnNetworkManagerReady?.Invoke(); - IsReady = true; - - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, - () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, - () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); - } - - public override void OnStopClient() // Called on the client when closing connection - { - DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); - Destroy(GetComponent()); - Destroy(GetComponent()); - Destroy(GetComponent()); - QSBEventManager.Reset(); - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - - foreach (var player in QSBPlayerManager.PlayerList) - { - QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); - } - QSBPlayerManager.RemoveAllPlayers(); - - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldDialogueTrees.Clear(); - - _lobby.CanEditName = true; - } - - public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects - { - var playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; - var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, playerId, netIds); - - foreach (var item in WorldRegistry.OrbSyncList) - { - var identity = item.GetComponent(); - if (identity.clientAuthorityOwner == connection) - { - identity.RemoveClientAuthority(connection); - } - } - - QSBPlayerManager.GetPlayer(playerId).HudMarker?.Remove(); - CleanupConnection(connection); - } - - public override void OnStopServer() - { - Destroy(GetComponent()); - Destroy(GetComponent()); - Destroy(GetComponent()); - QSBEventManager.Reset(); - DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - NetworkServer.connections.ToList().ForEach(CleanupConnection); - - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - - base.OnStopServer(); - } - - private void CleanupConnection(NetworkConnection connection) - { - uint playerId; - try - { - playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; - } - catch (Exception ex) - { - DebugLog.ToConsole("Error when getting playerId in CleanupConnection: " + ex.Message, MessageType.Error); - return; - } - if (!QSBPlayerManager.PlayerExists(playerId)) - { - return; - } - var playerName = QSBPlayerManager.GetPlayer(playerId).Name; - DebugLog.ToConsole($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.RemovePlayer(playerId); - - var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); - netIds.ForEach(CleanupNetworkBehaviour); - } - - public void CleanupNetworkBehaviour(uint netId) - { - DebugLog.DebugWrite($"Cleaning up netId {netId}"); - // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them - var networkBehaviours = FindObjectsOfType() - .Where(x => x != null && x.netId.Value == netId); - foreach (var networkBehaviour in networkBehaviours) - { - var transformSync = networkBehaviour.GetComponent(); - - if (transformSync != null) - { - DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); - if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.hasAuthority) - { - DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); - Destroy(transformSync.SyncedTransform.gameObject); - } - } - - var animationSync = networkBehaviour.GetComponent(); - - if (animationSync != null) - { - DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); - } - - if (!networkBehaviour.hasAuthority) - { - DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); - Destroy(networkBehaviour.gameObject); - } - } - } - } + public class QSBNetworkManager : NetworkManager + { + private const int MaxConnections = 128; + private const int MaxBufferedPackets = 64; + + public static QSBNetworkManager Instance { get; private set; } + + public event Action OnNetworkManagerReady; + public bool IsReady { get; private set; } + + private QSBNetworkLobby _lobby; + private AssetBundle _assetBundle; + private GameObject _shipPrefab; + private GameObject _cameraPrefab; + private GameObject _probePrefab; + public GameObject OrbPrefab; + + private void Awake() + { + Instance = this; + + _lobby = gameObject.AddComponent(); + _assetBundle = QSB.NetworkAssetBundle; + + playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + + _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); + _shipPrefab.AddComponent(); + spawnPrefabs.Add(_shipPrefab); + + _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); + _cameraPrefab.AddComponent(); + spawnPrefabs.Add(_cameraPrefab); + + _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); + _probePrefab.AddComponent(); + spawnPrefabs.Add(_probePrefab); + + OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); + OrbPrefab.AddComponent(); + spawnPrefabs.Add(OrbPrefab); + + ConfigureNetworkManager(); + QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; + } + + private void OnDestroy() + { + QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene) + { + DebugLog.DebugWrite("scene loaded"); + OrbManager.Instance.BuildOrbs(); + OrbManager.Instance.QueueBuildSlots(); + WorldRegistry.OldDialogueTrees.Clear(); + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } + + private void ConfigureNetworkManager() + { + networkAddress = QSB.DefaultServerIP; + networkPort = QSB.Port; + maxConnections = MaxConnections; + customConfig = true; + connectionConfig.AddChannel(QosType.Reliable); + connectionConfig.AddChannel(QosType.Unreliable); + this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); + channels.Add(QosType.Reliable); + channels.Add(QosType.Unreliable); + + DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); + } + + public override void OnStartServer() + { + DebugLog.DebugWrite("~~ ON START SERVER ~~", MessageType.Info); + if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) + { + OrbManager.Instance.QueueBuildOrbs(); + } + if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) + { + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } + + NetworkServer.UnregisterHandler(40); + NetworkServer.UnregisterHandler(41); + NetworkServer.UnregisterHandler(42); + NetworkServer.RegisterHandler(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + NetworkServer.RegisterHandler(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + NetworkServer.RegisterHandler(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); + } + + public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins + { + DebugLog.DebugWrite("[S] Add player"); + base.OnServerAddPlayer(connection, playerControllerId); + + // These have to be in a constant order (for now, until we get a better netId getting system...) + NetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); + NetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); + NetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); + } + + public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server + { + base.OnClientConnect(connection); + + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + + if (QSBSceneManager.IsInUniverse) + { + QSBSectorManager.Instance.RebuildSectors(); + } + OrbManager.Instance.QueueBuildSlots(); + + if (!NetworkServer.localClientActive) + { + QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); + singleton.client.UnregisterHandler(40); + singleton.client.UnregisterHandler(41); + singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + } + singleton.client.UnregisterHandler(42); + singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + + QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); + + _lobby.CanEditName = false; + + OnNetworkManagerReady?.Invoke(); + IsReady = true; + + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); + + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); + + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); + } + + public override void OnStopClient() // Called on the client when closing connection + { + DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); + Destroy(GetComponent()); + Destroy(GetComponent()); + Destroy(GetComponent()); + QSBEventManager.Reset(); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); + + foreach (var player in QSBPlayerManager.PlayerList) + { + QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); + } + QSBPlayerManager.RemoveAllPlayers(); + + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldDialogueTrees.Clear(); + + _lobby.CanEditName = true; + } + + public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects + { + var playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; + var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); + GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, playerId, netIds); + + foreach (var item in WorldRegistry.OrbSyncList) + { + var identity = item.GetComponent(); + if (identity.clientAuthorityOwner == connection) + { + identity.RemoveClientAuthority(connection); + } + } + + QSBPlayerManager.GetPlayer(playerId).HudMarker?.Remove(); + CleanupConnection(connection); + } + + public override void OnStopServer() + { + Destroy(GetComponent()); + Destroy(GetComponent()); + Destroy(GetComponent()); + QSBEventManager.Reset(); + DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); + NetworkServer.connections.ToList().ForEach(CleanupConnection); + + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + + base.OnStopServer(); + } + + private void CleanupConnection(NetworkConnection connection) + { + uint playerId; + try + { + playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; + } + catch (Exception ex) + { + DebugLog.ToConsole("Error when getting playerId in CleanupConnection: " + ex.Message, MessageType.Error); + return; + } + if (!QSBPlayerManager.PlayerExists(playerId)) + { + return; + } + var playerName = QSBPlayerManager.GetPlayer(playerId).Name; + DebugLog.ToConsole($"{playerName} disconnected.", MessageType.Info); + QSBPlayerManager.RemovePlayer(playerId); + + var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); + netIds.ForEach(CleanupNetworkBehaviour); + } + + public void CleanupNetworkBehaviour(uint netId) + { + DebugLog.DebugWrite($"Cleaning up netId {netId}"); + // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them + var networkBehaviours = FindObjectsOfType() + .Where(x => x != null && x.netId.Value == netId); + foreach (var networkBehaviour in networkBehaviours) + { + var transformSync = networkBehaviour.GetComponent(); + + if (transformSync != null) + { + DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); + QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); + if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.hasAuthority) + { + DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); + Destroy(transformSync.SyncedTransform.gameObject); + } + } + + var animationSync = networkBehaviour.GetComponent(); + + if (animationSync != null) + { + DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); + QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); + } + + if (!networkBehaviour.hasAuthority) + { + DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); + Destroy(networkBehaviour.gameObject); + } + } + } + } } \ No newline at end of file diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index bcebde3c1..b6ca1f60a 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -4,33 +4,35 @@ namespace QSB { - public static class QSBSceneManager - { - public static OWScene CurrentScene => LoadManager.GetCurrentScene(); + public static class QSBSceneManager + { + public static OWScene CurrentScene => LoadManager.GetCurrentScene(); - public static bool IsInUniverse => InUniverse(CurrentScene); + public static bool IsInUniverse => InUniverse(CurrentScene); - public static event Action OnSceneLoaded; - public static event Action OnUniverseSceneLoaded; + public static event Action OnSceneLoaded; + public static event Action OnUniverseSceneLoaded; - static QSBSceneManager() - { - LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; - DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); - } + static QSBSceneManager() + { + LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; + DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); + } - private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) - { - DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); - var universe = InUniverse(newScene); - OnSceneLoaded?.Invoke(newScene, universe); - if (universe) - { - OnUniverseSceneLoaded?.Invoke(newScene); - } - } + private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) + { + DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); + var universe = InUniverse(newScene); + OnSceneLoaded?.Invoke(newScene, universe); + if (universe) + { + OnUniverseSceneLoaded?.Invoke(newScene); + } + } - private static bool InUniverse(OWScene scene) - => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) + { + return scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; + } + } } diff --git a/QSB/SectorSync/QSBSector.cs b/QSB/SectorSync/QSBSector.cs index 1b39882e8..8634d445c 100644 --- a/QSB/SectorSync/QSBSector.cs +++ b/QSB/SectorSync/QSBSector.cs @@ -3,18 +3,18 @@ namespace QSB.SectorSync { - public class QSBSector : WorldObject - { - public Sector Sector { get; private set; } - public Sector.Name Type => Sector.GetName(); - public string Name => Sector.name; - public Transform Transform => Sector.transform; - public Vector3 Position => Transform.position; + public class QSBSector : WorldObject + { + public Sector Sector { get; private set; } + public Sector.Name Type => Sector.GetName(); + public string Name => Sector.name; + public Transform Transform => Sector.transform; + public Vector3 Position => Transform.position; - public void Init(Sector sector, int id) - { - Sector = sector; - ObjectId = id; - } - } + public void Init(Sector sector, int id) + { + Sector = sector; + ObjectId = id; + } + } } diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index e09afb7a0..504c8dba3 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -6,47 +6,48 @@ namespace QSB.SectorSync { - public class QSBSectorManager : MonoBehaviour - { - public static QSBSectorManager Instance { get; private set; } + public class QSBSectorManager : MonoBehaviour + { + public static QSBSectorManager Instance { get; private set; } - public bool IsReady { get; private set; } + public bool IsReady { get; private set; } - private readonly Sector.Name[] _sectorBlacklist = - { - Sector.Name.Ship - }; + private readonly Sector.Name[] _sectorBlacklist = + { + Sector.Name.Ship + }; - private void Awake() - { - Instance = this; - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); - DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); + DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); + } + private void OnDestroy() + { + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); + } - private void OnDestroy() - => QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); + public void RebuildSectors() + { + DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); + WorldRegistry.RemoveObjects(); + var sectors = Resources.FindObjectsOfTypeAll().ToList(); + for (var id = 0; id < sectors.Count; id++) + { + var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); + qsbSector.Init(sectors[id], id); + WorldRegistry.AddObject(qsbSector); + } + IsReady = WorldRegistry.GetObjects().Any(); + } - public void RebuildSectors() - { - DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); - WorldRegistry.RemoveObjects(); - var sectors = Resources.FindObjectsOfTypeAll().ToList(); - for (var id = 0; id < sectors.Count; id++) - { - var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); - qsbSector.Init(sectors[id], id); - WorldRegistry.AddObject(qsbSector); - } - IsReady = WorldRegistry.GetObjects().Any(); - } - - public QSBSector GetClosestSector(Transform trans) - { - return WorldRegistry.GetObjects() - .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) - .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) - .First(); - } - } + public QSBSector GetClosestSector(Transform trans) + { + return WorldRegistry.GetObjects() + .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) + .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) + .First(); + } + } } diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 10e2ccd21..4fbd3343b 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -5,43 +5,45 @@ namespace QSB.SectorSync { - public class SectorSync : MonoBehaviour - { - private const float CheckInterval = 0.5f; - private float _checkTimer = CheckInterval; + public class SectorSync : MonoBehaviour + { + private const float CheckInterval = 0.5f; + private float _checkTimer = CheckInterval; - private void Update() - { - if (!QSBSectorManager.Instance.IsReady) - { - return; - } - _checkTimer += Time.unscaledDeltaTime; - if (_checkTimer < CheckInterval) - { - return; - } - QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); - _checkTimer = 0; - } + private void Update() + { + if (!QSBSectorManager.Instance.IsReady) + { + return; + } + _checkTimer += Time.unscaledDeltaTime; + if (_checkTimer < CheckInterval) + { + return; + } + QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); + _checkTimer = 0; + } - private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) - { - var syncedTransform = transformSync.SyncedTransform; - if (syncedTransform == null || syncedTransform.position == Vector3.zero) - { - return; - } - var closestSector = QSBSectorManager.Instance.GetClosestSector(syncedTransform); - if (closestSector == transformSync.ReferenceSector) - { - return; - } - transformSync.SetReferenceSector(closestSector); - SendSector(transformSync.netId.Value, closestSector); - } + private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) + { + var syncedTransform = transformSync.SyncedTransform; + if (syncedTransform == null || syncedTransform.position == Vector3.zero) + { + return; + } + var closestSector = QSBSectorManager.Instance.GetClosestSector(syncedTransform); + if (closestSector == transformSync.ReferenceSector) + { + return; + } + transformSync.SetReferenceSector(closestSector); + SendSector(transformSync.netId.Value, closestSector); + } - private void SendSector(uint id, QSBSector sector) - => GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); - } + private void SendSector(uint id, QSBSector sector) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); + } + } } diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index 2c938ce10..c3829b76e 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -2,24 +2,26 @@ namespace QSB.TimeSync.Events { - public class ServerTimeEvent : QSBEvent - { - public override EventType Type => EventType.ServerTime; + public class ServerTimeEvent : QSBEvent + { + public override EventType Type => EventType.ServerTime; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); - private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); + private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); - private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage - { - AboutId = LocalPlayerId, - ServerTime = time, - LoopCount = count - }; + private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage + { + AboutId = LocalPlayerId, + ServerTime = time, + LoopCount = count + }; - public override void OnReceiveRemote(ServerTimeMessage message) - => WakeUpSync.Instance.OnClientReceiveMessage(message); - } + public override void OnReceiveRemote(ServerTimeMessage message) + { + WakeUpSync.LocalInstance.OnClientReceiveMessage(message); + } + } } diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 8f31071a4..9831ed726 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -3,23 +3,23 @@ namespace QSB.TimeSync.Events { - public class ServerTimeMessage : PlayerMessage - { - public float ServerTime { get; set; } - public int LoopCount { get; set; } + public class ServerTimeMessage : PlayerMessage + { + public float ServerTime { get; set; } + public int LoopCount { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ServerTime = reader.ReadSingle(); - LoopCount = reader.ReadInt16(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ServerTime = reader.ReadSingle(); + LoopCount = reader.ReadInt16(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ServerTime); - writer.Write(LoopCount); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ServerTime); + writer.Write(LoopCount); + } + } } \ No newline at end of file diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index 9035bee5e..acd6881d7 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -3,23 +3,23 @@ namespace QSB.TimeSync { - public class PreserveTimeScale : NetworkBehaviour - { - private void Start() - { - QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button + public class PreserveTimeScale : NetworkBehaviour + { + private void Start() + { + QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button - // Allow server to sleep at campfires - if (isServer) - { - return; - } + // Allow server to sleep at campfires + if (isServer) + { + return; + } - var campfires = FindObjectsOfType(); - foreach (var campfire in campfires) - { - campfire.SetValue("_canSleepHere", false); // Stop players from sleeping at campfires - } - } - } + var campfires = FindObjectsOfType(); + foreach (var campfire in campfires) + { + campfire.SetValue("_canSleepHere", false); // Stop players from sleeping at campfires + } + } + } } diff --git a/QSB/TimeSync/TimeSyncType.cs b/QSB/TimeSync/TimeSyncType.cs index 6556cbeca..2fe1ca0c1 100644 --- a/QSB/TimeSync/TimeSyncType.cs +++ b/QSB/TimeSync/TimeSyncType.cs @@ -1,9 +1,9 @@ namespace QSB.TimeSync { - public enum TimeSyncType - { - None, - Pausing, - Fastforwarding - } + public enum TimeSyncType + { + None, + Pausing, + Fastforwarding + } } diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index 65364a8e9..8bd2bffaf 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -2,22 +2,22 @@ namespace QSB.TimeSync { - public class WakeUpPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; + public class WakeUpPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; - public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) - { - if (__instance.gameObject.CompareTag("MainCamera") && QSBSceneManager.CurrentScene != OWScene.EyeOfTheUniverse) - { - __instance.Invoke("WakeUp"); - } - return false; - } + public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) + { + if (__instance.gameObject.CompareTag("MainCamera") && QSBSceneManager.CurrentScene != OWScene.EyeOfTheUniverse) + { + __instance.Invoke("WakeUp"); + } + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); + } + } } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 55838156b..580df58d1 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -7,244 +7,250 @@ namespace QSB.TimeSync { - public class WakeUpSync : NetworkBehaviour - { - public static WakeUpSync Instance { get; private set; } - - private const float TimeThreshold = 0.5f; - private const float MaxFastForwardSpeed = 60f; - private const float MaxFastForwardDiff = 20f; - private const float MinFastForwardSpeed = 2f; - - private enum State { NotLoaded, Loaded, FastForwarding, Pausing } - private State _state = State.NotLoaded; - - private float _sendTimer; - private float _serverTime; - private float _timeScale; - private bool _isInputEnabled = true; - private bool _isFirstFastForward = true; - private int _localLoopCount; - private int _serverLoopCount; - - public override void OnStartLocalPlayer() - => Instance = this; - - private void Start() - { - if (!isLocalPlayer) - { - return; - } - - if (QSBSceneManager.IsInUniverse) - { - Init(); - } - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - - GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); - GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); - } - - private void OnWakeUp() - { - DebugLog.DebugWrite("ON WAKE UP!"); - if (NetworkServer.active) - { - QSB.HasWokenUp = true; - } - } - - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); - GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); - } - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); - if (isInUniverse) - { - Init(); - } - else - { - _state = State.NotLoaded; - } - } - - private void OnLoopStart() - => _localLoopCount++; - - private void Init() - { - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - _state = State.Loaded; - gameObject.AddComponent(); - if (isServer) - { - SendServerTime(); - } - else - { - WakeUpOrSleep(); - } - } - - private void SendServerTime() - => GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); - - public void OnClientReceiveMessage(ServerTimeMessage message) - { - _serverTime = message.ServerTime; - _serverLoopCount = message.LoopCount; - WakeUpOrSleep(); - } - - private void WakeUpOrSleep() - { - if (_state == State.NotLoaded || _localLoopCount != _serverLoopCount) - { - return; - } - - var myTime = Time.timeSinceLevelLoad; - var diff = myTime - _serverTime; - - if (diff > TimeThreshold) - { - StartPausing(); - return; - } - - if (diff < -TimeThreshold) - { - StartFastForwarding(); - } - } - - private void StartFastForwarding() - { - if (_state == State.FastForwarding) - { - return; - } - _timeScale = MaxFastForwardSpeed; - _state = State.FastForwarding; - TimeSyncUI.Start(TimeSyncType.Fastforwarding); - } - - private void StartPausing() - { - if (_state == State.Pausing) - { - return; - } - _timeScale = 0f; - _state = State.Pausing; - SpinnerUI.Show(); - TimeSyncUI.Start(TimeSyncType.Pausing); - } - - private void ResetTimeScale() - { - _timeScale = 1f; - _state = State.Loaded; - - if (!_isInputEnabled) - { - EnableInput(); - } - _isFirstFastForward = false; - QSB.HasWokenUp = true; - Physics.SyncTransforms(); - SpinnerUI.Hide(); - TimeSyncUI.Stop(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - RespawnOnDeath.Instance.Init(); - } - - private void DisableInput() - { - _isInputEnabled = false; - OWInput.ChangeInputMode(InputMode.None); - } - - private void EnableInput() - { - _isInputEnabled = true; - OWInput.ChangeInputMode(InputMode.Character); - } - - private void Update() - { - if (isServer) - { - UpdateServer(); - } - else if (isLocalPlayer) - { - UpdateLocal(); - } - } - - private void UpdateServer() - { - if (_state != State.Loaded) - { - return; - } - - _sendTimer += Time.unscaledDeltaTime; - if (_sendTimer > 1) - { - SendServerTime(); - _sendTimer = 0; - } - } - - private void UpdateLocal() - { - _serverTime += Time.unscaledDeltaTime; - - if (_state == State.NotLoaded) - { - return; - } - - if (_state == State.FastForwarding) - { - var diff = _serverTime - Time.timeSinceLevelLoad; - Time.timeScale = Mathf.Lerp(MinFastForwardSpeed, MaxFastForwardSpeed, Mathf.Abs(diff) / MaxFastForwardDiff); - - if (QSBSceneManager.CurrentScene == OWScene.SolarSystem && _isFirstFastForward) - { - var spawnPoint = Locator.GetPlayerBody().GetComponent().GetInitialSpawnPoint().transform; - Locator.GetPlayerTransform().position = spawnPoint.position; - Locator.GetPlayerTransform().rotation = spawnPoint.rotation; - Physics.SyncTransforms(); - } - } - else - { - Time.timeScale = _timeScale; - } - - var isDoneFastForwarding = _state == State.FastForwarding && Time.timeSinceLevelLoad >= _serverTime; - var isDonePausing = _state == State.Pausing && Time.timeSinceLevelLoad < _serverTime; - - if (isDoneFastForwarding || isDonePausing) - { - ResetTimeScale(); - } - - if (!_isInputEnabled && OWInput.GetInputMode() != InputMode.None) - { - DisableInput(); - } - } - } + public class WakeUpSync : NetworkBehaviour + { + public static WakeUpSync LocalInstance { get; private set; } + + private const float TimeThreshold = 0.5f; + private const float MaxFastForwardSpeed = 60f; + private const float MaxFastForwardDiff = 20f; + private const float MinFastForwardSpeed = 2f; + + private enum State { NotLoaded, Loaded, FastForwarding, Pausing } + private State _state = State.NotLoaded; + + private float _sendTimer; + private float _serverTime; + private float _timeScale; + private bool _isInputEnabled = true; + private bool _isFirstFastForward = true; + private int _localLoopCount; + private int _serverLoopCount; + + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } + + private void Start() + { + if (!isLocalPlayer) + { + return; + } + + if (QSBSceneManager.IsInUniverse) + { + Init(); + } + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + + GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); + } + + private void OnWakeUp() + { + DebugLog.DebugWrite("ON WAKE UP!"); + if (NetworkServer.active) + { + QSB.HasWokenUp = true; + } + } + + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); + if (isInUniverse) + { + Init(); + } + else + { + _state = State.NotLoaded; + } + } + + private void OnLoopStart() + { + _localLoopCount++; + } + + private void Init() + { + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + _state = State.Loaded; + gameObject.AddComponent(); + if (isServer) + { + SendServerTime(); + } + else + { + WakeUpOrSleep(); + } + } + + private void SendServerTime() + { + GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); + } + + public void OnClientReceiveMessage(ServerTimeMessage message) + { + _serverTime = message.ServerTime; + _serverLoopCount = message.LoopCount; + WakeUpOrSleep(); + } + + private void WakeUpOrSleep() + { + if (_state == State.NotLoaded || _localLoopCount != _serverLoopCount) + { + return; + } + + var myTime = Time.timeSinceLevelLoad; + var diff = myTime - _serverTime; + + if (diff > TimeThreshold) + { + StartPausing(); + return; + } + + if (diff < -TimeThreshold) + { + StartFastForwarding(); + } + } + + private void StartFastForwarding() + { + if (_state == State.FastForwarding) + { + return; + } + _timeScale = MaxFastForwardSpeed; + _state = State.FastForwarding; + TimeSyncUI.Start(TimeSyncType.Fastforwarding); + } + + private void StartPausing() + { + if (_state == State.Pausing) + { + return; + } + _timeScale = 0f; + _state = State.Pausing; + SpinnerUI.Show(); + TimeSyncUI.Start(TimeSyncType.Pausing); + } + + private void ResetTimeScale() + { + _timeScale = 1f; + _state = State.Loaded; + + if (!_isInputEnabled) + { + EnableInput(); + } + _isFirstFastForward = false; + QSB.HasWokenUp = true; + Physics.SyncTransforms(); + SpinnerUI.Hide(); + TimeSyncUI.Stop(); + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + RespawnOnDeath.Instance.Init(); + } + + private void DisableInput() + { + _isInputEnabled = false; + OWInput.ChangeInputMode(InputMode.None); + } + + private void EnableInput() + { + _isInputEnabled = true; + OWInput.ChangeInputMode(InputMode.Character); + } + + private void Update() + { + if (isServer) + { + UpdateServer(); + } + else if (isLocalPlayer) + { + UpdateLocal(); + } + } + + private void UpdateServer() + { + if (_state != State.Loaded) + { + return; + } + + _sendTimer += Time.unscaledDeltaTime; + if (_sendTimer > 1) + { + SendServerTime(); + _sendTimer = 0; + } + } + + private void UpdateLocal() + { + _serverTime += Time.unscaledDeltaTime; + + if (_state == State.NotLoaded) + { + return; + } + + if (_state == State.FastForwarding) + { + var diff = _serverTime - Time.timeSinceLevelLoad; + Time.timeScale = Mathf.Lerp(MinFastForwardSpeed, MaxFastForwardSpeed, Mathf.Abs(diff) / MaxFastForwardDiff); + + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem && _isFirstFastForward) + { + var spawnPoint = Locator.GetPlayerBody().GetComponent().GetInitialSpawnPoint().transform; + Locator.GetPlayerTransform().position = spawnPoint.position; + Locator.GetPlayerTransform().rotation = spawnPoint.rotation; + Physics.SyncTransforms(); + } + } + else + { + Time.timeScale = _timeScale; + } + + var isDoneFastForwarding = _state == State.FastForwarding && Time.timeSinceLevelLoad >= _serverTime; + var isDonePausing = _state == State.Pausing && Time.timeSinceLevelLoad < _serverTime; + + if (isDoneFastForwarding || isDonePausing) + { + ResetTimeScale(); + } + + if (!_isInputEnabled && OWInput.GetInputMode() != InputMode.None) + { + DisableInput(); + } + } + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 3cc770c83..10a71aaef 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerFlashlightEvent : QSBEvent - { - public override EventType Type => EventType.FlashlightActiveChange; + public class PlayerFlashlightEvent : QSBEvent + { + public override EventType Type => EventType.FlashlightActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.TurnOnFlashlight, HandleTurnOn); - GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, HandleTurnOff); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.TurnOnFlashlight, HandleTurnOn); + GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, HandleTurnOff); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, HandleTurnOn); - GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, HandleTurnOff); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, HandleTurnOn); + GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, HandleTurnOff); + } - private void HandleTurnOn() => SendEvent(CreateMessage(true)); - private void HandleTurnOff() => SendEvent(CreateMessage(false)); + private void HandleTurnOn() => SendEvent(CreateMessage(true)); + private void HandleTurnOff() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Flashlight, message.ToggleValue); - player.FlashLight?.UpdateState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Flashlight, message.ToggleValue); + player.FlashLight?.UpdateState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 638223560..de6fa3435 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerProbeEvent : QSBEvent - { - public override EventType Type => EventType.ProbeActiveChange; + public class PlayerProbeEvent : QSBEvent + { + public override EventType Type => EventType.ProbeActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.LaunchProbe, HandleLaunch); - GlobalMessenger.AddListener(EventNames.RetrieveProbe, HandleRetrieve); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.LaunchProbe, HandleLaunch); + GlobalMessenger.AddListener(EventNames.RetrieveProbe, HandleRetrieve); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.LaunchProbe, HandleLaunch); - GlobalMessenger.RemoveListener(EventNames.RetrieveProbe, HandleRetrieve); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.LaunchProbe, HandleLaunch); + GlobalMessenger.RemoveListener(EventNames.RetrieveProbe, HandleRetrieve); + } - private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); - private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); + private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); + private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.ProbeActive, message.ToggleValue); - player.Probe?.SetState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.ProbeActive, message.ToggleValue); + player.Probe?.SetState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 4973595dc..38e8651cb 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerProbeLauncherEvent : QSBEvent - { - public override EventType Type => EventType.ProbeLauncherActiveChange; + public class PlayerProbeLauncherEvent : QSBEvent + { + public override EventType Type => EventType.ProbeLauncherActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.ProbeLauncherEquipped, HandleEquip); - GlobalMessenger.AddListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.ProbeLauncherEquipped, HandleEquip); + GlobalMessenger.AddListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.ProbeLauncherEquipped, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.ProbeLauncherEquipped, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); + } - private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); - private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); + private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); + private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.ProbeLauncher, message.ToggleValue); - player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.ProbeLauncher, message.ToggleValue); + player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index f0c4461d7..9a7f0bc19 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerSignalscopeEvent : QSBEvent - { - public override EventType Type => EventType.SignalscopeActiveChange; + public class PlayerSignalscopeEvent : QSBEvent + { + public override EventType Type => EventType.SignalscopeActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.EquipSignalscope, HandleEquip); - GlobalMessenger.AddListener(EventNames.UnequipSignalscope, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.EquipSignalscope, HandleEquip); + GlobalMessenger.AddListener(EventNames.UnequipSignalscope, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.EquipSignalscope, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.EquipSignalscope, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, HandleUnequip); + } - private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); + private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Signalscope, message.ToggleValue); - player.Signalscope?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Signalscope, message.ToggleValue); + player.Signalscope?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 741aeda3e..9c3f05a35 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerTranslatorEvent : QSBEvent - { - public override EventType Type => EventType.TranslatorActiveChange; + public class PlayerTranslatorEvent : QSBEvent + { + public override EventType Type => EventType.TranslatorActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.EquipTranslator, HandleEquip); - GlobalMessenger.AddListener(EventNames.UnequipTranslator, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.EquipTranslator, HandleEquip); + GlobalMessenger.AddListener(EventNames.UnequipTranslator, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.EquipTranslator, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.EquipTranslator, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, HandleUnequip); + } - private void HandleEquip() => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); + private void HandleEquip() => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Translator, message.ToggleValue); - player.Translator?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Translator, message.ToggleValue); + player.Translator?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); + } + } } diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index db883e65b..d76d58d24 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -6,189 +6,191 @@ namespace QSB.Tools { - public class PlayerToolsManager - { - private static Transform _toolStowTransform; - private static Transform _toolHoldTransform; - private static Material _playerToolsMaterial; - private static Material _lightbulbMaterial; - - private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); - private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); - private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); - private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); - - public static void Init(Transform camera) - { - CreateStowTransforms(camera); - - if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) - { - _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; - _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; - } - else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) - { - // EyeCompatibility : Get these materials another way. - _playerToolsMaterial = null; - _lightbulbMaterial = null; - } - - CreateFlashlight(camera); - CreateSignalscope(camera); - CreateProbeLauncher(camera); - CreateTranslator(camera); - } - - public static void CreateProbe(Transform body, PlayerInfo player) - { - var newProbe = body.gameObject.AddComponent(); - player.Probe = newProbe; - } - - private static void CreateStowTransforms(Transform cameraBody) - { - var stow = new GameObject("ToolStowTransform"); - _toolStowTransform = stow.transform; - stow.transform.parent = cameraBody; - stow.transform.localPosition = Vector3.zero; - stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); - - var hold = new GameObject("ToolHoldTransform"); - _toolHoldTransform = hold.transform; - hold.transform.parent = cameraBody; - hold.transform.localPosition = Vector3.zero; - hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); - } - - private static GameObject CreateFlashlight(Transform cameraBody) - { - var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); - flashlightRoot.SetActive(false); - var oldComponent = flashlightRoot.GetComponent(); - var component = flashlightRoot.AddComponent(); - - component.Init(oldComponent); - oldComponent.enabled = false; - - flashlightRoot.transform.parent = cameraBody; - flashlightRoot.transform.localPosition = FlashlightOffset; - flashlightRoot.SetActive(true); - - return flashlightRoot; - } - - private static GameObject CreateSignalscope(Transform cameraBody) - { - var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); - signalscopeRoot.SetActive(false); - - Object.Destroy(signalscopeRoot.GetComponent()); - Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") - .Find("Props_HEA_Signalscope_Prepass").gameObject); - - var oldSignalscope = signalscopeRoot.GetComponent(); - var tool = signalscopeRoot.AddComponent(); - tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Signalscope; - tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; - oldSignalscope.enabled = false; - - GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial; - - signalscopeRoot.transform.parent = cameraBody; - signalscopeRoot.transform.localPosition = Vector3.zero; - signalscopeRoot.transform.localScale = SignalscopeScale; - signalscopeRoot.SetActive(true); - - return signalscopeRoot; - } - - private static GameObject CreateTranslator(Transform cameraBody) - { - var original = GameObject.Find("NomaiTranslatorProp"); - - var translatorRoot = original.InstantiateInactive(); - - var group = translatorRoot.transform.Find("TranslatorGroup"); - var model = group.Find("Props_HEA_Translator"); - - Object.Destroy(translatorRoot.GetComponent()); - Object.Destroy(group.Find("Canvas").gameObject); - Object.Destroy(group.Find("Lighting").gameObject); - Object.Destroy(group.Find("TranslatorBeams").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); - - var oldTranslator = translatorRoot.GetComponent(); - var tool = translatorRoot.AddComponent(); - tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Translator; - tool.ToolGameObject = group.gameObject; - Object.Destroy(oldTranslator); - - GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial; - - translatorRoot.transform.parent = cameraBody; - translatorRoot.transform.localPosition = Vector3.zero; - translatorRoot.transform.localScale = TranslatorScale; - QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); - - return translatorRoot; - } - - private static GameObject CreateProbeLauncher(Transform cameraBody) - { - var launcherRoot = new GameObject("ProbeLauncher"); - var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); - var model = Object.Instantiate(modelOrig); - model.transform.parent = launcherRoot.transform; - - Object.Destroy(model.transform.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); - Object.Destroy(model.transform.Find("Props_HEA_Probe_Prelaunch").Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); - - var tool = launcherRoot.AddComponent(); - var spring = new DampedSpringQuat - { - velocity = Vector4.zero, - settings = new DampedSpringSettings - { - springConstant = 50f, - dampingCoefficient = 8.485282f, - mass = 1 - } - }; - tool.MoveSpring = spring; - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.ProbeLauncher; - tool.ToolGameObject = model; - - GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[0] = _playerToolsMaterial; - GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[1] = _lightbulbMaterial; - GetRenderer(launcherRoot, "PressureGauge_Arrow").material = _playerToolsMaterial; - GetRenderer(launcherRoot, "ProbeLauncherChassis").material = _playerToolsMaterial; - - launcherRoot.transform.parent = cameraBody; - launcherRoot.transform.localPosition = ProbeLauncherOffset; - launcherRoot.SetActive(true); - - return launcherRoot; - } - - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) - => root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); - } + public class PlayerToolsManager + { + private static Transform _toolStowTransform; + private static Transform _toolHoldTransform; + private static Material _playerToolsMaterial; + private static Material _lightbulbMaterial; + + private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); + private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); + private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); + private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); + + public static void Init(Transform camera) + { + CreateStowTransforms(camera); + + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) + { + _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; + _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; + } + else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) + { + // EyeCompatibility : Get these materials another way. + _playerToolsMaterial = null; + _lightbulbMaterial = null; + } + + CreateFlashlight(camera); + CreateSignalscope(camera); + CreateProbeLauncher(camera); + CreateTranslator(camera); + } + + public static void CreateProbe(Transform body, PlayerInfo player) + { + var newProbe = body.gameObject.AddComponent(); + player.Probe = newProbe; + } + + private static void CreateStowTransforms(Transform cameraBody) + { + var stow = new GameObject("ToolStowTransform"); + _toolStowTransform = stow.transform; + stow.transform.parent = cameraBody; + stow.transform.localPosition = Vector3.zero; + stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); + + var hold = new GameObject("ToolHoldTransform"); + _toolHoldTransform = hold.transform; + hold.transform.parent = cameraBody; + hold.transform.localPosition = Vector3.zero; + hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); + } + + private static GameObject CreateFlashlight(Transform cameraBody) + { + var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); + flashlightRoot.SetActive(false); + var oldComponent = flashlightRoot.GetComponent(); + var component = flashlightRoot.AddComponent(); + + component.Init(oldComponent); + oldComponent.enabled = false; + + flashlightRoot.transform.parent = cameraBody; + flashlightRoot.transform.localPosition = FlashlightOffset; + flashlightRoot.SetActive(true); + + return flashlightRoot; + } + + private static GameObject CreateSignalscope(Transform cameraBody) + { + var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); + signalscopeRoot.SetActive(false); + + Object.Destroy(signalscopeRoot.GetComponent()); + Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") + .Find("Props_HEA_Signalscope_Prepass").gameObject); + + var oldSignalscope = signalscopeRoot.GetComponent(); + var tool = signalscopeRoot.AddComponent(); + tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Signalscope; + tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; + oldSignalscope.enabled = false; + + GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial; + + signalscopeRoot.transform.parent = cameraBody; + signalscopeRoot.transform.localPosition = Vector3.zero; + signalscopeRoot.transform.localScale = SignalscopeScale; + signalscopeRoot.SetActive(true); + + return signalscopeRoot; + } + + private static GameObject CreateTranslator(Transform cameraBody) + { + var original = GameObject.Find("NomaiTranslatorProp"); + + var translatorRoot = original.InstantiateInactive(); + + var group = translatorRoot.transform.Find("TranslatorGroup"); + var model = group.Find("Props_HEA_Translator"); + + Object.Destroy(translatorRoot.GetComponent()); + Object.Destroy(group.Find("Canvas").gameObject); + Object.Destroy(group.Find("Lighting").gameObject); + Object.Destroy(group.Find("TranslatorBeams").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); + + var oldTranslator = translatorRoot.GetComponent(); + var tool = translatorRoot.AddComponent(); + tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Translator; + tool.ToolGameObject = group.gameObject; + Object.Destroy(oldTranslator); + + GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial; + + translatorRoot.transform.parent = cameraBody; + translatorRoot.transform.localPosition = Vector3.zero; + translatorRoot.transform.localScale = TranslatorScale; + QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + + return translatorRoot; + } + + private static GameObject CreateProbeLauncher(Transform cameraBody) + { + var launcherRoot = new GameObject("ProbeLauncher"); + var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); + var model = Object.Instantiate(modelOrig); + model.transform.parent = launcherRoot.transform; + + Object.Destroy(model.transform.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); + Object.Destroy(model.transform.Find("Props_HEA_Probe_Prelaunch").Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); + + var tool = launcherRoot.AddComponent(); + var spring = new DampedSpringQuat + { + velocity = Vector4.zero, + settings = new DampedSpringSettings + { + springConstant = 50f, + dampingCoefficient = 8.485282f, + mass = 1 + } + }; + tool.MoveSpring = spring; + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.ProbeLauncher; + tool.ToolGameObject = model; + + GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[0] = _playerToolsMaterial; + GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[1] = _lightbulbMaterial; + GetRenderer(launcherRoot, "PressureGauge_Arrow").material = _playerToolsMaterial; + GetRenderer(launcherRoot, "ProbeLauncherChassis").material = _playerToolsMaterial; + + launcherRoot.transform.parent = cameraBody; + launcherRoot.transform.localPosition = ProbeLauncherOffset; + launcherRoot.SetActive(true); + + return launcherRoot; + } + + private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) + { + return root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); + } + } } \ No newline at end of file diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs index e26196aac..0564aa513 100644 --- a/QSB/Tools/ProbePatches.cs +++ b/QSB/Tools/ProbePatches.cs @@ -2,28 +2,28 @@ namespace QSB.Tools { - public class ProbePatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class ProbePatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - private static void ProbeAnchor() - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); - } + private static void ProbeAnchor() + { + GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); + } - private static bool ProbeWarp(ref bool ____isRetrieving) - { - if (!____isRetrieving) - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); - } - return true; - } + private static bool ProbeWarp(ref bool ____isRetrieving) + { + if (!____isRetrieving) + { + GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); + } + return true; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); - QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); + QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); + } + } } diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index 2c1860576..bf9a32d55 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -3,82 +3,82 @@ namespace QSB.Tools { - public class QSBFlashlight : MonoBehaviour - { - private OWLight2[] _lights; - private Transform _root; - private Transform _basePivot; - private Transform _wobblePivot; + public class QSBFlashlight : MonoBehaviour + { + private OWLight2[] _lights; + private Transform _root; + private Transform _basePivot; + private Transform _wobblePivot; - private bool _flashlightOn; - private Vector3 _baseForward; - private Quaternion _baseRotation; + private bool _flashlightOn; + private Vector3 _baseForward; + private Quaternion _baseRotation; - private void Start() - { - _baseForward = _basePivot.forward; - _baseRotation = _basePivot.rotation; - } + private void Start() + { + _baseForward = _basePivot.forward; + _baseRotation = _basePivot.rotation; + } - public void Init(Flashlight oldComponent) - { - _lights = oldComponent.GetValue("_lights"); - _root = oldComponent.GetValue("_root"); - _basePivot = oldComponent.GetValue("_basePivot"); - _wobblePivot = oldComponent.GetValue("_wobblePivot"); - } + public void Init(Flashlight oldComponent) + { + _lights = oldComponent.GetValue("_lights"); + _root = oldComponent.GetValue("_root"); + _basePivot = oldComponent.GetValue("_basePivot"); + _wobblePivot = oldComponent.GetValue("_wobblePivot"); + } - public void UpdateState(bool value) - { - if (value) - { - TurnOn(); - } - else - { - TurnOff(); - } - } + public void UpdateState(bool value) + { + if (value) + { + TurnOn(); + } + else + { + TurnOff(); + } + } - private void TurnOn() - { - if (_flashlightOn) - { - return; - } - foreach (var light in _lights) - { - light.GetLight().enabled = true; - } - _flashlightOn = true; - var rotation = _root.rotation; - _basePivot.rotation = rotation; - _baseRotation = rotation; - _baseForward = _basePivot.forward; - } + private void TurnOn() + { + if (_flashlightOn) + { + return; + } + foreach (var light in _lights) + { + light.GetLight().enabled = true; + } + _flashlightOn = true; + var rotation = _root.rotation; + _basePivot.rotation = rotation; + _baseRotation = rotation; + _baseForward = _basePivot.forward; + } - private void TurnOff() - { - if (!_flashlightOn) - { - return; - } - foreach (var light in _lights) - { - light.GetLight().enabled = false; - } - _flashlightOn = false; - } + private void TurnOff() + { + if (!_flashlightOn) + { + return; + } + foreach (var light in _lights) + { + light.GetLight().enabled = false; + } + _flashlightOn = false; + } - private void FixedUpdate() - { - // This really isn't needed... but it makes it look that extra bit nicer. - var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); - var b = lhs * _baseRotation; - _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); - _basePivot.rotation = _baseRotation; - _baseForward = _basePivot.forward; - _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; - } - } + private void FixedUpdate() + { + // This really isn't needed... but it makes it look that extra bit nicer. + var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); + var b = lhs * _baseRotation; + _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); + _basePivot.rotation = _baseRotation; + _baseForward = _basePivot.forward; + _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; + } + } } diff --git a/QSB/Tools/QSBProbe.cs b/QSB/Tools/QSBProbe.cs index aa876086b..fece67832 100644 --- a/QSB/Tools/QSBProbe.cs +++ b/QSB/Tools/QSBProbe.cs @@ -3,29 +3,29 @@ namespace QSB.Tools { - public class QSBProbe : MonoBehaviour - { - public void SetState(bool state) - { - if (state) - { - Activate(); - } - else - { - Deactivate(); - } - } + public class QSBProbe : MonoBehaviour + { + public void SetState(bool state) + { + if (state) + { + Activate(); + } + else + { + Deactivate(); + } + } - private void Activate() - { - gameObject.SetActive(true); - gameObject.Show(); - } + private void Activate() + { + gameObject.SetActive(true); + gameObject.Show(); + } - private void Deactivate() - { - gameObject.Hide(); - } - } + private void Deactivate() + { + gameObject.Hide(); + } + } } diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index 237c13f30..40a26e3d2 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -2,55 +2,55 @@ namespace QSB.Tools { - public class QSBTool : PlayerTool - { - public ToolType Type { get; set; } - public GameObject ToolGameObject { get; set; } - - public DampedSpringQuat MoveSpring - { - get => _moveSpring; - set => _moveSpring = value; - } - - public Transform StowTransform - { - get => _stowTransform; - set => _stowTransform = value; - } - - public Transform HoldTransform - { - get => _holdTransform; - set => _holdTransform = value; - } - - public float ArrivalDegrees - { - get => _arrivalDegrees; - set => _arrivalDegrees = value; - } - - private void OnEnable() - { - ToolGameObject?.SetActive(true); - } - - private void OnDisable() - { - ToolGameObject?.SetActive(false); - } - - public void ChangeEquipState(bool equipState) - { - if (equipState) - { - EquipTool(); - } - else - { - UnequipTool(); - } - } - } + public class QSBTool : PlayerTool + { + public ToolType Type { get; set; } + public GameObject ToolGameObject { get; set; } + + public DampedSpringQuat MoveSpring + { + get => _moveSpring; + set => _moveSpring = value; + } + + public Transform StowTransform + { + get => _stowTransform; + set => _stowTransform = value; + } + + public Transform HoldTransform + { + get => _holdTransform; + set => _holdTransform = value; + } + + public float ArrivalDegrees + { + get => _arrivalDegrees; + set => _arrivalDegrees = value; + } + + private void OnEnable() + { + ToolGameObject?.SetActive(true); + } + + private void OnDisable() + { + ToolGameObject?.SetActive(false); + } + + public void ChangeEquipState(bool equipState) + { + if (equipState) + { + EquipTool(); + } + else + { + UnequipTool(); + } + } + } } \ No newline at end of file diff --git a/QSB/Tools/ToolType.cs b/QSB/Tools/ToolType.cs index a1e2a7efd..1021097df 100644 --- a/QSB/Tools/ToolType.cs +++ b/QSB/Tools/ToolType.cs @@ -1,9 +1,9 @@ namespace QSB.Tools { - public enum ToolType - { - Signalscope, - ProbeLauncher, - Translator - } + public enum ToolType + { + Signalscope, + ProbeLauncher, + Translator + } } \ No newline at end of file diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 9a5ca3e4b..d905a3712 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -4,93 +4,93 @@ namespace QSB.TransformSync { - public class NomaiOrbTransformSync : NetworkBehaviour - { - public NomaiInterfaceOrb AttachedOrb { get; private set; } - public Transform OrbTransform { get; private set; } - - private int Index => WorldRegistry.OrbSyncList.IndexOf(this); - - private const int MaxUpdatesBeforeDisable = 5; - - private bool _isInitialized; - private bool _isReady; - private Transform _orbParent; - private int _updateCount; - - public override void OnStartClient() - { - WorldRegistry.OrbSyncList.Add(this); - - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); - } - - private void OnReady() - { - AttachedOrb = WorldRegistry.OldOrbList[Index]; - _isReady = true; - } - - private void Awake() - { - DontDestroyOnLoad(this); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - private void OnDestroy() - { - WorldRegistry.OrbSyncList.Remove(this); - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; - - protected void Init() - { - OrbTransform = AttachedOrb.transform; - _orbParent = AttachedOrb.GetAttachedOWRigidbody().GetOrigParent(); - _isInitialized = true; - } - - private void Update() - { - if (!_isInitialized && _isReady) - { - Init(); - } - else if (_isInitialized && !_isReady) - { - _isInitialized = false; - } - - if (OrbTransform == null || !_isInitialized) - { - return; - } - - UpdateTransform(); - } - - protected virtual void UpdateTransform() - { - if (hasAuthority) - { - transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); - transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - return; - } - OrbTransform.position = _orbParent.TransformPoint(transform.position); - OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - - if (transform.localPosition == Vector3.zero) - { - _updateCount++; - } - if (_updateCount >= MaxUpdatesBeforeDisable) - { - enabled = false; - _updateCount = 0; - } - } - } + public class NomaiOrbTransformSync : NetworkBehaviour + { + public NomaiInterfaceOrb AttachedOrb { get; private set; } + public Transform OrbTransform { get; private set; } + + private int Index => WorldRegistry.OrbSyncList.IndexOf(this); + + private const int MaxUpdatesBeforeDisable = 5; + + private bool _isInitialized; + private bool _isReady; + private Transform _orbParent; + private int _updateCount; + + public override void OnStartClient() + { + WorldRegistry.OrbSyncList.Add(this); + + QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); + } + + private void OnReady() + { + AttachedOrb = WorldRegistry.OldOrbList[Index]; + _isReady = true; + } + + private void Awake() + { + DontDestroyOnLoad(this); + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + private void OnDestroy() + { + WorldRegistry.OrbSyncList.Remove(this); + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; + + protected void Init() + { + OrbTransform = AttachedOrb.transform; + _orbParent = AttachedOrb.GetAttachedOWRigidbody().GetOrigParent(); + _isInitialized = true; + } + + private void Update() + { + if (!_isInitialized && _isReady) + { + Init(); + } + else if (_isInitialized && !_isReady) + { + _isInitialized = false; + } + + if (OrbTransform == null || !_isInitialized) + { + return; + } + + UpdateTransform(); + } + + protected virtual void UpdateTransform() + { + if (hasAuthority) + { + transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); + transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + return; + } + OrbTransform.position = _orbParent.TransformPoint(transform.position); + OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + + if (transform.localPosition == Vector3.zero) + { + _updateCount++; + } + if (_updateCount >= MaxUpdatesBeforeDisable) + { + enabled = false; + _updateCount = 0; + } + } + } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 077ee3f57..319af39a0 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -6,42 +6,44 @@ namespace QSB.TransformSync { - public class PlayerCameraSync : TransformSync - { - public static PlayerCameraSync LocalInstance { get; private set; } + public class PlayerCameraSync : TransformSync + { + public static PlayerCameraSync LocalInstance { get; private set; } - public override void OnStartLocalPlayer() - => LocalInstance = this; + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } - protected override Transform InitLocalTransform() - { - var body = Locator.GetPlayerCamera().gameObject.transform; + protected override Transform InitLocalTransform() + { + var body = Locator.GetPlayerCamera().gameObject.transform; - Player.Camera = body.gameObject; + Player.Camera = body.gameObject; - Player.IsReady = true; - GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); - DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + Player.IsReady = true; + GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); + DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = new GameObject("RemotePlayerCamera"); + protected override Transform InitRemoteTransform() + { + var body = new GameObject("RemotePlayerCamera"); - PlayerToolsManager.Init(body.transform); + PlayerToolsManager.Init(body.transform); - Player.Camera = body; + Player.Camera = body; - return body.transform; - } + return body.transform; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 3fb3d2015..12a4d491c 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -6,92 +6,96 @@ namespace QSB.TransformSync { - public class PlayerProbeSync : TransformSync - { - public static PlayerProbeSync LocalInstance { get; private set; } - - private Transform _disabledSocket; - - public override void OnStartLocalPlayer() - => LocalInstance = this; - - private Transform GetProbe() - => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - - protected override Transform InitLocalTransform() - { - var body = GetProbe(); - - SetSocket(Player.Camera.transform); - Player.ProbeBody = body.gameObject; - - return body; - } - - protected override Transform InitRemoteTransform() - { - var probe = GetProbe(); - - if (probe == null) - { - DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); - return default; - } - - var body = probe.InstantiateInactive(); - body.name = "RemoteProbeTransform"; - - Destroy(body.GetComponentInChildren()); - - PlayerToolsManager.CreateProbe(body, Player); - - QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); - Player.ProbeBody = body.gameObject; - - return body; - } - - private void SetSocket(Transform socket) - { - DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); - _disabledSocket = socket; - } - - protected override void UpdateTransform() - { - base.UpdateTransform(); - if (Player == null) - { - DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); - return; - } - if (_disabledSocket == null) - { - DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); - return; - } - if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) - { - return; - } - if (hasAuthority) - { - transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - return; - } - if (SyncedTransform.position == Vector3.zero || - SyncedTransform.position == Locator.GetAstroObject(AstroObject.Name.Sun).transform.position) - { - return; - } - SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - } - - public override bool IsReady => Locator.GetProbe() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public class PlayerProbeSync : TransformSync + { + public static PlayerProbeSync LocalInstance { get; private set; } + + private Transform _disabledSocket; + + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } + + private Transform GetProbe() + { + return Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); + } + + protected override Transform InitLocalTransform() + { + var body = GetProbe(); + + SetSocket(Player.Camera.transform); + Player.ProbeBody = body.gameObject; + + return body; + } + + protected override Transform InitRemoteTransform() + { + var probe = GetProbe(); + + if (probe == null) + { + DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); + return default; + } + + var body = probe.InstantiateInactive(); + body.name = "RemoteProbeTransform"; + + Destroy(body.GetComponentInChildren()); + + PlayerToolsManager.CreateProbe(body, Player); + + QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); + Player.ProbeBody = body.gameObject; + + return body; + } + + private void SetSocket(Transform socket) + { + DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); + _disabledSocket = socket; + } + + protected override void UpdateTransform() + { + base.UpdateTransform(); + if (Player == null) + { + DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); + return; + } + if (_disabledSocket == null) + { + DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); + return; + } + if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) + { + return; + } + if (hasAuthority) + { + transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + return; + } + if (SyncedTransform.position == Vector3.zero || + SyncedTransform.position == Locator.GetAstroObject(AstroObject.Name.Sun).transform.position) + { + return; + } + SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + } + + public override bool IsReady => Locator.GetProbe() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index 92b89be08..db80416aa 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -5,57 +5,57 @@ namespace QSB.TransformSync { - public class PlayerTransformSync : TransformSync - { - public static PlayerTransformSync LocalInstance { get; private set; } + public class PlayerTransformSync : TransformSync + { + public static PlayerTransformSync LocalInstance { get; private set; } - static PlayerTransformSync() - { - AnimControllerPatch.Init(); - } + static PlayerTransformSync() + { + AnimControllerPatch.Init(); + } - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } - private Transform GetPlayerModel() - { - return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); - } + private Transform GetPlayerModel() + { + return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); + } - protected override Transform InitLocalTransform() - { - var body = GetPlayerModel(); + protected override Transform InitLocalTransform() + { + var body = GetPlayerModel(); - GetComponent().InitLocal(body); - GetComponent().InitLocal(body); + GetComponent().InitLocal(body); + GetComponent().InitLocal(body); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = Instantiate(GetPlayerModel()); + protected override Transform InitRemoteTransform() + { + var body = Instantiate(GetPlayerModel()); - GetComponent().InitRemote(body); - GetComponent().InitRemote(body); + GetComponent().InitRemote(body); + GetComponent().InitRemote(body); - var marker = body.gameObject.AddComponent(); - marker.Init(Player); + var marker = body.gameObject.AddComponent(); + marker.Init(Player); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 2b488b559..ba4864f55 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -3,58 +3,58 @@ namespace QSB.TransformSync { - public class ShipTransformSync : TransformSync - { - public static ShipTransformSync LocalInstance { get; private set; } - - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } - - private Transform GetShipModel() - { - return Locator.GetShipTransform(); - } - - protected override Transform InitLocalTransform() - { - return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); - } - - protected override Transform InitRemoteTransform() - { - var shipModel = GetShipModel(); - - var remoteTransform = new GameObject("RemoteShipTransform").transform; - - Instantiate(shipModel.Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Geometry/Cabin_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Tech/Cabin_Tech_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Supplies/Geo_Supplies/Supplies_Geometry/Supplies_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Engine/Geo_Engine/Engine_Geometry/Engine_Exterior"), remoteTransform); - - var landingGearFront = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Front/Geo_LandingGear_Front"), remoteTransform); - var landingGearLeft = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Left/Geo_LandingGear_Left"), remoteTransform); - var landingGearRight = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Right/Geo_LandingGear_Right"), remoteTransform); - - Destroy(landingGearFront.Find("LandingGear_FrontCollision").gameObject); - Destroy(landingGearLeft.Find("LandingGear_LeftCollision").gameObject); - Destroy(landingGearRight.Find("LandingGear_RightCollision").gameObject); - - landingGearFront.localPosition - = landingGearLeft.localPosition - = landingGearRight.localPosition - += Vector3.up * 3.762f; - - return remoteTransform; - } - - public override bool IsReady => GetShipModel() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; - } + public class ShipTransformSync : TransformSync + { + public static ShipTransformSync LocalInstance { get; private set; } + + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } + + private Transform GetShipModel() + { + return Locator.GetShipTransform(); + } + + protected override Transform InitLocalTransform() + { + return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); + } + + protected override Transform InitRemoteTransform() + { + var shipModel = GetShipModel(); + + var remoteTransform = new GameObject("RemoteShipTransform").transform; + + Instantiate(shipModel.Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Geometry/Cabin_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Tech/Cabin_Tech_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Supplies/Geo_Supplies/Supplies_Geometry/Supplies_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Engine/Geo_Engine/Engine_Geometry/Engine_Exterior"), remoteTransform); + + var landingGearFront = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Front/Geo_LandingGear_Front"), remoteTransform); + var landingGearLeft = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Left/Geo_LandingGear_Left"), remoteTransform); + var landingGearRight = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Right/Geo_LandingGear_Right"), remoteTransform); + + Destroy(landingGearFront.Find("LandingGear_FrontCollision").gameObject); + Destroy(landingGearLeft.Find("LandingGear_LeftCollision").gameObject); + Destroy(landingGearRight.Find("LandingGear_RightCollision").gameObject); + + landingGearFront.localPosition + = landingGearLeft.localPosition + = landingGearRight.localPosition + += Vector3.up * 3.762f; + + return remoteTransform; + } + + public override bool IsReady => GetShipModel() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && netId.Value != uint.MaxValue + && netId.Value != 0U; + } } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 756a664d3..94ecefcf1 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -6,126 +6,131 @@ namespace QSB.TransformSync { - public abstract class TransformSync : PlayerSyncObject - { - public abstract bool IsReady { get; } - protected abstract Transform InitLocalTransform(); - protected abstract Transform InitRemoteTransform(); - - public Transform SyncedTransform { get; private set; } - public QSBSector ReferenceSector { get; set; } - - private const float SmoothTime = 0.1f; - private bool _isInitialized; - private Vector3 _positionSmoothVelocity; - private Quaternion _rotationSmoothVelocity; - private bool _isVisible; - - protected virtual void Awake() - { - DebugLog.DebugWrite($"Awake of {AttachedNetId} ({GetType().Name})"); - QSBPlayerManager.PlayerSyncObjects.Add(this); - DontDestroyOnLoad(gameObject); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - protected virtual void OnDestroy() - => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; - - protected void Init() - { - DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); - SyncedTransform = hasAuthority ? InitLocalTransform() : InitRemoteTransform(); - _isInitialized = true; - _isVisible = true; - } - - private void Update() - { - if (!_isInitialized && IsReady) - { - Init(); - } - else if (_isInitialized && !IsReady) - { - _isInitialized = false; - return; - } - - if (!_isInitialized) - { - return; - } - - if (SyncedTransform == null) - { - DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); - return; - } - - UpdateTransform(); - } - - protected virtual void UpdateTransform() - { - if (hasAuthority) // If this script is attached to the client's own body on the client's side. - { - if (ReferenceSector == null || ReferenceSector.Sector == null) - { - DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); - return; - } - transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); - transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); - return; - } - - // If this script is attached to any other body, eg the representations of other players - if (SyncedTransform.position == Vector3.zero) - { - Hide(); - } - else - { - Show(); - } - - SyncedTransform.localPosition = Vector3.SmoothDamp(SyncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); - SyncedTransform.localRotation = QuaternionHelper.SmoothDamp(SyncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); - } - - public void SetReferenceSector(QSBSector sector) - { - DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); - _positionSmoothVelocity = Vector3.zero; - ReferenceSector = sector; - if (!hasAuthority) - { - SyncedTransform.SetParent(sector.Transform, true); - transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); - transform.rotation = sector.Transform.InverseTransformRotation(SyncedTransform.rotation); - } - } - - private void Show() - { - if (!_isVisible) - { - SyncedTransform.gameObject.Show(); - _isVisible = true; - } - } - - private void Hide() - { - if (_isVisible) - { - SyncedTransform.gameObject.Hide(); - _isVisible = false; - } - } - - } + public abstract class TransformSync : PlayerSyncObject + { + public abstract bool IsReady { get; } + protected abstract Transform InitLocalTransform(); + protected abstract Transform InitRemoteTransform(); + + public Transform SyncedTransform { get; private set; } + public QSBSector ReferenceSector { get; set; } + + private const float SmoothTime = 0.1f; + private bool _isInitialized; + private Vector3 _positionSmoothVelocity; + private Quaternion _rotationSmoothVelocity; + private bool _isVisible; + + protected virtual void Awake() + { + DebugLog.DebugWrite($"Awake of {AttachedNetId} ({GetType().Name})"); + QSBPlayerManager.PlayerSyncObjects.Add(this); + DontDestroyOnLoad(gameObject); + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + protected virtual void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + _isInitialized = false; + } + + protected void Init() + { + DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); + SyncedTransform = hasAuthority ? InitLocalTransform() : InitRemoteTransform(); + _isInitialized = true; + _isVisible = true; + } + + private void Update() + { + if (!_isInitialized && IsReady) + { + Init(); + } + else if (_isInitialized && !IsReady) + { + _isInitialized = false; + return; + } + + if (!_isInitialized) + { + return; + } + + if (SyncedTransform == null) + { + DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); + return; + } + + UpdateTransform(); + } + + protected virtual void UpdateTransform() + { + if (hasAuthority) // If this script is attached to the client's own body on the client's side. + { + if (ReferenceSector == null || ReferenceSector.Sector == null) + { + DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); + return; + } + transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); + transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); + return; + } + + // If this script is attached to any other body, eg the representations of other players + if (SyncedTransform.position == Vector3.zero) + { + Hide(); + } + else + { + Show(); + } + + SyncedTransform.localPosition = Vector3.SmoothDamp(SyncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); + SyncedTransform.localRotation = QuaternionHelper.SmoothDamp(SyncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); + } + + public void SetReferenceSector(QSBSector sector) + { + DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); + _positionSmoothVelocity = Vector3.zero; + ReferenceSector = sector; + if (!hasAuthority) + { + SyncedTransform.SetParent(sector.Transform, true); + transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); + transform.rotation = sector.Transform.InverseTransformRotation(SyncedTransform.rotation); + } + } + + private void Show() + { + if (!_isVisible) + { + SyncedTransform.gameObject.Show(); + _isVisible = true; + } + } + + private void Hide() + { + if (_isVisible) + { + SyncedTransform.gameObject.Hide(); + _isVisible = false; + } + } + + } } \ No newline at end of file diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 96f85616c..c81622515 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -2,44 +2,44 @@ namespace QSB.Utility { - public class DebugActions : MonoBehaviour - { - private void GoToVessel() - { - var spawnPoint = GameObject.Find("Spawn_Vessel").GetComponent(); + public class DebugActions : MonoBehaviour + { + private void GoToVessel() + { + var spawnPoint = GameObject.Find("Spawn_Vessel").GetComponent(); - var playerBody = Locator.GetPlayerBody(); - playerBody.WarpToPositionRotation(spawnPoint.transform.position, spawnPoint.transform.rotation); - playerBody.SetVelocity(spawnPoint.GetPointVelocity()); - } + var playerBody = Locator.GetPlayerBody(); + playerBody.WarpToPositionRotation(spawnPoint.transform.position, spawnPoint.transform.rotation); + playerBody.SetVelocity(spawnPoint.GetPointVelocity()); + } - private void InsertWarpCore() - { - var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); - var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); - socket.PlaceIntoSocket(warpCore); + private void InsertWarpCore() + { + var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); + var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); + socket.PlaceIntoSocket(warpCore); - GetComponent().SetPillarRaised(true, true); - } + GetComponent().SetPillarRaised(true, true); + } - private void Update() - { - if (!QSB.DebugMode) - { - return; - } - if (Input.GetKeyDown(KeyCode.Keypad1)) - { - GoToVessel(); - } - if (Input.GetKeyDown(KeyCode.Keypad2)) - { - InsertWarpCore(); - } - if (Input.GetKeyDown(KeyCode.Keypad3)) - { - LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); - } - } - } + private void Update() + { + if (!QSB.DebugMode) + { + return; + } + if (Input.GetKeyDown(KeyCode.Keypad1)) + { + GoToVessel(); + } + if (Input.GetKeyDown(KeyCode.Keypad2)) + { + InsertWarpCore(); + } + if (Input.GetKeyDown(KeyCode.Keypad3)) + { + LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); + } + } + } } \ No newline at end of file diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index a49870676..141e56017 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -5,48 +5,48 @@ namespace QSB.Utility { - public static class DebugLog - { - public static void ToConsole(string message, MessageType type = MessageType.Message) - { - // make custom method name in owml log. - // i wrote the owml code for this so this is fine?? shut up i dont want to change owml - var console = (ModSocketOutput)QSB.Helper.Console; - var method = console.GetType() - .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) - .Last(x => x.Name == "WriteLine"); - var callingType = GetCallingType(new StackTrace()); - method.Invoke(console, new object[] { type, message, callingType }); - } + public static class DebugLog + { + public static void ToConsole(string message, MessageType type = MessageType.Message) + { + // make custom method name in owml log. + // i wrote the owml code for this so this is fine?? shut up i dont want to change owml + var console = (ModSocketOutput)QSB.Helper.Console; + var method = console.GetType() + .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) + .Last(x => x.Name == "WriteLine"); + var callingType = GetCallingType(new StackTrace()); + method.Invoke(console, new object[] { type, message, callingType }); + } - public static void ToHud(string message) - { - if (Locator.GetPlayerBody() == null) - { - return; - } - var data = new NotificationData(NotificationTarget.Player, message.ToUpper()); - NotificationManager.SharedInstance.PostNotification(data); - } + public static void ToHud(string message) + { + if (Locator.GetPlayerBody() == null) + { + return; + } + var data = new NotificationData(NotificationTarget.Player, message.ToUpper()); + NotificationManager.SharedInstance.PostNotification(data); + } - public static void ToAll(string message, MessageType type = MessageType.Message) - { - ToConsole(message, type); - ToHud(message); - } + public static void ToAll(string message, MessageType type = MessageType.Message) + { + ToConsole(message, type); + ToHud(message); + } - public static void DebugWrite(string message, MessageType type = MessageType.Message) - { - if (QSB.DebugMode) - { - ToConsole(message, type); - } - } + public static void DebugWrite(string message, MessageType type = MessageType.Message) + { + if (QSB.DebugMode) + { + ToConsole(message, type); + } + } - private static string GetCallingType(StackTrace frame) - { - var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); - return stackFrame.GetMethod().DeclaringType.Name; - } - } + private static string GetCallingType(StackTrace frame) + { + var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); + return stackFrame.GetMethod().DeclaringType.Name; + } + } } diff --git a/QSB/Utility/FlagsHelper.cs b/QSB/Utility/FlagsHelper.cs index c68b8e926..2854cf0bc 100644 --- a/QSB/Utility/FlagsHelper.cs +++ b/QSB/Utility/FlagsHelper.cs @@ -1,31 +1,31 @@ namespace QSB.Utility { - // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp + // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp - public static class FlagsHelper - { - public static bool IsSet(T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static class FlagsHelper + { + public static bool IsSet(T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - return (flagsValue & flagValue) != 0; - } + return (flagsValue & flagValue) != 0; + } - public static void Set(ref T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static void Set(ref T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - flags = (T)(object)(flagsValue | flagValue); - } + flags = (T)(object)(flagsValue | flagValue); + } - public static void Unset(ref T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static void Unset(ref T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - flags = (T)(object)(flagsValue & ~flagValue); - } - } + flags = (T)(object)(flagsValue & ~flagValue); + } + } } diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index e734ac455..9d1e53e54 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -2,32 +2,32 @@ namespace QSB.Utility { - public static class GOExtensions - { - public static void Show(this GameObject gameObject) => SetVisibility(gameObject, true); + public static class GOExtensions + { + public static void Show(this GameObject gameObject) => SetVisibility(gameObject, true); - public static void Hide(this GameObject gameObject) => SetVisibility(gameObject, false); + public static void Hide(this GameObject gameObject) => SetVisibility(gameObject, false); - private static void SetVisibility(GameObject gameObject, bool isVisible) - { - var renderers = gameObject.GetComponentsInChildren(); - foreach (var renderer in renderers) - { - renderer.enabled = isVisible; - } - } + private static void SetVisibility(GameObject gameObject, bool isVisible) + { + var renderers = gameObject.GetComponentsInChildren(); + foreach (var renderer in renderers) + { + renderer.enabled = isVisible; + } + } - public static GameObject InstantiateInactive(this GameObject original) - { - original.SetActive(false); - var copy = Object.Instantiate(original); - original.SetActive(true); - return copy; - } + public static GameObject InstantiateInactive(this GameObject original) + { + original.SetActive(false); + var copy = Object.Instantiate(original); + original.SetActive(true); + return copy; + } - public static Transform InstantiateInactive(this Transform original) - { - return original.gameObject.InstantiateInactive().transform; - } - } + public static Transform InstantiateInactive(this Transform original) + { + return original.gameObject.InstantiateInactive().transform; + } + } } diff --git a/QSB/Utility/ListExtensions.cs b/QSB/Utility/ListExtensions.cs index b01174049..c0ae8fddf 100644 --- a/QSB/Utility/ListExtensions.cs +++ b/QSB/Utility/ListExtensions.cs @@ -3,18 +3,18 @@ namespace QSB.Utility { - public static class ListExtensions - { - public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) - { - var seenKeys = new HashSet(); - foreach (var element in source) - { - if (seenKeys.Add(keySelector(element))) - { - yield return element; - } - } - } - } + public static class ListExtensions + { + public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) + { + var seenKeys = new HashSet(); + foreach (var element in source) + { + if (seenKeys.Add(keySelector(element))) + { + yield return element; + } + } + } + } } diff --git a/QSB/Utility/QuaternionHelper.cs b/QSB/Utility/QuaternionHelper.cs index 363f5f9c3..8be8a0dee 100644 --- a/QSB/Utility/QuaternionHelper.cs +++ b/QSB/Utility/QuaternionHelper.cs @@ -2,32 +2,32 @@ namespace QSB.Utility { - public static class QuaternionHelper - { - // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b - public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) - { - // account for double-cover - var dot = Quaternion.Dot(rot, target); - var multi = dot > 0f ? 1f : -1f; - target.x *= multi; - target.y *= multi; - target.z *= multi; - target.w *= multi; - // smooth damp (nlerp approx) - var result = new Vector4( - Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), - Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), - Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), - Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) - ).normalized; - // compute deriv - var dtInv = 1f / Time.deltaTime; - deriv.x = (result.x - rot.x) * dtInv; - deriv.y = (result.y - rot.y) * dtInv; - deriv.z = (result.z - rot.z) * dtInv; - deriv.w = (result.w - rot.w) * dtInv; - return new Quaternion(result.x, result.y, result.z, result.w); - } - } + public static class QuaternionHelper + { + // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b + public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) + { + // account for double-cover + var dot = Quaternion.Dot(rot, target); + var multi = dot > 0f ? 1f : -1f; + target.x *= multi; + target.y *= multi; + target.z *= multi; + target.w *= multi; + // smooth damp (nlerp approx) + var result = new Vector4( + Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), + Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), + Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), + Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) + ).normalized; + // compute deriv + var dtInv = 1f / Time.deltaTime; + deriv.x = (result.x - rot.x) * dtInv; + deriv.y = (result.y - rot.y) * dtInv; + deriv.z = (result.z - rot.z) * dtInv; + deriv.w = (result.w - rot.w) * dtInv; + return new Quaternion(result.x, result.y, result.z, result.w); + } + } } diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index fa02052a1..533a2b1ba 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -2,20 +2,20 @@ namespace QSB.WorldSync.Events { - public class BoolWorldObjectMessage : WorldObjectMessage - { - public bool State { get; set; } + public class BoolWorldObjectMessage : WorldObjectMessage + { + public bool State { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - State = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + State = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(State); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(State); + } + } } diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index e86442178..0a7631d88 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -3,20 +3,20 @@ namespace QSB.WorldSync.Events { - public class WorldObjectMessage : PlayerMessage - { - public int ObjectId { get; set; } + public class WorldObjectMessage : PlayerMessage + { + public int ObjectId { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ObjectId = reader.ReadInt32(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ObjectId); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + } + } } \ No newline at end of file diff --git a/QSB/WorldSync/WorldObject.cs b/QSB/WorldSync/WorldObject.cs index b8f423bd8..89ec54b02 100644 --- a/QSB/WorldSync/WorldObject.cs +++ b/QSB/WorldSync/WorldObject.cs @@ -1,7 +1,7 @@ namespace QSB.WorldSync { - public class WorldObject - { - public int ObjectId { get; protected set; } - } + public class WorldObject + { + public int ObjectId { get; protected set; } + } } diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index dad07d798..81f9f0a71 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -9,57 +9,63 @@ namespace QSB.WorldSync { - public static class WorldRegistry - { - private static readonly List WorldObjects = new List(); - public static List OrbSyncList = new List(); - public static List OldOrbList = new List(); - public static List OldDialogueTrees = new List(); + public static class WorldRegistry + { + private static readonly List WorldObjects = new List(); + public static List OrbSyncList = new List(); + public static List OldOrbList = new List(); + public static List OldDialogueTrees = new List(); - public static void AddObject(WorldObject worldObject) - { - if (WorldObjects.Contains(worldObject)) - { - return; - } - WorldObjects.Add(worldObject); - } + public static void AddObject(WorldObject worldObject) + { + if (WorldObjects.Contains(worldObject)) + { + return; + } + WorldObjects.Add(worldObject); + } - public static IEnumerable GetObjects() - => WorldObjects.OfType(); + public static IEnumerable GetObjects() + { + return WorldObjects.OfType(); + } - public static T GetObject(int id) where T : WorldObject - => GetObjects().FirstOrDefault(x => x.ObjectId == id); + public static T GetObject(int id) where T : WorldObject + { + return GetObjects().FirstOrDefault(x => x.ObjectId == id); + } - public static void RemoveObjects() where T : WorldObject - => WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); + public static void RemoveObjects() where T : WorldObject + { + WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); + } - public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) - { - var slotList = GetObjects(); - if (slotList.Count() == 0) - { - DebugLog.ToConsole($"Error - No QSBOrbSlots found when handling slot state change.", MessageType.Error); - return; - } - var qsbSlot = slotList.First(x => x.InterfaceSlot == slot); - var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); - if (orbSync.hasAuthority) - { - qsbSlot.HandleEvent(state); - } - } + public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) + { + var slotList = GetObjects(); + if (slotList.Count() == 0) + { + DebugLog.ToConsole($"Error - No QSBOrbSlots found when handling slot state change.", MessageType.Error); + return; + } + var qsbSlot = slotList.First(x => x.InterfaceSlot == slot); + var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); + if (orbSync.hasAuthority) + { + qsbSlot.HandleEvent(state); + } + } - public static void RaiseEvent(object instance, string eventName) - { - if (!(instance.GetType() - .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)? - .GetValue(instance) is MulticastDelegate multiDelegate)) - { - return; - } - var delegateList = multiDelegate.GetInvocationList().ToList(); - delegateList.ForEach(x => x.DynamicInvoke(instance)); - } - } + public static void RaiseEvent(object instance, string eventName) + { + if (!(instance.GetType() + .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)? + .GetValue(instance) is MulticastDelegate multiDelegate)) + { + return; + } + var delegateList = multiDelegate.GetInvocationList().ToList(); + delegateList.ForEach(x => x.DynamicInvoke(instance)); + } + } } From 2f26476b17f9f518cf73e8530f67bb54af981923 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 19:19:56 +0000 Subject: [PATCH 096/207] stuffz --- QSB/OrbSync/Events/OrbSlotEvent.cs | 2 ++ QSB/TransformSync/PlayerProbeSync.cs | 3 +-- QSB/WorldSync/WorldRegistry.cs | 31 ++++++++++++++++++++-------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 5ade3e1e5..c10bbde5a 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -1,4 +1,5 @@ using QSB.EventsCore; +using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; @@ -23,6 +24,7 @@ public class OrbSlotEvent : QSBEvent public override void OnReceiveRemote(BoolWorldObjectMessage message) { + DebugLog.DebugWrite($"receive slot {message.ObjectId} to {message.State}"); var orbSlot = WorldRegistry.GetObject(message.ObjectId); orbSlot?.SetState(message.State); } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 12a4d491c..e1bbf5a0b 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -83,8 +83,7 @@ protected override void UpdateTransform() transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); return; } - if (SyncedTransform.position == Vector3.zero || - SyncedTransform.position == Locator.GetAstroObject(AstroObject.Name.Sun).transform.position) + if (SyncedTransform.position == Vector3.zero) { return; } diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 81f9f0a71..2c10c1ad5 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -32,7 +32,12 @@ public static IEnumerable GetObjects() public static T GetObject(int id) where T : WorldObject { - return GetObjects().FirstOrDefault(x => x.ObjectId == id); + var obj = GetObjects().FirstOrDefault(x => x.ObjectId == id); + if (obj == default(T)) + { + DebugLog.DebugWrite($"Warning - Could not find world object type {typeof(T).Name} id {id}", MessageType.Warning); + } + return obj; } public static void RemoveObjects() where T : WorldObject @@ -42,17 +47,25 @@ public static void RemoveObjects() where T : WorldObject public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) { - var slotList = GetObjects(); - if (slotList.Count() == 0) + IEnumerable slotList = null; + QSBOrbSlot qsbSlot = null; + NomaiOrbTransformSync orbSync = null; + try { - DebugLog.ToConsole($"Error - No QSBOrbSlots found when handling slot state change.", MessageType.Error); - return; + slotList = GetObjects(); + qsbSlot = slotList.First(x => x.InterfaceSlot == slot); + orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); + if (orbSync.hasAuthority) + { + qsbSlot.HandleEvent(state); + } } - var qsbSlot = slotList.First(x => x.InterfaceSlot == slot); - var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); - if (orbSync.hasAuthority) + catch { - qsbSlot.HandleEvent(state); + DebugLog.DebugWrite("Error - Exception when handling slot state change." + + Environment.NewLine + $"SlotList count {slotList?.Count()}" + + Environment.NewLine + $"QSBOrbSlot null? {qsbSlot == null}" + + Environment.NewLine + $"NomaiOrbTransformSync null? {orbSync == null}", MessageType.Error); } } From 572d3b97610c92ce689960d25563c8fa87a8f0ca Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 19:25:49 +0000 Subject: [PATCH 097/207] stuffz --- QSB/DeathSync/DeathPatches.cs | 5 +---- QSB/QSBInputManager.cs | 5 +---- QSB/QSBNetworkManager.cs | 6 ++---- QSB/QSBSceneManager.cs | 6 ++---- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index c395c9e00..fd3d70ae9 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -22,10 +22,7 @@ public static bool PreFinishDeathSequence(DeathType deathType) return false; } - public static void BroadcastDeath(DeathType deathType) - { - GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); - } + public static void BroadcastDeath(DeathType deathType) => GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); public override void DoPatches() { diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index ffd10ac06..449c4ff9d 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -15,10 +15,7 @@ public class QSBInputManager : MonoBehaviour public static event InputEvent FeldsparTaunt; public static event InputEvent ExitTaunt; - public void Awake() - { - Instance = this; - } + public void Awake() => Instance = this; public void Update() { diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 0ab625c0d..8b52c337d 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -71,10 +71,8 @@ private void Awake() QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - private void OnDestroy() - { - QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; - } + private void OnDestroy() + => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; private void OnSceneLoaded(OWScene scene) { diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index b6ca1f60a..365de1d12 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -30,9 +30,7 @@ private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) } } - private static bool InUniverse(OWScene scene) - { - return scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) + => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; } } From 22f5df4579321600da1248061830ec558d013c5c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 28 Nov 2020 21:03:14 +0000 Subject: [PATCH 098/207] cleanup --- QSB/QSBNetworkManager.cs | 2 +- QSB/QSBSceneManager.cs | 2 +- QSB/Tools/PlayerToolsManager.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 8b52c337d..91a747a9d 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -71,7 +71,7 @@ private void Awake() QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - private void OnDestroy() + private void OnDestroy() => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; private void OnSceneLoaded(OWScene scene) diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 365de1d12..84e2583dc 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -30,7 +30,7 @@ private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) } } - private static bool InUniverse(OWScene scene) + private static bool InUniverse(OWScene scene) => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; } } diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index d76d58d24..e368fbabd 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -21,7 +21,7 @@ public class PlayerToolsManager public static void Init(Transform camera) { CreateStowTransforms(camera); - + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) { _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; From 4638eadd57d4f358cef863d18b37d3d7e48c6e98 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 29 Nov 2020 15:23:42 +0000 Subject: [PATCH 099/207] fixes --- QSB/ConversationSync/ConversationManager.cs | 1 + QSB/OrbSync/Events/OrbUserEvent.cs | 5 +++++ QSB/OrbSync/OrbManager.cs | 15 ++++++++------- QSB/Player/PlayerInfo.cs | 1 - QSB/QSBNetworkManager.cs | 2 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 16 ++++++---------- QSB/TransformSync/TransformSync.cs | 1 - QSB/WorldSync/WorldRegistry.cs | 21 ++++++++++----------- 8 files changed, 31 insertions(+), 31 deletions(-) diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index ebfc74d38..b2f910276 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -25,6 +25,7 @@ private void Start() ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + // TODO : make dynamic so it can be different sizes! var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); if (font == null) { diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 11b648fa2..ed8a1c39d 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -57,6 +57,11 @@ public override void OnServerReceive(WorldObjectMessage message) public override void OnReceiveRemote(WorldObjectMessage message) { + if (WorldRegistry.OrbSyncList.Count < message.ObjectId) + { + DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {WorldRegistry.OrbSyncList.Count}.", MessageType.Error); + return; + } var orb = WorldRegistry.OrbSyncList .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); orb.enabled = true; diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 021ab5d91..f09edc6f7 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -18,8 +18,8 @@ private void Awake() private void BuildOrbSlots() { - DebugLog.DebugWrite("Building QSBOrbSlots..."); - + DebugLog.DebugWrite("Building QSBOrbSlots...", MessageType.Info); + WorldRegistry.RemoveObjects(); var orbSlots = Resources.FindObjectsOfTypeAll(); for (var id = 0; id < orbSlots.Length; id++) { @@ -27,32 +27,33 @@ private void BuildOrbSlots() qsbOrbSlot.Init(orbSlots[id], id); } - DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} interface orbs and {WorldRegistry.OrbSyncList.Count} orb syncs.", MessageType.Success); + DebugLog.DebugWrite($"Finished orb slot build with {orbSlots.Length} slots.", MessageType.Success); } public void BuildOrbs() { - DebugLog.DebugWrite("Building orb syncs..."); + DebugLog.DebugWrite("Building orb syncs...", MessageType.Info); WorldRegistry.OldOrbList.Clear(); - WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); if (NetworkServer.active) { DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); + WorldRegistry.OrbSyncList.ForEach(x => NetworkServer.Destroy(x.gameObject)); WorldRegistry.OrbSyncList.Clear(); WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); } + DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} orbs.", MessageType.Success); } public void QueueBuildSlots() { - DebugLog.DebugWrite("Queueing build of QSBOrbSlots..."); + DebugLog.DebugWrite("Queueing build of QSBOrbSlots...", MessageType.Info); QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); } public void QueueBuildOrbs() { - DebugLog.DebugWrite("Queueing build of NetworkOrbs..."); + DebugLog.DebugWrite("Queueing build of NetworkOrbs...", MessageType.Info); QSB.Helper.Events.Unity.RunWhen(() => NetworkServer.active, BuildOrbs); } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 27ec6bc4c..22c1bffbc 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -37,7 +37,6 @@ public class PlayerInfo public PlayerInfo(uint id) { - DebugLog.DebugWrite($"Creating PlayerInfo with id {id}"); PlayerId = id; CurrentDialogueID = -1; } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 91a747a9d..0c54b1f39 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -140,8 +140,8 @@ public override void OnClientConnect(NetworkConnection connection) // Called on if (QSBSceneManager.IsInUniverse) { QSBSectorManager.Instance.RebuildSectors(); + OrbManager.Instance.QueueBuildSlots(); } - OrbManager.Instance.QueueBuildSlots(); if (!NetworkServer.localClientActive) { diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index d905a3712..f4dd9ff88 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -1,4 +1,5 @@ -using QSB.WorldSync; +using QSB.Utility; +using QSB.WorldSync; using UnityEngine; using UnityEngine.Networking; @@ -20,6 +21,8 @@ public class NomaiOrbTransformSync : NetworkBehaviour public override void OnStartClient() { + DontDestroyOnLoad(this); + DebugLog.DebugWrite($"onstartclient orb netid {netId.Value}"); WorldRegistry.OrbSyncList.Add(this); QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); @@ -27,24 +30,17 @@ public override void OnStartClient() private void OnReady() { + DebugLog.DebugWrite($"onready orb netid {netId.Value}, index {Index}"); AttachedOrb = WorldRegistry.OldOrbList[Index]; _isReady = true; } - private void Awake() - { - DontDestroyOnLoad(this); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - private void OnDestroy() { + DebugLog.DebugWrite($"ondestroy orb netid {netId.Value}"); WorldRegistry.OrbSyncList.Remove(this); - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _isInitialized = false; - protected void Init() { OrbTransform = AttachedOrb.transform; diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 94ecefcf1..8db1ebe3f 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -23,7 +23,6 @@ public abstract class TransformSync : PlayerSyncObject protected virtual void Awake() { - DebugLog.DebugWrite($"Awake of {AttachedNetId} ({GetType().Name})"); QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 2c10c1ad5..6b958a66a 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -32,12 +32,7 @@ public static IEnumerable GetObjects() public static T GetObject(int id) where T : WorldObject { - var obj = GetObjects().FirstOrDefault(x => x.ObjectId == id); - if (obj == default(T)) - { - DebugLog.DebugWrite($"Warning - Could not find world object type {typeof(T).Name} id {id}", MessageType.Warning); - } - return obj; + return GetObjects().FirstOrDefault(x => x.ObjectId == id); } public static void RemoveObjects() where T : WorldObject @@ -47,12 +42,15 @@ public static void RemoveObjects() where T : WorldObject public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) { - IEnumerable slotList = null; QSBOrbSlot qsbSlot = null; NomaiOrbTransformSync orbSync = null; + var slotList = GetObjects(); + if (slotList.Count() == 0) + { + return; + } try { - slotList = GetObjects(); qsbSlot = slotList.First(x => x.InterfaceSlot == slot); orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); if (orbSync.hasAuthority) @@ -63,9 +61,10 @@ public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterface catch { DebugLog.DebugWrite("Error - Exception when handling slot state change." - + Environment.NewLine + $"SlotList count {slotList?.Count()}" - + Environment.NewLine + $"QSBOrbSlot null? {qsbSlot == null}" - + Environment.NewLine + $"NomaiOrbTransformSync null? {orbSync == null}", MessageType.Error); + + Environment.NewLine + $"Slot name {slot.name} to {state}" + + Environment.NewLine + $"SlotList count : {slotList?.Count()}" + + Environment.NewLine + $"QSBOrbSlot null? : {qsbSlot == null}" + + Environment.NewLine + $"NomaiOrbTransformSync null? : {orbSync == null}", MessageType.Error); } } From 88428ba151ce20044920f00e7b8c3007f4897054 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 08:29:32 +0000 Subject: [PATCH 100/207] stuff --- QSB/OrbSync/Events/OrbUserEvent.cs | 15 ++++++++++--- QSB/QSB.cs | 20 +++++++++++++++++ QSB/QSB.csproj | 1 + QSB/QSBNetworkManager.cs | 26 +++++----------------- QSB/TransformSync/NomaiOrbTransformSync.cs | 13 ++++++++--- QSB/Utility/UnetExtensions.cs | 16 +++++++++++++ 6 files changed, 65 insertions(+), 26 deletions(-) create mode 100644 QSB/Utility/UnetExtensions.cs diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index ed8a1c39d..bfa3dd72c 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -27,13 +27,20 @@ public class OrbUserEvent : QSBEvent public override void OnServerReceive(WorldObjectMessage message) { - var fromPlayer = NetworkServer.connections - .First(x => x.playerControllers[0].gameObject.GetComponent().netId.Value == message.FromId); + var fromPlayer = NetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); + foreach (var item in NetworkServer.connections) + { + DebugLog.DebugWrite(item.GetPlayer().PlayerId.ToString()); + } if (WorldRegistry.OrbSyncList.Count == 0) { DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); return; } + if (fromPlayer == null) + { + DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); + } var orb = WorldRegistry.OrbSyncList .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); if (orb == null) @@ -47,10 +54,12 @@ public override void OnServerReceive(WorldObjectMessage message) DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); return; } - if (orbIdentity.clientAuthorityOwner != null) + if (orbIdentity.clientAuthorityOwner != null && orbIdentity.clientAuthorityOwner != fromPlayer) { + DebugLog.DebugWrite($"Removed authority of orb {message.ObjectId} from {orbIdentity.clientAuthorityOwner.GetPlayer().PlayerId}"); orbIdentity.RemoveClientAuthority(orbIdentity.clientAuthorityOwner); } + DebugLog.DebugWrite($"Assigned authority of orb {message.ObjectId} to player {message.FromId}."); orbIdentity.AssignClientAuthority(fromPlayer); orb.enabled = true; } diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 09c19bdc8..08837605b 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -34,6 +34,26 @@ private void Awake() "Quantum Space Buddies is best experienced with friends..."; ModBehaviour = this; + + LogFilter.currentLogLevel = LogFilter.Debug; + + Application.logMessageReceived += Application_logMessageReceived; + } + + private void Application_logMessageReceived(string condition, string stackTrace, LogType type) + { + switch (type) + { + case LogType.Assert: + DebugLog.DebugWrite($"Assert - {condition}", MessageType.Message); + break; + case LogType.Log: + DebugLog.DebugWrite($"Log - {condition}", MessageType.Message); + break; + case LogType.Warning: + DebugLog.DebugWrite($"Warning - {condition}", MessageType.Warning); + break; + } } private void Start() diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 7ea6a14a7..2bc0e7cd0 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -195,6 +195,7 @@ + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 0c54b1f39..7ec45dfd2 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -197,9 +197,9 @@ public override void OnStopClient() // Called on the client when closing connect public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects { - var playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; + var player = connection.GetPlayer(); var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, playerId, netIds); + GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); foreach (var item in WorldRegistry.OrbSyncList) { @@ -210,7 +210,7 @@ public override void OnServerDisconnect(NetworkConnection connection) // Called } } - QSBPlayerManager.GetPlayer(playerId).HudMarker?.Remove(); + player.HudMarker?.Remove(); CleanupConnection(connection); } @@ -234,23 +234,9 @@ public override void OnStopServer() private void CleanupConnection(NetworkConnection connection) { - uint playerId; - try - { - playerId = connection.playerControllers[0].gameObject.GetComponent().netId.Value; - } - catch (Exception ex) - { - DebugLog.ToConsole("Error when getting playerId in CleanupConnection: " + ex.Message, MessageType.Error); - return; - } - if (!QSBPlayerManager.PlayerExists(playerId)) - { - return; - } - var playerName = QSBPlayerManager.GetPlayer(playerId).Name; - DebugLog.ToConsole($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.RemovePlayer(playerId); + var player = connection.GetPlayer(); + DebugLog.ToConsole($"{player.Name} disconnected.", MessageType.Info); + QSBPlayerManager.RemovePlayer(player.PlayerId); var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); netIds.ForEach(CleanupNetworkBehaviour); diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index f4dd9ff88..3faa9fcce 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -22,22 +22,29 @@ public class NomaiOrbTransformSync : NetworkBehaviour public override void OnStartClient() { DontDestroyOnLoad(this); - DebugLog.DebugWrite($"onstartclient orb netid {netId.Value}"); WorldRegistry.OrbSyncList.Add(this); QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); } + public override void OnStartAuthority() + { + DebugLog.DebugWrite("START AUTHORITY - has auth? : " + hasAuthority); + } + + public override void OnStopAuthority() + { + DebugLog.DebugWrite("END AUTHORITY - has auth? : " + hasAuthority); + } + private void OnReady() { - DebugLog.DebugWrite($"onready orb netid {netId.Value}, index {Index}"); AttachedOrb = WorldRegistry.OldOrbList[Index]; _isReady = true; } private void OnDestroy() { - DebugLog.DebugWrite($"ondestroy orb netid {netId.Value}"); WorldRegistry.OrbSyncList.Remove(this); } diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs new file mode 100644 index 000000000..c1b748585 --- /dev/null +++ b/QSB/Utility/UnetExtensions.cs @@ -0,0 +1,16 @@ +using QSB.Player; +using QSB.TransformSync; +using UnityEngine.Networking; + +namespace QSB.Utility +{ + public static class UnetExtensions + { + public static PlayerInfo GetPlayer(this NetworkConnection connection) + { + var go = connection.playerControllers[0].gameObject; + var controller = go.GetComponent(); + return QSBPlayerManager.GetPlayer(controller.netId.Value); + } + } +} From b64909025888522bce88bb7f652524479fb13d3f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 09:51:53 +0000 Subject: [PATCH 101/207] add custom files --- QSB/Animation/AnimationSync.cs | 2 +- QSB/Animation/CrouchSync.cs | 4 +- QSB/Animation/QSBNetworkAnimator.cs | 26 +- QSB/Instruments/InstrumentsManager.cs | 4 +- QSB/OrbSync/Events/OrbUserEvent.cs | 8 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/Player/PlayerSyncObject.cs | 4 +- QSB/Player/QSBPlayerManager.cs | 6 +- QSB/QSB.cs | 2 +- QSB/QSB.csproj | 2 + QSB/QSBNetworkBehaviour.cs | 612 ++++++++++ QSB/QSBNetworkIdentity.cs | 1002 +++++++++++++++++ QSB/QSBNetworkManager.cs | 26 +- QSB/SectorSync/SectorSync.cs | 4 +- QSB/TimeSync/PreserveTimeScale.cs | 4 +- QSB/TimeSync/WakeUpSync.cs | 10 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 8 +- QSB/TransformSync/PlayerCameraSync.cs | 8 +- QSB/TransformSync/PlayerProbeSync.cs | 7 +- QSB/TransformSync/PlayerTransformSync.cs | 10 +- QSB/TransformSync/ShipTransformSync.cs | 9 +- QSB/TransformSync/TransformSync.cs | 7 +- QSB/Utility/UnetExtensions.cs | 2 +- QSB/WorldSync/WorldRegistry.cs | 2 +- 25 files changed, 1703 insertions(+), 70 deletions(-) create mode 100644 QSB/QSBNetworkBehaviour.cs create mode 100644 QSB/QSBNetworkIdentity.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 318aeaba0..4590a1a91 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -74,7 +74,7 @@ private void InitCommon(Transform body) _netAnim.enabled = true; _bodyAnim = body.GetComponent(); Mirror = body.gameObject.AddComponent(); - if (isLocalPlayer) + if (IsLocalPlayer) { Mirror.Init(_bodyAnim, _anim); } diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 559762cb0..9cfba8e54 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -4,7 +4,7 @@ namespace QSB.Animation { - public class CrouchSync : NetworkBehaviour + public class CrouchSync : QSBNetworkBehaviour { public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); @@ -29,7 +29,7 @@ public void Init(AnimationSync animationSync, PlayerCharacterController playerCo private void Update() { - if (isLocalPlayer) + if (IsLocalPlayer) { SyncLocalCrouch(); return; diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index fd4d89f06..a25596437 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -6,9 +6,7 @@ namespace QSB.Animation { // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. - [RequireComponent(typeof(NetworkIdentity))] - [RequireComponent(typeof(Animator))] - class QSBNetworkAnimator : NetworkBehaviour + class QSBNetworkAnimator : QSBNetworkBehaviour { private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); @@ -65,7 +63,7 @@ private void FixedUpdate() } var animationMessage = new QSBAnimationMessage { - netId = netId, + netId = NetId, stateHash = stateHash, normalizedTime = normalizedTime }; @@ -74,13 +72,13 @@ private void FixedUpdate() WriteParameters(m_ParameterWriter, false); animationMessage.parameters = m_ParameterWriter.ToArray(); - if (hasAuthority || ClientScene.readyConnection != null) + if (HasAuthority || ClientScene.readyConnection != null) { ClientScene.readyConnection.Send(40, animationMessage); } else { - if (!isServer || localPlayerAuthority) + if (!IsServer || LocalPlayerAuthority) { return; } @@ -127,18 +125,18 @@ private void CheckSendRate() m_SendTimer = Time.time + GetNetworkSendInterval(); var parametersMessage = new QSBAnimationParametersMessage { - netId = netId + netId = NetId }; m_ParameterWriter.SeekZero(); WriteParameters(m_ParameterWriter, true); parametersMessage.parameters = m_ParameterWriter.ToArray(); - if (hasAuthority && ClientScene.readyConnection != null) + if (HasAuthority && ClientScene.readyConnection != null) { ClientScene.readyConnection.Send(41, parametersMessage); } else { - if (!isServer || localPlayerAuthority) + if (!IsServer || LocalPlayerAuthority) return; NetworkServer.SendToReady(gameObject, 41, parametersMessage); } @@ -146,7 +144,7 @@ private void CheckSendRate() internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) { - if (hasAuthority) + if (HasAuthority) { return; } @@ -159,7 +157,7 @@ internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) { - if (hasAuthority) + if (HasAuthority) { return; } @@ -267,10 +265,10 @@ public void SetTrigger(int hash) { var animationTriggerMessage = new QSBAnimationTriggerMessage { - netId = netId, + netId = NetId, hash = hash }; - if (hasAuthority && localPlayerAuthority) + if (HasAuthority && LocalPlayerAuthority) { if (NetworkClient.allClients.Count <= 0) { @@ -285,7 +283,7 @@ public void SetTrigger(int hash) } else { - if (!isServer || localPlayerAuthority) + if (!IsServer || LocalPlayerAuthority) { return; } diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index cba35394d..f0859c6c6 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -41,7 +41,7 @@ public void InitRemote(Transform root) private void OnDestroy() { - if (!isLocalPlayer) + if (!IsLocalPlayer) { return; } @@ -79,7 +79,7 @@ private GameObject MakeChertDrum(AssetBundle bundle) public void StartInstrument(AnimationType type) { - if (!isLocalPlayer) + if (!IsLocalPlayer) { DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); return; diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index bfa3dd72c..7aeeae2e5 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -48,16 +48,16 @@ public override void OnServerReceive(WorldObjectMessage message) DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); return; } - var orbIdentity = orb.GetComponent(); + var orbIdentity = orb.GetComponent(); if (orbIdentity == null) { DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); return; } - if (orbIdentity.clientAuthorityOwner != null && orbIdentity.clientAuthorityOwner != fromPlayer) + if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) { - DebugLog.DebugWrite($"Removed authority of orb {message.ObjectId} from {orbIdentity.clientAuthorityOwner.GetPlayer().PlayerId}"); - orbIdentity.RemoveClientAuthority(orbIdentity.clientAuthorityOwner); + DebugLog.DebugWrite($"Removed authority of orb {message.ObjectId} from {orbIdentity.ClientAuthorityOwner.GetPlayer().PlayerId}"); + orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); } DebugLog.DebugWrite($"Assigned authority of orb {message.ObjectId} to player {message.FromId}."); orbIdentity.AssignClientAuthority(fromPlayer); diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 796955ae0..14a57b300 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -45,7 +45,7 @@ public override void OnReceiveRemote(ToggleMessage message) foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); } } } diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 3afb3fa3a..1af7a0a7d 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -28,7 +28,7 @@ public override void OnServerReceive(PlayerMessage message) foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); } } } diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 923fbe857..77f59682e 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -2,9 +2,9 @@ namespace QSB.Player { - public abstract class PlayerSyncObject : NetworkBehaviour + public abstract class PlayerSyncObject : QSBNetworkBehaviour { - public uint AttachedNetId => GetComponent()?.netId.Value ?? uint.MaxValue; + public uint AttachedNetId => GetComponent()?.NetId.Value ?? uint.MaxValue; public uint PlayerId => this.GetPlayerOfObject(); public uint PreviousPlayerId { get; set; } public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 3d16dbc32..2efa49fa0 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -10,7 +10,7 @@ namespace QSB.Player { public static class QSBPlayerManager { - public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.netId.Value ?? uint.MaxValue; + public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.NetId.Value ?? uint.MaxValue; public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); public static List PlayerList { get; } = new List(); @@ -75,7 +75,7 @@ public static T GetSyncObject(uint id) where T : PlayerSyncObject public static bool IsBelongingToLocalPlayer(uint id) { return id == LocalPlayerId || - PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.isLocalPlayer); + PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); } public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) @@ -131,7 +131,7 @@ public static List GetPlayerNetIds(PlayerInfo player) int count = 0; int totalCount = PlayerSyncObjects.Count; PlayerSyncObjects.RemoveAll(x => x == null); - PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); + PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); if (PlayerSyncObjects.Count != totalCount) { DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 08837605b..60bda8c8b 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -37,7 +37,7 @@ private void Awake() LogFilter.currentLogLevel = LogFilter.Debug; - Application.logMessageReceived += Application_logMessageReceived; + // Application.logMessageReceived += Application_logMessageReceived; } private void Application_logMessageReceived(string condition, string stackTrace, LogType type) diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 2bc0e7cd0..73de0c492 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -163,6 +163,8 @@ + + diff --git a/QSB/QSBNetworkBehaviour.cs b/QSB/QSBNetworkBehaviour.cs new file mode 100644 index 000000000..7dda69b16 --- /dev/null +++ b/QSB/QSBNetworkBehaviour.cs @@ -0,0 +1,612 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Net.Sockets; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + public class QSBNetworkBehaviour : MonoBehaviour + { + public bool LocalPlayerAuthority => MyView.LocalPlayerAuthority; + public bool IsServer => MyView.IsServer; + public bool IsClient => MyView.IsClient; + public bool IsLocalPlayer => MyView.IsLocalPlayer; + public bool HasAuthority => MyView.HasAuthority; + public NetworkInstanceId NetId => MyView.NetId; + public NetworkConnection ConnectionToServer => MyView.ConnectionToServer; + public NetworkConnection ConnectionToClient => MyView.ConnectionToClient; + public short PlayerControllerId => MyView.PlayerControllerId; + + protected uint SyncVarDirtyBits { get; private set; } + protected bool SyncVarHookGuard { get; set; } + + internal QSBNetworkIdentity NetIdentity => MyView; + + private QSBNetworkIdentity MyView + { + get + { + QSBNetworkIdentity myView; + if (m_MyView == null) + { + m_MyView = GetComponent(); + if (m_MyView == null) + { + Debug.LogError("There is no NetworkIdentity on this object. Please add one."); + } + myView = m_MyView; + } + else + { + myView = m_MyView; + } + return myView; + } + } + + protected void SendCommandInternal(NetworkWriter writer, int channelId, string cmdName) + { + if (!IsLocalPlayer && !HasAuthority) + { + Debug.LogWarning("Trying to send command for object without authority."); + } + else if (ClientScene.readyConnection == null) + { + Debug.LogError("Send command attempted with no client running [client=" + ConnectionToServer + "]."); + } + else + { + writer.FinishMessage(); + ClientScene.readyConnection.SendWriter(writer, channelId); + } + } + + public virtual bool InvokeCommand(int cmdHash, NetworkReader reader) => InvokeCommandDelegate(cmdHash, reader); + + protected void SendRPCInternal(NetworkWriter writer, int channelId, string rpcName) + { + if (!IsServer) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("ClientRpc call on un-spawned object"); + } + } + else + { + writer.FinishMessage(); + NetworkServer.SendWriterToReady(base.gameObject, writer, channelId); + } + } + + protected void SendTargetRPCInternal(NetworkConnection conn, NetworkWriter writer, int channelId, string rpcName) + { + if (!IsServer) + { + Debug.LogWarning("TargetRpc call on un-spawned object"); + } + else + { + writer.FinishMessage(); + conn.SendWriter(writer, channelId); + } + } + + public virtual bool InvokeRPC(int cmdHash, NetworkReader reader) => InvokeRpcDelegate(cmdHash, reader); + + protected void SendEventInternal(NetworkWriter writer, int channelId, string eventName) + { + if (!NetworkServer.active) + { + Debug.LogWarning("SendEvent no server?"); + } + else + { + writer.FinishMessage(); + NetworkServer.SendWriterToReady(gameObject, writer, channelId); + } + } + + public virtual bool InvokeSyncEvent(int cmdHash, NetworkReader reader) => InvokeSyncEventDelegate(cmdHash, reader); + + public virtual bool InvokeSyncList(int cmdHash, NetworkReader reader) => InvokeSyncListDelegate(cmdHash, reader); + + protected static void RegisterCommandDelegate(Type invokeClass, int cmdHash, CmdDelegate func) + { + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + var invoker = new Invoker + { + invokeType = UNetInvokeType.Command, + invokeClass = invokeClass, + invokeFunction = func + }; + s_CmdHandlerDelegates[cmdHash] = invoker; + Debug.Log(string.Concat(new object[] + { + "RegisterCommandDelegate hash:", + cmdHash, + " ", + func.GetMethodName() + })); + } + } + + protected static void RegisterRpcDelegate(Type invokeClass, int cmdHash, CmdDelegate func) + { + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + var invoker = new Invoker + { + invokeType = UNetInvokeType.ClientRpc, + invokeClass = invokeClass, + invokeFunction = func + }; + s_CmdHandlerDelegates[cmdHash] = invoker; + Debug.Log(string.Concat(new object[] + { + "RegisterRpcDelegate hash:", + cmdHash, + " ", + func.GetMethodName() + })); + } + } + + protected static void RegisterEventDelegate(Type invokeClass, int cmdHash, CmdDelegate func) + { + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + var invoker = new Invoker + { + invokeType = UNetInvokeType.SyncEvent, + invokeClass = invokeClass, + invokeFunction = func + }; + s_CmdHandlerDelegates[cmdHash] = invoker; + Debug.Log(string.Concat(new object[] + { + "RegisterEventDelegate hash:", + cmdHash, + " ", + func.GetMethodName() + })); + } + } + + protected static void RegisterSyncListDelegate(Type invokeClass, int cmdHash, CmdDelegate func) + { + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + var invoker = new Invoker + { + invokeType = UNetInvokeType.SyncList, + invokeClass = invokeClass, + invokeFunction = func + }; + s_CmdHandlerDelegates[cmdHash] = invoker; + Debug.Log(string.Concat(new object[] + { + "RegisterSyncListDelegate hash:", + cmdHash, + " ", + func.GetMethodName() + })); + } + } + + internal static string GetInvoker(int cmdHash) + { + string result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = null; + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + result = invoker.DebugString(); + } + return result; + } + + internal static bool GetInvokerForHashCommand(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + => GetInvokerForHash(cmdHash, UNetInvokeType.Command, out invokeClass, out invokeFunction); + + internal static bool GetInvokerForHashClientRpc(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + => GetInvokerForHash(cmdHash, UNetInvokeType.ClientRpc, out invokeClass, out invokeFunction); + + internal static bool GetInvokerForHashSyncList(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + => GetInvokerForHash(cmdHash, UNetInvokeType.SyncList, out invokeClass, out invokeFunction); + + internal static bool GetInvokerForHashSyncEvent(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + => GetInvokerForHash(cmdHash, UNetInvokeType.SyncEvent, out invokeClass, out invokeFunction); + + private static bool GetInvokerForHash(int cmdHash, UNetInvokeType invokeType, out Type invokeClass, out CmdDelegate invokeFunction) + { + bool result; + if (!s_CmdHandlerDelegates.TryGetValue(cmdHash, out var invoker)) + { + Debug.Log("GetInvokerForHash hash:" + cmdHash + " not found"); + invokeClass = null; + invokeFunction = null; + result = false; + } + else if (invoker == null) + { + Debug.Log("GetInvokerForHash hash:" + cmdHash + " invoker null"); + invokeClass = null; + invokeFunction = null; + result = false; + } + else if (invoker.invokeType != invokeType) + { + Debug.LogError("GetInvokerForHash hash:" + cmdHash + " mismatched invokeType"); + invokeClass = null; + invokeFunction = null; + result = false; + } + else + { + invokeClass = invoker.invokeClass; + invokeFunction = invoker.invokeFunction; + result = true; + } + return result; + } + + internal static void DumpInvokers() + { + Debug.Log("DumpInvokers size:" + s_CmdHandlerDelegates.Count); + foreach (var keyValuePair in s_CmdHandlerDelegates) + { + Debug.Log(string.Concat(new object[] + { + " Invoker:", + keyValuePair.Value.invokeClass, + ":", + keyValuePair.Value.invokeFunction.GetMethodName(), + " ", + keyValuePair.Value.invokeType, + " ", + keyValuePair.Key + })); + } + } + + internal bool ContainsCommandDelegate(int cmdHash) + => s_CmdHandlerDelegates.ContainsKey(cmdHash); + + internal bool InvokeCommandDelegate(int cmdHash, NetworkReader reader) + { + bool result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = false; + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + if (invoker.invokeType != UNetInvokeType.Command) + { + result = false; + } + else + { + if (GetType() != invoker.invokeClass) + { + if (!GetType().IsSubclassOf(invoker.invokeClass)) + { + return false; + } + } + invoker.invokeFunction(this, reader); + result = true; + } + } + return result; + } + + internal bool InvokeRpcDelegate(int cmdHash, NetworkReader reader) + { + bool result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = false; + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + if (invoker.invokeType != UNetInvokeType.ClientRpc) + { + result = false; + } + else + { + if (GetType() != invoker.invokeClass) + { + if (!GetType().IsSubclassOf(invoker.invokeClass)) + { + return false; + } + } + invoker.invokeFunction(this, reader); + result = true; + } + } + return result; + } + + internal bool InvokeSyncEventDelegate(int cmdHash, NetworkReader reader) + { + bool result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = false; + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + if (invoker.invokeType != UNetInvokeType.SyncEvent) + { + result = false; + } + else + { + invoker.invokeFunction(this, reader); + result = true; + } + } + return result; + } + + internal bool InvokeSyncListDelegate(int cmdHash, NetworkReader reader) + { + bool result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = false; + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + if (invoker.invokeType != UNetInvokeType.SyncList) + { + result = false; + } + else if (GetType() != invoker.invokeClass) + { + result = false; + } + else + { + invoker.invokeFunction(this, reader); + result = true; + } + } + return result; + } + + internal static string GetCmdHashHandlerName(int cmdHash) + { + string result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = cmdHash.ToString(); + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + result = invoker.invokeType + ":" + invoker.invokeFunction.GetMethodName(); + } + return result; + } + + private static string GetCmdHashPrefixName(int cmdHash, string prefix) + { + string result; + if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) + { + result = cmdHash.ToString(); + } + else + { + var invoker = s_CmdHandlerDelegates[cmdHash]; + var text = invoker.invokeFunction.GetMethodName(); + var num = text.IndexOf(prefix); + if (num > -1) + { + text = text.Substring(prefix.Length); + } + result = text; + } + return result; + } + + internal static string GetCmdHashCmdName(int cmdHash) + => GetCmdHashPrefixName(cmdHash, "InvokeCmd"); + + internal static string GetCmdHashRpcName(int cmdHash) + => GetCmdHashPrefixName(cmdHash, "InvokeRpc"); + + internal static string GetCmdHashEventName(int cmdHash) + => GetCmdHashPrefixName(cmdHash, "InvokeSyncEvent"); + + internal static string GetCmdHashListName(int cmdHash) + => GetCmdHashPrefixName(cmdHash, "InvokeSyncList"); + + protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref NetworkInstanceId netIdField) + { + if (!SyncVarHookGuard) + { + NetworkInstanceId networkInstanceId = default; + if (newGameObject != null) + { + var component = newGameObject.GetComponent(); + if (component != null) + { + networkInstanceId = component.NetId; + if (networkInstanceId.IsEmpty()) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?"); + } + } + } + } + NetworkInstanceId networkInstanceId2 = default; + if (gameObjectField != null) + { + networkInstanceId2 = gameObjectField.GetComponent().NetId; + } + if (networkInstanceId != networkInstanceId2) + { + Debug.Log(string.Concat(new object[] + { + "SetSyncVar GameObject ", + base.GetType().Name, + " bit [", + dirtyBit, + "] netfieldId:", + networkInstanceId2, + "->", + networkInstanceId + })); + SetDirtyBit(dirtyBit); + gameObjectField = newGameObject; + netIdField = networkInstanceId; + } + } + } + + protected void SetSyncVar(T value, ref T fieldValue, uint dirtyBit) + { + var flag = false; + if (value == null) + { + if (fieldValue != null) + { + flag = true; + } + } + else + { + flag = !value.Equals(fieldValue); + } + if (flag) + { + Debug.Log(string.Concat(new object[] + { + "SetSyncVar ", + GetType().Name, + " bit [", + dirtyBit, + "] ", + fieldValue, + "->", + value + })); + SetDirtyBit(dirtyBit); + fieldValue = value; + } + } + + public void SetDirtyBit(uint dirtyBit) => SyncVarDirtyBits |= dirtyBit; + + public void ClearAllDirtyBits() + { + m_LastSendTime = Time.time; + SyncVarDirtyBits = 0U; + } + + internal int GetDirtyChannel() + { + if (Time.time - m_LastSendTime > GetNetworkSendInterval()) + { + if (SyncVarDirtyBits != 0U) + { + return GetNetworkChannel(); + } + } + return -1; + } + + public virtual bool OnSerialize(NetworkWriter writer, bool initialState) + { + if (!initialState) + { + writer.WritePackedUInt32(0U); + } + return false; + } + + public virtual void OnDeserialize(NetworkReader reader, bool initialState) + { + if (!initialState) + { + reader.ReadPackedUInt32(); + } + } + + public virtual void PreStartClient() { } + public virtual void OnNetworkDestroy() { } + public virtual void OnStartServer() { } + public virtual void OnStartClient() { } + public virtual void OnStartLocalPlayer() { } + public virtual void OnStartAuthority() { } + public virtual void OnStopAuthority() { } + public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; + public virtual void OnSetLocalVisibility(bool vis) { } + public virtual bool OnCheckObserver(NetworkConnection conn) => true; + public virtual int GetNetworkChannel() => 0; + public virtual float GetNetworkSendInterval() => 0.1f; + + private float m_LastSendTime; + private QSBNetworkIdentity m_MyView; + + private static readonly Dictionary s_CmdHandlerDelegates = new Dictionary(); + + public delegate void CmdDelegate(QSBNetworkBehaviour obj, NetworkReader reader); + + protected delegate void EventDelegate(List targets, NetworkReader reader); + + protected enum UNetInvokeType + { + Command, + ClientRpc, + SyncEvent, + SyncList + } + + protected class Invoker + { + public string DebugString() + { + return string.Concat(new object[] + { + invokeType, + ":", + invokeClass, + ":", + invokeFunction.GetMethodName() + }); + } + + public UNetInvokeType invokeType; + public Type invokeClass; + public CmdDelegate invokeFunction; + } + } + + internal static class DotNetCompatibility + { + internal static string GetMethodName(this Delegate func) => func.Method.Name; + + internal static Type GetBaseType(this Type type) => type.BaseType; + + internal static string GetErrorCode(this SocketException e) => e.ErrorCode.ToString(); + } +} diff --git a/QSB/QSBNetworkIdentity.cs b/QSB/QSBNetworkIdentity.cs new file mode 100644 index 000000000..257c1c30b --- /dev/null +++ b/QSB/QSBNetworkIdentity.cs @@ -0,0 +1,1002 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEngine; +using UnityEngine.Networking; +using OWML.ModHelper.Events; +using QSB.Utility; + +namespace QSB +{ + public sealed class QSBNetworkIdentity : MonoBehaviour + { + public bool IsClient { get; private set; } + public bool IsServer => m_IsServer && NetworkServer.active && m_IsServer; + public bool HasAuthority { get; private set; } + public NetworkInstanceId NetId { get; private set; } + public NetworkSceneId SceneId => m_SceneId; + public NetworkConnection ClientAuthorityOwner { get; private set; } + public NetworkHash128 AssetId => m_AssetId; + public bool IsLocalPlayer { get; private set; } + public short PlayerControllerId { get; private set; } = -1; + public NetworkConnection ConnectionToServer { get; private set; } + public NetworkConnection ConnectionToClient { get; private set; } + + public bool ServerOnly + { + get + { + return m_ServerOnly; + } + set + { + m_ServerOnly = value; + } + } + + public bool LocalPlayerAuthority + { + get + { + return m_LocalPlayerAuthority; + } + set + { + m_LocalPlayerAuthority = value; + } + } + + internal void SetDynamicAssetId(NetworkHash128 newAssetId) + { + if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) + { + m_AssetId = newAssetId; + } + else + { + Debug.LogWarning("SetDynamicAssetId object already has an assetId <" + m_AssetId + ">"); + } + } + + internal void SetClientOwner(NetworkConnection conn) + { + if (ClientAuthorityOwner != null) + { + Debug.LogError("SetClientOwner m_ClientAuthorityOwner already set!"); + } + ClientAuthorityOwner = conn; + ClientAuthorityOwner.GetType().GetMethod("AddOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); + } + + internal void ClearClientOwner() => ClientAuthorityOwner = null; + + internal void ForceAuthority(bool authority) + { + if (HasAuthority != authority) + { + HasAuthority = authority; + if (authority) + { + OnStartAuthority(); + } + else + { + OnStopAuthority(); + } + } + } + + + + public ReadOnlyCollection Observers + { + get + { + ReadOnlyCollection result; + if (m_Observers == null) + { + result = null; + } + else + { + result = new ReadOnlyCollection(m_Observers); + } + return result; + } + } + + internal static NetworkInstanceId GetNextNetworkId() + { + var value = s_NextNetworkId; + s_NextNetworkId += 1U; + return new NetworkInstanceId(value); + } + + private void CacheBehaviours() + { + if (m_NetworkBehaviours == null) + { + m_NetworkBehaviours = base.GetComponents(); + } + } + + internal static void AddNetworkId(uint id) + { + if (id >= s_NextNetworkId) + { + s_NextNetworkId = id + 1U; + } + } + + internal void SetNetworkInstanceId(NetworkInstanceId newNetId) + { + NetId = newNetId; + if (newNetId.Value == 0U) + { + m_IsServer = false; + } + } + + public void ForceSceneId(int newSceneId) => m_SceneId = new NetworkSceneId((uint)newSceneId); + + internal void UpdateClientServer(bool isClientFlag, bool isServerFlag) + { + IsClient = (IsClient || isClientFlag); + m_IsServer = (m_IsServer || isServerFlag); + } + + internal void SetNotLocalPlayer() + { + IsLocalPlayer = false; + if (!NetworkServer.active || !NetworkServer.localClientActive) + { + HasAuthority = false; + } + } + + internal void RemoveObserverInternal(NetworkConnection conn) + { + if (m_Observers != null) + { + m_Observers.Remove(conn); + m_ObserverConnections.Remove(conn.connectionId); + } + } + + private void OnDestroy() + { + if (m_IsServer && NetworkServer.active) + { + NetworkServer.Destroy(base.gameObject); + } + } + + internal void OnStartServer(bool allowNonZeroNetId) + { + if (!m_IsServer) + { + m_IsServer = true; + if (m_LocalPlayerAuthority) + { + HasAuthority = false; + } + else + { + HasAuthority = true; + } + m_Observers = new List(); + m_ObserverConnections = new HashSet(); + CacheBehaviours(); + if (NetId.IsEmpty()) + { + NetId = GetNextNetworkId(); + } + else if (!allowNonZeroNetId) + { + Debug.LogError(string.Concat(new object[] + { + "Object has non-zero netId ", + NetId, + " for ", + base.gameObject + })); + return; + } + Debug.Log(string.Concat(new object[] + { + "OnStartServer ", + base.gameObject, + " GUID:", + NetId + })); + var server = (NetworkServer)typeof(NetworkServer).GetField("instance", System.Reflection.BindingFlags.Static).GetValue(null); + server.GetType().GetMethod("SetLocalObjectOnServer", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(server, new object[] { NetId, gameObject }); + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + try + { + networkBehaviour.OnStartServer(); + } + catch (Exception ex) + { + Debug.LogError("Exception in OnStartServer:" + ex.Message + " " + ex.StackTrace); + } + } + if (NetworkClient.active && NetworkServer.localClientActive) + { + ClientScene.SetLocalObject(NetId, base.gameObject); + OnStartClient(); + } + if (HasAuthority) + { + OnStartAuthority(); + } + } + } + + internal void OnStartClient() + { + if (!IsClient) + { + IsClient = true; + } + CacheBehaviours(); + Debug.Log(string.Concat(new object[] + { + "OnStartClient ", + base.gameObject, + " GUID:", + NetId, + " localPlayerAuthority:", + LocalPlayerAuthority + })); + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + try + { + networkBehaviour.PreStartClient(); + networkBehaviour.OnStartClient(); + } + catch (Exception ex) + { + Debug.LogError("Exception in OnStartClient:" + ex.Message + " " + ex.StackTrace); + } + } + } + + internal void OnStartAuthority() + { + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + try + { + networkBehaviour.OnStartAuthority(); + } + catch (Exception ex) + { + Debug.LogError("Exception in OnStartAuthority:" + ex.Message + " " + ex.StackTrace); + } + } + } + + internal void OnStopAuthority() + { + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + try + { + networkBehaviour.OnStopAuthority(); + } + catch (Exception ex) + { + Debug.LogError("Exception in OnStopAuthority:" + ex.Message + " " + ex.StackTrace); + } + } + } + + internal void OnSetLocalVisibility(bool vis) + { + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + try + { + networkBehaviour.OnSetLocalVisibility(vis); + } + catch (Exception ex) + { + Debug.LogError("Exception in OnSetLocalVisibility:" + ex.Message + " " + ex.StackTrace); + } + } + } + + internal bool OnCheckObserver(NetworkConnection conn) + { + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + try + { + if (!networkBehaviour.OnCheckObserver(conn)) + { + return false; + } + } + catch (Exception ex) + { + Debug.LogError("Exception in OnCheckObserver:" + ex.Message + " " + ex.StackTrace); + } + } + return true; + } + + internal void UNetSerializeAllVars(NetworkWriter writer) + { + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + networkBehaviour.OnSerialize(writer, true); + } + } + + internal void HandleClientAuthority(bool authority) + { + if (!LocalPlayerAuthority) + { + Debug.LogError("HandleClientAuthority " + base.gameObject + " does not have localPlayerAuthority"); + } + else + { + ForceAuthority(authority); + } + } + + private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBehaviour invokeComponent) + { + QSBNetworkBehaviour networkBehaviour = null; + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour2 = m_NetworkBehaviours[i]; + if (networkBehaviour2.GetType() == invokeClass || networkBehaviour2.GetType().IsSubclassOf(invokeClass)) + { + networkBehaviour = networkBehaviour2; + break; + } + } + bool result; + if (networkBehaviour == null) + { + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogError(string.Concat(new object[] + { + "Found no behaviour for incoming [", + cmdHashHandlerName, + "] on ", + base.gameObject, + ", the server and client should have the same NetworkBehaviour instances [netId=", + NetId, + "]." + })); + invokeComponent = null; + result = false; + } + else + { + invokeComponent = networkBehaviour; + result = true; + } + return result; + } + + internal void HandleSyncEvent(int cmdHash, NetworkReader reader) + { + if (base.gameObject == null) + { + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "SyncEvent [", + cmdHashHandlerName, + "] received for deleted object [netId=", + NetId, + "]" + })); + } + else if (!QSBNetworkBehaviour.GetInvokerForHashSyncEvent(cmdHash, out var invokeClass, out var cmdDelegate)) + { + var cmdHashHandlerName2 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogError(string.Concat(new object[] + { + "Found no receiver for incoming [", + cmdHashHandlerName2, + "] on ", + base.gameObject, + ", the server and client should have the same NetworkBehaviour instances [netId=", + NetId, + "]." + })); + } + else if (!GetInvokeComponent(cmdHash, invokeClass, out var obj)) + { + var cmdHashHandlerName3 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "SyncEvent [", + cmdHashHandlerName3, + "] handler not found [netId=", + NetId, + "]" + })); + } + else + { + cmdDelegate(obj, reader); + } + } + + internal void HandleSyncList(int cmdHash, NetworkReader reader) + { + if (base.gameObject == null) + { + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "SyncList [", + cmdHashHandlerName, + "] received for deleted object [netId=", + NetId, + "]" + })); + } + else if (!QSBNetworkBehaviour.GetInvokerForHashSyncList(cmdHash, out var invokeClass, out var cmdDelegate)) + { + var cmdHashHandlerName2 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogError(string.Concat(new object[] + { + "Found no receiver for incoming [", + cmdHashHandlerName2, + "] on ", + base.gameObject, + ", the server and client should have the same NetworkBehaviour instances [netId=", + NetId, + "]." + })); + } + else if (!GetInvokeComponent(cmdHash, invokeClass, out var obj)) + { + var cmdHashHandlerName3 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "SyncList [", + cmdHashHandlerName3, + "] handler not found [netId=", + NetId, + "]" + })); + } + else + { + cmdDelegate(obj, reader); + } + } + + internal void HandleCommand(int cmdHash, NetworkReader reader) + { + if (base.gameObject == null) + { + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "Command [", + cmdHashHandlerName, + "] received for deleted object [netId=", + NetId, + "]" + })); + } + else if (!QSBNetworkBehaviour.GetInvokerForHashCommand(cmdHash, out var invokeClass, out var cmdDelegate)) + { + var cmdHashHandlerName2 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogError(string.Concat(new object[] + { + "Found no receiver for incoming [", + cmdHashHandlerName2, + "] on ", + base.gameObject, + ", the server and client should have the same NetworkBehaviour instances [netId=", + NetId, + "]." + })); + } + else if (!GetInvokeComponent(cmdHash, invokeClass, out var obj)) + { + var cmdHashHandlerName3 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "Command [", + cmdHashHandlerName3, + "] handler not found [netId=", + NetId, + "]" + })); + } + else + { + cmdDelegate(obj, reader); + } + } + + internal void HandleRPC(int cmdHash, NetworkReader reader) + { + if (base.gameObject == null) + { + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "ClientRpc [", + cmdHashHandlerName, + "] received for deleted object [netId=", + NetId, + "]" + })); + } + else if (!QSBNetworkBehaviour.GetInvokerForHashClientRpc(cmdHash, out var invokeClass, out var cmdDelegate)) + { + var cmdHashHandlerName2 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogError(string.Concat(new object[] + { + "Found no receiver for incoming [", + cmdHashHandlerName2, + "] on ", + base.gameObject, + ", the server and client should have the same NetworkBehaviour instances [netId=", + NetId, + "]." + })); + } + else if (!GetInvokeComponent(cmdHash, invokeClass, out var obj)) + { + var cmdHashHandlerName3 = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); + Debug.LogWarning(string.Concat(new object[] + { + "ClientRpc [", + cmdHashHandlerName3, + "] handler not found [netId=", + NetId, + "]" + })); + } + else + { + cmdDelegate(obj, reader); + } + } + + internal void UNetUpdate() + { + var num = 0U; + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + var dirtyChannel = networkBehaviour.GetDirtyChannel(); + if (dirtyChannel != -1) + { + num |= 1U << dirtyChannel; + } + } + if (num != 0U) + { + var j = 0; + while (j < NetworkServer.numChannels) + { + if ((num & (1U << j)) != 0U) + { + s_UpdateWriter.StartMessage(8); + s_UpdateWriter.Write(NetId); + var flag = false; + for (var k = 0; k < m_NetworkBehaviours.Length; k++) + { + var position = s_UpdateWriter.Position; + var networkBehaviour2 = m_NetworkBehaviours[k]; + if (networkBehaviour2.GetDirtyChannel() != j) + { + networkBehaviour2.OnSerialize(s_UpdateWriter, false); + } + else + { + if (networkBehaviour2.OnSerialize(s_UpdateWriter, false)) + { + networkBehaviour2.ClearAllDirtyBits(); + flag = true; + } + var maxPacketSize = (ushort)typeof(NetworkServer).GetField("maxPacketSize", System.Reflection.BindingFlags.Static).GetValue(null); + if (s_UpdateWriter.Position - position > maxPacketSize) + { + Debug.LogWarning(string.Concat(new object[] + { + "Large state update of ", + (int)(s_UpdateWriter.Position - position), + " bytes for netId:", + NetId, + " from script:", + networkBehaviour2 + })); + } + } + } + if (flag) + { + s_UpdateWriter.FinishMessage(); + NetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); + } + } + IL_197: + j++; + continue; + goto IL_197; + } + } + } + + internal void OnUpdateVars(NetworkReader reader, bool initialState) + { + if (initialState && m_NetworkBehaviours == null) + { + m_NetworkBehaviours = base.GetComponents(); + } + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + networkBehaviour.OnDeserialize(reader, initialState); + } + } + + internal void SetLocalPlayer(short localPlayerControllerId) + { + DebugLog.DebugWrite($"SetLocalPlayer {localPlayerControllerId}", OWML.Common.MessageType.Warning); + IsLocalPlayer = true; + PlayerControllerId = localPlayerControllerId; + var hasAuthority = this.HasAuthority; + if (LocalPlayerAuthority) + { + HasAuthority = true; + } + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + networkBehaviour.OnStartLocalPlayer(); + if (LocalPlayerAuthority && !hasAuthority) + { + networkBehaviour.OnStartAuthority(); + } + } + } + + internal void SetConnectionToServer(NetworkConnection conn) => ConnectionToServer = conn; + + internal void SetConnectionToClient(NetworkConnection conn, short newPlayerControllerId) + { + PlayerControllerId = newPlayerControllerId; + ConnectionToClient = conn; + } + + internal void OnNetworkDestroy() + { + var num = 0; + while (m_NetworkBehaviours != null && num < m_NetworkBehaviours.Length) + { + var networkBehaviour = m_NetworkBehaviours[num]; + networkBehaviour.OnNetworkDestroy(); + num++; + } + m_IsServer = false; + } + + internal void ClearObservers() + { + if (m_Observers != null) + { + var count = m_Observers.Count; + for (var i = 0; i < count; i++) + { + var networkConnection = m_Observers[i]; + networkConnection.GetType().GetMethod("RemoveFromVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(networkConnection, new object[] { this, true }); + } + m_Observers.Clear(); + m_ObserverConnections.Clear(); + } + } + + internal void AddObserver(NetworkConnection conn) + { + if (m_Observers == null) + { + Debug.LogError("AddObserver for " + base.gameObject + " observer list is null"); + } + else if (m_ObserverConnections.Contains(conn.connectionId)) + { + Debug.Log(string.Concat(new object[] + { + "Duplicate observer ", + conn.address, + " added for ", + base.gameObject + })); + } + else + { + Debug.Log(string.Concat(new object[] + { + "Added observer ", + conn.address, + " added for ", + base.gameObject + })); + m_Observers.Add(conn); + m_ObserverConnections.Add(conn.connectionId); + conn.GetType().GetMethod("AddToVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(conn, new object[] { this }); + } + } + + internal void RemoveObserver(NetworkConnection conn) + { + if (m_Observers != null) + { + m_Observers.Remove(conn); + m_ObserverConnections.Remove(conn.connectionId); + conn.GetType().GetMethod("RemoveFromVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(conn, new object[] { this, true }); + } + } + + public void RebuildObservers(bool initialize) + { + if (m_Observers != null) + { + var flag = false; + var flag2 = false; + var hashSet = new HashSet(); + var hashSet2 = new HashSet(m_Observers); + for (var i = 0; i < m_NetworkBehaviours.Length; i++) + { + var networkBehaviour = m_NetworkBehaviours[i]; + flag2 |= networkBehaviour.OnRebuildObservers(hashSet, initialize); + } + if (!flag2) + { + if (initialize) + { + for (var j = 0; j < NetworkServer.connections.Count; j++) + { + var networkConnection = NetworkServer.connections[j]; + if (networkConnection != null) + { + if (networkConnection.isReady) + { + AddObserver(networkConnection); + } + } + } + for (var k = 0; k < NetworkServer.localConnections.Count; k++) + { + var networkConnection2 = NetworkServer.localConnections[k]; + if (networkConnection2 != null) + { + if (networkConnection2.isReady) + { + AddObserver(networkConnection2); + } + } + } + } + } + else + { + foreach (var networkConnection3 in hashSet) + { + if (networkConnection3 != null) + { + if (!networkConnection3.isReady) + { + Debug.LogWarning(string.Concat(new object[] + { + "Observer is not ready for ", + base.gameObject, + " ", + networkConnection3 + })); + } + else if (initialize || !hashSet2.Contains(networkConnection3)) + { + networkConnection3.GetType().GetMethod("AddToVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(networkConnection3, new object[] { this }); + Debug.Log(string.Concat(new object[] + { + "New Observer for ", + base.gameObject, + " ", + networkConnection3 + })); + flag = true; + } + } + } + foreach (var networkConnection4 in hashSet2) + { + if (!hashSet.Contains(networkConnection4)) + { + networkConnection4.GetType().GetMethod("RemoveFromVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(networkConnection4, new object[] { this, true }); + Debug.Log(string.Concat(new object[] + { + "Removed Observer for ", + base.gameObject, + " ", + networkConnection4 + })); + flag = true; + } + } + if (initialize) + { + for (var l = 0; l < NetworkServer.localConnections.Count; l++) + { + if (!hashSet.Contains(NetworkServer.localConnections[l])) + { + OnSetLocalVisibility(false); + } + } + } + if (flag) + { + m_Observers = new List(hashSet); + m_ObserverConnections.Clear(); + for (var m = 0; m < m_Observers.Count; m++) + { + m_ObserverConnections.Add(m_Observers[m].connectionId); + } + } + } + } + } + + public bool RemoveClientAuthority(NetworkConnection conn) + { + bool result; + if (!IsServer) + { + Debug.LogError("RemoveClientAuthority can only be call on the server for spawned objects."); + result = false; + } + else if (ConnectionToClient != null) + { + Debug.LogError("RemoveClientAuthority cannot remove authority for a player object"); + result = false; + } + else if (ClientAuthorityOwner == null) + { + Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has no clientAuthority owner."); + result = false; + } + else if (ClientAuthorityOwner != conn) + { + Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has different owner."); + result = false; + } + else + { + ClientAuthorityOwner.GetType().GetMethod("RemoveOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); + ClientAuthorityOwner = null; + ForceAuthority(true); + /* + conn.Send(15, new ClientAuthorityMessage + { + netId = NetId, + authority = false + }); + */ + clientAuthorityCallback?.Invoke(conn, this, false); + result = true; + } + return result; + } + + public bool AssignClientAuthority(NetworkConnection conn) + { + bool result; + if (!IsServer) + { + Debug.LogError("AssignClientAuthority can only be call on the server for spawned objects."); + result = false; + } + else if (!LocalPlayerAuthority) + { + Debug.LogError("AssignClientAuthority can only be used for NetworkIdentity component with LocalPlayerAuthority set."); + result = false; + } + else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) + { + Debug.LogError("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); + result = false; + } + else if (conn == null) + { + Debug.LogError("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); + result = false; + } + else + { + ClientAuthorityOwner = conn; + ClientAuthorityOwner.GetType().GetMethod("AddOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); + + ForceAuthority(false); + /* + conn.Send(15, new ClientAuthorityMessage + { + netId = NetId, + authority = true + }); + */ + clientAuthorityCallback?.Invoke(conn, this, true); + result = true; + } + return result; + } + + internal void MarkForReset() => m_Reset = true; + + internal void Reset() + { + if (m_Reset) + { + m_Reset = false; + m_IsServer = false; + IsClient = false; + HasAuthority = false; + NetId = (NetworkInstanceId)typeof(NetworkInstanceId).GetField("Zero", System.Reflection.BindingFlags.Static).GetValue(null); + IsLocalPlayer = false; + ConnectionToServer = null; + ConnectionToClient = null; + PlayerControllerId = -1; + m_NetworkBehaviours = null; + ClearObservers(); + ClientAuthorityOwner = null; + } + } + + internal static void UNetStaticUpdate() + { + typeof(NetworkServer).GetMethod("Update", System.Reflection.BindingFlags.Static).Invoke(null, null); + typeof(NetworkClient).GetMethod("UpdateClients", System.Reflection.BindingFlags.Static).Invoke(null, null); + typeof(NetworkManager).GetMethod("UpdateScene", System.Reflection.BindingFlags.Static).Invoke(null, null); + } + + [SerializeField] + private NetworkSceneId m_SceneId; + + [SerializeField] + private NetworkHash128 m_AssetId; + + [SerializeField] + private bool m_ServerOnly; + + [SerializeField] + private bool m_LocalPlayerAuthority; + private bool m_IsServer; + private QSBNetworkBehaviour[] m_NetworkBehaviours; + + private HashSet m_ObserverConnections; + + private List m_Observers; + private bool m_Reset = false; + + private static uint s_NextNetworkId = 1U; + + private static readonly NetworkWriter s_UpdateWriter = new NetworkWriter(); + + public static ClientAuthorityCallback clientAuthorityCallback; + + public delegate void ClientAuthorityCallback(NetworkConnection conn, QSBNetworkIdentity uv, bool authorityState); + } +} \ No newline at end of file diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 7ec45dfd2..4512ada12 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -46,24 +46,29 @@ private void Awake() _assetBundle = QSB.NetworkAssetBundle; playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); + playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); + _shipPrefab.AddComponent(); _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); + _cameraPrefab.AddComponent(); _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); + _probePrefab.AddComponent(); _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); + OrbPrefab.AddComponent(); OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); @@ -100,7 +105,7 @@ private void ConfigureNetworkManager() public override void OnStartServer() { - DebugLog.DebugWrite("~~ ON START SERVER ~~", MessageType.Info); + DebugLog.DebugWrite("OnStartServer", MessageType.Info); if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) { OrbManager.Instance.QueueBuildOrbs(); @@ -120,10 +125,9 @@ public override void OnStartServer() public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins { - DebugLog.DebugWrite("[S] Add player"); + DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); base.OnServerAddPlayer(connection, playerControllerId); - // These have to be in a constant order (for now, until we get a better netId getting system...) NetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); NetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); NetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); @@ -131,6 +135,7 @@ public override void OnServerAddPlayer(NetworkConnection connection, short playe public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server { + DebugLog.DebugWrite("OnClientConnect", MessageType.Info); base.OnClientConnect(connection); gameObject.AddComponent(); @@ -172,6 +177,7 @@ public override void OnClientConnect(NetworkConnection connection) // Called on public override void OnStopClient() // Called on the client when closing connection { + DebugLog.DebugWrite("OnStopClient", MessageType.Info); DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); Destroy(GetComponent()); Destroy(GetComponent()); @@ -197,14 +203,15 @@ public override void OnStopClient() // Called on the client when closing connect public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects { + DebugLog.DebugWrite("OnServerDisconnect", MessageType.Info); var player = connection.GetPlayer(); var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); foreach (var item in WorldRegistry.OrbSyncList) { - var identity = item.GetComponent(); - if (identity.clientAuthorityOwner == connection) + var identity = item.GetComponent(); + if (identity.ClientAuthorityOwner == connection) { identity.RemoveClientAuthority(connection); } @@ -216,6 +223,7 @@ public override void OnServerDisconnect(NetworkConnection connection) // Called public override void OnStopServer() { + DebugLog.DebugWrite("OnStopServer", MessageType.Info); Destroy(GetComponent()); Destroy(GetComponent()); Destroy(GetComponent()); @@ -246,8 +254,8 @@ public void CleanupNetworkBehaviour(uint netId) { DebugLog.DebugWrite($"Cleaning up netId {netId}"); // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them - var networkBehaviours = FindObjectsOfType() - .Where(x => x != null && x.netId.Value == netId); + var networkBehaviours = FindObjectsOfType() + .Where(x => x != null && x.NetId.Value == netId); foreach (var networkBehaviour in networkBehaviours) { var transformSync = networkBehaviour.GetComponent(); @@ -256,7 +264,7 @@ public void CleanupNetworkBehaviour(uint netId) { DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); - if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.hasAuthority) + if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.HasAuthority) { DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); Destroy(transformSync.SyncedTransform.gameObject); @@ -271,7 +279,7 @@ public void CleanupNetworkBehaviour(uint netId) QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); } - if (!networkBehaviour.hasAuthority) + if (!networkBehaviour.HasAuthority) { DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); Destroy(networkBehaviour.gameObject); diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 4fbd3343b..66950ee89 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -21,7 +21,7 @@ private void Update() { return; } - QSBPlayerManager.GetSyncObjects().Where(x => x.hasAuthority).ToList().ForEach(CheckTransformSyncSector); + QSBPlayerManager.GetSyncObjects().Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); _checkTimer = 0; } @@ -38,7 +38,7 @@ private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) return; } transformSync.SetReferenceSector(closestSector); - SendSector(transformSync.netId.Value, closestSector); + SendSector(transformSync.NetId.Value, closestSector); } private void SendSector(uint id, QSBSector sector) diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index acd6881d7..50a64f5eb 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -3,14 +3,14 @@ namespace QSB.TimeSync { - public class PreserveTimeScale : NetworkBehaviour + public class PreserveTimeScale : QSBNetworkBehaviour { private void Start() { QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button // Allow server to sleep at campfires - if (isServer) + if (IsServer) { return; } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 580df58d1..822fb7270 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -7,7 +7,7 @@ namespace QSB.TimeSync { - public class WakeUpSync : NetworkBehaviour + public class WakeUpSync : QSBNetworkBehaviour { public static WakeUpSync LocalInstance { get; private set; } @@ -34,7 +34,7 @@ public override void OnStartLocalPlayer() private void Start() { - if (!isLocalPlayer) + if (!IsLocalPlayer) { return; } @@ -88,7 +88,7 @@ private void Init() GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); _state = State.Loaded; gameObject.AddComponent(); - if (isServer) + if (IsServer) { SendServerTime(); } @@ -187,11 +187,11 @@ private void EnableInput() private void Update() { - if (isServer) + if (IsServer) { UpdateServer(); } - else if (isLocalPlayer) + else if (IsLocalPlayer) { UpdateLocal(); } diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 3faa9fcce..b5aac18b7 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -5,7 +5,7 @@ namespace QSB.TransformSync { - public class NomaiOrbTransformSync : NetworkBehaviour + public class NomaiOrbTransformSync : QSBNetworkBehaviour { public NomaiInterfaceOrb AttachedOrb { get; private set; } public Transform OrbTransform { get; private set; } @@ -29,12 +29,12 @@ public override void OnStartClient() public override void OnStartAuthority() { - DebugLog.DebugWrite("START AUTHORITY - has auth? : " + hasAuthority); + DebugLog.DebugWrite("START AUTHORITY - has auth? : " + HasAuthority); } public override void OnStopAuthority() { - DebugLog.DebugWrite("END AUTHORITY - has auth? : " + hasAuthority); + DebugLog.DebugWrite("END AUTHORITY - has auth? : " + HasAuthority); } private void OnReady() @@ -76,7 +76,7 @@ private void Update() protected virtual void UpdateTransform() { - if (hasAuthority) + if (HasAuthority) { transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 319af39a0..efc92f4d3 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -1,4 +1,5 @@ -using QSB.EventsCore; +using OWML.Common; +using QSB.EventsCore; using QSB.Player; using QSB.Tools; using QSB.Utility; @@ -12,6 +13,7 @@ public class PlayerCameraSync : TransformSync public override void OnStartLocalPlayer() { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); LocalInstance = this; } @@ -43,7 +45,7 @@ protected override Transform InitRemoteTransform() public override bool IsReady => Locator.GetPlayerTransform() != null && Player != null && QSBPlayerManager.PlayerExists(Player.PlayerId) - && netId.Value != uint.MaxValue - && netId.Value != 0U; + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; } } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index e1bbf5a0b..fb2fe6241 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -14,6 +14,7 @@ public class PlayerProbeSync : TransformSync public override void OnStartLocalPlayer() { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); LocalInstance = this; } @@ -78,7 +79,7 @@ protected override void UpdateTransform() { return; } - if (hasAuthority) + if (HasAuthority) { transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); return; @@ -94,7 +95,7 @@ protected override void UpdateTransform() && Player != null && QSBPlayerManager.PlayerExists(Player.PlayerId) && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; } } diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index db80416aa..3b468926c 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -1,6 +1,8 @@ -using QSB.Animation; +using OWML.Common; +using QSB.Animation; using QSB.Instruments; using QSB.Player; +using QSB.Utility; using UnityEngine; namespace QSB.TransformSync @@ -11,11 +13,13 @@ public class PlayerTransformSync : TransformSync static PlayerTransformSync() { + DebugLog.DebugWrite("Constructor", MessageType.Info); AnimControllerPatch.Init(); } public override void OnStartLocalPlayer() { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); LocalInstance = this; } @@ -55,7 +59,7 @@ protected override Transform InitRemoteTransform() && Player != null && QSBPlayerManager.PlayerExists(Player.PlayerId) && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; } } diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index ba4864f55..7686d4ea0 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -1,4 +1,6 @@ -using QSB.Player; +using OWML.Common; +using QSB.Player; +using QSB.Utility; using UnityEngine; namespace QSB.TransformSync @@ -9,6 +11,7 @@ public class ShipTransformSync : TransformSync public override void OnStartLocalPlayer() { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); LocalInstance = this; } @@ -54,7 +57,7 @@ protected override Transform InitRemoteTransform() && Player != null && QSBPlayerManager.PlayerExists(Player.PlayerId) && Player.IsReady - && netId.Value != uint.MaxValue - && netId.Value != 0U; + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; } } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 8db1ebe3f..409a483d4 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -23,6 +23,7 @@ public abstract class TransformSync : PlayerSyncObject protected virtual void Awake() { + DebugLog.DebugWrite($"Awake of {GetType().Name}", MessageType.Info); QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; @@ -41,7 +42,7 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) protected void Init() { DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); - SyncedTransform = hasAuthority ? InitLocalTransform() : InitRemoteTransform(); + SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); _isInitialized = true; _isVisible = true; } @@ -74,7 +75,7 @@ private void Update() protected virtual void UpdateTransform() { - if (hasAuthority) // If this script is attached to the client's own body on the client's side. + if (HasAuthority) // If this script is attached to the client's own body on the client's side. { if (ReferenceSector == null || ReferenceSector.Sector == null) { @@ -105,7 +106,7 @@ public void SetReferenceSector(QSBSector sector) DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); _positionSmoothVelocity = Vector3.zero; ReferenceSector = sector; - if (!hasAuthority) + if (!HasAuthority) { SyncedTransform.SetParent(sector.Transform, true); transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs index c1b748585..882d35698 100644 --- a/QSB/Utility/UnetExtensions.cs +++ b/QSB/Utility/UnetExtensions.cs @@ -10,7 +10,7 @@ public static PlayerInfo GetPlayer(this NetworkConnection connection) { var go = connection.playerControllers[0].gameObject; var controller = go.GetComponent(); - return QSBPlayerManager.GetPlayer(controller.netId.Value); + return QSBPlayerManager.GetPlayer(controller.NetId.Value); } } } diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 6b958a66a..1df170c19 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -53,7 +53,7 @@ public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterface { qsbSlot = slotList.First(x => x.InterfaceSlot == slot); orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); - if (orbSync.hasAuthority) + if (orbSync.HasAuthority) { qsbSlot.HandleEvent(state); } From 799b2d60db8f98bf42cfc8877db0f2df2189df07 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 12:42:26 +0000 Subject: [PATCH 102/207] more --- QSB/Animation/QSBNetworkAnimator.cs | 28 +- QSB/QSB.csproj | 17 + QSB/QSBClientAuthorityMessage.cs | 27 + QSB/QSBClientScene.cs | 952 +++++++++++ QSB/QSBLocalClient.cs | 162 ++ QSB/QSBNetworkBehaviour.cs | 10 +- QSB/QSBNetworkClient.cs | 1213 ++++++++++++++ QSB/QSBNetworkConnection.cs | 561 +++++++ QSB/QSBNetworkIdentity.cs | 62 +- QSB/QSBNetworkManager.cs | 36 +- QSB/QSBNetworkMessage.cs | 43 + QSB/QSBNetworkMessageDelegate.cs | 9 + QSB/QSBNetworkMessageHandlers.cs | 92 ++ QSB/QSBNetworkScene.cs | 369 +++++ QSB/QSBNetworkServer.cs | 2197 ++++++++++++++++++++++++++ QSB/QSBObjectDestroyMessage.cs | 23 + QSB/QSBObjectSpawnFinishedMessage.cs | 23 + QSB/QSBObjectSpawnMessage.cs | 44 + QSB/QSBObjectSpawnSceneMessage.cs | 36 + QSB/QSBOwnerMessage.cs | 27 + QSB/QSBPlayerController.cs | 40 + QSB/QSBUtility.cs | 65 + 22 files changed, 5966 insertions(+), 70 deletions(-) create mode 100644 QSB/QSBClientAuthorityMessage.cs create mode 100644 QSB/QSBClientScene.cs create mode 100644 QSB/QSBLocalClient.cs create mode 100644 QSB/QSBNetworkClient.cs create mode 100644 QSB/QSBNetworkConnection.cs create mode 100644 QSB/QSBNetworkMessage.cs create mode 100644 QSB/QSBNetworkMessageDelegate.cs create mode 100644 QSB/QSBNetworkMessageHandlers.cs create mode 100644 QSB/QSBNetworkScene.cs create mode 100644 QSB/QSBNetworkServer.cs create mode 100644 QSB/QSBObjectDestroyMessage.cs create mode 100644 QSB/QSBObjectSpawnFinishedMessage.cs create mode 100644 QSB/QSBObjectSpawnMessage.cs create mode 100644 QSB/QSBObjectSpawnSceneMessage.cs create mode 100644 QSB/QSBOwnerMessage.cs create mode 100644 QSB/QSBPlayerController.cs create mode 100644 QSB/QSBUtility.cs diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index a25596437..8984cd60a 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -72,9 +72,9 @@ private void FixedUpdate() WriteParameters(m_ParameterWriter, false); animationMessage.parameters = m_ParameterWriter.ToArray(); - if (HasAuthority || ClientScene.readyConnection != null) + if (HasAuthority || QSBClientScene.readyConnection != null) { - ClientScene.readyConnection.Send(40, animationMessage); + QSBClientScene.readyConnection.Send(40, animationMessage); } else { @@ -130,9 +130,9 @@ private void CheckSendRate() m_ParameterWriter.SeekZero(); WriteParameters(m_ParameterWriter, true); parametersMessage.parameters = m_ParameterWriter.ToArray(); - if (HasAuthority && ClientScene.readyConnection != null) + if (HasAuthority && QSBClientScene.readyConnection != null) { - ClientScene.readyConnection.Send(41, parametersMessage); + QSBClientScene.readyConnection.Send(41, parametersMessage); } else { @@ -274,7 +274,7 @@ public void SetTrigger(int hash) { return; } - var readyConnection = ClientScene.readyConnection; + var readyConnection = QSBClientScene.readyConnection; if (readyConnection == null) { return; @@ -291,7 +291,7 @@ public void SetTrigger(int hash) } } - internal static void OnAnimationServerMessage(NetworkMessage netMsg) + internal static void OnAnimationServerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(AnimationMessage); var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); @@ -305,7 +305,7 @@ internal static void OnAnimationServerMessage(NetworkMessage netMsg) NetworkServer.SendToReady(localObject, 40, AnimationMessage); } - internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) + internal static void OnAnimationParametersServerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(ParametersMessage); var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); @@ -319,7 +319,7 @@ internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg) NetworkServer.SendToReady(localObject, 41, ParametersMessage); } - internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) + internal static void OnAnimationTriggerServerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(TriggersMessage); var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); @@ -332,10 +332,10 @@ internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg) NetworkServer.SendToReady(localObject, 42, TriggersMessage); } - internal static void OnAnimationClientMessage(NetworkMessage netMsg) + internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(AnimationMessage); - var localObject = ClientScene.FindLocalObject(AnimationMessage.netId); + var localObject = QSBClientScene.FindLocalObject(AnimationMessage.netId); if (localObject == null) return; var component = localObject.GetComponent(); @@ -345,10 +345,10 @@ internal static void OnAnimationClientMessage(NetworkMessage netMsg) component.HandleAnimMsg(AnimationMessage, reader); } - internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) + internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(ParametersMessage); - var localObject = ClientScene.FindLocalObject(ParametersMessage.netId); + var localObject = QSBClientScene.FindLocalObject(ParametersMessage.netId); if (localObject == null) return; var component = localObject.GetComponent(); @@ -358,10 +358,10 @@ internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg) component.HandleAnimParamsMsg(ParametersMessage, reader); } - internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg) + internal static void OnAnimationTriggerClientMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(TriggersMessage); - var localObject = ClientScene.FindLocalObject(TriggersMessage.netId); + var localObject = QSBClientScene.FindLocalObject(TriggersMessage.netId); if (localObject == null) return; var component = localObject.GetComponent(); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 73de0c492..0d131000e 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -132,6 +132,7 @@ + @@ -162,13 +163,29 @@ + + + + + + + + + + + + + + + + diff --git a/QSB/QSBClientAuthorityMessage.cs b/QSB/QSBClientAuthorityMessage.cs new file mode 100644 index 000000000..ec84fde0e --- /dev/null +++ b/QSB/QSBClientAuthorityMessage.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBClientAuthorityMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + authority = reader.ReadBoolean(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.Write(authority); + } + + public NetworkInstanceId netId; + + public bool authority; + } +} diff --git a/QSB/QSBClientScene.cs b/QSB/QSBClientScene.cs new file mode 100644 index 000000000..189a621cc --- /dev/null +++ b/QSB/QSBClientScene.cs @@ -0,0 +1,952 @@ +using QSB.Animation; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.Networking.NetworkSystem; + +namespace QSB +{ + public class QSBClientScene + { + private static bool HasMigrationPending() => reconnectId != -1; + + public static void SetReconnectId(int newReconnectId, PeerInfoMessage[] peers) + { + reconnectId = newReconnectId; + s_Peers = peers; + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::SetReconnectId: " + newReconnectId); + } + } + + internal static void SetNotReady() => ready = false; + + public static List localPlayers { get; private set; } = new List(); + + public static bool ready { get; private set; } + + public static QSBNetworkConnection readyConnection { get; private set; } + + public static int reconnectId { get; private set; } = -1; + + public static Dictionary Objects => s_NetworkScene.localObjects; + + public static Dictionary Prefabs => QSBNetworkScene.guidToPrefab; + + public static Dictionary SpawnableObjects { get; private set; } + + internal static void Shutdown() + { + s_NetworkScene.Shutdown(); + localPlayers = new List(); + s_PendingOwnerIds = new List(); + SpawnableObjects = null; + readyConnection = null; + ready = false; + s_IsSpawnFinished = false; + reconnectId = -1; + NetworkTransport.Shutdown(); + NetworkTransport.Init(); + } + + internal static bool GetPlayerController(short playerControllerId, out QSBPlayerController player) + { + player = null; + bool result; + if ((int)playerControllerId >= localPlayers.Count) + { + if (LogFilter.logWarn) + { + Debug.Log("ClientScene::GetPlayer: no local player found for: " + playerControllerId); + } + result = false; + } + else if (localPlayers[(int)playerControllerId] == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("ClientScene::GetPlayer: local player is null for: " + playerControllerId); + } + result = false; + } + else + { + player = localPlayers[(int)playerControllerId]; + result = (player.gameObject != null); + } + return result; + } + + internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerControllerId) + { + if (LogFilter.logDebug) + { + Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId); + } + if ((int)playerControllerId >= localPlayers.Count) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId); + } + while ((int)playerControllerId >= localPlayers.Count) + { + localPlayers.Add(new QSBPlayerController()); + } + } + var playerController = new QSBPlayerController + { + gameObject = view.gameObject, + playerControllerId = playerControllerId, + unetView = view + }; + localPlayers[(int)playerControllerId] = playerController; + readyConnection.SetPlayerController(playerController); + } + + public static bool AddPlayer(short playerControllerId) => AddPlayer(null, playerControllerId); + + public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControllerId) => AddPlayer(readyConn, playerControllerId, null); + + public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControllerId, MessageBase extraMessage) + { + bool result; + if (playerControllerId < 0) + { + if (LogFilter.logError) + { + Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); + } + result = false; + } + else if (playerControllerId > 32) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "ClientScene::AddPlayer: playerControllerId of ", + playerControllerId, + " is too high, max is ", + 32 + })); + } + result = false; + } + else + { + if (playerControllerId > 16) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); + } + } + while ((int)playerControllerId >= localPlayers.Count) + { + localPlayers.Add(new QSBPlayerController()); + } + if (readyConn == null) + { + if (!ready) + { + if (LogFilter.logError) + { + Debug.LogError("Must call AddPlayer() with a connection the first time to become ready."); + } + return false; + } + } + else + { + ready = true; + readyConnection = readyConn; + } + if (readyConnection.GetPlayerController(playerControllerId, out var playerController)) + { + if (playerController.IsValid && playerController.gameObject != null) + { + if (LogFilter.logError) + { + Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " already in use."); + } + return false; + } + } + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ClientScene::AddPlayer() for ID ", + playerControllerId, + " called with connection [", + readyConnection, + "]" + })); + } + if (!HasMigrationPending()) + { + var addPlayerMessage = new AddPlayerMessage + { + playerControllerId = playerControllerId + }; + if (extraMessage != null) + { + var networkWriter = new NetworkWriter(); + extraMessage.Serialize(networkWriter); + addPlayerMessage.msgData = networkWriter.ToArray(); + addPlayerMessage.msgSize = (int)networkWriter.Position; + } + readyConnection.Send(37, addPlayerMessage); + result = true; + } + else + { + result = SendReconnectMessage(extraMessage); + } + } + return result; + } + + public static bool SendReconnectMessage(MessageBase extraMessage) + { + bool result; + if (!HasMigrationPending()) + { + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::AddPlayer reconnect " + reconnectId); + } + if (s_Peers == null) + { + SetReconnectId(-1, null); + if (LogFilter.logError) + { + Debug.LogError("ClientScene::AddPlayer: reconnecting, but no peers."); + } + result = false; + } + else + { + for (var i = 0; i < s_Peers.Length; i++) + { + var peerInfoMessage = s_Peers[i]; + if (peerInfoMessage.playerIds != null) + { + if (peerInfoMessage.connectionId == reconnectId) + { + for (var j = 0; j < peerInfoMessage.playerIds.Length; j++) + { + var reconnectMessage = new ReconnectMessage + { + oldConnectionId = reconnectId, + netId = peerInfoMessage.playerIds[j].netId, + playerControllerId = peerInfoMessage.playerIds[j].playerControllerId + }; + if (extraMessage != null) + { + var networkWriter = new NetworkWriter(); + extraMessage.Serialize(networkWriter); + reconnectMessage.msgData = networkWriter.ToArray(); + reconnectMessage.msgSize = (int)networkWriter.Position; + } + readyConnection.Send(47, reconnectMessage); + } + } + } + } + SetReconnectId(-1, null); + result = true; + } + } + return result; + } + + public static bool RemovePlayer(short playerControllerId) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ClientScene::RemovePlayer() for ID ", + playerControllerId, + " called with connection [", + readyConnection, + "]" + })); + } + bool result; + if (readyConnection.GetPlayerController(playerControllerId, out var playerController)) + { + var removePlayerMessage = new RemovePlayerMessage + { + playerControllerId = playerControllerId + }; + readyConnection.Send(38, removePlayerMessage); + readyConnection.RemovePlayerController(playerControllerId); + localPlayers[(int)playerControllerId] = new QSBPlayerController(); + UnityEngine.Object.Destroy(playerController.gameObject); + result = true; + } + else + { + if (LogFilter.logError) + { + Debug.LogError("Failed to find player ID " + playerControllerId); + } + result = false; + } + return result; + } + + public static bool Ready(QSBNetworkConnection conn) + { + bool result; + if (ready) + { + if (LogFilter.logError) + { + Debug.LogError("A connection has already been set as ready. There can only be one."); + } + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::Ready() called with connection [" + conn + "]"); + } + if (conn != null) + { + var msg = new ReadyMessage(); + conn.Send(35, msg); + ready = true; + readyConnection = conn; + readyConnection.isReady = true; + result = true; + } + else + { + if (LogFilter.logError) + { + Debug.LogError("Ready() called with invalid connection object: conn=null"); + } + result = false; + } + } + return result; + } + + public static QSBNetworkClient ConnectLocalServer() + { + var localClient = new QSBLocalClient(); + QSBNetworkServer.instance.ActivateLocalClientScene(); + localClient.InternalConnectLocalServer(true); + return localClient; + } + + internal static QSBNetworkClient ReconnectLocalServer() + { + var localClient = new QSBLocalClient(); + QSBNetworkServer.instance.ActivateLocalClientScene(); + localClient.InternalConnectLocalServer(false); + return localClient; + } + + internal static void ClearLocalPlayers() => localPlayers.Clear(); + + internal static void HandleClientDisconnect(QSBNetworkConnection conn) + { + if (readyConnection == conn && ready) + { + ready = false; + readyConnection = null; + } + } + + internal static void PrepareToSpawnSceneObjects() + { + SpawnableObjects = new Dictionary(); + foreach (var networkIdentity in Resources.FindObjectsOfTypeAll()) + { + if (!networkIdentity.gameObject.activeSelf) + { + if (networkIdentity.gameObject.hideFlags != HideFlags.NotEditable && networkIdentity.gameObject.hideFlags != HideFlags.HideAndDontSave) + { + if (!networkIdentity.SceneId.IsEmpty()) + { + SpawnableObjects[networkIdentity.SceneId] = networkIdentity; + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::PrepareSpawnObjects sceneId:" + networkIdentity.SceneId); + } + } + } + } + } + } + + internal static QSBNetworkIdentity SpawnSceneObject(NetworkSceneId sceneId) + { + QSBNetworkIdentity result; + if (SpawnableObjects.ContainsKey(sceneId)) + { + var networkIdentity = SpawnableObjects[sceneId]; + SpawnableObjects.Remove(sceneId); + result = networkIdentity; + } + else + { + result = null; + } + return result; + } + + internal static void RegisterSystemHandlers(QSBNetworkClient client, bool localClient) + { + if (localClient) + { + client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); + client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); + client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); + client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); + client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); + } + else + { + client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnObjectSpawn)); + client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); + client.RegisterHandlerSafe((short)12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); + client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe((short)8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); + client.RegisterHandlerSafe((short)4, new QSBNetworkMessageDelegate(OnOwnerMessage)); + client.RegisterHandlerSafe((short)9, new QSBNetworkMessageDelegate(OnSyncListMessage)); + client.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + client.RegisterHandlerSafe((short)41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); + } + client.RegisterHandlerSafe((short)2, new QSBNetworkMessageDelegate(OnRPCMessage)); + client.RegisterHandlerSafe((short)7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); + client.RegisterHandlerSafe((short)42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + } + + internal static string GetStringForAssetId(NetworkHash128 assetId) + { + string result; + if (QSBNetworkScene.GetPrefab(assetId, out var gameObject)) + { + result = gameObject.name; + } + else if (QSBNetworkScene.GetSpawnHandler(assetId, out var func)) + { + result = func.GetMethodName(); + } + else + { + result = "unknown"; + } + return result; + } + + public static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) => QSBNetworkScene.RegisterPrefab(prefab, newAssetId); + + public static void RegisterPrefab(GameObject prefab) => QSBNetworkScene.RegisterPrefab(prefab); + + public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); + + public static void UnregisterPrefab(GameObject prefab) => QSBNetworkScene.UnregisterPrefab(prefab); + + public static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); + + public static void UnregisterSpawnHandler(NetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); + + public static void ClearSpawners() => QSBNetworkScene.ClearSpawners(); + + public static void DestroyAllClientObjects() => s_NetworkScene.DestroyAllClientObjects(); + + public static void SetLocalObject(NetworkInstanceId netId, GameObject obj) => s_NetworkScene.SetLocalObject(netId, obj, s_IsSpawnFinished, false); + + public static GameObject FindLocalObject(NetworkInstanceId netId) => s_NetworkScene.FindLocalObject(netId); + + private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, byte[] payload, NetworkInstanceId netId, GameObject newGameObject) + { + if (!uv.gameObject.activeSelf) + { + uv.gameObject.SetActive(true); + } + uv.transform.position = position; + if (payload != null && payload.Length > 0) + { + var reader = new NetworkReader(payload); + uv.OnUpdateVars(reader, true); + } + if (!(newGameObject == null)) + { + newGameObject.SetActive(true); + uv.SetNetworkInstanceId(netId); + SetLocalObject(netId, newGameObject); + if (s_IsSpawnFinished) + { + uv.OnStartClient(); + CheckForOwner(uv); + } + } + } + + private static void OnObjectSpawn(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectSpawnMessage); + if (!s_ObjectSpawnMessage.assetId.IsValid()) + { + if (LogFilter.logError) + { + Debug.LogError("OnObjSpawn netId: " + s_ObjectSpawnMessage.netId + " has invalid asset Id"); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Client spawn handler instantiating [netId:", + s_ObjectSpawnMessage.netId, + " asset ID:", + s_ObjectSpawnMessage.assetId, + " pos:", + s_ObjectSpawnMessage.position, + "]" + })); + } + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.netId, out var component)) + { + ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, null); + } + else if (QSBNetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out var original)) + { + GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.rotation); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Client spawn handler instantiating [netId:", + s_ObjectSpawnMessage.netId, + " asset ID:", + s_ObjectSpawnMessage.assetId, + " pos:", + s_ObjectSpawnMessage.position, + " rotation: ", + s_ObjectSpawnMessage.rotation, + "]" + })); + } + component = gameObject.GetComponent(); + if (component == null) + { + if (LogFilter.logError) + { + Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a NetworkIdentity"); + } + } + else + { + component.Reset(); + ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, gameObject); + } + } + else if (QSBNetworkScene.GetSpawnHandler(s_ObjectSpawnMessage.assetId, out var spawnDelegate)) + { + var gameObject2 = spawnDelegate(s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.assetId); + if (gameObject2 == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Client spawn handler for " + s_ObjectSpawnMessage.assetId + " returned null"); + } + } + else + { + component = gameObject2.GetComponent(); + if (component == null) + { + if (LogFilter.logError) + { + Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a network identity"); + } + } + else + { + component.Reset(); + component.SetDynamicAssetId(s_ObjectSpawnMessage.assetId); + ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, gameObject2); + } + } + } + else if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Failed to spawn server object, did you forget to add it to the NetworkManager? assetId=", + s_ObjectSpawnMessage.assetId, + " netId=", + s_ObjectSpawnMessage.netId + })); + } + } + } + + private static void OnObjectSpawnScene(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectSpawnSceneMessage); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Client spawn scene handler instantiating [netId:", + s_ObjectSpawnSceneMessage.netId, + " sceneId:", + s_ObjectSpawnSceneMessage.sceneId, + " pos:", + s_ObjectSpawnSceneMessage.position + })); + } + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.netId, out var networkIdentity)) + { + ApplySpawnPayload(networkIdentity, s_ObjectSpawnSceneMessage.position, s_ObjectSpawnSceneMessage.payload, s_ObjectSpawnSceneMessage.netId, networkIdentity.gameObject); + } + else + { + var networkIdentity2 = SpawnSceneObject(s_ObjectSpawnSceneMessage.sceneId); + if (networkIdentity2 == null) + { + if (LogFilter.logError) + { + Debug.LogError("Spawn scene object not found for " + s_ObjectSpawnSceneMessage.sceneId); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Client spawn for [netId:", + s_ObjectSpawnSceneMessage.netId, + "] [sceneId:", + s_ObjectSpawnSceneMessage.sceneId, + "] obj:", + networkIdentity2.gameObject.name + })); + } + ApplySpawnPayload(networkIdentity2, s_ObjectSpawnSceneMessage.position, s_ObjectSpawnSceneMessage.payload, s_ObjectSpawnSceneMessage.netId, networkIdentity2.gameObject); + } + } + } + + private static void OnObjectSpawnFinished(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectSpawnFinishedMessage); + if (LogFilter.logDebug) + { + Debug.Log("SpawnFinished:" + s_ObjectSpawnFinishedMessage.state); + } + if (s_ObjectSpawnFinishedMessage.state == 0U) + { + PrepareToSpawnSceneObjects(); + s_IsSpawnFinished = false; + } + else + { + foreach (var networkIdentity in Objects.Values) + { + if (!networkIdentity.IsClient) + { + networkIdentity.OnStartClient(); + CheckForOwner(networkIdentity); + } + } + s_IsSpawnFinished = true; + } + } + + private static void OnObjectDestroy(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectDestroyMessage); + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::OnObjDestroy netId:" + s_ObjectDestroyMessage.netId); + } + if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.netId, out var networkIdentity)) + { + networkIdentity.OnNetworkDestroy(); + if (!QSBNetworkScene.InvokeUnSpawnHandler(networkIdentity.AssetId, networkIdentity.gameObject)) + { + if (networkIdentity.SceneId.IsEmpty()) + { + UnityEngine.Object.Destroy(networkIdentity.gameObject); + } + else + { + networkIdentity.gameObject.SetActive(false); + SpawnableObjects[networkIdentity.SceneId] = networkIdentity; + } + } + s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.netId); + networkIdentity.MarkForReset(); + } + else if (LogFilter.logDebug) + { + Debug.LogWarning("Did not find target for destroy message for " + s_ObjectDestroyMessage.netId); + } + } + + private static void OnLocalClientObjectDestroy(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectDestroyMessage); + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + s_ObjectDestroyMessage.netId); + } + s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.netId); + } + + private static void OnLocalClientObjectHide(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectDestroyMessage); + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + s_ObjectDestroyMessage.netId); + } + if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.netId, out var networkIdentity)) + { + networkIdentity.OnSetLocalVisibility(false); + } + } + + private static void OnLocalClientObjectSpawn(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectSpawnMessage); + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.netId, out var networkIdentity)) + { + networkIdentity.OnSetLocalVisibility(true); + } + } + + private static void OnLocalClientObjectSpawnScene(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ObjectSpawnSceneMessage); + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.netId, out var networkIdentity)) + { + networkIdentity.OnSetLocalVisibility(true); + } + } + + private static void OnUpdateVarsMessage(QSBNetworkMessage netMsg) + { + var networkInstanceId = netMsg.reader.ReadNetworkId(); + Debug.Log(string.Concat(new object[] + { + "ClientScene::OnUpdateVarsMessage ", + networkInstanceId, + " channel:", + netMsg.channelId + })); + if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) + { + networkIdentity.OnUpdateVars(netMsg.reader, false); + } + else if (LogFilter.logWarn) + { + Debug.LogWarning("Did not find target for sync message for " + networkInstanceId); + } + } + + private static void OnRPCMessage(QSBNetworkMessage netMsg) + { + var num = (int)netMsg.reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.reader.ReadNetworkId(); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ClientScene::OnRPCMessage hash:", + num, + " netId:", + networkInstanceId + })); + } + if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) + { + networkIdentity.HandleRPC(num, netMsg.reader); + } + else if (LogFilter.logWarn) + { + string cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); + Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", new object[] + { + networkInstanceId, + cmdHashHandlerName + }); + } + } + + private static void OnSyncEventMessage(QSBNetworkMessage netMsg) + { + var cmdHash = (int)netMsg.reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.reader.ReadNetworkId(); + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::OnSyncEventMessage " + networkInstanceId); + } + if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) + { + networkIdentity.HandleSyncEvent(cmdHash, netMsg.reader); + } + else if (LogFilter.logWarn) + { + Debug.LogWarning("Did not find target for SyncEvent message for " + networkInstanceId); + } + } + + private static void OnSyncListMessage(QSBNetworkMessage netMsg) + { + var networkInstanceId = netMsg.reader.ReadNetworkId(); + var cmdHash = (int)netMsg.reader.ReadPackedUInt32(); + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::OnSyncListMessage " + networkInstanceId); + } + if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) + { + networkIdentity.HandleSyncList(cmdHash, netMsg.reader); + } + else if (LogFilter.logWarn) + { + Debug.LogWarning("Did not find target for SyncList message for " + networkInstanceId); + } + } + + private static void OnClientAuthority(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_ClientAuthorityMessage); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ClientScene::OnClientAuthority for connectionId=", + netMsg.conn.connectionId, + " netId: ", + s_ClientAuthorityMessage.netId + })); + } + if (s_NetworkScene.GetNetworkIdentity(s_ClientAuthorityMessage.netId, out var networkIdentity)) + { + networkIdentity.HandleClientAuthority(s_ClientAuthorityMessage.authority); + } + } + + private static void OnOwnerMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_OwnerMessage); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ClientScene::OnOwnerMessage - connectionId=", + netMsg.conn.connectionId, + " netId: ", + s_OwnerMessage.netId + })); + } + if (netMsg.conn.GetPlayerController(s_OwnerMessage.playerControllerId, out var playerController)) + { + playerController.unetView.SetNotLocalPlayer(); + } + if (s_NetworkScene.GetNetworkIdentity(s_OwnerMessage.netId, out var networkIdentity)) + { + networkIdentity.SetConnectionToServer(netMsg.conn); + networkIdentity.SetLocalPlayer(s_OwnerMessage.playerControllerId); + InternalAddPlayer(networkIdentity, s_OwnerMessage.playerControllerId); + } + else + { + var item = new PendingOwner + { + netId = s_OwnerMessage.netId, + playerControllerId = s_OwnerMessage.playerControllerId + }; + s_PendingOwnerIds.Add(item); + } + } + + private static void CheckForOwner(QSBNetworkIdentity uv) + { + var i = 0; + while (i < s_PendingOwnerIds.Count) + { + var pendingOwner = s_PendingOwnerIds[i]; + if (pendingOwner.netId == uv.NetId) + { + uv.SetConnectionToServer(readyConnection); + uv.SetLocalPlayer(pendingOwner.playerControllerId); + Debug.Log("ClientScene::OnOwnerMessage - player=" + uv.gameObject.name); + if (readyConnection.connectionId < 0) + { + if (LogFilter.logError) + { + Debug.LogError("Owner message received on a local client."); + } + break; + } + InternalAddPlayer(uv, pendingOwner.playerControllerId); + s_PendingOwnerIds.RemoveAt(i); + break; + } + else + { + i++; + } + } + } + + private static bool s_IsSpawnFinished; + + private static QSBNetworkScene s_NetworkScene = new QSBNetworkScene(); + + private static QSBObjectSpawnSceneMessage s_ObjectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); + + private static QSBObjectSpawnFinishedMessage s_ObjectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); + + private static QSBObjectDestroyMessage s_ObjectDestroyMessage = new QSBObjectDestroyMessage(); + + private static QSBObjectSpawnMessage s_ObjectSpawnMessage = new QSBObjectSpawnMessage(); + + private static QSBOwnerMessage s_OwnerMessage = new QSBOwnerMessage(); + + private static QSBClientAuthorityMessage s_ClientAuthorityMessage = new QSBClientAuthorityMessage(); + + public const int ReconnectIdInvalid = -1; + + public const int ReconnectIdHost = 0; + + private static PeerInfoMessage[] s_Peers; + + private static List s_PendingOwnerIds = new List(); + + private struct PendingOwner + { + public NetworkInstanceId netId; + + public short playerControllerId; + } + } +} \ No newline at end of file diff --git a/QSB/QSBLocalClient.cs b/QSB/QSBLocalClient.cs new file mode 100644 index 000000000..064c569e9 --- /dev/null +++ b/QSB/QSBLocalClient.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBLocalClient : QSBNetworkClient + { + public override void Disconnect() + { + QSBClientScene.HandleClientDisconnect(m_Connection); + if (m_Connected) + { + PostInternalMessage(33); + m_Connected = false; + } + m_AsyncConnect = QSBNetworkClient.ConnectState.Disconnected; + m_LocalServer.RemoveLocalClient(m_Connection); + } + + internal void InternalConnectLocalServer(bool generateConnectMsg) + { + if (m_FreeMessages == null) + { + m_FreeMessages = new Stack(); + for (var i = 0; i < 64; i++) + { + var t = default(InternalMsg); + m_FreeMessages.Push(t); + } + } + m_LocalServer = QSBNetworkServer.instance; + m_Connection = new ULocalConnectionToServer(m_LocalServer); + base.SetHandlers(m_Connection); + m_Connection.connectionId = m_LocalServer.AddLocalClient(this); + m_AsyncConnect = QSBNetworkClient.ConnectState.Connected; + QSBNetworkClient.SetActive(true); + base.RegisterSystemHandlers(true); + if (generateConnectMsg) + { + PostInternalMessage(32); + } + m_Connected = true; + } + + internal override void Update() => ProcessInternalMessages(); + + internal void AddLocalPlayer(QSBPlayerController localPlayer) + { + Debug.Log(string.Concat(new object[] + { + "Local client AddLocalPlayer ", + localPlayer.gameObject.name, + " conn=", + m_Connection.connectionId + })); + m_Connection.isReady = true; + m_Connection.SetPlayerController(localPlayer); + var unetView = localPlayer.unetView; + if (unetView != null) + { + QSBClientScene.SetLocalObject(unetView.NetId, localPlayer.gameObject); + unetView.SetConnectionToServer(m_Connection); + } + QSBClientScene.InternalAddPlayer(unetView, localPlayer.playerControllerId); + } + + private void PostInternalMessage(byte[] buffer, int channelId) + { + InternalMsg item; + if (m_FreeMessages.Count == 0) + { + item = default; + } + else + { + item = m_FreeMessages.Pop(); + } + item.buffer = buffer; + item.channelId = channelId; + m_InternalMsgs.Add(item); + } + + private void PostInternalMessage(short msgType) + { + var networkWriter = new NetworkWriter(); + networkWriter.StartMessage(msgType); + networkWriter.FinishMessage(); + PostInternalMessage(networkWriter.AsArray(), 0); + } + + private void ProcessInternalMessages() + { + if (m_InternalMsgs.Count != 0) + { + var internalMsgs = m_InternalMsgs; + m_InternalMsgs = m_InternalMsgs2; + for (var i = 0; i < internalMsgs.Count; i++) + { + var t = internalMsgs[i]; + if (s_InternalMessage.reader == null) + { + s_InternalMessage.reader = new NetworkReader(t.buffer); + } + else + { + s_InternalMessage.reader.Replace(t.buffer); + } + s_InternalMessage.reader.ReadInt16(); + s_InternalMessage.channelId = t.channelId; + s_InternalMessage.conn = base.connection; + s_InternalMessage.msgType = s_InternalMessage.reader.ReadInt16(); + m_Connection.InvokeHandler(s_InternalMessage); + m_FreeMessages.Push(t); + base.connection.lastMessageTime = Time.time; + } + m_InternalMsgs = internalMsgs; + m_InternalMsgs.Clear(); + for (var j = 0; j < m_InternalMsgs2.Count; j++) + { + m_InternalMsgs.Add(m_InternalMsgs2[j]); + } + m_InternalMsgs2.Clear(); + } + } + + internal void InvokeHandlerOnClient(short msgType, MessageBase msg, int channelId) + { + var networkWriter = new NetworkWriter(); + networkWriter.StartMessage(msgType); + msg.Serialize(networkWriter); + networkWriter.FinishMessage(); + InvokeBytesOnClient(networkWriter.AsArray(), channelId); + } + + internal void InvokeBytesOnClient(byte[] buffer, int channelId) => PostInternalMessage(buffer, channelId); + + private const int k_InitialFreeMessagePoolSize = 64; + + private List m_InternalMsgs = new List(); + + private readonly List m_InternalMsgs2 = new List(); + + private Stack m_FreeMessages; + + private QSBNetworkServer m_LocalServer; + + private bool m_Connected; + + private readonly QSBNetworkMessage s_InternalMessage = new QSBNetworkMessage(); + + private struct InternalMsg + { + internal byte[] buffer; + + internal int channelId; + } + } +} \ No newline at end of file diff --git a/QSB/QSBNetworkBehaviour.cs b/QSB/QSBNetworkBehaviour.cs index 7dda69b16..7cda28648 100644 --- a/QSB/QSBNetworkBehaviour.cs +++ b/QSB/QSBNetworkBehaviour.cs @@ -15,8 +15,8 @@ public class QSBNetworkBehaviour : MonoBehaviour public bool IsLocalPlayer => MyView.IsLocalPlayer; public bool HasAuthority => MyView.HasAuthority; public NetworkInstanceId NetId => MyView.NetId; - public NetworkConnection ConnectionToServer => MyView.ConnectionToServer; - public NetworkConnection ConnectionToClient => MyView.ConnectionToClient; + public QSBNetworkConnection ConnectionToServer => MyView.ConnectionToServer; + public QSBNetworkConnection ConnectionToClient => MyView.ConnectionToClient; public short PlayerControllerId => MyView.PlayerControllerId; protected uint SyncVarDirtyBits { get; private set; } @@ -52,14 +52,14 @@ protected void SendCommandInternal(NetworkWriter writer, int channelId, string c { Debug.LogWarning("Trying to send command for object without authority."); } - else if (ClientScene.readyConnection == null) + else if (QSBClientScene.readyConnection == null) { Debug.LogError("Send command attempted with no client running [client=" + ConnectionToServer + "]."); } else { writer.FinishMessage(); - ClientScene.readyConnection.SendWriter(writer, channelId); + QSBClientScene.readyConnection.SendWriter(writer, channelId); } } @@ -558,7 +558,7 @@ public virtual void OnStartClient() { } public virtual void OnStartLocalPlayer() { } public virtual void OnStartAuthority() { } public virtual void OnStopAuthority() { } - public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; + public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; public virtual void OnSetLocalVisibility(bool vis) { } public virtual bool OnCheckObserver(NetworkConnection conn) => true; public virtual int GetNetworkChannel() => 0; diff --git a/QSB/QSBNetworkClient.cs b/QSB/QSBNetworkClient.cs new file mode 100644 index 000000000..014e144e3 --- /dev/null +++ b/QSB/QSBNetworkClient.cs @@ -0,0 +1,1213 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.Networking.NetworkSystem; + +namespace QSB +{ + class QSBNetworkClient + { + public QSBNetworkClient() + { + m_MsgBuffer = new byte[65535]; + m_MsgReader = new NetworkReader(m_MsgBuffer); + AddClient(this); + } + + public QSBNetworkClient(QSBNetworkConnection conn) + { + m_MsgBuffer = new byte[65535]; + m_MsgReader = new NetworkReader(m_MsgBuffer); + AddClient(this); + SetActive(true); + m_Connection = conn; + m_AsyncConnect = ConnectState.Connected; + conn.SetHandlers(m_MessageHandlers); + RegisterSystemHandlers(false); + } + + public static List allClients + { + get + { + return s_Clients; + } + } + + public static bool active + { + get + { + return s_IsActive; + } + } + + internal void SetHandlers(QSBNetworkConnection conn) + { + conn.SetHandlers(m_MessageHandlers); + } + + public string serverIp + { + get + { + return m_ServerIp; + } + } + + public int serverPort + { + get + { + return m_ServerPort; + } + } + + public QSBNetworkConnection connection + { + get + { + return m_Connection; + } + } + + [Obsolete("Moved to NetworkMigrationManager.")] + public PeerInfoMessage[] peers + { + get + { + return null; + } + } + + internal int hostId + { + get + { + return m_ClientId; + } + } + + public Dictionary handlers + { + get + { + return m_MessageHandlers.GetHandlers(); + } + } + + public int numChannels + { + get + { + return m_HostTopology.DefaultConfig.ChannelCount; + } + } + + public HostTopology hostTopology + { + get + { + return m_HostTopology; + } + } + + public int hostPort + { + get + { + return m_HostPort; + } + set + { + if (value < 0) + { + throw new ArgumentException("Port must not be a negative number."); + } + if (value > 65535) + { + throw new ArgumentException("Port must not be greater than 65535."); + } + m_HostPort = value; + } + } + + public bool isConnected + { + get + { + return m_AsyncConnect == ConnectState.Connected; + } + } + + public Type networkConnectionClass + { + get + { + return m_NetworkConnectionClass; + } + } + + public void SetNetworkConnectionClass() where T : QSBNetworkConnection + { + m_NetworkConnectionClass = typeof(T); + } + + public bool Configure(ConnectionConfig config, int maxConnections) + { + HostTopology topology = new HostTopology(config, maxConnections); + return Configure(topology); + } + + public bool Configure(HostTopology topology) + { + m_HostTopology = topology; + return true; + } + + public void Connect(MatchInfo matchInfo) + { + PrepareForConnect(); + ConnectWithRelay(matchInfo); + } + + public bool ReconnectToNewHost(string serverIp, int serverPort) + { + bool result; + if (!active) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect - NetworkClient must be active"); + } + result = false; + } + else if (m_Connection == null) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect - no old connection exists"); + } + result = false; + } + else + { + if (LogFilter.logInfo) + { + Debug.Log(string.Concat(new object[] + { + "NetworkClient Reconnect ", + serverIp, + ":", + serverPort + })); + } + QSBClientScene.HandleClientDisconnect(m_Connection); + QSBClientScene.ClearLocalPlayers(); + m_Connection.Disconnect(); + m_Connection = null; + m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + m_ServerPort = serverPort; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + m_ServerIp = serverIp; + m_AsyncConnect = ConnectState.Resolved; + } + else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) + { + m_ServerIp = "127.0.0.1"; + m_AsyncConnect = ConnectState.Resolved; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("Async DNS START:" + serverIp); + } + m_AsyncConnect = ConnectState.Resolving; + Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(GetHostAddressesCallback), this); + } + result = true; + } + return result; + } + + public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) + { + bool result; + if (!active) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect - NetworkClient must be active"); + } + result = false; + } + else if (m_Connection == null) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect - no old connection exists"); + } + result = false; + } + else + { + if (LogFilter.logInfo) + { + Debug.Log("NetworkClient Reconnect to remoteSockAddr"); + } + QSBClientScene.HandleClientDisconnect(m_Connection); + QSBClientScene.ClearLocalPlayers(); + m_Connection.Disconnect(); + m_Connection = null; + m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + if (secureTunnelEndPoint == null) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect failed: null endpoint passed in"); + } + m_AsyncConnect = ConnectState.Failed; + result = false; + } + else if (secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetwork && secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetworkV6) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6"); + } + m_AsyncConnect = ConnectState.Failed; + result = false; + } + else + { + string fullName = secureTunnelEndPoint.GetType().FullName; + if (fullName == "System.Net.IPEndPoint") + { + IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; + this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + result = (m_AsyncConnect != ConnectState.Failed); + } + else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint") + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)"); + } + m_AsyncConnect = ConnectState.Failed; + result = false; + } + else + { + byte b = 0; + m_RemoteEndPoint = secureTunnelEndPoint; + m_AsyncConnect = ConnectState.Connecting; + try + { + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); + } + catch (Exception arg) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect failed: Exception when trying to connect to EndPoint: " + arg); + } + m_AsyncConnect = ConnectState.Failed; + return false; + } + if (m_ClientConnectionId == 0) + { + if (LogFilter.logError) + { + Debug.LogError("Reconnect failed: Unable to connect to EndPoint (" + b + ")"); + } + m_AsyncConnect = ConnectState.Failed; + result = false; + } + else + { + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection.SetHandlers(m_MessageHandlers); + m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + result = true; + } + } + } + } + return result; + } + + public void ConnectWithSimulator(string serverIp, int serverPort, int latency, float packetLoss) + { + m_UseSimulator = true; + m_SimulatedLatency = latency; + m_PacketLoss = packetLoss; + Connect(serverIp, serverPort); + } + + private static bool IsValidIpV6(string address) + { + foreach (char c in address) + { + if (c != ':' && (c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F')) + { + return false; + } + } + return true; + } + + public void Connect(string serverIp, int serverPort) + { + PrepareForConnect(); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Client Connect: ", + serverIp, + ":", + serverPort + })); + } + m_ServerPort = serverPort; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + m_ServerIp = serverIp; + m_AsyncConnect = ConnectState.Resolved; + } + else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) + { + m_ServerIp = "127.0.0.1"; + m_AsyncConnect = ConnectState.Resolved; + } + else if (serverIp.IndexOf(":") != -1 && IsValidIpV6(serverIp)) + { + m_ServerIp = serverIp; + m_AsyncConnect = ConnectState.Resolved; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("Async DNS START:" + serverIp); + } + m_RequestedServerHost = serverIp; + m_AsyncConnect = ConnectState.Resolving; + Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(GetHostAddressesCallback), this); + } + } + + public void Connect(EndPoint secureTunnelEndPoint) + { + bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); + PrepareForConnect(usePlatformSpecificProtocols); + if (LogFilter.logDebug) + { + Debug.Log("Client Connect to remoteSockAddr"); + } + if (secureTunnelEndPoint == null) + { + if (LogFilter.logError) + { + Debug.LogError("Connect failed: null endpoint passed in"); + } + m_AsyncConnect = ConnectState.Failed; + } + else if (secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetwork && secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetworkV6) + { + if (LogFilter.logError) + { + Debug.LogError("Connect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6"); + } + m_AsyncConnect = ConnectState.Failed; + } + else + { + string fullName = secureTunnelEndPoint.GetType().FullName; + if (fullName == "System.Net.IPEndPoint") + { + IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; + this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + } + else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint" && fullName != "UnityEngine.PSVita.SceEndPoint") + { + if (LogFilter.logError) + { + Debug.LogError("Connect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)"); + } + m_AsyncConnect = ConnectState.Failed; + } + else + { + byte b = 0; + m_RemoteEndPoint = secureTunnelEndPoint; + m_AsyncConnect = ConnectState.Connecting; + try + { + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); + } + catch (Exception arg) + { + if (LogFilter.logError) + { + Debug.LogError("Connect failed: Exception when trying to connect to EndPoint: " + arg); + } + m_AsyncConnect = ConnectState.Failed; + return; + } + if (m_ClientConnectionId == 0) + { + if (LogFilter.logError) + { + Debug.LogError("Connect failed: Unable to connect to EndPoint (" + b + ")"); + } + m_AsyncConnect = ConnectState.Failed; + } + else + { + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection.SetHandlers(m_MessageHandlers); + m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + } + } + } + } + + private void PrepareForConnect() + { + PrepareForConnect(false); + } + + private void PrepareForConnect(bool usePlatformSpecificProtocols) + { + SetActive(true); + RegisterSystemHandlers(false); + if (m_HostTopology == null) + { + ConnectionConfig connectionConfig = new ConnectionConfig(); + connectionConfig.AddChannel(QosType.ReliableSequenced); + connectionConfig.AddChannel(QosType.Unreliable); + connectionConfig.UsePlatformSpecificProtocols = usePlatformSpecificProtocols; + m_HostTopology = new HostTopology(connectionConfig, 8); + } + if (m_UseSimulator) + { + int num = m_SimulatedLatency / 3 - 1; + if (num < 1) + { + num = 1; + } + int num2 = m_SimulatedLatency * 3; + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "AddHost Using Simulator ", + num, + "/", + num2 + })); + } + m_ClientId = NetworkTransport.AddHostWithSimulator(m_HostTopology, num, num2, m_HostPort); + } + else + { + m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + } + } + + internal static void GetHostAddressesCallback(IAsyncResult ar) + { + try + { + IPAddress[] array = Dns.EndGetHostAddresses(ar); + QSBNetworkClient networkClient = (QSBNetworkClient)ar.AsyncState; + if (array.Length == 0) + { + if (LogFilter.logError) + { + Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost); + } + networkClient.m_AsyncConnect = ConnectState.Failed; + } + else + { + networkClient.m_ServerIp = array[0].ToString(); + networkClient.m_AsyncConnect = ConnectState.Resolved; + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new string[] + { + "Async DNS Result:", + networkClient.m_ServerIp, + " for ", + networkClient.m_RequestedServerHost, + ": ", + networkClient.m_ServerIp + })); + } + } + } + catch (SocketException ex) + { + QSBNetworkClient networkClient2 = (QSBNetworkClient)ar.AsyncState; + if (LogFilter.logError) + { + Debug.LogError("DNS resolution failed: " + ex.GetErrorCode()); + } + if (LogFilter.logDebug) + { + Debug.Log("Exception:" + ex); + } + networkClient2.m_AsyncConnect = ConnectState.Failed; + } + } + + internal void ContinueConnect() + { + if (m_UseSimulator) + { + int num = m_SimulatedLatency / 3; + if (num < 1) + { + num = 1; + } + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Connect Using Simulator ", + m_SimulatedLatency / 3, + "/", + m_SimulatedLatency + })); + } + ConnectionSimulatorConfig conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); + byte b; + m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(m_ClientId, m_ServerIp, m_ServerPort, 0, out b, conf); + } + else + { + byte b; + m_ClientConnectionId = NetworkTransport.Connect(m_ClientId, m_ServerIp, m_ServerPort, 0, out b); + } + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection.SetHandlers(m_MessageHandlers); + m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + } + + private void ConnectWithRelay(MatchInfo info) + { + m_AsyncConnect = ConnectState.Connecting; + Update(); + byte b; + m_ClientConnectionId = NetworkTransport.ConnectToNetworkPeer(m_ClientId, info.address, info.port, 0, 0, info.networkId, QSBUtility.GetSourceID(), info.nodeId, out b); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection.SetHandlers(m_MessageHandlers); + m_Connection.Initialize(info.address, m_ClientId, m_ClientConnectionId, m_HostTopology); + if (b != 0) + { + Debug.LogError("ConnectToNetworkPeer Error: " + b); + } + } + + public virtual void Disconnect() + { + m_AsyncConnect = ConnectState.Disconnected; + QSBClientScene.HandleClientDisconnect(m_Connection); + if (m_Connection != null) + { + m_Connection.Disconnect(); + m_Connection.Dispose(); + m_Connection = null; + if (m_ClientId != -1) + { + NetworkTransport.RemoveHost(m_ClientId); + m_ClientId = -1; + } + } + } + + public bool Send(short msgType, MessageBase msg) + { + bool result; + if (m_Connection != null) + { + if (m_AsyncConnect != ConnectState.Connected) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient Send when not connected to a server"); + } + result = false; + } + else + { + result = m_Connection.Send(msgType, msg); + } + } + else + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient Send with no connection"); + } + result = false; + } + return result; + } + + public bool SendWriter(NetworkWriter writer, int channelId) + { + bool result; + if (m_Connection != null) + { + if (m_AsyncConnect != ConnectState.Connected) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendWriter when not connected to a server"); + } + result = false; + } + else + { + result = m_Connection.SendWriter(writer, channelId); + } + } + else + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendWriter with no connection"); + } + result = false; + } + return result; + } + + public bool SendBytes(byte[] data, int numBytes, int channelId) + { + bool result; + if (m_Connection != null) + { + if (m_AsyncConnect != ConnectState.Connected) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendBytes when not connected to a server"); + } + result = false; + } + else + { + result = m_Connection.SendBytes(data, numBytes, channelId); + } + } + else + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendBytes with no connection"); + } + result = false; + } + return result; + } + + public bool SendUnreliable(short msgType, MessageBase msg) + { + bool result; + if (m_Connection != null) + { + if (m_AsyncConnect != ConnectState.Connected) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendUnreliable when not connected to a server"); + } + result = false; + } + else + { + result = m_Connection.SendUnreliable(msgType, msg); + } + } + else + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendUnreliable with no connection"); + } + result = false; + } + return result; + } + + public bool SendByChannel(short msgType, MessageBase msg, int channelId) + { + bool result; + if (m_Connection != null) + { + if (m_AsyncConnect != ConnectState.Connected) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendByChannel when not connected to a server"); + } + result = false; + } + else + { + result = m_Connection.SendByChannel(msgType, msg, channelId); + } + } + else + { + if (LogFilter.logError) + { + Debug.LogError("NetworkClient SendByChannel with no connection"); + } + result = false; + } + return result; + } + + public void SetMaxDelay(float seconds) + { + if (m_Connection == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("SetMaxDelay failed, not connected."); + } + } + else + { + m_Connection.SetMaxDelay(seconds); + } + } + + public void Shutdown() + { + if (LogFilter.logDebug) + { + Debug.Log("Shutting down client " + m_ClientId); + } + if (m_ClientId != -1) + { + NetworkTransport.RemoveHost(m_ClientId); + m_ClientId = -1; + } + RemoveClient(this); + if (s_Clients.Count == 0) + { + SetActive(false); + } + } + + internal virtual void Update() + { + if (m_ClientId != -1) + { + switch (m_AsyncConnect) + { + case ConnectState.None: + case ConnectState.Resolving: + case ConnectState.Disconnected: + return; + case ConnectState.Resolved: + m_AsyncConnect = ConnectState.Connecting; + ContinueConnect(); + return; + case ConnectState.Failed: + GenerateConnectError(11); + m_AsyncConnect = ConnectState.Disconnected; + return; + } + if (m_Connection != null) + { + if ((int)Time.time != m_StatResetTime) + { + m_Connection.ResetStats(); + m_StatResetTime = (int)Time.time; + } + } + int num = 0; + byte b; + for (; ; ) + { + int num2; + int channelId; + int numBytes; + NetworkEventType networkEventType = NetworkTransport.ReceiveFromHost(m_ClientId, out num2, out channelId, m_MsgBuffer, (int)((ushort)m_MsgBuffer.Length), out numBytes, out b); + if (m_Connection != null) + { + m_Connection.LastError = (NetworkError)b; + } + if (networkEventType != NetworkEventType.Nothing) + { + Debug.Log(string.Concat(new object[] + { + "Client event: host=", + m_ClientId, + " event=", + networkEventType, + " error=", + b + })); + } + switch (networkEventType) + { + case NetworkEventType.DataEvent: + if (b != 0) + { + goto Block_11; + } + m_MsgReader.SeekZero(); + m_Connection.TransportReceive(m_MsgBuffer, numBytes, channelId); + break; + case NetworkEventType.ConnectEvent: + if (LogFilter.logDebug) + { + Debug.Log("Client connected"); + } + if (b != 0) + { + goto Block_10; + } + m_AsyncConnect = ConnectState.Connected; + m_Connection.InvokeHandlerNoData(32); + break; + case NetworkEventType.DisconnectEvent: + if (LogFilter.logDebug) + { + Debug.Log("Client disconnected"); + } + m_AsyncConnect = ConnectState.Disconnected; + if (b != 0) + { + if (b != 6) + { + GenerateDisconnectError((int)b); + } + } + QSBClientScene.HandleClientDisconnect(m_Connection); + if (m_Connection != null) + { + m_Connection.InvokeHandlerNoData(33); + } + break; + case NetworkEventType.Nothing: + break; + default: + if (LogFilter.logError) + { + Debug.LogError("Unknown network message type received: " + networkEventType); + } + break; + } + if (++num >= 500) + { + goto Block_17; + } + if (m_ClientId == -1) + { + goto Block_19; + } + if (networkEventType == NetworkEventType.Nothing) + { + goto IL_2C6; + } + } + Block_10: + GenerateConnectError((int)b); + return; + Block_11: + GenerateDataError((int)b); + return; + Block_17: + if (LogFilter.logDebug) + { + Debug.Log("MaxEventsPerFrame hit (" + 500 + ")"); + } + Block_19: + IL_2C6: + if (m_Connection != null && m_AsyncConnect == ConnectState.Connected) + { + m_Connection.FlushChannels(); + } + } + } + + private void GenerateConnectError(int error) + { + if (LogFilter.logError) + { + Debug.LogError("UNet Client Error Connect Error: " + error); + } + GenerateError(error); + } + + private void GenerateDataError(int error) + { + if (LogFilter.logError) + { + Debug.LogError("UNet Client Data Error: " + (NetworkError)error); + } + GenerateError(error); + } + + private void GenerateDisconnectError(int error) + { + if (LogFilter.logError) + { + Debug.LogError("UNet Client Disconnect Error: " + (NetworkError)error); + } + GenerateError(error); + } + + private void GenerateError(int error) + { + QSBNetworkMessageDelegate handler = m_MessageHandlers.GetHandler(34); + if (handler == null) + { + handler = m_MessageHandlers.GetHandler(34); + } + if (handler != null) + { + ErrorMessage errorMessage = new ErrorMessage(); + errorMessage.errorCode = error; + byte[] buffer = new byte[200]; + NetworkWriter writer = new NetworkWriter(buffer); + errorMessage.Serialize(writer); + NetworkReader reader = new NetworkReader(buffer); + handler(new QSBNetworkMessage + { + msgType = 34, + reader = reader, + conn = m_Connection, + channelId = 0 + }); + } + } + + public void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) + { + numMsgs = 0; + numBufferedMsgs = 0; + numBytes = 0; + lastBufferedPerSecond = 0; + if (m_Connection != null) + { + m_Connection.GetStatsOut(out numMsgs, out numBufferedMsgs, out numBytes, out lastBufferedPerSecond); + } + } + + public void GetStatsIn(out int numMsgs, out int numBytes) + { + numMsgs = 0; + numBytes = 0; + if (m_Connection != null) + { + m_Connection.GetStatsIn(out numMsgs, out numBytes); + } + } + + public Dictionary GetConnectionStats() + { + Dictionary result; + if (m_Connection == null) + { + result = null; + } + else + { + result = m_Connection.PacketStats; + } + return result; + } + + public void ResetConnectionStats() + { + if (m_Connection != null) + { + m_Connection.ResetStats(); + } + } + + public int GetRTT() + { + int result; + if (m_ClientId == -1) + { + result = 0; + } + else + { + byte b; + result = NetworkTransport.GetCurrentRTT(m_ClientId, m_ClientConnectionId, out b); + } + return result; + } + + internal void RegisterSystemHandlers(bool localClient) + { + QSBClientScene.RegisterSystemHandlers(this, localClient); + this.RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); + } + + private void OnCRC(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(s_CRCMessage); + NetworkCRC.Validate(s_CRCMessage.scripts, numChannels); + } + + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + m_MessageHandlers.RegisterHandler(msgType, handler); + } + + public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) + { + m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + } + + public void UnregisterHandler(short msgType) + { + m_MessageHandlers.UnregisterHandler(msgType); + } + + public static Dictionary GetTotalConnectionStats() + { + Dictionary dictionary = new Dictionary(); + for (int i = 0; i < s_Clients.Count; i++) + { + QSBNetworkClient networkClient = s_Clients[i]; + Dictionary connectionStats = networkClient.GetConnectionStats(); + foreach (short key in connectionStats.Keys) + { + if (dictionary.ContainsKey(key)) + { + QSBNetworkConnection.PacketStat packetStat = dictionary[key]; + packetStat.count += connectionStats[key].count; + packetStat.bytes += connectionStats[key].bytes; + dictionary[key] = packetStat; + } + else + { + dictionary[key] = new QSBNetworkConnection.PacketStat(connectionStats[key]); + } + } + } + return dictionary; + } + + internal static void AddClient(QSBNetworkClient client) + { + s_Clients.Add(client); + } + + internal static bool RemoveClient(QSBNetworkClient client) + { + return s_Clients.Remove(client); + } + + internal static void UpdateClients() + { + for (int i = 0; i < s_Clients.Count; i++) + { + if (s_Clients[i] != null) + { + s_Clients[i].Update(); + } + else + { + s_Clients.RemoveAt(i); + } + } + } + + public static void ShutdownAll() + { + while (s_Clients.Count != 0) + { + s_Clients[0].Shutdown(); + } + s_Clients = new List(); + s_IsActive = false; + QSBClientScene.Shutdown(); + } + + internal static void SetActive(bool state) + { + if (!s_IsActive && state) + { + NetworkTransport.Init(); + } + s_IsActive = state; + } + + private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); + + private const int k_MaxEventsPerFrame = 500; + + private static List s_Clients = new List(); + + private static bool s_IsActive; + + private HostTopology m_HostTopology; + + private int m_HostPort; + + private bool m_UseSimulator; + + private int m_SimulatedLatency; + + private float m_PacketLoss; + + private string m_ServerIp = ""; + + private int m_ServerPort; + + private int m_ClientId = -1; + + private int m_ClientConnectionId = -1; + + private int m_StatResetTime; + + private EndPoint m_RemoteEndPoint; + + private static CRCMessage s_CRCMessage = new CRCMessage(); + + private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); + + protected QSBNetworkConnection m_Connection; + + private byte[] m_MsgBuffer; + + private NetworkReader m_MsgReader; + + protected ConnectState m_AsyncConnect = ConnectState.None; + + private string m_RequestedServerHost = ""; + + protected enum ConnectState + { + None, + Resolving, + Resolved, + Connecting, + Connected, + Disconnected, + Failed + } + } +} diff --git a/QSB/QSBNetworkConnection.cs b/QSB/QSBNetworkConnection.cs new file mode 100644 index 000000000..a2ada8dea --- /dev/null +++ b/QSB/QSBNetworkConnection.cs @@ -0,0 +1,561 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + public class QSBNetworkConnection : IDisposable + { + public QSBNetworkConnection() + { + m_Writer = new NetworkWriter(); + } + + internal HashSet VisList { get; } = new HashSet(); + + public List PlayerControllers { get; } = new List(); + + public HashSet ClientOwnedObjects { get; private set; } + + public bool isConnected => hostId != -1; + + public NetworkError LastError { get; internal set; } + + internal Dictionary PacketStats { get; } = new Dictionary(); + + public virtual void Initialize(string networkAddress, int networkHostId, int networkConnectionId, HostTopology hostTopology) + { + m_Writer = new NetworkWriter(); + address = networkAddress; + hostId = networkHostId; + connectionId = networkConnectionId; + var channelCount = hostTopology.DefaultConfig.ChannelCount; + var packetSize = (int)hostTopology.DefaultConfig.PacketSize; + if (hostTopology.DefaultConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2) + { + throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform"); + } + m_Channels = new ChannelBuffer[channelCount]; + for (var i = 0; i < channelCount; i++) + { + var channelQOS = hostTopology.DefaultConfig.Channels[i]; + var bufferSize = packetSize; + if (channelQOS.QOS == QosType.ReliableFragmented || channelQOS.QOS == QosType.UnreliableFragmented) + { + bufferSize = (int)(hostTopology.DefaultConfig.FragmentSize * 128); + } + m_Channels[i] = new ChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS)); + } + } + + ~QSBNetworkConnection() + { + Dispose(false); + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!m_Disposed && m_Channels != null) + { + for (var i = 0; i < m_Channels.Length; i++) + { + m_Channels[i].Dispose(); + } + } + m_Channels = null; + if (ClientOwnedObjects != null) + { + foreach (var netId in ClientOwnedObjects) + { + var gameObject = NetworkServer.FindLocalObject(netId); + if (gameObject != null) + { + gameObject.GetComponent().ClearClientOwner(); + } + } + } + ClientOwnedObjects = null; + m_Disposed = true; + } + + private static bool IsSequencedQoS(QosType qos) => qos == QosType.ReliableSequenced || qos == QosType.UnreliableSequenced; + + private static bool IsReliableQoS(QosType qos) => qos == QosType.Reliable || qos == QosType.ReliableFragmented || qos == QosType.ReliableSequenced || qos == QosType.ReliableStateUpdate; + + public bool SetChannelOption(int channelId, ChannelOption option, int value) => m_Channels != null && channelId >= 0 && channelId < m_Channels.Length && m_Channels[channelId].SetOption(option, value); + + public void Disconnect() + { + address = ""; + isReady = false; + QSBClientScene.HandleClientDisconnect(this); + if (hostId != -1) + { + byte b; + NetworkTransport.Disconnect(hostId, connectionId, out b); + RemoveObservers(); + } + } + + internal void SetHandlers(QSBNetworkMessageHandlers handlers) + { + m_MessageHandlers = handlers; + m_MessageHandlersDict = handlers.GetHandlers(); + } + + public bool CheckHandler(short msgType) => m_MessageHandlersDict.ContainsKey(msgType); + + public bool InvokeHandlerNoData(short msgType) => InvokeHandler(msgType, null, 0); + + public bool InvokeHandler(short msgType, NetworkReader reader, int channelId) + { + bool result; + if (m_MessageHandlersDict.ContainsKey(msgType)) + { + m_MessageInfo.msgType = msgType; + m_MessageInfo.conn = this; + m_MessageInfo.reader = reader; + m_MessageInfo.channelId = channelId; + var networkMessageDelegate = m_MessageHandlersDict[msgType]; + if (networkMessageDelegate == null) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkConnection InvokeHandler no handler for " + msgType); + } + result = false; + } + else + { + networkMessageDelegate(m_MessageInfo); + result = true; + } + } + else + { + result = false; + } + return result; + } + + public bool InvokeHandler(QSBNetworkMessage netMsg) + { + bool result; + if (m_MessageHandlersDict.ContainsKey(netMsg.msgType)) + { + var networkMessageDelegate = m_MessageHandlersDict[netMsg.msgType]; + networkMessageDelegate(netMsg); + result = true; + } + else + { + result = false; + } + return result; + } + + internal void HandleFragment(NetworkReader reader, int channelId) + { + if (channelId >= 0 && channelId < m_Channels.Length) + { + var channelBuffer = m_Channels[channelId]; + if (channelBuffer.HandleFragment(reader)) + { + var networkReader = new NetworkReader(channelBuffer.fragmentBuffer.AsArraySegment().Array); + networkReader.ReadInt16(); + var msgType = networkReader.ReadInt16(); + InvokeHandler(msgType, networkReader, channelId); + } + } + } + + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); + + public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); + + internal void SetPlayerController(QSBPlayerController player) + { + while ((int)player.playerControllerId >= PlayerControllers.Count) + { + PlayerControllers.Add(new QSBPlayerController()); + } + PlayerControllers[(int)player.playerControllerId] = player; + } + + internal void RemovePlayerController(short playerControllerId) + { + for (var i = PlayerControllers.Count; i >= 0; i--) + { + if ((int)playerControllerId == i && playerControllerId == PlayerControllers[i].playerControllerId) + { + PlayerControllers[i] = new QSBPlayerController(); + return; + } + } + if (LogFilter.logError) + { + Debug.LogError("RemovePlayer player at playerControllerId " + playerControllerId + " not found"); + return; + } + } + + internal bool GetPlayerController(short playerControllerId, out QSBPlayerController playerController) + { + playerController = null; + bool result; + if (PlayerControllers.Count > 0) + { + for (var i = 0; i < PlayerControllers.Count; i++) + { + if (PlayerControllers[i].IsValid && PlayerControllers[i].playerControllerId == playerControllerId) + { + playerController = PlayerControllers[i]; + return true; + } + } + result = false; + } + else + { + result = false; + } + return result; + } + + public void FlushChannels() + { + if (m_Channels != null) + { + for (var i = 0; i < m_Channels.Length; i++) + { + m_Channels[i].CheckInternalBuffer(); + } + } + } + + public void SetMaxDelay(float seconds) + { + if (m_Channels != null) + { + for (var i = 0; i < m_Channels.Length; i++) + { + m_Channels[i].maxDelay = seconds; + } + } + } + + public virtual bool Send(short msgType, MessageBase msg) => SendByChannel(msgType, msg, 0); + + public virtual bool SendUnreliable(short msgType, MessageBase msg) => SendByChannel(msgType, msg, 1); + + public virtual bool SendByChannel(short msgType, MessageBase msg, int channelId) + { + m_Writer.StartMessage(msgType); + msg.Serialize(m_Writer); + m_Writer.FinishMessage(); + return SendWriter(m_Writer, channelId); + } + + public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) + { + if (logNetworkMessages) + { + LogSend(bytes); + } + return CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); + } + + public virtual bool SendWriter(NetworkWriter writer, int channelId) + { + if (logNetworkMessages) + { + LogSend(writer.ToArray()); + } + return CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); + } + + private void LogSend(byte[] bytes) + { + var networkReader = new NetworkReader(bytes); + var num = networkReader.ReadUInt16(); + var num2 = networkReader.ReadUInt16(); + var stringBuilder = new StringBuilder(); + for (var i = 4; i < (int)(4 + num); i++) + { + stringBuilder.AppendFormat("{0:X2}", bytes[i]); + if (i > 150) + { + break; + } + } + Debug.Log(string.Concat(new object[] + { + "ConnectionSend con:", + connectionId, + " bytes:", + num, + " msgId:", + num2, + " ", + stringBuilder + })); + } + + private bool CheckChannel(int channelId) + { + bool result; + if (m_Channels == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Channels not initialized sending on id '" + channelId); + } + result = false; + } + else if (channelId < 0 || channelId >= m_Channels.Length) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Invalid channel when sending buffered data, '", + channelId, + "'. Current channel count is ", + m_Channels.Length + })); + } + result = false; + } + else + { + result = true; + } + return result; + } + + public void ResetStats() + { + } + + protected void HandleBytes(byte[] buffer, int receivedSize, int channelId) + { + var reader = new NetworkReader(buffer); + HandleReader(reader, receivedSize, channelId); + } + + protected void HandleReader(NetworkReader reader, int receivedSize, int channelId) + { + while ((ulong)reader.Position < (ulong)((long)receivedSize)) + { + var num = reader.ReadUInt16(); + var num2 = reader.ReadInt16(); + var array = reader.ReadBytes((int)num); + var reader2 = new NetworkReader(array); + if (logNetworkMessages) + { + var stringBuilder = new StringBuilder(); + for (var i = 0; i < (int)num; i++) + { + stringBuilder.AppendFormat("{0:X2}", array[i]); + if (i > 150) + { + break; + } + } + Debug.Log(string.Concat(new object[] + { + "ConnectionRecv con:", + connectionId, + " bytes:", + num, + " msgId:", + num2, + " ", + stringBuilder + })); + } + QSBNetworkMessageDelegate networkMessageDelegate = null; + if (m_MessageHandlersDict.ContainsKey(num2)) + { + networkMessageDelegate = m_MessageHandlersDict[num2]; + } + if (networkMessageDelegate == null) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Unknown message ID ", + num2, + " connId:", + connectionId + })); + } + break; + } + m_NetMsg.msgType = num2; + m_NetMsg.reader = reader2; + m_NetMsg.conn = this; + m_NetMsg.channelId = channelId; + networkMessageDelegate(m_NetMsg); + lastMessageTime = Time.time; + } + } + + public virtual void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) + { + numMsgs = 0; + numBufferedMsgs = 0; + numBytes = 0; + lastBufferedPerSecond = 0; + for (var i = 0; i < m_Channels.Length; i++) + { + var channelBuffer = m_Channels[i]; + numMsgs += channelBuffer.numMsgsOut; + numBufferedMsgs += channelBuffer.numBufferedMsgsOut; + numBytes += channelBuffer.numBytesOut; + lastBufferedPerSecond += channelBuffer.lastBufferedPerSecond; + } + } + + public virtual void GetStatsIn(out int numMsgs, out int numBytes) + { + numMsgs = 0; + numBytes = 0; + for (var i = 0; i < m_Channels.Length; i++) + { + var channelBuffer = m_Channels[i]; + numMsgs += channelBuffer.numMsgsIn; + numBytes += channelBuffer.numBytesIn; + } + } + + public override string ToString() + { + return string.Format("hostId: {0} connectionId: {1} isReady: {2} channel count: {3}", new object[] + { + hostId, + connectionId, + isReady, + (m_Channels == null) ? 0 : m_Channels.Length + }); + } + + internal void AddToVisList(QSBNetworkIdentity uv) + { + VisList.Add(uv); + QSBNetworkServer.ShowForConnection(uv, this); + } + + internal void RemoveFromVisList(QSBNetworkIdentity uv, bool isDestroyed) + { + VisList.Remove(uv); + if (!isDestroyed) + { + QSBNetworkServer.HideForConnection(uv, this); + } + } + + internal void RemoveObservers() + { + foreach (var networkIdentity in VisList) + { + networkIdentity.RemoveObserverInternal(this); + } + VisList.Clear(); + } + + public virtual void TransportReceive(byte[] bytes, int numBytes, int channelId) => HandleBytes(bytes, numBytes, channelId); + + [Obsolete("TransportRecieve has been deprecated. Use TransportReceive instead (UnityUpgradable) -> TransportReceive(*)", false)] + public virtual void TransportRecieve(byte[] bytes, int numBytes, int channelId) => TransportReceive(bytes, numBytes, channelId); + + public virtual bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error) => NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error); + + internal void AddOwnedObject(QSBNetworkIdentity obj) + { + if (ClientOwnedObjects == null) + { + ClientOwnedObjects = new HashSet(); + } + ClientOwnedObjects.Add(obj.NetId); + } + + internal void RemoveOwnedObject(QSBNetworkIdentity obj) + { + if (ClientOwnedObjects != null) + { + ClientOwnedObjects.Remove(obj.NetId); + } + } + + internal static void OnFragment(QSBNetworkMessage netMsg) => netMsg.conn.HandleFragment(netMsg.reader, netMsg.channelId); + + private ChannelBuffer[] m_Channels; + private readonly QSBNetworkMessage m_NetMsg = new QSBNetworkMessage(); + private NetworkWriter m_Writer; + + private Dictionary m_MessageHandlersDict; + + private QSBNetworkMessageHandlers m_MessageHandlers; + private readonly QSBNetworkMessage m_MessageInfo = new QSBNetworkMessage(); + + private const int k_MaxMessageLogSize = 150; + public int hostId = -1; + + public int connectionId = -1; + + public bool isReady; + + public string address; + + public float lastMessageTime; + + public bool logNetworkMessages = false; + private bool m_Disposed; + + public class PacketStat + { + public PacketStat() + { + msgType = 0; + count = 0; + bytes = 0; + } + + public PacketStat(PacketStat s) + { + msgType = s.msgType; + count = s.count; + bytes = s.bytes; + } + + public override string ToString() + { + return string.Concat(new object[] + { + MsgType.MsgTypeToString(msgType), + ": count=", + count, + " bytes=", + bytes + }); + } + + public short msgType; + + public int count; + + public int bytes; + } + } +} diff --git a/QSB/QSBNetworkIdentity.cs b/QSB/QSBNetworkIdentity.cs index 257c1c30b..576b58118 100644 --- a/QSB/QSBNetworkIdentity.cs +++ b/QSB/QSBNetworkIdentity.cs @@ -15,12 +15,12 @@ public sealed class QSBNetworkIdentity : MonoBehaviour public bool HasAuthority { get; private set; } public NetworkInstanceId NetId { get; private set; } public NetworkSceneId SceneId => m_SceneId; - public NetworkConnection ClientAuthorityOwner { get; private set; } + public QSBNetworkConnection ClientAuthorityOwner { get; private set; } public NetworkHash128 AssetId => m_AssetId; public bool IsLocalPlayer { get; private set; } public short PlayerControllerId { get; private set; } = -1; - public NetworkConnection ConnectionToServer { get; private set; } - public NetworkConnection ConnectionToClient { get; private set; } + public QSBNetworkConnection ConnectionToServer { get; private set; } + public QSBNetworkConnection ConnectionToClient { get; private set; } public bool ServerOnly { @@ -58,7 +58,7 @@ internal void SetDynamicAssetId(NetworkHash128 newAssetId) } } - internal void SetClientOwner(NetworkConnection conn) + internal void SetClientOwner(QSBNetworkConnection conn) { if (ClientAuthorityOwner != null) { @@ -88,18 +88,18 @@ internal void ForceAuthority(bool authority) - public ReadOnlyCollection Observers + public ReadOnlyCollection Observers { get { - ReadOnlyCollection result; + ReadOnlyCollection result; if (m_Observers == null) { result = null; } else { - result = new ReadOnlyCollection(m_Observers); + result = new ReadOnlyCollection(m_Observers); } return result; } @@ -154,7 +154,7 @@ internal void SetNotLocalPlayer() } } - internal void RemoveObserverInternal(NetworkConnection conn) + internal void RemoveObserverInternal(QSBNetworkConnection conn) { if (m_Observers != null) { @@ -184,7 +184,7 @@ internal void OnStartServer(bool allowNonZeroNetId) { HasAuthority = true; } - m_Observers = new List(); + m_Observers = new List(); m_ObserverConnections = new HashSet(); CacheBehaviours(); if (NetId.IsEmpty()) @@ -225,7 +225,7 @@ internal void OnStartServer(bool allowNonZeroNetId) } if (NetworkClient.active && NetworkServer.localClientActive) { - ClientScene.SetLocalObject(NetId, base.gameObject); + QSBClientScene.SetLocalObject(NetId, base.gameObject); OnStartClient(); } if (HasAuthority) @@ -676,9 +676,9 @@ internal void SetLocalPlayer(short localPlayerControllerId) } } - internal void SetConnectionToServer(NetworkConnection conn) => ConnectionToServer = conn; + internal void SetConnectionToServer(QSBNetworkConnection conn) => ConnectionToServer = conn; - internal void SetConnectionToClient(NetworkConnection conn, short newPlayerControllerId) + internal void SetConnectionToClient(QSBNetworkConnection conn, short newPlayerControllerId) { PlayerControllerId = newPlayerControllerId; ConnectionToClient = conn; @@ -711,7 +711,7 @@ internal void ClearObservers() } } - internal void AddObserver(NetworkConnection conn) + internal void AddObserver(QSBNetworkConnection conn) { if (m_Observers == null) { @@ -742,7 +742,7 @@ internal void AddObserver(NetworkConnection conn) } } - internal void RemoveObserver(NetworkConnection conn) + internal void RemoveObserver(QSBNetworkConnection conn) { if (m_Observers != null) { @@ -758,8 +758,8 @@ public void RebuildObservers(bool initialize) { var flag = false; var flag2 = false; - var hashSet = new HashSet(); - var hashSet2 = new HashSet(m_Observers); + var hashSet = new HashSet(); + var hashSet2 = new HashSet(m_Observers); for (var i = 0; i < m_NetworkBehaviours.Length; i++) { var networkBehaviour = m_NetworkBehaviours[i]; @@ -769,9 +769,9 @@ public void RebuildObservers(bool initialize) { if (initialize) { - for (var j = 0; j < NetworkServer.connections.Count; j++) + for (var j = 0; j < QSBNetworkServer.connections.Count; j++) { - var networkConnection = NetworkServer.connections[j]; + var networkConnection = QSBNetworkServer.connections[j]; if (networkConnection != null) { if (networkConnection.isReady) @@ -780,9 +780,9 @@ public void RebuildObservers(bool initialize) } } } - for (var k = 0; k < NetworkServer.localConnections.Count; k++) + for (var k = 0; k < QSBNetworkServer.localConnections.Count; k++) { - var networkConnection2 = NetworkServer.localConnections[k]; + var networkConnection2 = QSBNetworkServer.localConnections[k]; if (networkConnection2 != null) { if (networkConnection2.isReady) @@ -840,9 +840,9 @@ public void RebuildObservers(bool initialize) } if (initialize) { - for (var l = 0; l < NetworkServer.localConnections.Count; l++) + for (var l = 0; l < QSBNetworkServer.localConnections.Count; l++) { - if (!hashSet.Contains(NetworkServer.localConnections[l])) + if (!hashSet.Contains(QSBNetworkServer.localConnections[l])) { OnSetLocalVisibility(false); } @@ -850,7 +850,7 @@ public void RebuildObservers(bool initialize) } if (flag) { - m_Observers = new List(hashSet); + m_Observers = new List(hashSet); m_ObserverConnections.Clear(); for (var m = 0; m < m_Observers.Count; m++) { @@ -861,7 +861,7 @@ public void RebuildObservers(bool initialize) } } - public bool RemoveClientAuthority(NetworkConnection conn) + public bool RemoveClientAuthority(QSBNetworkConnection conn) { bool result; if (!IsServer) @@ -889,20 +889,18 @@ public bool RemoveClientAuthority(NetworkConnection conn) ClientAuthorityOwner.GetType().GetMethod("RemoveOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); ClientAuthorityOwner = null; ForceAuthority(true); - /* - conn.Send(15, new ClientAuthorityMessage + conn.Send(15, new QSBClientAuthorityMessage { netId = NetId, authority = false }); - */ clientAuthorityCallback?.Invoke(conn, this, false); result = true; } return result; } - public bool AssignClientAuthority(NetworkConnection conn) + public bool AssignClientAuthority(QSBNetworkConnection conn) { bool result; if (!IsServer) @@ -931,13 +929,11 @@ public bool AssignClientAuthority(NetworkConnection conn) ClientAuthorityOwner.GetType().GetMethod("AddOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); ForceAuthority(false); - /* - conn.Send(15, new ClientAuthorityMessage + conn.Send(15, new QSBClientAuthorityMessage { netId = NetId, authority = true }); - */ clientAuthorityCallback?.Invoke(conn, this, true); result = true; } @@ -988,7 +984,7 @@ internal static void UNetStaticUpdate() private HashSet m_ObserverConnections; - private List m_Observers; + private List m_Observers; private bool m_Reset = false; private static uint s_NextNetworkId = 1U; @@ -997,6 +993,6 @@ internal static void UNetStaticUpdate() public static ClientAuthorityCallback clientAuthorityCallback; - public delegate void ClientAuthorityCallback(NetworkConnection conn, QSBNetworkIdentity uv, bool authorityState); + public delegate void ClientAuthorityCallback(QSBNetworkConnection conn, QSBNetworkIdentity uv, bool authorityState); } } \ No newline at end of file diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 4512ada12..1e996d8d3 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -115,22 +115,22 @@ public override void OnStartServer() WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } - NetworkServer.UnregisterHandler(40); - NetworkServer.UnregisterHandler(41); - NetworkServer.UnregisterHandler(42); - NetworkServer.RegisterHandler(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); - NetworkServer.RegisterHandler(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); - NetworkServer.RegisterHandler(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); + QSBNetworkServer.UnregisterHandler(40); + QSBNetworkServer.UnregisterHandler(41); + QSBNetworkServer.UnregisterHandler(42); + QSBNetworkServer.RegisterHandler(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + QSBNetworkServer.RegisterHandler(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + QSBNetworkServer.RegisterHandler(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); } - public override void OnServerAddPlayer(NetworkConnection connection, short playerControllerId) // Called on the server when a client joins + public override void OnServerAddPlayer(QSBNetworkConnection connection, short playerControllerId) // Called on the server when a client joins { DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); base.OnServerAddPlayer(connection, playerControllerId); - NetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); - NetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); - NetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); + QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); + QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); + QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); } public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server @@ -153,11 +153,11 @@ public override void OnClientConnect(NetworkConnection connection) // Called on QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); singleton.client.UnregisterHandler(40); singleton.client.UnregisterHandler(41); - singleton.client.RegisterHandlerSafe(40, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - singleton.client.RegisterHandlerSafe(41, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + singleton.client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + singleton.client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); } singleton.client.UnregisterHandler(42); - singleton.client.RegisterHandlerSafe(42, new NetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + singleton.client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); @@ -201,11 +201,11 @@ public override void OnStopClient() // Called on the client when closing connect _lobby.CanEditName = true; } - public override void OnServerDisconnect(NetworkConnection connection) // Called on the server when any client disconnects + public override void OnServerDisconnect(QSBNetworkConnection connection) // Called on the server when any client disconnects { DebugLog.DebugWrite("OnServerDisconnect", MessageType.Info); var player = connection.GetPlayer(); - var netIds = connection.clientOwnedObjects.Select(x => x.Value).ToArray(); + var netIds = connection.ClientOwnedObjects.Select(x => x.Value).ToArray(); GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); foreach (var item in WorldRegistry.OrbSyncList) @@ -230,7 +230,7 @@ public override void OnStopServer() QSBEventManager.Reset(); DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - NetworkServer.connections.ToList().ForEach(CleanupConnection); + QSBNetworkServer.connections.ToList().ForEach(CleanupConnection); WorldRegistry.RemoveObjects(); WorldRegistry.RemoveObjects(); @@ -240,13 +240,13 @@ public override void OnStopServer() base.OnStopServer(); } - private void CleanupConnection(NetworkConnection connection) + private void CleanupConnection(QSBNetworkConnection connection) { var player = connection.GetPlayer(); DebugLog.ToConsole($"{player.Name} disconnected.", MessageType.Info); QSBPlayerManager.RemovePlayer(player.PlayerId); - var netIds = connection.clientOwnedObjects?.Select(x => x.Value).ToList(); + var netIds = connection.ClientOwnedObjects?.Select(x => x.Value).ToList(); netIds.ForEach(CleanupNetworkBehaviour); } diff --git a/QSB/QSBNetworkMessage.cs b/QSB/QSBNetworkMessage.cs new file mode 100644 index 000000000..932dae46b --- /dev/null +++ b/QSB/QSBNetworkMessage.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + public class QSBNetworkMessage + { + public static string Dump(byte[] payload, int sz) + { + var text = "["; + for (var i = 0; i < sz; i++) + { + text = text + payload[i] + " "; + } + return text + "]"; + } + + public TMsg ReadMessage() where TMsg : MessageBase, new() + { + var result = Activator.CreateInstance(); + result.Deserialize(reader); + return result; + } + + public void ReadMessage(TMsg msg) where TMsg : MessageBase + { + msg.Deserialize(reader); + } + + public const int MaxMessageSize = 65535; + + public short msgType; + + public QSBNetworkConnection conn; + + public NetworkReader reader; + + public int channelId; + } +} diff --git a/QSB/QSBNetworkMessageDelegate.cs b/QSB/QSBNetworkMessageDelegate.cs new file mode 100644 index 000000000..ed8c880f7 --- /dev/null +++ b/QSB/QSBNetworkMessageDelegate.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB +{ + public delegate void QSBNetworkMessageDelegate(QSBNetworkMessage netMsg); +} diff --git a/QSB/QSBNetworkMessageHandlers.cs b/QSB/QSBNetworkMessageHandlers.cs new file mode 100644 index 000000000..b05ad4520 --- /dev/null +++ b/QSB/QSBNetworkMessageHandlers.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB +{ + class QSBNetworkMessageHandlers + { + internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) + { + if (handler == null) + { + Debug.LogError("RegisterHandlerSafe id:" + msgType + " handler is null"); + } + else + { + Debug.Log(string.Concat(new object[] + { + "RegisterHandlerSafe id:", + msgType, + " handler:", + handler.GetMethodName() + })); + if (!this.m_MsgHandlers.ContainsKey(msgType)) + { + this.m_MsgHandlers.Add(msgType, handler); + } + } + } + + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + if (handler == null) + { + Debug.LogError("RegisterHandler id:" + msgType + " handler is null"); + } + else if (msgType <= 31) + { + Debug.LogError("RegisterHandler: Cannot replace system message handler " + msgType); + } + else + { + if (this.m_MsgHandlers.ContainsKey(msgType)) + { + Debug.Log("RegisterHandler replacing " + msgType); + this.m_MsgHandlers.Remove(msgType); + } + Debug.Log(string.Concat(new object[] + { + "RegisterHandler id:", + msgType, + " handler:", + handler.GetMethodName() + })); + this.m_MsgHandlers.Add(msgType, handler); + } + } + + public void UnregisterHandler(short msgType) + { + this.m_MsgHandlers.Remove(msgType); + } + + internal QSBNetworkMessageDelegate GetHandler(short msgType) + { + QSBNetworkMessageDelegate result; + if (this.m_MsgHandlers.ContainsKey(msgType)) + { + result = this.m_MsgHandlers[msgType]; + } + else + { + result = null; + } + return result; + } + + internal Dictionary GetHandlers() + { + return this.m_MsgHandlers; + } + + internal void ClearMessageHandlers() + { + this.m_MsgHandlers.Clear(); + } + + private Dictionary m_MsgHandlers = new Dictionary(); + } +} diff --git a/QSB/QSBNetworkScene.cs b/QSB/QSBNetworkScene.cs new file mode 100644 index 000000000..89dbafafd --- /dev/null +++ b/QSB/QSBNetworkScene.cs @@ -0,0 +1,369 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBNetworkScene + { + internal Dictionary localObjects { get; } = new Dictionary(); + + internal static Dictionary guidToPrefab { get; } = new Dictionary(); + + internal static Dictionary spawnHandlers { get; } = new Dictionary(); + + internal static Dictionary unspawnHandlers { get; } = new Dictionary(); + + internal void Shutdown() + { + this.ClearLocalObjects(); + ClearSpawners(); + } + + internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) + { + Debug.Log(string.Concat(new object[] + { + "SetLocalObject ", + netId, + " ", + obj + })); + if (obj == null) + { + this.localObjects[netId] = null; + } + else + { + QSBNetworkIdentity networkIdentity = null; + if (this.localObjects.ContainsKey(netId)) + { + networkIdentity = this.localObjects[netId]; + } + if (networkIdentity == null) + { + networkIdentity = obj.GetComponent(); + this.localObjects[netId] = networkIdentity; + } + networkIdentity.UpdateClientServer(isClient, isServer); + } + } + + internal GameObject FindLocalObject(NetworkInstanceId netId) + { + if (this.localObjects.ContainsKey(netId)) + { + QSBNetworkIdentity networkIdentity = this.localObjects[netId]; + if (networkIdentity != null) + { + return networkIdentity.gameObject; + } + } + return null; + } + + internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity uv) + { + bool result; + if (this.localObjects.ContainsKey(netId) && this.localObjects[netId] != null) + { + uv = this.localObjects[netId]; + result = true; + } + else + { + uv = null; + result = false; + } + return result; + } + + internal bool RemoveLocalObject(NetworkInstanceId netId) + { + return this.localObjects.Remove(netId); + } + + internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) + { + bool result; + if (this.localObjects.ContainsKey(netId)) + { + QSBNetworkIdentity networkIdentity = this.localObjects[netId]; + UnityEngine.Object.Destroy(networkIdentity.gameObject); + result = this.localObjects.Remove(netId); + } + else + { + result = false; + } + return result; + } + + internal void ClearLocalObjects() + { + this.localObjects.Clear(); + } + + internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) + { + QSBNetworkIdentity component = prefab.GetComponent(); + if (component) + { + component.SetDynamicAssetId(newAssetId); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Registering prefab '", + prefab.name, + "' as asset:", + component.AssetId + })); + } + guidToPrefab[component.AssetId] = prefab; + } + else if (LogFilter.logError) + { + Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); + } + } + + internal static void RegisterPrefab(GameObject prefab) + { + NetworkIdentity component = prefab.GetComponent(); + if (component) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Registering prefab '", + prefab.name, + "' as asset:", + component.assetId + })); + } + guidToPrefab[component.assetId] = prefab; + NetworkIdentity[] componentsInChildren = prefab.GetComponentsInChildren(); + if (componentsInChildren.Length > 1) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("The prefab '" + prefab.name + "' has multiple NetworkIdentity components. There can only be one NetworkIdentity on a prefab, and it must be on the root object."); + } + } + } + else if (LogFilter.logError) + { + Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); + } + } + + internal static bool GetPrefab(NetworkHash128 assetId, out GameObject prefab) + { + bool result; + if (!assetId.IsValid()) + { + prefab = null; + result = false; + } + else if (guidToPrefab.ContainsKey(assetId) && guidToPrefab[assetId] != null) + { + prefab = guidToPrefab[assetId]; + result = true; + } + else + { + prefab = null; + result = false; + } + return result; + } + + internal static void ClearSpawners() + { + guidToPrefab.Clear(); + spawnHandlers.Clear(); + unspawnHandlers.Clear(); + } + + public static void UnregisterSpawnHandler(NetworkHash128 assetId) + { + spawnHandlers.Remove(assetId); + unspawnHandlers.Remove(assetId); + } + + internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + { + if (spawnHandler == null || unspawnHandler == null) + { + if (LogFilter.logError) + { + Debug.LogError("RegisterSpawnHandler custom spawn function null for " + assetId); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "RegisterSpawnHandler asset '", + assetId, + "' ", + spawnHandler.GetMethodName(), + "/", + unspawnHandler.GetMethodName() + })); + } + spawnHandlers[assetId] = spawnHandler; + unspawnHandlers[assetId] = unspawnHandler; + } + } + + internal static void UnregisterPrefab(GameObject prefab) + { + NetworkIdentity component = prefab.GetComponent(); + if (component == null) + { + if (LogFilter.logError) + { + Debug.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component"); + } + } + else + { + spawnHandlers.Remove(component.assetId); + unspawnHandlers.Remove(component.assetId); + } + } + + internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + { + NetworkIdentity component = prefab.GetComponent(); + if (component == null) + { + if (LogFilter.logError) + { + Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); + } + } + else if (spawnHandler == null || unspawnHandler == null) + { + if (LogFilter.logError) + { + Debug.LogError("RegisterPrefab custom spawn function null for " + component.assetId); + } + } + else if (!component.assetId.IsValid()) + { + if (LogFilter.logError) + { + Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Registering custom prefab '", + prefab.name, + "' as asset:", + component.assetId, + " ", + spawnHandler.GetMethodName(), + "/", + unspawnHandler.GetMethodName() + })); + } + spawnHandlers[component.assetId] = spawnHandler; + unspawnHandlers[component.assetId] = unspawnHandler; + } + } + + internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate handler) + { + bool result; + if (spawnHandlers.ContainsKey(assetId)) + { + handler = spawnHandlers[assetId]; + result = true; + } + else + { + handler = null; + result = false; + } + return result; + } + + internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj) + { + bool result; + if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null) + { + UnSpawnDelegate unSpawnDelegate = unspawnHandlers[assetId]; + unSpawnDelegate(obj); + result = true; + } + else + { + result = false; + } + return result; + } + + internal void DestroyAllClientObjects() + { + foreach (NetworkInstanceId key in this.localObjects.Keys) + { + QSBNetworkIdentity networkIdentity = this.localObjects[key]; + if (networkIdentity != null && networkIdentity.gameObject != null) + { + if (!InvokeUnSpawnHandler(networkIdentity.AssetId, networkIdentity.gameObject)) + { + if (networkIdentity.SceneId.IsEmpty()) + { + UnityEngine.Object.Destroy(networkIdentity.gameObject); + } + else + { + networkIdentity.MarkForReset(); + networkIdentity.gameObject.SetActive(false); + } + } + } + } + this.ClearLocalObjects(); + } + + internal void DumpAllClientObjects() + { + foreach (NetworkInstanceId networkInstanceId in this.localObjects.Keys) + { + QSBNetworkIdentity networkIdentity = this.localObjects[networkInstanceId]; + if (networkIdentity != null) + { + Debug.Log(string.Concat(new object[] + { + "ID:", + networkInstanceId, + " OBJ:", + networkIdentity.gameObject, + " AS:", + networkIdentity.AssetId + })); + } + else + { + Debug.Log("ID:" + networkInstanceId + " OBJ: null"); + } + } + } + } +} \ No newline at end of file diff --git a/QSB/QSBNetworkServer.cs b/QSB/QSBNetworkServer.cs new file mode 100644 index 000000000..2f04a400f --- /dev/null +++ b/QSB/QSBNetworkServer.cs @@ -0,0 +1,2197 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + public class QSBNetworkServer + { + private QSBNetworkServer() + { + NetworkTransport.Init(); + m_RemoveList = new HashSet(); + m_ExternalConnections = new HashSet(); + m_NetworkScene = new NetworkScene(); + m_SimpleServerSimple = new ServerSimpleWrapper(this); + } + + public static List localConnections + { + get + { + return instance.m_LocalConnectionsFakeList; + } + } + + public static int listenPort + { + get + { + return instance.m_SimpleServerSimple.listenPort; + } + } + + public static int serverHostId + { + get + { + return instance.m_SimpleServerSimple.serverHostId; + } + } + + public static ReadOnlyCollection connections + { + get + { + return instance.m_SimpleServerSimple.connections; + } + } + + public static Dictionary handlers + { + get + { + return instance.m_SimpleServerSimple.handlers; + } + } + + public static HostTopology hostTopology + { + get + { + return instance.m_SimpleServerSimple.hostTopology; + } + } + + public static Dictionary objects + { + get + { + return instance.m_NetworkScene.localObjects; + } + } + + [Obsolete("Moved to NetworkMigrationManager")] + public static bool sendPeerInfo + { + get + { + return false; + } + set + { + } + } + + public static bool dontListen + { + get + { + return m_DontListen; + } + set + { + m_DontListen = value; + } + } + + public static bool useWebSockets + { + get + { + return instance.m_SimpleServerSimple.useWebSockets; + } + set + { + instance.m_SimpleServerSimple.useWebSockets = value; + } + } + + internal static QSBNetworkServer instance + { + get + { + if (s_Instance == null) + { + object obj = s_Sync; + lock (obj) + { + if (s_Instance == null) + { + s_Instance = new QSBNetworkServer(); + } + } + } + return s_Instance; + } + } + + public static bool active + { + get + { + return NetworkServer.s_Active; + } + } + + public static bool localClientActive + { + get + { + return instance.m_LocalClientActive; + } + } + + public static int numChannels + { + get + { + return instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; + } + } + + public static float maxDelay + { + get + { + return instance.m_MaxDelay; + } + set + { + instance.InternalSetMaxDelay(value); + } + } + + public static Type networkConnectionClass + { + get + { + return instance.m_SimpleServerSimple.networkConnectionClass; + } + } + + public static void SetNetworkConnectionClass() where T : NetworkConnection + { + instance.m_SimpleServerSimple.SetNetworkConnectionClass(); + } + + public static bool Configure(ConnectionConfig config, int maxConnections) + { + return instance.m_SimpleServerSimple.Configure(config, maxConnections); + } + + public static bool Configure(HostTopology topology) + { + return instance.m_SimpleServerSimple.Configure(topology); + } + + public static void Reset() + { + NetworkTransport.Shutdown(); + NetworkTransport.Init(); + s_Instance = null; + s_Active = false; + } + + public static void Shutdown() + { + if (s_Instance != null) + { + s_Instance.InternalDisconnectAll(); + if (!m_DontListen) + { + s_Instance.m_SimpleServerSimple.Stop(); + } + s_Instance = null; + } + m_DontListen = false; + s_Active = false; + } + + public static bool Listen(MatchInfo matchInfo, int listenPort) + { + bool result; + if (!matchInfo.usingRelay) + { + result = instance.InternalListen(null, listenPort); + } + else + { + instance.InternalListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, Utility.GetSourceID(), matchInfo.nodeId); + result = true; + } + return result; + } + + internal void RegisterMessageHandlers() + { + NetworkServerSimple simpleServerSimple = m_SimpleServerSimple; + short msgType = 35; + if (NetworkServer.<> f__mg$cache0 == null) + { + NetworkServer.<> f__mg$cache0 = new NetworkMessageDelegate(NetworkServer.OnClientReadyMessage); + } + simpleServerSimple.RegisterHandlerSafe(msgType, NetworkServer.<> f__mg$cache0); + NetworkServerSimple simpleServerSimple2 = m_SimpleServerSimple; + short msgType2 = 5; + if (NetworkServer.<> f__mg$cache1 == null) + { + NetworkServer.<> f__mg$cache1 = new NetworkMessageDelegate(NetworkServer.OnCommandMessage); + } + simpleServerSimple2.RegisterHandlerSafe(msgType2, NetworkServer.<> f__mg$cache1); + NetworkServerSimple simpleServerSimple3 = m_SimpleServerSimple; + short msgType3 = 6; + if (NetworkServer.<> f__mg$cache2 == null) + { + NetworkServer.<> f__mg$cache2 = new NetworkMessageDelegate(NetworkTransform.HandleTransform); + } + simpleServerSimple3.RegisterHandlerSafe(msgType3, NetworkServer.<> f__mg$cache2); + NetworkServerSimple simpleServerSimple4 = m_SimpleServerSimple; + short msgType4 = 16; + if (NetworkServer.<> f__mg$cache3 == null) + { + NetworkServer.<> f__mg$cache3 = new NetworkMessageDelegate(NetworkTransformChild.HandleChildTransform); + } + simpleServerSimple4.RegisterHandlerSafe(msgType4, NetworkServer.<> f__mg$cache3); + NetworkServerSimple simpleServerSimple5 = m_SimpleServerSimple; + short msgType5 = 38; + if (NetworkServer.<> f__mg$cache4 == null) + { + NetworkServer.<> f__mg$cache4 = new NetworkMessageDelegate(NetworkServer.OnRemovePlayerMessage); + } + simpleServerSimple5.RegisterHandlerSafe(msgType5, NetworkServer.<> f__mg$cache4); + NetworkServerSimple simpleServerSimple6 = m_SimpleServerSimple; + short msgType6 = 40; + if (NetworkServer.<> f__mg$cache5 == null) + { + NetworkServer.<> f__mg$cache5 = new NetworkMessageDelegate(NetworkAnimator.OnAnimationServerMessage); + } + simpleServerSimple6.RegisterHandlerSafe(msgType6, NetworkServer.<> f__mg$cache5); + NetworkServerSimple simpleServerSimple7 = m_SimpleServerSimple; + short msgType7 = 41; + if (NetworkServer.<> f__mg$cache6 == null) + { + NetworkServer.<> f__mg$cache6 = new NetworkMessageDelegate(NetworkAnimator.OnAnimationParametersServerMessage); + } + simpleServerSimple7.RegisterHandlerSafe(msgType7, NetworkServer.<> f__mg$cache6); + NetworkServerSimple simpleServerSimple8 = m_SimpleServerSimple; + short msgType8 = 42; + if (NetworkServer.<> f__mg$cache7 == null) + { + NetworkServer.<> f__mg$cache7 = new NetworkMessageDelegate(NetworkAnimator.OnAnimationTriggerServerMessage); + } + simpleServerSimple8.RegisterHandlerSafe(msgType8, NetworkServer.<> f__mg$cache7); + NetworkServerSimple simpleServerSimple9 = m_SimpleServerSimple; + short msgType9 = 17; + if (NetworkServer.<> f__mg$cache8 == null) + { + NetworkServer.<> f__mg$cache8 = new NetworkMessageDelegate(NetworkConnection.OnFragment); + } + simpleServerSimple9.RegisterHandlerSafe(msgType9, NetworkServer.<> f__mg$cache8); + NetworkServer.maxPacketSize = NetworkServer.hostTopology.DefaultConfig.PacketSize; + } + + public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) + { + instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); + } + + private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) + { + m_SimpleServerSimple.ListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); + s_Active = true; + RegisterMessageHandlers(); + } + + public static bool Listen(int serverPort) + { + return instance.InternalListen(null, serverPort); + } + + public static bool Listen(string ipAddress, int serverPort) + { + return instance.InternalListen(ipAddress, serverPort); + } + + internal bool InternalListen(string ipAddress, int serverPort) + { + if (m_DontListen) + { + m_SimpleServerSimple.Initialize(); + } + else if (!m_SimpleServerSimple.Listen(ipAddress, serverPort)) + { + return false; + } + maxPacketSize = NetworkServer.hostTopology.DefaultConfig.PacketSize; + s_Active = true; + RegisterMessageHandlers(); + return true; + } + + public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers) + { + return instance.BecomeHostInternal(oldClient, port, matchInfo, oldConnectionId, peers); + } + + internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers) + { + NetworkClient result; + if (NetworkServer.s_Active) + { + if (LogFilter.logError) + { + Debug.LogError("BecomeHost already a server."); + } + result = null; + } + else if (!NetworkClient.active) + { + if (LogFilter.logError) + { + Debug.LogError("BecomeHost NetworkClient not active."); + } + result = null; + } + else + { + NetworkServer.Configure(NetworkServer.hostTopology); + if (matchInfo == null) + { + if (LogFilter.logDev) + { + Debug.Log("BecomeHost Listen on " + port); + } + if (!NetworkServer.Listen(port)) + { + if (LogFilter.logError) + { + Debug.LogError("BecomeHost bind failed."); + } + return null; + } + } + else + { + if (LogFilter.logDev) + { + Debug.Log("BecomeHost match:" + matchInfo.networkId); + } + NetworkServer.ListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, Utility.GetSourceID(), matchInfo.nodeId); + } + foreach (NetworkIdentity networkIdentity in ClientScene.objects.Values) + { + if (!(networkIdentity == null) && !(networkIdentity.gameObject == null)) + { + NetworkIdentity.AddNetworkId(networkIdentity.netId.Value); + m_NetworkScene.SetLocalObject(networkIdentity.netId, networkIdentity.gameObject, false, false); + networkIdentity.OnStartServer(true); + } + } + if (LogFilter.logDev) + { + Debug.Log("NetworkServer BecomeHost done. oldConnectionId:" + oldConnectionId); + } + RegisterMessageHandlers(); + if (!NetworkClient.RemoveClient(oldClient)) + { + if (LogFilter.logError) + { + Debug.LogError("BecomeHost failed to remove client"); + } + } + if (LogFilter.logDev) + { + Debug.Log("BecomeHost localClient ready"); + } + NetworkClient networkClient = ClientScene.ReconnectLocalServer(); + ClientScene.Ready(networkClient.connection); + ClientScene.SetReconnectId(oldConnectionId, peers); + ClientScene.AddPlayer(ClientScene.readyConnection, 0); + result = networkClient; + } + return result; + } + + private void InternalSetMaxDelay(float seconds) + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + networkConnection.SetMaxDelay(seconds); + } + } + m_MaxDelay = seconds; + } + + internal int AddLocalClient(QSBLocalClient localClient) + { + int result; + if (m_LocalConnectionsFakeList.Count != 0) + { + Debug.LogError("Local Connection already exists"); + result = -1; + } + else + { + m_LocalConnection = new ULocalConnectionToClient(localClient); + m_LocalConnection.connectionId = 0; + m_SimpleServerSimple.SetConnectionAtIndex(m_LocalConnection); + m_LocalConnectionsFakeList.Add(m_LocalConnection); + m_LocalConnection.InvokeHandlerNoData(32); + result = 0; + } + return result; + } + + internal void RemoveLocalClient(QSBNetworkConnection localClientConnection) + { + for (int i = 0; i < m_LocalConnectionsFakeList.Count; i++) + { + if (m_LocalConnectionsFakeList[i].connectionId == localClientConnection.connectionId) + { + m_LocalConnectionsFakeList.RemoveAt(i); + break; + } + } + if (m_LocalConnection != null) + { + m_LocalConnection.Disconnect(); + m_LocalConnection.Dispose(); + m_LocalConnection = null; + } + m_LocalClientActive = false; + m_SimpleServerSimple.RemoveConnectionAtIndex(0); + } + + internal void SetLocalObjectOnServer(NetworkInstanceId netId, GameObject obj) + { + if (LogFilter.logDev) + { + Debug.Log(string.Concat(new object[] + { + "SetLocalObjectOnServer ", + netId, + " ", + obj + })); + } + m_NetworkScene.SetLocalObject(netId, obj, false, true); + } + + internal void ActivateLocalClientScene() + { + if (!m_LocalClientActive) + { + m_LocalClientActive = true; + foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values) + { + if (!networkIdentity.isClient) + { + if (LogFilter.logDev) + { + Debug.Log(string.Concat(new object[] + { + "ActivateClientScene ", + networkIdentity.netId, + " ", + networkIdentity.gameObject + })); + } + ClientScene.SetLocalObject(networkIdentity.netId, networkIdentity.gameObject); + networkIdentity.OnStartClient(); + } + } + } + } + + public static bool SendToAll(short msgType, MessageBase msg) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendToAll msgType:" + msgType); + } + bool flag = true; + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + flag &= networkConnection.Send(msgType, msg); + } + } + return flag; + } + + private static bool SendToObservers(GameObject contextObj, short msgType, MessageBase msg) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendToObservers id:" + msgType); + } + bool flag = true; + NetworkIdentity component = contextObj.GetComponent(); + bool result; + if (component == null || component.observers == null) + { + result = false; + } + else + { + int count = component.observers.Count; + for (int i = 0; i < count; i++) + { + NetworkConnection networkConnection = component.observers[i]; + flag &= networkConnection.Send(msgType, msg); + } + result = flag; + } + return result; + } + + public static bool SendToReady(GameObject contextObj, short msgType, MessageBase msg) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendToReady id:" + msgType); + } + bool result; + if (contextObj == null) + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null && networkConnection.isReady) + { + networkConnection.Send(msgType, msg); + } + } + result = true; + } + else + { + bool flag = true; + NetworkIdentity component = contextObj.GetComponent(); + if (component == null || component.observers == null) + { + result = false; + } + else + { + int count = component.observers.Count; + for (int j = 0; j < count; j++) + { + NetworkConnection networkConnection2 = component.observers[j]; + if (networkConnection2.isReady) + { + flag &= networkConnection2.Send(msgType, msg); + } + } + result = flag; + } + } + return result; + } + + public static void SendWriterToReady(GameObject contextObj, NetworkWriter writer, int channelId) + { + if (writer.AsArraySegment().Count > 32767) + { + throw new UnityException("NetworkWriter used buffer is too big!"); + } + NetworkServer.SendBytesToReady(contextObj, writer.AsArraySegment().Array, writer.AsArraySegment().Count, channelId); + } + + public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int numBytes, int channelId) + { + if (contextObj == null) + { + bool flag = true; + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null && networkConnection.isReady) + { + if (!networkConnection.SendBytes(buffer, numBytes, channelId)) + { + flag = false; + } + } + } + if (!flag) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("SendBytesToReady failed"); + } + } + } + else + { + NetworkIdentity component = contextObj.GetComponent(); + try + { + bool flag2 = true; + int count = component.observers.Count; + for (int j = 0; j < count; j++) + { + NetworkConnection networkConnection2 = component.observers[j]; + if (networkConnection2.isReady) + { + if (!networkConnection2.SendBytes(buffer, numBytes, channelId)) + { + flag2 = false; + } + } + } + if (!flag2) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("SendBytesToReady failed for " + contextObj); + } + } + } + catch (NullReferenceException) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("SendBytesToReady object " + contextObj + " has not been spawned"); + } + } + } + } + + public static void SendBytesToPlayer(GameObject player, byte[] buffer, int numBytes, int channelId) + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + for (int j = 0; j < networkConnection.playerControllers.Count; j++) + { + if (networkConnection.playerControllers[j].IsValid && networkConnection.playerControllers[j].gameObject == player) + { + networkConnection.SendBytes(buffer, numBytes, channelId); + break; + } + } + } + } + } + + public static bool SendUnreliableToAll(short msgType, MessageBase msg) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendUnreliableToAll msgType:" + msgType); + } + bool flag = true; + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + flag &= networkConnection.SendUnreliable(msgType, msg); + } + } + return flag; + } + + public static bool SendUnreliableToReady(GameObject contextObj, short msgType, MessageBase msg) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendUnreliableToReady id:" + msgType); + } + bool result; + if (contextObj == null) + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null && networkConnection.isReady) + { + networkConnection.SendUnreliable(msgType, msg); + } + } + result = true; + } + else + { + bool flag = true; + NetworkIdentity component = contextObj.GetComponent(); + int count = component.observers.Count; + for (int j = 0; j < count; j++) + { + NetworkConnection networkConnection2 = component.observers[j]; + if (networkConnection2.isReady) + { + flag &= networkConnection2.SendUnreliable(msgType, msg); + } + } + result = flag; + } + return result; + } + + public static bool SendByChannelToAll(short msgType, MessageBase msg, int channelId) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendByChannelToAll id:" + msgType); + } + bool flag = true; + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + flag &= networkConnection.SendByChannel(msgType, msg, channelId); + } + } + return flag; + } + + public static bool SendByChannelToReady(GameObject contextObj, short msgType, MessageBase msg, int channelId) + { + if (LogFilter.logDev) + { + Debug.Log("Server.SendByChannelToReady msgType:" + msgType); + } + bool result; + if (contextObj == null) + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null && networkConnection.isReady) + { + networkConnection.SendByChannel(msgType, msg, channelId); + } + } + result = true; + } + else + { + bool flag = true; + NetworkIdentity component = contextObj.GetComponent(); + int count = component.observers.Count; + for (int j = 0; j < count; j++) + { + NetworkConnection networkConnection2 = component.observers[j]; + if (networkConnection2.isReady) + { + flag &= networkConnection2.SendByChannel(msgType, msg, channelId); + } + } + result = flag; + } + return result; + } + + public static void DisconnectAll() + { + instance.InternalDisconnectAll(); + } + + internal void InternalDisconnectAll() + { + m_SimpleServerSimple.DisconnectAllConnections(); + if (m_LocalConnection != null) + { + m_LocalConnection.Disconnect(); + m_LocalConnection.Dispose(); + m_LocalConnection = null; + } + m_LocalClientActive = false; + } + + internal static void Update() + { + if (NetworkServer.s_Instance != null) + { + NetworkServer.s_Instance.InternalUpdate(); + } + } + + private void UpdateServerObjects() + { + foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values) + { + try + { + networkIdentity.UNetUpdate(); + } + catch (NullReferenceException) + { + } + catch (MissingReferenceException) + { + } + } + if (m_RemoveListCount++ % 100 == 0) + { + CheckForNullObjects(); + } + } + + private void CheckForNullObjects() + { + foreach (NetworkInstanceId networkInstanceId in NetworkServer.objects.Keys) + { + NetworkIdentity networkIdentity = NetworkServer.objects[networkInstanceId]; + if (networkIdentity == null || networkIdentity.gameObject == null) + { + m_RemoveList.Add(networkInstanceId); + } + } + if (m_RemoveList.Count > 0) + { + foreach (NetworkInstanceId key in m_RemoveList) + { + NetworkServer.objects.Remove(key); + } + m_RemoveList.Clear(); + } + } + + internal void InternalUpdate() + { + m_SimpleServerSimple.Update(); + if (NetworkServer.m_DontListen) + { + m_SimpleServerSimple.UpdateConnections(); + } + UpdateServerObjects(); + } + + private void OnConnected(NetworkConnection conn) + { + if (LogFilter.logDebug) + { + Debug.Log("Server accepted client:" + conn.connectionId); + } + conn.SetMaxDelay(m_MaxDelay); + conn.InvokeHandlerNoData(32); + NetworkServer.SendCrc(conn); + } + + private void OnDisconnected(NetworkConnection conn) + { + conn.InvokeHandlerNoData(33); + for (int i = 0; i < conn.playerControllers.Count; i++) + { + if (conn.playerControllers[i].gameObject != null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Player not destroyed when connection disconnected."); + } + } + } + if (LogFilter.logDebug) + { + Debug.Log("Server lost client:" + conn.connectionId); + } + conn.RemoveObservers(); + conn.Dispose(); + } + + private void OnData(NetworkConnection conn, int receivedSize, int channelId) + { + conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); + } + + private void GenerateConnectError(int error) + { + if (LogFilter.logError) + { + Debug.LogError("UNet Server Connect Error: " + error); + } + GenerateError(null, error); + } + + private void GenerateDataError(NetworkConnection conn, int error) + { + if (LogFilter.logError) + { + Debug.LogError("UNet Server Data Error: " + (NetworkError)error); + } + GenerateError(conn, error); + } + + private void GenerateDisconnectError(NetworkConnection conn, int error) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "UNet Server Disconnect Error: ", + (NetworkError)error, + " conn:[", + conn, + "]:", + conn.connectionId + })); + } + GenerateError(conn, error); + } + + private void GenerateError(NetworkConnection conn, int error) + { + if (NetworkServer.handlers.ContainsKey(34)) + { + ErrorMessage errorMessage = new ErrorMessage(); + errorMessage.errorCode = error; + NetworkWriter writer = new NetworkWriter(); + errorMessage.Serialize(writer); + NetworkReader reader = new NetworkReader(writer); + conn.InvokeHandler(34, reader, 0); + } + } + + public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); + } + + public static void UnregisterHandler(short msgType) + { + instance.m_SimpleServerSimple.UnregisterHandler(msgType); + } + + public static void ClearHandlers() + { + instance.m_SimpleServerSimple.ClearHandlers(); + } + + public static void ClearSpawners() + { + NetworkScene.ClearSpawners(); + } + + public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) + { + numMsgs = 0; + numBufferedMsgs = 0; + numBytes = 0; + lastBufferedPerSecond = 0; + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + int num; + int num2; + int num3; + int num4; + networkConnection.GetStatsOut(out num, out num2, out num3, out num4); + numMsgs += num; + numBufferedMsgs += num2; + numBytes += num3; + lastBufferedPerSecond += num4; + } + } + } + + public static void GetStatsIn(out int numMsgs, out int numBytes) + { + numMsgs = 0; + numBytes = 0; + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + int num; + int num2; + networkConnection.GetStatsIn(out num, out num2); + numMsgs += num; + numBytes += num2; + } + } + } + + public static void SendToClientOfPlayer(GameObject player, short msgType, MessageBase msg) + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + for (int j = 0; j < networkConnection.playerControllers.Count; j++) + { + if (networkConnection.playerControllers[j].IsValid && networkConnection.playerControllers[j].gameObject == player) + { + networkConnection.Send(msgType, msg); + return; + } + } + } + } + if (LogFilter.logError) + { + Debug.LogError("Failed to send message to player object '" + player.name + ", not found in connection list"); + return; + } + } + + public static void SendToClient(int connectionId, short msgType, MessageBase msg) + { + if (connectionId < NetworkServer.connections.Count) + { + NetworkConnection networkConnection = NetworkServer.connections[connectionId]; + if (networkConnection != null) + { + networkConnection.Send(msgType, msg); + return; + } + } + if (LogFilter.logError) + { + Debug.LogError("Failed to send message to connection ID '" + connectionId + ", not found in connection list"); + } + } + + public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) + { + NetworkIdentity networkIdentity; + if (NetworkServer.GetNetworkIdentity(player, out networkIdentity)) + { + networkIdentity.SetDynamicAssetId(assetId); + } + return instance.InternalReplacePlayerForConnection(conn, player, playerControllerId); + } + + public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId) + { + return instance.InternalReplacePlayerForConnection(conn, player, playerControllerId); + } + + public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) + { + NetworkIdentity networkIdentity; + if (NetworkServer.GetNetworkIdentity(player, out networkIdentity)) + { + networkIdentity.SetDynamicAssetId(assetId); + } + return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); + } + + public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId) + { + return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); + } + + internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject playerGameObject, short playerControllerId) + { + NetworkIdentity networkIdentity; + bool result; + if (!NetworkServer.GetNetworkIdentity(playerGameObject, out networkIdentity)) + { + if (LogFilter.logError) + { + Debug.Log("AddPlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject); + } + result = false; + } + else + { + networkIdentity.Reset(); + if (!NetworkServer.CheckPlayerControllerIdForConnection(conn, playerControllerId)) + { + result = false; + } + else + { + PlayerController playerController = null; + GameObject x = null; + if (conn.GetPlayerController(playerControllerId, out playerController)) + { + x = playerController.gameObject; + } + if (x != null) + { + if (LogFilter.logError) + { + Debug.Log("AddPlayer: player object already exists for playerControllerId of " + playerControllerId); + } + result = false; + } + else + { + PlayerController playerController2 = new PlayerController(playerGameObject, playerControllerId); + conn.SetPlayerController(playerController2); + networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId); + NetworkServer.SetClientReady(conn); + if (SetupLocalPlayerForConnection(conn, networkIdentity, playerController2)) + { + result = true; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Adding new playerGameObject object netId: ", + playerGameObject.GetComponent().netId, + " asset ID ", + playerGameObject.GetComponent().assetId + })); + } + NetworkServer.FinishPlayerForConnection(conn, networkIdentity, playerGameObject); + if (networkIdentity.localPlayerAuthority) + { + networkIdentity.SetClientOwner(conn); + } + result = true; + } + } + } + } + return result; + } + + private static bool CheckPlayerControllerIdForConnection(NetworkConnection conn, short playerControllerId) + { + bool result; + if (playerControllerId < 0) + { + if (LogFilter.logError) + { + Debug.LogError("AddPlayer: playerControllerId of " + playerControllerId + " is negative"); + } + result = false; + } + else if (playerControllerId > 32) + { + if (LogFilter.logError) + { + Debug.Log(string.Concat(new object[] + { + "AddPlayer: playerControllerId of ", + playerControllerId, + " is too high. max is ", + 32 + })); + } + result = false; + } + else + { + if (playerControllerId > 16) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); + } + } + result = true; + } + return result; + } + + private bool SetupLocalPlayerForConnection(NetworkConnection conn, NetworkIdentity uv, PlayerController newPlayerController) + { + if (LogFilter.logDev) + { + Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.netId); + } + ULocalConnectionToClient ulocalConnectionToClient = conn as ULocalConnectionToClient; + bool result; + if (ulocalConnectionToClient != null) + { + if (LogFilter.logDev) + { + Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); + } + if (uv.netId.IsEmpty()) + { + uv.OnStartServer(true); + } + uv.RebuildObservers(true); + SendSpawnMessage(uv, null); + ulocalConnectionToClient.localClient.AddLocalPlayer(newPlayerController); + uv.SetClientOwner(conn); + uv.ForceAuthority(true); + uv.SetLocalPlayer(newPlayerController.playerControllerId); + result = true; + } + else + { + result = false; + } + return result; + } + + private static void FinishPlayerForConnection(NetworkConnection conn, NetworkIdentity uv, GameObject playerGameObject) + { + if (uv.netId.IsEmpty()) + { + NetworkServer.Spawn(playerGameObject); + } + conn.Send(4, new OwnerMessage + { + netId = uv.netId, + playerControllerId = uv.playerControllerId + }); + } + + internal bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObject playerGameObject, short playerControllerId) + { + NetworkIdentity networkIdentity; + bool result; + if (!NetworkServer.GetNetworkIdentity(playerGameObject, out networkIdentity)) + { + if (LogFilter.logError) + { + Debug.LogError("ReplacePlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject); + } + result = false; + } + else if (!NetworkServer.CheckPlayerControllerIdForConnection(conn, playerControllerId)) + { + result = false; + } + else + { + if (LogFilter.logDev) + { + Debug.Log("NetworkServer ReplacePlayer"); + } + PlayerController playerController; + if (conn.GetPlayerController(playerControllerId, out playerController)) + { + playerController.unetView.SetNotLocalPlayer(); + playerController.unetView.ClearClientOwner(); + } + PlayerController playerController2 = new PlayerController(playerGameObject, playerControllerId); + conn.SetPlayerController(playerController2); + networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId); + if (LogFilter.logDev) + { + Debug.Log("NetworkServer ReplacePlayer setup local"); + } + if (SetupLocalPlayerForConnection(conn, networkIdentity, playerController2)) + { + result = true; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Replacing playerGameObject object netId: ", + playerGameObject.GetComponent().netId, + " asset ID ", + playerGameObject.GetComponent().assetId + })); + } + NetworkServer.FinishPlayerForConnection(conn, networkIdentity, playerGameObject); + if (networkIdentity.localPlayerAuthority) + { + networkIdentity.SetClientOwner(conn); + } + result = true; + } + } + return result; + } + + private static bool GetNetworkIdentity(GameObject go, out NetworkIdentity view) + { + view = go.GetComponent(); + bool result; + if (view == null) + { + if (LogFilter.logError) + { + Debug.LogError("UNET failure. GameObject doesn't have NetworkIdentity."); + } + result = false; + } + else + { + result = true; + } + return result; + } + + public static void SetClientReady(NetworkConnection conn) + { + instance.SetClientReadyInternal(conn); + } + + internal void SetClientReadyInternal(NetworkConnection conn) + { + if (LogFilter.logDebug) + { + Debug.Log("SetClientReadyInternal for conn:" + conn.connectionId); + } + if (conn.isReady) + { + if (LogFilter.logDebug) + { + Debug.Log("SetClientReady conn " + conn.connectionId + " already ready"); + } + } + else + { + if (conn.playerControllers.Count == 0) + { + if (LogFilter.logDebug) + { + Debug.LogWarning("Ready with no player object"); + } + } + conn.isReady = true; + ULocalConnectionToClient ulocalConnectionToClient = conn as ULocalConnectionToClient; + if (ulocalConnectionToClient != null) + { + if (LogFilter.logDev) + { + Debug.Log("NetworkServer Ready handling ULocalConnectionToClient"); + } + foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values) + { + if (networkIdentity != null && networkIdentity.gameObject != null) + { + bool flag = networkIdentity.OnCheckObserver(conn); + if (flag) + { + networkIdentity.AddObserver(conn); + } + if (!networkIdentity.isClient) + { + if (LogFilter.logDev) + { + Debug.Log("LocalClient.SetSpawnObject calling OnStartClient"); + } + networkIdentity.OnStartClient(); + } + } + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Spawning ", + NetworkServer.objects.Count, + " objects for conn ", + conn.connectionId + })); + } + ObjectSpawnFinishedMessage objectSpawnFinishedMessage = new ObjectSpawnFinishedMessage(); + objectSpawnFinishedMessage.state = 0U; + conn.Send(12, objectSpawnFinishedMessage); + foreach (NetworkIdentity networkIdentity2 in NetworkServer.objects.Values) + { + if (networkIdentity2 == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Invalid object found in server local object list (null NetworkIdentity)."); + } + } + else if (networkIdentity2.gameObject.activeSelf) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Sending spawn message for current server objects name='", + networkIdentity2.gameObject.name, + "' netId=", + networkIdentity2.netId + })); + } + bool flag2 = networkIdentity2.OnCheckObserver(conn); + if (flag2) + { + networkIdentity2.AddObserver(conn); + } + } + } + objectSpawnFinishedMessage.state = 1U; + conn.Send(12, objectSpawnFinishedMessage); + } + } + } + + internal static void ShowForConnection(NetworkIdentity uv, NetworkConnection conn) + { + if (conn.isReady) + { + instance.SendSpawnMessage(uv, conn); + } + } + + internal static void HideForConnection(QSBNetworkIdentity uv, QSBNetworkConnection conn) + { + conn.Send(13, new QSBObjectDestroyMessage + { + netId = uv.NetId + }); + } + + public static void SetAllClientsNotReady() + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + NetworkServer.SetClientNotReady(networkConnection); + } + } + } + + public static void SetClientNotReady(NetworkConnection conn) + { + instance.InternalSetClientNotReady(conn); + } + + internal void InternalSetClientNotReady(NetworkConnection conn) + { + if (conn.isReady) + { + if (LogFilter.logDebug) + { + Debug.Log("PlayerNotReady " + conn); + } + conn.isReady = false; + conn.RemoveObservers(); + NotReadyMessage msg = new NotReadyMessage(); + conn.Send(36, msg); + } + } + + private static void OnClientReadyMessage(NetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("Default handler for ready message from " + netMsg.conn); + } + NetworkServer.SetClientReady(netMsg.conn); + } + + private static void OnRemovePlayerMessage(NetworkMessage netMsg) + { + netMsg.ReadMessage(NetworkServer.s_RemovePlayerMessage); + PlayerController playerController = null; + netMsg.conn.GetPlayerController(NetworkServer.s_RemovePlayerMessage.playerControllerId, out playerController); + if (playerController != null) + { + netMsg.conn.RemovePlayerController(NetworkServer.s_RemovePlayerMessage.playerControllerId); + NetworkServer.Destroy(playerController.gameObject); + } + else if (LogFilter.logError) + { + Debug.LogError("Received remove player message but could not find the player ID: " + NetworkServer.s_RemovePlayerMessage.playerControllerId); + } + } + + private static void OnCommandMessage(NetworkMessage netMsg) + { + int cmdHash = (int)netMsg.reader.ReadPackedUInt32(); + NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId(); + GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId); + if (gameObject == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Instance not found when handling Command message [netId=" + networkInstanceId + "]"); + } + } + else + { + NetworkIdentity component = gameObject.GetComponent(); + if (component == null) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkIdentity deleted when handling Command message [netId=" + networkInstanceId + "]"); + } + } + else + { + bool flag = false; + for (int i = 0; i < netMsg.conn.playerControllers.Count; i++) + { + PlayerController playerController = netMsg.conn.playerControllers[i]; + if (playerController.gameObject != null && playerController.gameObject.GetComponent().netId == component.netId) + { + flag = true; + break; + } + } + if (!flag) + { + if (component.clientAuthorityOwner != netMsg.conn) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Command for object without authority [netId=" + networkInstanceId + "]"); + } + return; + } + } + if (LogFilter.logDev) + { + Debug.Log(string.Concat(new object[] + { + "OnCommandMessage for netId=", + networkInstanceId, + " conn=", + netMsg.conn + })); + } + component.HandleCommand(cmdHash, netMsg.reader); + } + } + } + + internal void SpawnObject(GameObject obj) + { + NetworkIdentity networkIdentity; + if (!NetworkServer.active) + { + if (LogFilter.logError) + { + Debug.LogError("SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); + } + } + else if (!NetworkServer.GetNetworkIdentity(obj, out networkIdentity)) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "SpawnObject ", + obj, + " has no NetworkIdentity. Please add a NetworkIdentity to ", + obj + })); + } + } + else + { + networkIdentity.Reset(); + networkIdentity.OnStartServer(false); + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "SpawnObject instance ID ", + networkIdentity.netId, + " asset ID ", + networkIdentity.assetId + })); + } + networkIdentity.RebuildObservers(true); + } + } + + internal void SendSpawnMessage(NetworkIdentity uv, NetworkConnection conn) + { + if (!uv.serverOnly) + { + if (uv.sceneId.IsEmpty()) + { + ObjectSpawnMessage objectSpawnMessage = new ObjectSpawnMessage(); + objectSpawnMessage.netId = uv.netId; + objectSpawnMessage.assetId = uv.assetId; + objectSpawnMessage.position = uv.transform.position; + objectSpawnMessage.rotation = uv.transform.rotation; + NetworkWriter networkWriter = new NetworkWriter(); + uv.UNetSerializeAllVars(networkWriter); + if (networkWriter.Position > 0) + { + objectSpawnMessage.payload = networkWriter.ToArray(); + } + if (conn != null) + { + conn.Send(3, objectSpawnMessage); + } + else + { + NetworkServer.SendToReady(uv.gameObject, 3, objectSpawnMessage); + } + } + else + { + ObjectSpawnSceneMessage objectSpawnSceneMessage = new ObjectSpawnSceneMessage(); + objectSpawnSceneMessage.netId = uv.netId; + objectSpawnSceneMessage.sceneId = uv.sceneId; + objectSpawnSceneMessage.position = uv.transform.position; + NetworkWriter networkWriter2 = new NetworkWriter(); + uv.UNetSerializeAllVars(networkWriter2); + if (networkWriter2.Position > 0) + { + objectSpawnSceneMessage.payload = networkWriter2.ToArray(); + } + if (conn != null) + { + conn.Send(10, objectSpawnSceneMessage); + } + else + { + NetworkServer.SendToReady(uv.gameObject, 3, objectSpawnSceneMessage); + } + } + } + } + + public static void DestroyPlayersForConnection(NetworkConnection conn) + { + if (conn.playerControllers.Count == 0) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Empty player list given to NetworkServer.Destroy(), nothing to do."); + } + } + else + { + if (conn.clientOwnedObjects != null) + { + HashSet hashSet = new HashSet(conn.clientOwnedObjects); + foreach (NetworkInstanceId netId in hashSet) + { + GameObject gameObject = NetworkServer.FindLocalObject(netId); + if (gameObject != null) + { + NetworkServer.DestroyObject(gameObject); + } + } + } + for (int i = 0; i < conn.playerControllers.Count; i++) + { + PlayerController playerController = conn.playerControllers[i]; + if (playerController.IsValid) + { + if (!(playerController.unetView == null)) + { + NetworkServer.DestroyObject(playerController.unetView, true); + } + playerController.gameObject = null; + } + } + conn.playerControllers.Clear(); + } + } + + private static void UnSpawnObject(GameObject obj) + { + NetworkIdentity uv; + if (obj == null) + { + if (LogFilter.logDev) + { + Debug.Log("NetworkServer UnspawnObject is null"); + } + } + else if (NetworkServer.GetNetworkIdentity(obj, out uv)) + { + NetworkServer.UnSpawnObject(uv); + } + } + + private static void UnSpawnObject(NetworkIdentity uv) + { + NetworkServer.DestroyObject(uv, false); + } + + private static void DestroyObject(GameObject obj) + { + NetworkIdentity uv; + if (obj == null) + { + if (LogFilter.logDev) + { + Debug.Log("NetworkServer DestroyObject is null"); + } + } + else if (NetworkServer.GetNetworkIdentity(obj, out uv)) + { + NetworkServer.DestroyObject(uv, true); + } + } + + private static void DestroyObject(NetworkIdentity uv, bool destroyServerObject) + { + if (LogFilter.logDebug) + { + Debug.Log("DestroyObject instance:" + uv.netId); + } + if (NetworkServer.objects.ContainsKey(uv.netId)) + { + NetworkServer.objects.Remove(uv.netId); + } + if (uv.clientAuthorityOwner != null) + { + uv.clientAuthorityOwner.RemoveOwnedObject(uv); + } + ObjectDestroyMessage objectDestroyMessage = new ObjectDestroyMessage(); + objectDestroyMessage.netId = uv.netId; + NetworkServer.SendToObservers(uv.gameObject, 1, objectDestroyMessage); + uv.ClearObservers(); + if (NetworkClient.active && instance.m_LocalClientActive) + { + uv.OnNetworkDestroy(); + ClientScene.SetLocalObject(objectDestroyMessage.netId, null); + } + if (destroyServerObject) + { + Object.Destroy(uv.gameObject); + } + uv.MarkForReset(); + } + + public static void ClearLocalObjects() + { + NetworkServer.objects.Clear(); + } + + public static void Spawn(GameObject obj) + { + if (NetworkServer.VerifyCanSpawn(obj)) + { + instance.SpawnObject(obj); + } + } + + private static bool CheckForPrefab(GameObject obj) + { + return false; + } + + private static bool VerifyCanSpawn(GameObject obj) + { + bool result; + if (NetworkServer.CheckForPrefab(obj)) + { + Debug.LogErrorFormat("GameObject {0} is a prefab, it can't be spawned. This will cause errors in builds.", new object[] + { + obj.name + }); + result = false; + } + else + { + result = true; + } + return result; + } + + public static bool SpawnWithClientAuthority(GameObject obj, GameObject player) + { + NetworkIdentity component = player.GetComponent(); + bool result; + if (component == null) + { + Debug.LogError("SpawnWithClientAuthority player object has no NetworkIdentity"); + result = false; + } + else if (component.connectionToClient == null) + { + Debug.LogError("SpawnWithClientAuthority player object is not a player."); + result = false; + } + else + { + result = NetworkServer.SpawnWithClientAuthority(obj, component.connectionToClient); + } + return result; + } + + public static bool SpawnWithClientAuthority(GameObject obj, QSBNetworkConnection conn) + { + bool result; + if (!conn.isReady) + { + Debug.LogError("SpawnWithClientAuthority NetworkConnection is not ready!"); + result = false; + } + else + { + NetworkServer.Spawn(obj); + NetworkIdentity component = obj.GetComponent(); + result = (!(component == null) && component.isServer && component.AssignClientAuthority(conn)); + } + return result; + } + + public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, NetworkConnection conn) + { + NetworkServer.Spawn(obj, assetId); + NetworkIdentity component = obj.GetComponent(); + return !(component == null) && component.isServer && component.AssignClientAuthority(conn); + } + + public static void Spawn(GameObject obj, NetworkHash128 assetId) + { + if (NetworkServer.VerifyCanSpawn(obj)) + { + NetworkIdentity networkIdentity; + if (NetworkServer.GetNetworkIdentity(obj, out networkIdentity)) + { + networkIdentity.SetDynamicAssetId(assetId); + } + instance.SpawnObject(obj); + } + } + + public static void Destroy(GameObject obj) + { + NetworkServer.DestroyObject(obj); + } + + public static void UnSpawn(GameObject obj) + { + NetworkServer.UnSpawnObject(obj); + } + + internal bool InvokeBytes(ULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) + { + NetworkReader networkReader = new NetworkReader(buffer); + networkReader.ReadInt16(); + short num = networkReader.ReadInt16(); + bool result; + if (NetworkServer.handlers.ContainsKey(num) && m_LocalConnection != null) + { + m_LocalConnection.InvokeHandler(num, networkReader, channelId); + result = true; + } + else + { + result = false; + } + return result; + } + + internal bool InvokeHandlerOnServer(ULocalConnectionToServer conn, short msgType, MessageBase msg, int channelId) + { + bool result; + if (NetworkServer.handlers.ContainsKey(msgType) && m_LocalConnection != null) + { + NetworkWriter writer = new NetworkWriter(); + msg.Serialize(writer); + NetworkReader reader = new NetworkReader(writer); + m_LocalConnection.InvokeHandler(msgType, reader, channelId); + result = true; + } + else + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Local invoke: Failed to find local connection to invoke handler on [connectionId=", + conn.connectionId, + "] for MsgId:", + msgType + })); + } + result = false; + } + return result; + } + + public static GameObject FindLocalObject(NetworkInstanceId netId) + { + return instance.m_NetworkScene.FindLocalObject(netId); + } + + public static Dictionary GetConnectionStats() + { + Dictionary dictionary = new Dictionary(); + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + foreach (short key in networkConnection.packetStats.Keys) + { + if (dictionary.ContainsKey(key)) + { + NetworkConnection.PacketStat packetStat = dictionary[key]; + packetStat.count += networkConnection.packetStats[key].count; + packetStat.bytes += networkConnection.packetStats[key].bytes; + dictionary[key] = packetStat; + } + else + { + dictionary[key] = new NetworkConnection.PacketStat(networkConnection.packetStats[key]); + } + } + } + } + return dictionary; + } + + public static void ResetConnectionStats() + { + for (int i = 0; i < NetworkServer.connections.Count; i++) + { + NetworkConnection networkConnection = NetworkServer.connections[i]; + if (networkConnection != null) + { + networkConnection.ResetStats(); + } + } + } + + public static bool AddExternalConnection(NetworkConnection conn) + { + return instance.AddExternalConnectionInternal(conn); + } + + private bool AddExternalConnectionInternal(NetworkConnection conn) + { + bool result; + if (conn.connectionId < 0) + { + result = false; + } + else if (conn.connectionId < NetworkServer.connections.Count && NetworkServer.connections[conn.connectionId] != null) + { + if (LogFilter.logError) + { + Debug.LogError("AddExternalConnection failed, already connection for id:" + conn.connectionId); + } + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("AddExternalConnection external connection " + conn.connectionId); + } + m_SimpleServerSimple.SetConnectionAtIndex(conn); + m_ExternalConnections.Add(conn.connectionId); + conn.InvokeHandlerNoData(32); + result = true; + } + return result; + } + + public static void RemoveExternalConnection(int connectionId) + { + instance.RemoveExternalConnectionInternal(connectionId); + } + + private bool RemoveExternalConnectionInternal(int connectionId) + { + bool result; + if (!m_ExternalConnections.Contains(connectionId)) + { + if (LogFilter.logError) + { + Debug.LogError("RemoveExternalConnection failed, no connection for id:" + connectionId); + } + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("RemoveExternalConnection external connection " + connectionId); + } + NetworkConnection networkConnection = m_SimpleServerSimple.FindConnection(connectionId); + if (networkConnection != null) + { + networkConnection.RemoveObservers(); + } + m_SimpleServerSimple.RemoveConnectionAtIndex(connectionId); + result = true; + } + return result; + } + + private static bool ValidateSceneObject(NetworkIdentity netId) + { + return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.sceneId.IsEmpty(); + } + + public static bool SpawnObjects() + { + bool result; + if (!NetworkServer.active) + { + result = true; + } + else + { + foreach (NetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll()) + { + if (NetworkServer.ValidateSceneObject(networkIdentity)) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "SpawnObjects sceneId:", + networkIdentity.sceneId, + " name:", + networkIdentity.gameObject.name + })); + } + networkIdentity.Reset(); + networkIdentity.gameObject.SetActive(true); + } + } + NetworkIdentity[] array; + foreach (NetworkIdentity networkIdentity2 in array) + { + if (NetworkServer.ValidateSceneObject(networkIdentity2)) + { + NetworkServer.Spawn(networkIdentity2.gameObject); + networkIdentity2.ForceAuthority(true); + } + } + result = true; + } + return result; + } + + private static void SendCrc(NetworkConnection targetConnection) + { + if (NetworkCRC.singleton != null) + { + if (NetworkCRC.scriptCRCCheck) + { + CRCMessage crcmessage = new CRCMessage(); + List list = new List(); + foreach (string text in NetworkCRC.singleton.scripts.Keys) + { + list.Add(new CRCMessageEntry + { + name = text, + channel = (byte)NetworkCRC.singleton.scripts[text] + }); + } + crcmessage.scripts = list.ToArray(); + targetConnection.Send(14, crcmessage); + } + } + } + + [Obsolete("moved to NetworkMigrationManager")] + public void SendNetworkInfo(NetworkConnection targetConnection) + { + } + + private static bool s_Active; + + private static volatile QSBNetworkServer s_Instance; + + private static object s_Sync = new Object(); + + private static bool m_DontListen; + + private bool m_LocalClientActive; + + private List m_LocalConnectionsFakeList = new List(); + + private ULocalConnectionToClient m_LocalConnection = null; + + private NetworkScene m_NetworkScene; + + private HashSet m_ExternalConnections; + + private ServerSimpleWrapper m_SimpleServerSimple; + + private float m_MaxDelay = 0.1f; + + private HashSet m_RemoveList; + + private int m_RemoveListCount; + + private const int k_RemoveListInterval = 100; + + internal static ushort maxPacketSize; + + private static RemovePlayerMessage s_RemovePlayerMessage = new RemovePlayerMessage(); + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache0; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache1; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache2; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache3; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache4; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache5; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache6; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache7; + + [CompilerGenerated] + private static NetworkMessageDelegate<> f__mg$cache8; + + private class ServerSimpleWrapper : NetworkServerSimple + { + public ServerSimpleWrapper(QSBNetworkServer server) + { + m_Server = server; + } + + public override void OnConnectError(int connectionId, byte error) + { + m_Server.GenerateConnectError((int)error); + } + + public override void OnDataError(QSBNetworkConnection conn, byte error) + { + m_Server.GenerateDataError(conn, (int)error); + } + + public override void OnDisconnectError(QSBNetworkConnection conn, byte error) + { + m_Server.GenerateDisconnectError(conn, (int)error); + } + + public override void OnConnected(QSBNetworkConnection conn) + { + m_Server.OnConnected(conn); + } + + public override void OnDisconnected(QSBNetworkConnection conn) + { + m_Server.OnDisconnected(conn); + } + + public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) + { + m_Server.OnData(conn, receivedSize, channelId); + } + + private QSBNetworkServer m_Server; + } + } +} diff --git a/QSB/QSBObjectDestroyMessage.cs b/QSB/QSBObjectDestroyMessage.cs new file mode 100644 index 000000000..962c693cf --- /dev/null +++ b/QSB/QSBObjectDestroyMessage.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBObjectDestroyMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + } + + public NetworkInstanceId netId; + } +} diff --git a/QSB/QSBObjectSpawnFinishedMessage.cs b/QSB/QSBObjectSpawnFinishedMessage.cs new file mode 100644 index 000000000..7ea6306d1 --- /dev/null +++ b/QSB/QSBObjectSpawnFinishedMessage.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBObjectSpawnFinishedMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + state = reader.ReadPackedUInt32(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.WritePackedUInt32(state); + } + + public uint state; + } +} diff --git a/QSB/QSBObjectSpawnMessage.cs b/QSB/QSBObjectSpawnMessage.cs new file mode 100644 index 000000000..7a0f45b54 --- /dev/null +++ b/QSB/QSBObjectSpawnMessage.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBObjectSpawnMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + assetId = reader.ReadNetworkHash128(); + position = reader.ReadVector3(); + payload = reader.ReadBytesAndSize(); + uint num = 16U; + if ((long)reader.Length - (long)((ulong)reader.Position) >= (long)((ulong)num)) + { + rotation = reader.ReadQuaternion(); + } + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.Write(assetId); + writer.Write(position); + writer.WriteBytesFull(payload); + writer.Write(rotation); + } + + public NetworkInstanceId netId; + + public NetworkHash128 assetId; + + public Vector3 position; + + public byte[] payload; + + public Quaternion rotation; + } +} diff --git a/QSB/QSBObjectSpawnSceneMessage.cs b/QSB/QSBObjectSpawnSceneMessage.cs new file mode 100644 index 000000000..05754b53e --- /dev/null +++ b/QSB/QSBObjectSpawnSceneMessage.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBObjectSpawnSceneMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + this.netId = reader.ReadNetworkId(); + this.sceneId = reader.ReadSceneId(); + this.position = reader.ReadVector3(); + this.payload = reader.ReadBytesAndSize(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(this.netId); + writer.Write(this.sceneId); + writer.Write(this.position); + writer.WriteBytesFull(this.payload); + } + + public NetworkInstanceId netId; + + public NetworkSceneId sceneId; + + public Vector3 position; + + public byte[] payload; + } +} diff --git a/QSB/QSBOwnerMessage.cs b/QSB/QSBOwnerMessage.cs new file mode 100644 index 000000000..684f3f9a7 --- /dev/null +++ b/QSB/QSBOwnerMessage.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBOwnerMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + playerControllerId = (short)reader.ReadPackedUInt32(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)playerControllerId); + } + + public NetworkInstanceId netId; + + public short playerControllerId; + } +} diff --git a/QSB/QSBPlayerController.cs b/QSB/QSBPlayerController.cs new file mode 100644 index 000000000..ed4da952b --- /dev/null +++ b/QSB/QSBPlayerController.cs @@ -0,0 +1,40 @@ +using UnityEngine; + +namespace QSB +{ + public class QSBPlayerController + { + public QSBPlayerController() + { + } + + internal QSBPlayerController(GameObject go, short playerControllerId) + { + gameObject = go; + unetView = go.GetComponent(); + this.playerControllerId = playerControllerId; + } + + public bool IsValid => playerControllerId != -1; + + public override string ToString() + { + return string.Format("ID={0} NetworkIdentity NetID={1} Player={2}", new object[] + { + playerControllerId, + (!(unetView != null)) ? "null" : unetView.NetId.ToString(), + (!(gameObject != null)) ? "null" : gameObject.name + }); + } + + internal const short kMaxLocalPlayers = 8; + + public short playerControllerId = -1; + + public QSBNetworkIdentity unetView; + + public GameObject gameObject; + + public const int MaxPlayersPerClient = 32; + } +} diff --git a/QSB/QSBUtility.cs b/QSB/QSBUtility.cs new file mode 100644 index 000000000..ceac74827 --- /dev/null +++ b/QSB/QSBUtility.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking.Types; + +namespace QSB +{ + public class QSBUtility + { + private QSBUtility() + { + } + + [Obsolete("This property is unused and should not be referenced in code.", true)] + public static bool useRandomSourceID + { + get + { + return false; + } + set + { + } + } + + public static SourceID GetSourceID() + { + return (SourceID)((long)SystemInfo.deviceUniqueIdentifier.GetHashCode()); + } + + [Obsolete("This function is unused and should not be referenced in code. Please sign in and setup your project in the editor instead.", true)] + public static void SetAppID(AppID newAppID) + { + } + + [Obsolete("This function is unused and should not be referenced in code. Please sign in and setup your project in the editor instead.", true)] + public static AppID GetAppID() + { + return AppID.Invalid; + } + + public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) + { + if (s_dictTokens.ContainsKey(netId)) + { + s_dictTokens.Remove(netId); + } + s_dictTokens.Add(netId, accessToken); + } + + public static NetworkAccessToken GetAccessTokenForNetwork(NetworkID netId) + { + NetworkAccessToken result; + if (!s_dictTokens.TryGetValue(netId, out result)) + { + result = new NetworkAccessToken(); + } + return result; + } + + private static Dictionary s_dictTokens = new Dictionary(); + } +} From c293fd53c5a583cebb7b34f9e86e3745131490e8 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 18:40:38 +0000 Subject: [PATCH 103/207] more --- QSB/Animation/QSBNetworkAnimator.cs | 20 +- QSB/EventsCore/QSBEvent.cs | 2 +- QSB/GeyserSync/QSBGeyser.cs | 2 +- QSB/MessagesCore/MessageHandler.cs | 16 +- QSB/OrbSync/Events/OrbUserEvent.cs | 6 +- QSB/OrbSync/OrbManager.cs | 8 +- QSB/QSB.cs | 7 +- QSB/QSB.csproj | 13 + QSB/QSBCRCMessage.cs | 36 + QSB/QSBCRCMessageEntry.cs | 14 + QSB/QSBChannelBuffer.cs | 431 +++++++ QSB/QSBChannelPacket.cs | 85 ++ QSB/QSBClientScene.cs | 46 +- QSB/QSBLocalClient.cs | 8 +- QSB/QSBNetBuffer.cs | 201 ++++ QSB/QSBNetworkBehaviour.cs | 8 +- QSB/QSBNetworkCRC.cs | 169 +++ QSB/QSBNetworkClient.cs | 102 +- QSB/QSBNetworkConnection.cs | 8 +- QSB/QSBNetworkIdentity.cs | 57 +- QSB/QSBNetworkManager.cs | 27 +- QSB/QSBNetworkManagerHUD.cs | 262 ++++ QSB/QSBNetworkManagerUNET.cs | 1718 +++++++++++++++++++++++++++ QSB/QSBNetworkMigrationManager.cs | 1070 +++++++++++++++++ QSB/QSBNetworkScene.cs | 18 +- QSB/QSBNetworkServer.cs | 891 ++++++-------- QSB/QSBNetworkServerSimple.cs | 585 +++++++++ QSB/QSBRemovePlayerMessage.cs | 23 + QSB/QSBULocalConnectionToClient.cs | 71 ++ QSB/QSBULocalConnectionToServer.cs | 68 ++ QSB/TimeSync/WakeUpSync.cs | 2 +- QSB/Utility/UnetExtensions.cs | 4 +- UnityProject/Assets/Chert.meta | 8 - UnityProject/Assets/Riebeck.meta | 8 - 34 files changed, 5275 insertions(+), 719 deletions(-) create mode 100644 QSB/QSBCRCMessage.cs create mode 100644 QSB/QSBCRCMessageEntry.cs create mode 100644 QSB/QSBChannelBuffer.cs create mode 100644 QSB/QSBChannelPacket.cs create mode 100644 QSB/QSBNetBuffer.cs create mode 100644 QSB/QSBNetworkCRC.cs create mode 100644 QSB/QSBNetworkManagerHUD.cs create mode 100644 QSB/QSBNetworkManagerUNET.cs create mode 100644 QSB/QSBNetworkMigrationManager.cs create mode 100644 QSB/QSBNetworkServerSimple.cs create mode 100644 QSB/QSBRemovePlayerMessage.cs create mode 100644 QSB/QSBULocalConnectionToClient.cs create mode 100644 QSB/QSBULocalConnectionToServer.cs delete mode 100644 UnityProject/Assets/Chert.meta delete mode 100644 UnityProject/Assets/Riebeck.meta diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index 8984cd60a..baf9d6e33 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -82,7 +82,7 @@ private void FixedUpdate() { return; } - NetworkServer.SendToReady(gameObject, 40, animationMessage); + QSBNetworkServer.SendToReady(gameObject, 40, animationMessage); } } @@ -138,7 +138,7 @@ private void CheckSendRate() { if (!IsServer || LocalPlayerAuthority) return; - NetworkServer.SendToReady(gameObject, 41, parametersMessage); + QSBNetworkServer.SendToReady(gameObject, 41, parametersMessage); } } @@ -270,7 +270,7 @@ public void SetTrigger(int hash) }; if (HasAuthority && LocalPlayerAuthority) { - if (NetworkClient.allClients.Count <= 0) + if (QSBNetworkClient.allClients.Count <= 0) { return; } @@ -287,14 +287,14 @@ public void SetTrigger(int hash) { return; } - NetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); + QSBNetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); } } internal static void OnAnimationServerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(AnimationMessage); - var localObject = NetworkServer.FindLocalObject(AnimationMessage.netId); + var localObject = QSBNetworkServer.FindLocalObject(AnimationMessage.netId); if (localObject == null) { return; @@ -302,13 +302,13 @@ internal static void OnAnimationServerMessage(QSBNetworkMessage netMsg) var component = localObject.GetComponent(); var reader = new NetworkReader(AnimationMessage.parameters); component?.HandleAnimMsg(AnimationMessage, reader); - NetworkServer.SendToReady(localObject, 40, AnimationMessage); + QSBNetworkServer.SendToReady(localObject, 40, AnimationMessage); } internal static void OnAnimationParametersServerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(ParametersMessage); - var localObject = NetworkServer.FindLocalObject(ParametersMessage.netId); + var localObject = QSBNetworkServer.FindLocalObject(ParametersMessage.netId); if (localObject == null) { return; @@ -316,20 +316,20 @@ internal static void OnAnimationParametersServerMessage(QSBNetworkMessage netMsg var component = localObject.GetComponent(); var reader = new NetworkReader(ParametersMessage.parameters); component?.HandleAnimParamsMsg(ParametersMessage, reader); - NetworkServer.SendToReady(localObject, 41, ParametersMessage); + QSBNetworkServer.SendToReady(localObject, 41, ParametersMessage); } internal static void OnAnimationTriggerServerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(TriggersMessage); - var localObject = NetworkServer.FindLocalObject(TriggersMessage.netId); + var localObject = QSBNetworkServer.FindLocalObject(TriggersMessage.netId); if (localObject == null) { return; } var component = localObject.GetComponent(); component?.HandleAnimTriggerMsg(TriggersMessage.hash); - NetworkServer.SendToReady(localObject, 42, TriggersMessage); + QSBNetworkServer.SendToReady(localObject, 42, TriggersMessage); } internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 76b5ed6c4..1d415a50f 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -43,7 +43,7 @@ public void SendEvent(T message) private void Send(T message) { - if (NetworkServer.active) + if (QSBNetworkServer.active) { _eventHandler.SendToAll(message); } diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index bd8a0ddcf..7ab69c38a 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -19,7 +19,7 @@ public void Init(GeyserController geyserController, int id) private void HandleEvent(bool state) { - if (NetworkServer.active) + if (QSBNetworkServer.active) { GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); } diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 125b1087e..25635b214 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -31,13 +31,13 @@ public MessageHandler(EventType eventType) private void Init() { var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); - if (NetworkServer.handlers.Keys.Contains((short)_eventType)) + if (QSBNetworkServer.handlers.Keys.Contains((short)_eventType)) { DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); - NetworkServer.handlers.Remove((short)_eventType); + QSBNetworkServer.handlers.Remove((short)_eventType); } - NetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); - NetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); + QSBNetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); + QSBNetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); } public void SendToAll(T message) @@ -46,7 +46,7 @@ public void SendToAll(T message) { return; } - NetworkServer.SendToAll((short)_eventType, message); + QSBNetworkServer.SendToAll((short)_eventType, message); } public void SendToServer(T message) @@ -55,16 +55,16 @@ public void SendToServer(T message) { return; } - NetworkManager.singleton.client.Send((short)_eventType, message); + QSBNetworkManager.singleton.client.Send((short)_eventType, message); } - private void OnClientReceiveMessageHandler(NetworkMessage netMsg) + private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) { var message = netMsg.ReadMessage(); OnClientReceiveMessage?.Invoke(message); } - private void OnServerReceiveMessageHandler(NetworkMessage netMsg) + private void OnServerReceiveMessageHandler(QSBNetworkMessage netMsg) { var message = netMsg.ReadMessage(); OnServerReceiveMessage?.Invoke(message); diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 7aeeae2e5..4b11f02b5 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -27,8 +27,8 @@ public class OrbUserEvent : QSBEvent public override void OnServerReceive(WorldObjectMessage message) { - var fromPlayer = NetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); - foreach (var item in NetworkServer.connections) + var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); + foreach (var item in QSBNetworkServer.connections) { DebugLog.DebugWrite(item.GetPlayer().PlayerId.ToString()); } @@ -78,7 +78,7 @@ public override void OnReceiveRemote(WorldObjectMessage message) public override void OnReceiveLocal(WorldObjectMessage message) { - if (NetworkServer.active) + if (QSBNetworkServer.active) { OnServerReceive(message); } diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index f09edc6f7..0261c4c57 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -35,12 +35,12 @@ public void BuildOrbs() DebugLog.DebugWrite("Building orb syncs...", MessageType.Info); WorldRegistry.OldOrbList.Clear(); WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); - if (NetworkServer.active) + if (QSBNetworkServer.active) { DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); - WorldRegistry.OrbSyncList.ForEach(x => NetworkServer.Destroy(x.gameObject)); + WorldRegistry.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject)); WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldOrbList.ForEach(x => NetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + WorldRegistry.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); } DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} orbs.", MessageType.Success); } @@ -54,7 +54,7 @@ public void QueueBuildSlots() public void QueueBuildOrbs() { DebugLog.DebugWrite("Queueing build of NetworkOrbs...", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen(() => NetworkServer.active, BuildOrbs); + QSB.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); } } } \ No newline at end of file diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 60bda8c8b..921a28ca2 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -72,7 +72,7 @@ private void Start() // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being // null (even though it isn't...) gameObject.AddComponent(); - gameObject.AddComponent(); + gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); @@ -86,6 +86,11 @@ private void Start() Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); } + void Update() + { + QSBNetworkIdentity.UNetStaticUpdate(); + } + public override void Configure(IModConfig config) { DefaultServerIP = config.GetSettingsValue("defaultServerIP"); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 0d131000e..2b08a41ef 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -132,6 +132,11 @@ + + + + + @@ -166,6 +171,7 @@ + @@ -173,18 +179,25 @@ + + + + + + + diff --git a/QSB/QSBCRCMessage.cs b/QSB/QSBCRCMessage.cs new file mode 100644 index 000000000..87f5f216d --- /dev/null +++ b/QSB/QSBCRCMessage.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBCRCMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + int num = (int)reader.ReadUInt16(); + this.scripts = new QSBCRCMessageEntry[num]; + for (int i = 0; i < this.scripts.Length; i++) + { + QSBCRCMessageEntry crcmessageEntry = default(QSBCRCMessageEntry); + crcmessageEntry.name = reader.ReadString(); + crcmessageEntry.channel = reader.ReadByte(); + this.scripts[i] = crcmessageEntry; + } + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write((ushort)this.scripts.Length); + for (int i = 0; i < this.scripts.Length; i++) + { + writer.Write(this.scripts[i].name); + writer.Write(this.scripts[i].channel); + } + } + + public QSBCRCMessageEntry[] scripts; + } +} diff --git a/QSB/QSBCRCMessageEntry.cs b/QSB/QSBCRCMessageEntry.cs new file mode 100644 index 000000000..dacf08eeb --- /dev/null +++ b/QSB/QSBCRCMessageEntry.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB +{ + struct QSBCRCMessageEntry + { + public string name; + + public byte channel; + } +} diff --git a/QSB/QSBChannelBuffer.cs b/QSB/QSBChannelBuffer.cs new file mode 100644 index 000000000..584c3be82 --- /dev/null +++ b/QSB/QSBChannelBuffer.cs @@ -0,0 +1,431 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBChannelBuffer : IDisposable + { + public QSBChannelBuffer(QSBNetworkConnection conn, int bufferSize, byte cid, bool isReliable, bool isSequenced) + { + m_Connection = conn; + m_MaxPacketSize = bufferSize - 100; + m_CurrentPacket = new QSBChannelPacket(m_MaxPacketSize, isReliable); + m_ChannelId = cid; + m_MaxPendingPacketCount = 16; + m_IsReliable = isReliable; + m_AllowFragmentation = (isReliable && isSequenced); + if (isReliable) + { + m_PendingPackets = new Queue(); + if (s_FreePackets == null) + { + s_FreePackets = new List(); + } + } + } + + public int numMsgsOut { get; private set; } + + public int numBufferedMsgsOut { get; private set; } + + public int numBytesOut { get; private set; } + + public int numMsgsIn { get; private set; } + + public int numBytesIn { get; private set; } + + public int numBufferedPerSecond { get; private set; } + + public int lastBufferedPerSecond { get; private set; } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!m_Disposed) + { + if (disposing) + { + if (m_PendingPackets != null) + { + while (m_PendingPackets.Count > 0) + { + pendingPacketCount--; + var item = m_PendingPackets.Dequeue(); + if (s_FreePackets.Count < 512) + { + s_FreePackets.Add(item); + } + } + m_PendingPackets.Clear(); + } + } + } + m_Disposed = true; + } + + public bool SetOption(ChannelOption option, int value) + { + bool result; + if (option != ChannelOption.MaxPendingBuffers) + { + if (option != ChannelOption.AllowFragmentation) + { + if (option != ChannelOption.MaxPacketSize) + { + result = false; + } + else if (!m_CurrentPacket.IsEmpty() || m_PendingPackets.Count > 0) + { + if (LogFilter.logError) + { + Debug.LogError("Cannot set MaxPacketSize after sending data."); + } + result = false; + } + else if (value <= 0) + { + if (LogFilter.logError) + { + Debug.LogError("Cannot set MaxPacketSize less than one."); + } + result = false; + } + else if (value > m_MaxPacketSize) + { + if (LogFilter.logError) + { + Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + m_MaxPacketSize + ")."); + } + result = false; + } + else + { + m_CurrentPacket = new QSBChannelPacket(value, m_IsReliable); + m_MaxPacketSize = value; + result = true; + } + } + else + { + m_AllowFragmentation = (value != 0); + result = true; + } + } + else if (!m_IsReliable) + { + result = false; + } + else if (value < 0 || value >= 512) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Invalid MaxPendingBuffers for channel ", + m_ChannelId, + ". Must be greater than zero and less than ", + 512 + })); + } + result = false; + } + else + { + m_MaxPendingPacketCount = value; + result = true; + } + return result; + } + + public void CheckInternalBuffer() + { + if (Time.realtimeSinceStartup - m_LastFlushTime > maxDelay && !m_CurrentPacket.IsEmpty()) + { + SendInternalBuffer(); + m_LastFlushTime = Time.realtimeSinceStartup; + } + if (Time.realtimeSinceStartup - m_LastBufferedMessageCountTimer > 1f) + { + lastBufferedPerSecond = numBufferedPerSecond; + numBufferedPerSecond = 0; + m_LastBufferedMessageCountTimer = Time.realtimeSinceStartup; + } + } + + public bool SendWriter(NetworkWriter writer) + { + var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(writer, null); + return this.SendBytes(arraySegment.Array, arraySegment.Count); + } + + public bool Send(short msgType, MessageBase msg) + { + s_SendWriter.StartMessage(msgType); + msg.Serialize(s_SendWriter); + s_SendWriter.FinishMessage(); + numMsgsOut++; + return this.SendWriter(s_SendWriter); + } + + internal bool HandleFragment(NetworkReader reader) + { + bool result; + if (reader.ReadByte() == 0) + { + if (!readingFragment) + { + fragmentBuffer.SeekZero(); + readingFragment = true; + } + byte[] array = reader.ReadBytesAndSize(); + fragmentBuffer.WriteBytes(array, (ushort)array.Length); + result = false; + } + else + { + readingFragment = false; + result = true; + } + return result; + } + + internal bool SendFragmentBytes(byte[] bytes, int bytesToSend) + { + int num = 0; + while (bytesToSend > 0) + { + int num2 = Math.Min(bytesToSend, m_MaxPacketSize - 32); + byte[] array = new byte[num2]; + Array.Copy(bytes, num, array, 0, num2); + s_FragmentWriter.StartMessage(17); + s_FragmentWriter.Write(0); + s_FragmentWriter.WriteBytesFull(array); + s_FragmentWriter.FinishMessage(); + this.SendWriter(s_FragmentWriter); + num += num2; + bytesToSend -= num2; + } + s_FragmentWriter.StartMessage(17); + s_FragmentWriter.Write(1); + s_FragmentWriter.FinishMessage(); + this.SendWriter(s_FragmentWriter); + return true; + } + + internal bool SendBytes(byte[] bytes, int bytesToSend) + { + bool result; + if (bytesToSend >= 65535) + { + if (LogFilter.logError) + { + Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); + } + result = false; + } + else if (bytesToSend <= 0) + { + if (LogFilter.logError) + { + Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); + } + result = false; + } + else if (bytesToSend > m_MaxPacketSize) + { + if (m_AllowFragmentation) + { + result = SendFragmentBytes(bytes, bytesToSend); + } + else + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Failed to send big message of ", + bytesToSend, + " bytes. The maximum is ", + m_MaxPacketSize, + " bytes on channel:", + m_ChannelId + })); + } + result = false; + } + } + else if (!m_CurrentPacket.HasSpace(bytesToSend)) + { + if (m_IsReliable) + { + if (m_PendingPackets.Count == 0) + { + if (!m_CurrentPacket.SendToTransport(m_Connection, (int)m_ChannelId)) + { + QueuePacket(); + } + m_CurrentPacket.Write(bytes, bytesToSend); + result = true; + } + else if (m_PendingPackets.Count >= m_MaxPendingPacketCount) + { + if (!m_IsBroken) + { + if (LogFilter.logError) + { + Debug.LogError("ChannelBuffer buffer limit of " + m_PendingPackets.Count + " packets reached."); + } + } + m_IsBroken = true; + result = false; + } + else + { + QueuePacket(); + m_CurrentPacket.Write(bytes, bytesToSend); + result = true; + } + } + else if (!m_CurrentPacket.SendToTransport(m_Connection, (int)m_ChannelId)) + { + if (LogFilter.logError) + { + Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + m_ChannelId); + } + result = false; + } + else + { + m_CurrentPacket.Write(bytes, bytesToSend); + result = true; + } + } + else + { + m_CurrentPacket.Write(bytes, bytesToSend); + result = (maxDelay != 0f || SendInternalBuffer()); + } + return result; + } + + private void QueuePacket() + { + pendingPacketCount++; + m_PendingPackets.Enqueue(m_CurrentPacket); + m_CurrentPacket = AllocPacket(); + } + + private QSBChannelPacket AllocPacket() + { + QSBChannelPacket result; + if (s_FreePackets.Count == 0) + { + result = new QSBChannelPacket(m_MaxPacketSize, m_IsReliable); + } + else + { + var channelPacket = s_FreePackets[s_FreePackets.Count - 1]; + s_FreePackets.RemoveAt(s_FreePackets.Count - 1); + channelPacket.Reset(); + result = channelPacket; + } + return result; + } + + private static void FreePacket(QSBChannelPacket packet) + { + if (s_FreePackets.Count < 512) + { + s_FreePackets.Add(packet); + } + } + + public bool SendInternalBuffer() + { + bool result; + if (m_IsReliable && m_PendingPackets.Count > 0) + { + while (m_PendingPackets.Count > 0) + { + var channelPacket = m_PendingPackets.Dequeue(); + if (!channelPacket.SendToTransport(m_Connection, (int)m_ChannelId)) + { + m_PendingPackets.Enqueue(channelPacket); + break; + } + pendingPacketCount--; + FreePacket(channelPacket); + if (m_IsBroken && m_PendingPackets.Count < m_MaxPendingPacketCount / 2) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); + } + m_IsBroken = false; + } + } + result = true; + } + else + { + result = m_CurrentPacket.SendToTransport(m_Connection, (int)m_ChannelId); + } + return result; + } + + private QSBNetworkConnection m_Connection; + + private QSBChannelPacket m_CurrentPacket; + + private float m_LastFlushTime; + + private byte m_ChannelId; + + private int m_MaxPacketSize; + + private bool m_IsReliable; + + private bool m_AllowFragmentation; + + private bool m_IsBroken; + + private int m_MaxPendingPacketCount; + + private const int k_MaxFreePacketCount = 512; + + public const int MaxPendingPacketCount = 16; + + public const int MaxBufferedPackets = 512; + + private Queue m_PendingPackets; + + private static List s_FreePackets; + + internal static int pendingPacketCount; + + public float maxDelay = 0.01f; + + private float m_LastBufferedMessageCountTimer = Time.realtimeSinceStartup; + + private static NetworkWriter s_SendWriter = new NetworkWriter(); + + private static NetworkWriter s_FragmentWriter = new NetworkWriter(); + + private const int k_PacketHeaderReserveSize = 100; + + private bool m_Disposed; + + internal QSBNetBuffer fragmentBuffer = new QSBNetBuffer(); + + private bool readingFragment = false; + } +} diff --git a/QSB/QSBChannelPacket.cs b/QSB/QSBChannelPacket.cs new file mode 100644 index 000000000..a4a763dab --- /dev/null +++ b/QSB/QSBChannelPacket.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + struct QSBChannelPacket + { + public QSBChannelPacket(int packetSize, bool isReliable) + { + this.m_Position = 0; + this.m_Buffer = new byte[packetSize]; + this.m_IsReliable = isReliable; + } + + public void Reset() + { + this.m_Position = 0; + } + + public bool IsEmpty() + { + return this.m_Position == 0; + } + + public void Write(byte[] bytes, int numBytes) + { + Array.Copy(bytes, 0, this.m_Buffer, this.m_Position, numBytes); + this.m_Position += numBytes; + } + + public bool HasSpace(int numBytes) + { + return this.m_Position + numBytes <= this.m_Buffer.Length; + } + + public bool SendToTransport(QSBNetworkConnection conn, int channelId) + { + bool result = true; + byte b; + if (!conn.TransportSend(this.m_Buffer, (int)((ushort)this.m_Position), channelId, out b)) + { + if (!this.m_IsReliable || b != 4) + { + Debug.LogError(string.Concat(new object[] + { + "Failed to send internal buffer channel:", + channelId, + " bytesToSend:", + this.m_Position + })); + result = false; + } + } + if (b != 0) + { + if (this.m_IsReliable && b == 4) + { + return false; + } + Debug.LogError(string.Concat(new object[] + { + "Send Error: ", + (NetworkError)b, + " channel:", + channelId, + " bytesToSend:", + this.m_Position + })); + result = false; + } + this.m_Position = 0; + return result; + } + + private int m_Position; + + private byte[] m_Buffer; + + private bool m_IsReliable; + } +} diff --git a/QSB/QSBClientScene.cs b/QSB/QSBClientScene.cs index 189a621cc..d41eddd80 100644 --- a/QSB/QSBClientScene.cs +++ b/QSB/QSBClientScene.cs @@ -1,4 +1,5 @@ using QSB.Animation; +using QSB.Utility; using System; using System.Collections.Generic; using System.Linq; @@ -507,26 +508,20 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_ObjectSpawnMessage); if (!s_ObjectSpawnMessage.assetId.IsValid()) { - if (LogFilter.logError) - { - Debug.LogError("OnObjSpawn netId: " + s_ObjectSpawnMessage.netId + " has invalid asset Id"); - } + Debug.LogError($"OnObjSpawn netId: {s_ObjectSpawnMessage.netId} has invalid asset Id. {s_ObjectSpawnMessage.assetId}"); } else { - if (LogFilter.logDebug) + DebugLog.DebugWrite(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "Client spawn handler instantiating [netId:", - s_ObjectSpawnMessage.netId, - " asset ID:", - s_ObjectSpawnMessage.assetId, - " pos:", - s_ObjectSpawnMessage.position, - "]" - })); - } + "Client spawn handler instantiating [netId:", + s_ObjectSpawnMessage.netId, + " asset ID:", + s_ObjectSpawnMessage.assetId, + " pos:", + s_ObjectSpawnMessage.position, + "]" + })); if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.netId, out var component)) { ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, null); @@ -536,7 +531,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.rotation); if (LogFilter.logDebug) { - Debug.Log(string.Concat(new object[] + DebugLog.DebugWrite(string.Concat(new object[] { "Client spawn handler instantiating [netId:", s_ObjectSpawnMessage.netId, @@ -552,10 +547,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) component = gameObject.GetComponent(); if (component == null) { - if (LogFilter.logError) - { - Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a NetworkIdentity"); - } + Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a NetworkIdentity"); } else { @@ -568,20 +560,14 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) var gameObject2 = spawnDelegate(s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.assetId); if (gameObject2 == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Client spawn handler for " + s_ObjectSpawnMessage.assetId + " returned null"); - } + Debug.LogWarning("Client spawn handler for " + s_ObjectSpawnMessage.assetId + " returned null"); } else { component = gameObject2.GetComponent(); if (component == null) { - if (LogFilter.logError) - { - Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a network identity"); - } + Debug.LogError("Client object spawned for " + s_ObjectSpawnMessage.assetId + " does not have a network identity"); } else { @@ -591,7 +577,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) } } } - else if (LogFilter.logError) + else { Debug.LogError(string.Concat(new object[] { diff --git a/QSB/QSBLocalClient.cs b/QSB/QSBLocalClient.cs index 064c569e9..9ec7dfa12 100644 --- a/QSB/QSBLocalClient.cs +++ b/QSB/QSBLocalClient.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -33,7 +34,7 @@ internal void InternalConnectLocalServer(bool generateConnectMsg) } } m_LocalServer = QSBNetworkServer.instance; - m_Connection = new ULocalConnectionToServer(m_LocalServer); + m_Connection = new QSBULocalConnectionToServer(m_LocalServer); base.SetHandlers(m_Connection); m_Connection.connectionId = m_LocalServer.AddLocalClient(this); m_AsyncConnect = QSBNetworkClient.ConnectState.Connected; @@ -107,7 +108,8 @@ private void ProcessInternalMessages() } else { - s_InternalMessage.reader.Replace(t.buffer); + DebugLog.DebugWrite("try replace"); + s_InternalMessage.reader.GetType().GetMethod("Replace", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public).Invoke(s_InternalMessage.reader, new object[] { t.buffer }); } s_InternalMessage.reader.ReadInt16(); s_InternalMessage.channelId = t.channelId; diff --git a/QSB/QSBNetBuffer.cs b/QSB/QSBNetBuffer.cs new file mode 100644 index 000000000..180601ded --- /dev/null +++ b/QSB/QSBNetBuffer.cs @@ -0,0 +1,201 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB +{ + class QSBNetBuffer + { + public QSBNetBuffer() + { + m_Buffer = new byte[64]; + } + + public QSBNetBuffer(byte[] buffer) + { + m_Buffer = buffer; + } + + public uint Position + { + get + { + return m_Pos; + } + } + + public int Length + { + get + { + return m_Buffer.Length; + } + } + + public byte ReadByte() + { + if ((ulong)m_Pos >= (ulong)((long)m_Buffer.Length)) + { + throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + ToString()); + } + return m_Buffer[(int)((UIntPtr)(m_Pos++))]; + } + + public void ReadBytes(byte[] buffer, uint count) + { + if ((ulong)(m_Pos + count) > (ulong)((long)m_Buffer.Length)) + { + throw new IndexOutOfRangeException(string.Concat(new object[] + { + "NetworkReader:ReadBytes out of range: (", + count, + ") ", + ToString() + })); + } + ushort num = 0; + while ((uint)num < count) + { + buffer[(int)num] = m_Buffer[(int)((UIntPtr)(m_Pos + (uint)num))]; + num += 1; + } + m_Pos += count; + } + + internal ArraySegment AsArraySegment() + { + return new ArraySegment(m_Buffer, 0, (int)m_Pos); + } + + public void WriteByte(byte value) + { + WriteCheckForSpace(1); + m_Buffer[(int)((UIntPtr)m_Pos)] = value; + m_Pos += 1U; + } + + public void WriteByte2(byte value0, byte value1) + { + WriteCheckForSpace(2); + m_Buffer[(int)((UIntPtr)m_Pos)] = value0; + m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; + m_Pos += 2U; + } + + public void WriteByte4(byte value0, byte value1, byte value2, byte value3) + { + WriteCheckForSpace(4); + m_Buffer[(int)((UIntPtr)m_Pos)] = value0; + m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; + m_Pos += 4U; + } + + public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7) + { + WriteCheckForSpace(8); + m_Buffer[(int)((UIntPtr)m_Pos)] = value0; + m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; + m_Buffer[(int)((UIntPtr)(m_Pos + 4U))] = value4; + m_Buffer[(int)((UIntPtr)(m_Pos + 5U))] = value5; + m_Buffer[(int)((UIntPtr)(m_Pos + 6U))] = value6; + m_Buffer[(int)((UIntPtr)(m_Pos + 7U))] = value7; + m_Pos += 8U; + } + + public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count) + { + uint num = (uint)(count + targetOffset); + WriteCheckForSpace((ushort)num); + if (targetOffset == 0 && (int)count == buffer.Length) + { + buffer.CopyTo(m_Buffer, (int)m_Pos); + } + else + { + for (int i = 0; i < (int)count; i++) + { + m_Buffer[(int)targetOffset + i] = buffer[i]; + } + } + if (num > m_Pos) + { + m_Pos = num; + } + } + + public void WriteBytes(byte[] buffer, ushort count) + { + WriteCheckForSpace(count); + if ((int)count == buffer.Length) + { + buffer.CopyTo(m_Buffer, (int)m_Pos); + } + else + { + for (int i = 0; i < (int)count; i++) + { + m_Buffer[(int)(checked((IntPtr)(unchecked((ulong)m_Pos + (ulong)((long)i)))))] = buffer[i]; + } + } + m_Pos += (uint)count; + } + + private void WriteCheckForSpace(ushort count) + { + if ((ulong)(m_Pos + (uint)count) >= (ulong)((long)m_Buffer.Length)) + { + int num = (int)Math.Ceiling((double)((float)m_Buffer.Length * 1.5f)); + while ((ulong)(m_Pos + (uint)count) >= (ulong)((long)num)) + { + num = (int)Math.Ceiling((double)((float)num * 1.5f)); + if (num > 134217728) + { + Debug.LogWarning("NetworkBuffer size is " + num + " bytes!"); + } + } + byte[] array = new byte[num]; + m_Buffer.CopyTo(array, 0); + m_Buffer = array; + } + } + + public void FinishMessage() + { + ushort num = (ushort)(m_Pos - 4U); + m_Buffer[0] = (byte)(num & 255); + m_Buffer[1] = (byte)(num >> 8 & 255); + } + + public void SeekZero() + { + m_Pos = 0U; + } + + public void Replace(byte[] buffer) + { + m_Buffer = buffer; + m_Pos = 0U; + } + + public override string ToString() + { + return string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, m_Pos); + } + + private byte[] m_Buffer; + + private uint m_Pos; + + private const int k_InitialSize = 64; + + private const float k_GrowthFactor = 1.5f; + + private const int k_BufferSizeWarning = 134217728; + } +} diff --git a/QSB/QSBNetworkBehaviour.cs b/QSB/QSBNetworkBehaviour.cs index 7cda28648..77ed60b18 100644 --- a/QSB/QSBNetworkBehaviour.cs +++ b/QSB/QSBNetworkBehaviour.cs @@ -77,7 +77,7 @@ protected void SendRPCInternal(NetworkWriter writer, int channelId, string rpcNa else { writer.FinishMessage(); - NetworkServer.SendWriterToReady(base.gameObject, writer, channelId); + QSBNetworkServer.SendWriterToReady(base.gameObject, writer, channelId); } } @@ -98,14 +98,14 @@ protected void SendTargetRPCInternal(NetworkConnection conn, NetworkWriter write protected void SendEventInternal(NetworkWriter writer, int channelId, string eventName) { - if (!NetworkServer.active) + if (!QSBNetworkServer.active) { Debug.LogWarning("SendEvent no server?"); } else { writer.FinishMessage(); - NetworkServer.SendWriterToReady(gameObject, writer, channelId); + QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); } } @@ -560,7 +560,7 @@ public virtual void OnStartAuthority() { } public virtual void OnStopAuthority() { } public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; public virtual void OnSetLocalVisibility(bool vis) { } - public virtual bool OnCheckObserver(NetworkConnection conn) => true; + public virtual bool OnCheckObserver(QSBNetworkConnection conn) => true; public virtual int GetNetworkChannel() => 0; public virtual float GetNetworkSendInterval() => 0.1f; diff --git a/QSB/QSBNetworkCRC.cs b/QSB/QSBNetworkCRC.cs new file mode 100644 index 000000000..7f3203288 --- /dev/null +++ b/QSB/QSBNetworkCRC.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + public class QSBNetworkCRC + { + internal static QSBNetworkCRC singleton + { + get + { + if (s_Singleton == null) + { + s_Singleton = new QSBNetworkCRC(); + } + return s_Singleton; + } + } + + public Dictionary scripts + { + get + { + return this.m_Scripts; + } + } + + public static bool scriptCRCCheck + { + get + { + return singleton.m_ScriptCRCCheck; + } + set + { + singleton.m_ScriptCRCCheck = value; + } + } + + public static void ReinitializeScriptCRCs(Assembly callingAssembly) + { + singleton.m_Scripts.Clear(); + foreach (Type type in callingAssembly.GetTypes()) + { + if (type.GetBaseType() == typeof(QSBNetworkBehaviour)) + { + MethodInfo method = type.GetMethod(".cctor", BindingFlags.Static); + if (method != null) + { + method.Invoke(null, new object[0]); + } + } + } + } + + public static void RegisterBehaviour(string name, int channel) + { + singleton.m_Scripts[name] = channel; + } + + internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) + { + return singleton.ValidateInternal(scripts, numChannels); + } + + private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannels) + { + bool result; + if (this.m_Scripts.Count != remoteScripts.Length) + { + if (LogFilter.logWarn) + { + Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); + } + this.Dump(remoteScripts); + result = false; + } + else + { + foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); + } + if (this.m_Scripts.ContainsKey(crcmessageEntry.name)) + { + int num = this.m_Scripts[crcmessageEntry.name]; + if (num != (int)crcmessageEntry.channel) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "HLAPI CRC Channel Mismatch. Script: ", + crcmessageEntry.name, + " LocalChannel: ", + num, + " RemoteChannel: ", + crcmessageEntry.channel + })); + } + this.Dump(remoteScripts); + return false; + } + } + if ((int)crcmessageEntry.channel >= numChannels) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "HLAPI CRC channel out of range! Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); + } + this.Dump(remoteScripts); + return false; + } + } + result = true; + } + return result; + } + + private void Dump(QSBCRCMessageEntry[] remoteScripts) + { + foreach (string text in this.m_Scripts.Keys) + { + Debug.Log(string.Concat(new object[] + { + "CRC Local Dump ", + text, + " : ", + this.m_Scripts[text] + })); + } + foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) + { + Debug.Log(string.Concat(new object[] + { + "CRC Remote Dump ", + crcmessageEntry.name, + " : ", + crcmessageEntry.channel + })); + } + } + + internal static QSBNetworkCRC s_Singleton; + + private Dictionary m_Scripts = new Dictionary(); + + private bool m_ScriptCRCCheck; + } +} diff --git a/QSB/QSBNetworkClient.cs b/QSB/QSBNetworkClient.cs index 014e144e3..a723077a9 100644 --- a/QSB/QSBNetworkClient.cs +++ b/QSB/QSBNetworkClient.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Linq; using System.Net; @@ -6,11 +7,12 @@ using System.Text; using UnityEngine; using UnityEngine.Networking; +using UnityEngine.Networking.Match; using UnityEngine.Networking.NetworkSystem; namespace QSB { - class QSBNetworkClient + public class QSBNetworkClient { public QSBNetworkClient() { @@ -366,16 +368,13 @@ private static bool IsValidIpV6(string address) public void Connect(string serverIp, int serverPort) { PrepareForConnect(); - if (LogFilter.logDebug) + DebugLog.DebugWrite(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "Client Connect: ", - serverIp, - ":", - serverPort - })); - } + "Client Connect: ", + serverIp, + ":", + serverPort + })); m_ServerPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { @@ -394,10 +393,7 @@ public void Connect(string serverIp, int serverPort) } else { - if (LogFilter.logDebug) - { - Debug.Log("Async DNS START:" + serverIp); - } + DebugLog.DebugWrite("Async DNS START:" + serverIp); m_RequestedServerHost = serverIp; m_AsyncConnect = ConnectState.Resolving; Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(GetHostAddressesCallback), this); @@ -406,7 +402,8 @@ public void Connect(string serverIp, int serverPort) public void Connect(EndPoint secureTunnelEndPoint) { - bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); + //bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); + bool usePlatformSpecificProtocols = false; PrepareForConnect(usePlatformSpecificProtocols); if (LogFilter.logDebug) { @@ -487,6 +484,7 @@ private void PrepareForConnect() private void PrepareForConnect(bool usePlatformSpecificProtocols) { + DebugLog.DebugWrite("prepare for connect"); SetActive(true); RegisterSystemHandlers(false); if (m_HostTopology == null) @@ -505,16 +503,13 @@ private void PrepareForConnect(bool usePlatformSpecificProtocols) num = 1; } int num2 = m_SimulatedLatency * 3; - if (LogFilter.logDebug) + DebugLog.DebugWrite(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "AddHost Using Simulator ", - num, - "/", - num2 - })); - } + "AddHost Using Simulator ", + num, + "/", + num2 + })); m_ClientId = NetworkTransport.AddHostWithSimulator(m_HostTopology, num, num2, m_HostPort); } else @@ -531,47 +526,36 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) QSBNetworkClient networkClient = (QSBNetworkClient)ar.AsyncState; if (array.Length == 0) { - if (LogFilter.logError) - { - Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost); - } + Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost); networkClient.m_AsyncConnect = ConnectState.Failed; } else { networkClient.m_ServerIp = array[0].ToString(); networkClient.m_AsyncConnect = ConnectState.Resolved; - if (LogFilter.logDebug) + Debug.Log(string.Concat(new string[] { - Debug.Log(string.Concat(new string[] - { - "Async DNS Result:", - networkClient.m_ServerIp, - " for ", - networkClient.m_RequestedServerHost, - ": ", - networkClient.m_ServerIp - })); - } + "Async DNS Result:", + networkClient.m_ServerIp, + " for ", + networkClient.m_RequestedServerHost, + ": ", + networkClient.m_ServerIp + })); } } catch (SocketException ex) { QSBNetworkClient networkClient2 = (QSBNetworkClient)ar.AsyncState; - if (LogFilter.logError) - { - Debug.LogError("DNS resolution failed: " + ex.GetErrorCode()); - } - if (LogFilter.logDebug) - { - Debug.Log("Exception:" + ex); - } + Debug.LogError("DNS resolution failed: " + ex.GetErrorCode()); + Debug.LogError("Exception:" + ex); networkClient2.m_AsyncConnect = ConnectState.Failed; } } internal void ContinueConnect() { + DebugLog.DebugWrite("continue connect"); if (m_UseSimulator) { int num = m_SimulatedLatency / 3; @@ -579,16 +563,13 @@ internal void ContinueConnect() { num = 1; } - if (LogFilter.logDebug) + DebugLog.DebugWrite(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "Connect Using Simulator ", - m_SimulatedLatency / 3, - "/", - m_SimulatedLatency - })); - } + "Connect Using Simulator ", + m_SimulatedLatency / 3, + "/", + m_SimulatedLatency + })); ConnectionSimulatorConfig conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); byte b; m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(m_ClientId, m_ServerIp, m_ServerPort, 0, out b, conf); @@ -1066,8 +1047,8 @@ internal void RegisterSystemHandlers(bool localClient) private void OnCRC(QSBNetworkMessage netMsg) { - netMsg.ReadMessage(s_CRCMessage); - NetworkCRC.Validate(s_CRCMessage.scripts, numChannels); + netMsg.ReadMessage(s_CRCMessage); + QSBNetworkCRC.Validate(s_CRCMessage.scripts, numChannels); } public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) @@ -1148,6 +1129,7 @@ public static void ShutdownAll() internal static void SetActive(bool state) { + DebugLog.DebugWrite("set active"); if (!s_IsActive && state) { NetworkTransport.Init(); @@ -1185,7 +1167,7 @@ internal static void SetActive(bool state) private EndPoint m_RemoteEndPoint; - private static CRCMessage s_CRCMessage = new CRCMessage(); + private static QSBCRCMessage s_CRCMessage = new QSBCRCMessage(); private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); diff --git a/QSB/QSBNetworkConnection.cs b/QSB/QSBNetworkConnection.cs index a2ada8dea..40ae16304 100644 --- a/QSB/QSBNetworkConnection.cs +++ b/QSB/QSBNetworkConnection.cs @@ -38,7 +38,7 @@ public virtual void Initialize(string networkAddress, int networkHostId, int net { throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform"); } - m_Channels = new ChannelBuffer[channelCount]; + m_Channels = new QSBChannelBuffer[channelCount]; for (var i = 0; i < channelCount; i++) { var channelQOS = hostTopology.DefaultConfig.Channels[i]; @@ -47,7 +47,7 @@ public virtual void Initialize(string networkAddress, int networkHostId, int net { bufferSize = (int)(hostTopology.DefaultConfig.FragmentSize * 128); } - m_Channels[i] = new ChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS)); + m_Channels[i] = new QSBChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS)); } } @@ -76,7 +76,7 @@ protected virtual void Dispose(bool disposing) { foreach (var netId in ClientOwnedObjects) { - var gameObject = NetworkServer.FindLocalObject(netId); + var gameObject = QSBNetworkServer.FindLocalObject(netId); if (gameObject != null) { gameObject.GetComponent().ClearClientOwner(); @@ -500,7 +500,7 @@ internal void RemoveOwnedObject(QSBNetworkIdentity obj) internal static void OnFragment(QSBNetworkMessage netMsg) => netMsg.conn.HandleFragment(netMsg.reader, netMsg.channelId); - private ChannelBuffer[] m_Channels; + private QSBChannelBuffer[] m_Channels; private readonly QSBNetworkMessage m_NetMsg = new QSBNetworkMessage(); private NetworkWriter m_Writer; diff --git a/QSB/QSBNetworkIdentity.cs b/QSB/QSBNetworkIdentity.cs index 576b58118..ddfd8d5e5 100644 --- a/QSB/QSBNetworkIdentity.cs +++ b/QSB/QSBNetworkIdentity.cs @@ -11,7 +11,7 @@ namespace QSB public sealed class QSBNetworkIdentity : MonoBehaviour { public bool IsClient { get; private set; } - public bool IsServer => m_IsServer && NetworkServer.active && m_IsServer; + public bool IsServer => m_IsServer && QSBNetworkServer.active && m_IsServer; public bool HasAuthority { get; private set; } public NetworkInstanceId NetId { get; private set; } public NetworkSceneId SceneId => m_SceneId; @@ -48,6 +48,7 @@ public bool LocalPlayerAuthority internal void SetDynamicAssetId(NetworkHash128 newAssetId) { + DebugLog.DebugWrite($"Setting asset of {NetId} to {newAssetId}"); if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) { m_AssetId = newAssetId; @@ -65,7 +66,7 @@ internal void SetClientOwner(QSBNetworkConnection conn) Debug.LogError("SetClientOwner m_ClientAuthorityOwner already set!"); } ClientAuthorityOwner = conn; - ClientAuthorityOwner.GetType().GetMethod("AddOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); + ClientAuthorityOwner.AddOwnedObject(this); } internal void ClearClientOwner() => ClientAuthorityOwner = null; @@ -148,7 +149,7 @@ internal void UpdateClientServer(bool isClientFlag, bool isServerFlag) internal void SetNotLocalPlayer() { IsLocalPlayer = false; - if (!NetworkServer.active || !NetworkServer.localClientActive) + if (!QSBNetworkServer.active || !QSBNetworkServer.localClientActive) { HasAuthority = false; } @@ -165,9 +166,9 @@ internal void RemoveObserverInternal(QSBNetworkConnection conn) private void OnDestroy() { - if (m_IsServer && NetworkServer.active) + if (m_IsServer && QSBNetworkServer.active) { - NetworkServer.Destroy(base.gameObject); + QSBNetworkServer.Destroy(base.gameObject); } } @@ -175,6 +176,7 @@ internal void OnStartServer(bool allowNonZeroNetId) { if (!m_IsServer) { + DebugLog.DebugWrite("is server"); m_IsServer = true; if (m_LocalPlayerAuthority) { @@ -190,27 +192,22 @@ internal void OnStartServer(bool allowNonZeroNetId) if (NetId.IsEmpty()) { NetId = GetNextNetworkId(); + DebugLog.DebugWrite($"was empty - netid is {NetId}"); } else if (!allowNonZeroNetId) { + DebugLog.DebugWrite($"netid is {NetId}"); Debug.LogError(string.Concat(new object[] { "Object has non-zero netId ", NetId, " for ", - base.gameObject + gameObject })); return; } - Debug.Log(string.Concat(new object[] - { - "OnStartServer ", - base.gameObject, - " GUID:", - NetId - })); - var server = (NetworkServer)typeof(NetworkServer).GetField("instance", System.Reflection.BindingFlags.Static).GetValue(null); - server.GetType().GetMethod("SetLocalObjectOnServer", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(server, new object[] { NetId, gameObject }); + DebugLog.DebugWrite($"OnStartServer {gameObject} GUID:{NetId}"); + QSBNetworkServer.instance.SetLocalObjectOnServer(NetId, gameObject); for (var i = 0; i < m_NetworkBehaviours.Length; i++) { var networkBehaviour = m_NetworkBehaviours[i]; @@ -223,7 +220,7 @@ internal void OnStartServer(bool allowNonZeroNetId) Debug.LogError("Exception in OnStartServer:" + ex.Message + " " + ex.StackTrace); } } - if (NetworkClient.active && NetworkServer.localClientActive) + if (QSBNetworkClient.active && QSBNetworkServer.localClientActive) { QSBClientScene.SetLocalObject(NetId, base.gameObject); OnStartClient(); @@ -314,7 +311,7 @@ internal void OnSetLocalVisibility(bool vis) } } - internal bool OnCheckObserver(NetworkConnection conn) + internal bool OnCheckObserver(QSBNetworkConnection conn) { for (var i = 0; i < m_NetworkBehaviours.Length; i++) { @@ -591,7 +588,7 @@ internal void UNetUpdate() if (num != 0U) { var j = 0; - while (j < NetworkServer.numChannels) + while (j < QSBNetworkServer.numChannels) { if ((num & (1U << j)) != 0U) { @@ -613,7 +610,7 @@ internal void UNetUpdate() networkBehaviour2.ClearAllDirtyBits(); flag = true; } - var maxPacketSize = (ushort)typeof(NetworkServer).GetField("maxPacketSize", System.Reflection.BindingFlags.Static).GetValue(null); + var maxPacketSize = QSBNetworkServer.maxPacketSize; if (s_UpdateWriter.Position - position > maxPacketSize) { Debug.LogWarning(string.Concat(new object[] @@ -631,7 +628,7 @@ internal void UNetUpdate() if (flag) { s_UpdateWriter.FinishMessage(); - NetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); + QSBNetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); } } IL_197: @@ -704,7 +701,7 @@ internal void ClearObservers() for (var i = 0; i < count; i++) { var networkConnection = m_Observers[i]; - networkConnection.GetType().GetMethod("RemoveFromVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(networkConnection, new object[] { this, true }); + networkConnection.RemoveFromVisList(this, true); } m_Observers.Clear(); m_ObserverConnections.Clear(); @@ -738,7 +735,7 @@ internal void AddObserver(QSBNetworkConnection conn) })); m_Observers.Add(conn); m_ObserverConnections.Add(conn.connectionId); - conn.GetType().GetMethod("AddToVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(conn, new object[] { this }); + conn.AddToVisList(this); } } @@ -748,7 +745,7 @@ internal void RemoveObserver(QSBNetworkConnection conn) { m_Observers.Remove(conn); m_ObserverConnections.Remove(conn.connectionId); - conn.GetType().GetMethod("RemoveFromVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(conn, new object[] { this, true }); + conn.RemoveFromVisList(this, true); } } @@ -811,7 +808,7 @@ public void RebuildObservers(bool initialize) } else if (initialize || !hashSet2.Contains(networkConnection3)) { - networkConnection3.GetType().GetMethod("AddToVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(networkConnection3, new object[] { this }); + networkConnection3.AddToVisList(this); Debug.Log(string.Concat(new object[] { "New Observer for ", @@ -827,7 +824,7 @@ public void RebuildObservers(bool initialize) { if (!hashSet.Contains(networkConnection4)) { - networkConnection4.GetType().GetMethod("RemoveFromVisList", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(networkConnection4, new object[] { this, true }); + networkConnection4.RemoveFromVisList(this, true); Debug.Log(string.Concat(new object[] { "Removed Observer for ", @@ -886,7 +883,7 @@ public bool RemoveClientAuthority(QSBNetworkConnection conn) } else { - ClientAuthorityOwner.GetType().GetMethod("RemoveOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); + ClientAuthorityOwner.RemoveOwnedObject(this); ClientAuthorityOwner = null; ForceAuthority(true); conn.Send(15, new QSBClientAuthorityMessage @@ -926,7 +923,7 @@ public bool AssignClientAuthority(QSBNetworkConnection conn) else { ClientAuthorityOwner = conn; - ClientAuthorityOwner.GetType().GetMethod("AddOwnedObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(ClientAuthorityOwner, new object[] { this }); + ClientAuthorityOwner.AddOwnedObject(this); ForceAuthority(false); conn.Send(15, new QSBClientAuthorityMessage @@ -963,9 +960,9 @@ internal void Reset() internal static void UNetStaticUpdate() { - typeof(NetworkServer).GetMethod("Update", System.Reflection.BindingFlags.Static).Invoke(null, null); - typeof(NetworkClient).GetMethod("UpdateClients", System.Reflection.BindingFlags.Static).Invoke(null, null); - typeof(NetworkManager).GetMethod("UpdateScene", System.Reflection.BindingFlags.Static).Invoke(null, null); + QSBNetworkServer.Update(); + QSBNetworkClient.UpdateClients(); + QSBNetworkManagerUNET.UpdateScene(); } [SerializeField] diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 1e996d8d3..1eefcadb3 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -21,7 +21,7 @@ namespace QSB { - public class QSBNetworkManager : NetworkManager + public class QSBNetworkManager : QSBNetworkManagerUNET { private const int MaxConnections = 128; private const int MaxBufferedPackets = 64; @@ -40,35 +40,46 @@ public class QSBNetworkManager : NetworkManager private void Awake() { + DebugLog.DebugWrite("AWAKE"); Instance = this; _lobby = gameObject.AddComponent(); _assetBundle = QSB.NetworkAssetBundle; + DebugLog.DebugWrite("player"); playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - playerPrefab.AddComponent(); + var ident = playerPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); + DebugLog.DebugWrite("ship"); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); - _shipPrefab.AddComponent(); + ident = _shipPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); + DebugLog.DebugWrite("camera"); _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); - _cameraPrefab.AddComponent(); + ident = _cameraPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); + DebugLog.DebugWrite("probe"); _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); - _probePrefab.AddComponent(); + ident = _probePrefab.AddComponent(); + ident.LocalPlayerAuthority = true; _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); + DebugLog.DebugWrite("orb"); OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - OrbPrefab.AddComponent(); + ident = OrbPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); @@ -133,7 +144,7 @@ public override void OnServerAddPlayer(QSBNetworkConnection connection, short pl QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); } - public override void OnClientConnect(NetworkConnection connection) // Called on the client when connecting to a server + public override void OnClientConnect(QSBNetworkConnection connection) // Called on the client when connecting to a server { DebugLog.DebugWrite("OnClientConnect", MessageType.Info); base.OnClientConnect(connection); @@ -148,7 +159,7 @@ public override void OnClientConnect(NetworkConnection connection) // Called on OrbManager.Instance.QueueBuildSlots(); } - if (!NetworkServer.localClientActive) + if (!QSBNetworkServer.localClientActive) { QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); singleton.client.UnregisterHandler(40); diff --git a/QSB/QSBNetworkManagerHUD.cs b/QSB/QSBNetworkManagerHUD.cs new file mode 100644 index 000000000..31642eb46 --- /dev/null +++ b/QSB/QSBNetworkManagerHUD.cs @@ -0,0 +1,262 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking.Match; + +namespace QSB +{ + public class QSBNetworkManagerHUD : MonoBehaviour + { + private void Awake() + { + this.manager = base.GetComponent(); + } + + private void Update() + { + if (this.showGUI) + { + if (!this.manager.IsClientConnected() && !QSBNetworkServer.active && this.manager.matchMaker == null) + { + if (Application.platform != RuntimePlatform.WebGLPlayer) + { + if (Input.GetKeyDown(KeyCode.S)) + { + this.manager.StartServer(); + } + if (Input.GetKeyDown(KeyCode.H)) + { + this.manager.StartHost(); + } + } + if (Input.GetKeyDown(KeyCode.C)) + { + this.manager.StartClient(); + } + } + if (QSBNetworkServer.active) + { + if (this.manager.IsClientConnected()) + { + if (Input.GetKeyDown(KeyCode.X)) + { + this.manager.StopHost(); + } + } + else if (Input.GetKeyDown(KeyCode.X)) + { + this.manager.StopServer(); + } + } + } + } + + private void OnGUI() + { + if (this.showGUI) + { + int num = 10 + this.offsetX; + int num2 = 40 + this.offsetY; + bool flag = this.manager.client == null || this.manager.client.connection == null || this.manager.client.connection.connectionId == -1; + if (!this.manager.IsClientConnected() && !QSBNetworkServer.active && this.manager.matchMaker == null) + { + if (flag) + { + if (Application.platform != RuntimePlatform.WebGLPlayer) + { + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Host(H)")) + { + this.manager.StartHost(); + } + num2 += 24; + } + if (GUI.Button(new Rect((float)num, (float)num2, 105f, 20f), "LAN Client(C)")) + { + this.manager.StartClient(); + } + this.manager.networkAddress = GUI.TextField(new Rect((float)(num + 100), (float)num2, 95f, 20f), this.manager.networkAddress); + num2 += 24; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + GUI.Box(new Rect((float)num, (float)num2, 200f, 25f), "( WebGL cannot be server )"); + num2 += 24; + } + else + { + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Server Only(S)")) + { + this.manager.StartServer(); + } + num2 += 24; + } + } + else + { + GUI.Label(new Rect((float)num, (float)num2, 200f, 20f), string.Concat(new object[] + { + "Connecting to ", + this.manager.networkAddress, + ":", + this.manager.networkPort, + ".." + })); + num2 += 24; + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Cancel Connection Attempt")) + { + this.manager.StopClient(); + } + } + } + else + { + if (QSBNetworkServer.active) + { + string text = "Server: port=" + this.manager.networkPort; + if (this.manager.useWebSockets) + { + text += " (Using WebSockets)"; + } + GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), text); + num2 += 24; + } + if (this.manager.IsClientConnected()) + { + GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), string.Concat(new object[] + { + "Client: address=", + this.manager.networkAddress, + " port=", + this.manager.networkPort + })); + num2 += 24; + } + } + if (this.manager.IsClientConnected() && !QSBClientScene.ready) + { + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Client Ready")) + { + QSBClientScene.Ready(this.manager.client.connection); + if (QSBClientScene.localPlayers.Count == 0) + { + QSBClientScene.AddPlayer(0); + } + } + num2 += 24; + } + if (QSBNetworkServer.active || this.manager.IsClientConnected()) + { + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Stop (X)")) + { + this.manager.StopHost(); + } + num2 += 24; + } + if (!QSBNetworkServer.active && !this.manager.IsClientConnected() && flag) + { + num2 += 10; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + GUI.Box(new Rect((float)(num - 5), (float)num2, 220f, 25f), "(WebGL cannot use Match Maker)"); + } + else if (this.manager.matchMaker == null) + { + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Enable Match Maker (M)")) + { + this.manager.StartMatchMaker(); + } + num2 += 24; + } + else + { + if (this.manager.matchInfo == null) + { + if (this.manager.matches == null) + { + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Create Internet Match")) + { + this.manager.matchMaker.CreateMatch(this.manager.matchName, this.manager.matchSize, true, "", "", "", 0, 0, new NetworkMatch.DataResponseDelegate(this.manager.OnMatchCreate)); + } + num2 += 24; + GUI.Label(new Rect((float)num, (float)num2, 100f, 20f), "Room Name:"); + this.manager.matchName = GUI.TextField(new Rect((float)(num + 100), (float)num2, 100f, 20f), this.manager.matchName); + num2 += 24; + num2 += 10; + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Find Internet Match")) + { + this.manager.matchMaker.ListMatches(0, 20, "", false, 0, 0, new NetworkMatch.DataResponseDelegate>(this.manager.OnMatchList)); + } + num2 += 24; + } + else + { + for (int i = 0; i < this.manager.matches.Count; i++) + { + MatchInfoSnapshot matchInfoSnapshot = this.manager.matches[i]; + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Join Match:" + matchInfoSnapshot.name)) + { + this.manager.matchName = matchInfoSnapshot.name; + this.manager.matchMaker.JoinMatch(matchInfoSnapshot.networkId, "", "", "", 0, 0, new NetworkMatch.DataResponseDelegate(this.manager.OnMatchJoined)); + } + num2 += 24; + } + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Back to Match Menu")) + { + this.manager.matches = null; + } + num2 += 24; + } + } + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Change MM server")) + { + this.m_ShowServer = !this.m_ShowServer; + } + if (this.m_ShowServer) + { + num2 += 24; + if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Local")) + { + this.manager.SetMatchHost("localhost", 1337, false); + this.m_ShowServer = false; + } + num2 += 24; + if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Internet")) + { + this.manager.SetMatchHost("mm.unet.unity3d.com", 443, true); + this.m_ShowServer = false; + } + num2 += 24; + if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Staging")) + { + this.manager.SetMatchHost("staging-mm.unet.unity3d.com", 443, true); + this.m_ShowServer = false; + } + } + num2 += 24; + GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), "MM Uri: " + this.manager.matchMaker.baseUri); + num2 += 24; + if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Disable Match Maker")) + { + this.manager.StopMatchMaker(); + } + num2 += 24; + } + } + } + } + + public QSBNetworkManager manager; + + [SerializeField] + public bool showGUI = true; + + [SerializeField] + public int offsetX; + + [SerializeField] + public int offsetY; + + private bool m_ShowServer; + } +} diff --git a/QSB/QSBNetworkManagerUNET.cs b/QSB/QSBNetworkManagerUNET.cs new file mode 100644 index 000000000..7c18deb94 --- /dev/null +++ b/QSB/QSBNetworkManagerUNET.cs @@ -0,0 +1,1718 @@ +using OWML.Common; +using QSB.Utility; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.Networking.Match; +using UnityEngine.Networking.NetworkSystem; +using UnityEngine.Networking.Types; +using UnityEngine.SceneManagement; + +namespace QSB +{ + public class QSBNetworkManagerUNET : MonoBehaviour + { + public int networkPort + { + get + { + return m_NetworkPort; + } + set + { + m_NetworkPort = value; + } + } + + public bool serverBindToIP + { + get + { + return m_ServerBindToIP; + } + set + { + m_ServerBindToIP = value; + } + } + + public string serverBindAddress + { + get + { + return m_ServerBindAddress; + } + set + { + m_ServerBindAddress = value; + } + } + + public string networkAddress + { + get + { + return m_NetworkAddress; + } + set + { + m_NetworkAddress = value; + } + } + + public bool dontDestroyOnLoad + { + get + { + return m_DontDestroyOnLoad; + } + set + { + m_DontDestroyOnLoad = value; + } + } + + public bool runInBackground + { + get + { + return m_RunInBackground; + } + set + { + m_RunInBackground = value; + } + } + + public bool scriptCRCCheck + { + get + { + return m_ScriptCRCCheck; + } + set + { + m_ScriptCRCCheck = value; + } + } + + [Obsolete("moved to NetworkMigrationManager")] + public bool sendPeerInfo + { + get + { + return false; + } + set + { + } + } + + public float maxDelay + { + get + { + return m_MaxDelay; + } + set + { + m_MaxDelay = value; + } + } + + public LogFilter.FilterLevel logLevel + { + get + { + return m_LogLevel; + } + set + { + m_LogLevel = value; + LogFilter.currentLogLevel = (int)value; + } + } + + public GameObject playerPrefab + { + get + { + return m_PlayerPrefab; + } + set + { + DebugLog.DebugWrite("setting player prefab"); + m_PlayerPrefab = value; + } + } + + public bool autoCreatePlayer + { + get + { + return m_AutoCreatePlayer; + } + set + { + m_AutoCreatePlayer = value; + } + } + + public PlayerSpawnMethod playerSpawnMethod + { + get + { + return m_PlayerSpawnMethod; + } + set + { + m_PlayerSpawnMethod = value; + } + } + + public string offlineScene + { + get + { + return m_OfflineScene; + } + set + { + m_OfflineScene = value; + } + } + + public string onlineScene + { + get + { + return m_OnlineScene; + } + set + { + m_OnlineScene = value; + } + } + + public List spawnPrefabs + { + get + { + return m_SpawnPrefabs; + } + } + + public List startPositions + { + get + { + return s_StartPositions; + } + } + + public bool customConfig + { + get + { + return m_CustomConfig; + } + set + { + m_CustomConfig = value; + } + } + + public ConnectionConfig connectionConfig + { + get + { + if (m_ConnectionConfig == null) + { + m_ConnectionConfig = new ConnectionConfig(); + } + return m_ConnectionConfig; + } + } + + public GlobalConfig globalConfig + { + get + { + if (m_GlobalConfig == null) + { + m_GlobalConfig = new GlobalConfig(); + } + return m_GlobalConfig; + } + } + + public int maxConnections + { + get + { + return m_MaxConnections; + } + set + { + m_MaxConnections = value; + } + } + + public List channels + { + get + { + return m_Channels; + } + } + + public EndPoint secureTunnelEndpoint + { + get + { + return m_EndPoint; + } + set + { + m_EndPoint = value; + } + } + + public bool useWebSockets + { + get + { + return m_UseWebSockets; + } + set + { + m_UseWebSockets = value; + } + } + + public bool useSimulator + { + get + { + return m_UseSimulator; + } + set + { + m_UseSimulator = value; + } + } + + public int simulatedLatency + { + get + { + return m_SimulatedLatency; + } + set + { + m_SimulatedLatency = value; + } + } + + public float packetLossPercentage + { + get + { + return m_PacketLossPercentage; + } + set + { + m_PacketLossPercentage = value; + } + } + + public string matchHost + { + get + { + return m_MatchHost; + } + set + { + m_MatchHost = value; + } + } + + public int matchPort + { + get + { + return m_MatchPort; + } + set + { + m_MatchPort = value; + } + } + + public bool clientLoadedScene + { + get + { + return m_ClientLoadedScene; + } + set + { + m_ClientLoadedScene = value; + } + } + + public QSBNetworkMigrationManager migrationManager + { + get + { + return m_MigrationManager; + } + } + + public int numPlayers + { + get + { + int num = 0; + for (int i = 0; i < QSBNetworkServer.connections.Count; i++) + { + QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; + if (networkConnection != null) + { + for (int j = 0; j < networkConnection.PlayerControllers.Count; j++) + { + if (networkConnection.PlayerControllers[j].IsValid) + { + num++; + } + } + } + } + return num; + } + } + + private void Awake() + { + InitializeSingleton(); + } + + private void InitializeSingleton() + { + if (!(singleton != null) || !(singleton == this)) + { + int logLevel = (int)m_LogLevel; + if (logLevel != -1) + { + LogFilter.currentLogLevel = logLevel; + } + if (m_DontDestroyOnLoad) + { + if (singleton != null) + { + Debug.Log("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used."); + Destroy(base.gameObject); + return; + } + Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)"); + singleton = this; + if (Application.isPlaying) + { + DontDestroyOnLoad(base.gameObject); + } + } + else + { + Debug.Log("NetworkManager created singleton (ForScene)"); + singleton = this; + } + if (m_NetworkAddress != "") + { + s_Address = m_NetworkAddress; + } + else if (s_Address != "") + { + m_NetworkAddress = s_Address; + } + } + } + + private void OnValidate() + { + if (m_SimulatedLatency < 1) + { + m_SimulatedLatency = 1; + } + if (m_SimulatedLatency > 500) + { + m_SimulatedLatency = 500; + } + if (m_PacketLossPercentage < 0f) + { + m_PacketLossPercentage = 0f; + } + if (m_PacketLossPercentage > 99f) + { + m_PacketLossPercentage = 99f; + } + if (m_MaxConnections <= 0) + { + m_MaxConnections = 1; + } + if (m_MaxConnections > 32000) + { + m_MaxConnections = 32000; + } + if (m_MaxBufferedPackets <= 0) + { + m_MaxBufferedPackets = 0; + } + if (m_MaxBufferedPackets > 512) + { + m_MaxBufferedPackets = 512; + if (LogFilter.logError) + { + Debug.LogError("NetworkManager - MaxBufferedPackets cannot be more than " + 512); + } + } + if (m_PlayerPrefab != null && m_PlayerPrefab.GetComponent() == null) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkManager - playerPrefab must have a NetworkIdentity."); + } + m_PlayerPrefab = null; + } + if (m_ConnectionConfig != null && m_ConnectionConfig.MinUpdateTimeout <= 0U) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkManager MinUpdateTimeout cannot be zero or less. The value will be reset to 1 millisecond"); + } + m_ConnectionConfig.MinUpdateTimeout = 1U; + } + if (m_GlobalConfig != null) + { + if (m_GlobalConfig.ThreadAwakeTimeout <= 0U) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkManager ThreadAwakeTimeout cannot be zero or less. The value will be reset to 1 millisecond"); + } + m_GlobalConfig.ThreadAwakeTimeout = 1U; + } + } + } + + internal void RegisterServerMessages() + { + QSBNetworkServer.RegisterHandler(32, new QSBNetworkMessageDelegate(OnServerConnectInternal)); + QSBNetworkServer.RegisterHandler(33, new QSBNetworkMessageDelegate(OnServerDisconnectInternal)); + QSBNetworkServer.RegisterHandler(35, new QSBNetworkMessageDelegate(OnServerReadyMessageInternal)); + QSBNetworkServer.RegisterHandler(37, new QSBNetworkMessageDelegate(OnServerAddPlayerMessageInternal)); + QSBNetworkServer.RegisterHandler(38, new QSBNetworkMessageDelegate(OnServerRemovePlayerMessageInternal)); + QSBNetworkServer.RegisterHandler(34, new QSBNetworkMessageDelegate(OnServerErrorInternal)); + } + + public void SetupMigrationManager(QSBNetworkMigrationManager man) + { + m_MigrationManager = man; + } + + public bool StartServer(ConnectionConfig config, int maxConnections) + { + return StartServer(null, config, maxConnections); + } + + public bool StartServer() + { + return StartServer(null); + } + + public bool StartServer(MatchInfo info) + { + return StartServer(info, null, -1); + } + + private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnections) + { + InitializeSingleton(); + OnStartServer(); + if (m_RunInBackground) + { + Application.runInBackground = true; + } + QSBNetworkCRC.scriptCRCCheck = scriptCRCCheck; + QSBNetworkServer.useWebSockets = m_UseWebSockets; + if (m_GlobalConfig != null) + { + NetworkTransport.Init(m_GlobalConfig); + } + if (m_CustomConfig && m_ConnectionConfig != null && config == null) + { + m_ConnectionConfig.Channels.Clear(); + for (int i = 0; i < m_Channels.Count; i++) + { + m_ConnectionConfig.AddChannel(m_Channels[i]); + } + QSBNetworkServer.Configure(m_ConnectionConfig, m_MaxConnections); + } + if (config != null) + { + QSBNetworkServer.Configure(config, maxConnections); + } + if (info != null) + { + if (!QSBNetworkServer.Listen(info, m_NetworkPort)) + { + if (LogFilter.logError) + { + Debug.LogError("StartServer listen failed."); + } + return false; + } + } + else if (m_ServerBindToIP && !string.IsNullOrEmpty(m_ServerBindAddress)) + { + if (!QSBNetworkServer.Listen(m_ServerBindAddress, m_NetworkPort)) + { + if (LogFilter.logError) + { + Debug.LogError("StartServer listen on " + m_ServerBindAddress + " failed."); + } + return false; + } + } + else if (!QSBNetworkServer.Listen(m_NetworkPort)) + { + if (LogFilter.logError) + { + Debug.LogError("StartServer listen failed."); + } + return false; + } + RegisterServerMessages(); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StartServer port:" + m_NetworkPort); + } + isNetworkActive = true; + string name = SceneManager.GetSceneAt(0).name; + if (!string.IsNullOrEmpty(m_OnlineScene) && m_OnlineScene != name && m_OnlineScene != m_OfflineScene) + { + ServerChangeScene(m_OnlineScene); + } + else + { + QSBNetworkServer.SpawnObjects(); + } + return true; + } + + internal void RegisterClientMessages(QSBNetworkClient client) + { + client.RegisterHandler(32, new QSBNetworkMessageDelegate(OnClientConnectInternal)); + client.RegisterHandler(33, new QSBNetworkMessageDelegate(OnClientDisconnectInternal)); + client.RegisterHandler(36, new QSBNetworkMessageDelegate(OnClientNotReadyMessageInternal)); + client.RegisterHandler(34, new QSBNetworkMessageDelegate(OnClientErrorInternal)); + client.RegisterHandler(39, new QSBNetworkMessageDelegate(OnClientSceneInternal)); + if (m_PlayerPrefab != null) + { + ClientScene.RegisterPrefab(m_PlayerPrefab); + } + for (int i = 0; i < m_SpawnPrefabs.Count; i++) + { + GameObject gameObject = m_SpawnPrefabs[i]; + if (gameObject != null) + { + ClientScene.RegisterPrefab(gameObject); + } + } + } + + public void UseExternalClient(QSBNetworkClient externalClient) + { + if (m_RunInBackground) + { + Application.runInBackground = true; + } + if (externalClient != null) + { + client = externalClient; + isNetworkActive = true; + this.RegisterClientMessages(client); + this.OnStartClient(client); + } + else + { + OnStopClient(); + QSBClientScene.DestroyAllClientObjects(); + QSBClientScene.HandleClientDisconnect(client.connection); + client = null; + if (!string.IsNullOrEmpty(m_OfflineScene)) + { + ClientChangeScene(m_OfflineScene, false); + } + } + s_Address = m_NetworkAddress; + } + + public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int hostPort) + { + DebugLog.DebugWrite("start client proper"); + InitializeSingleton(); + matchInfo = info; + if (m_RunInBackground) + { + Application.runInBackground = true; + } + isNetworkActive = true; + if (m_GlobalConfig != null) + { + NetworkTransport.Init(m_GlobalConfig); + } + client = new QSBNetworkClient(); + client.hostPort = hostPort; + if (config != null) + { + if (config.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2) + { + throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform"); + } + client.Configure(config, 1); + } + else if (m_CustomConfig && m_ConnectionConfig != null) + { + m_ConnectionConfig.Channels.Clear(); + for (int i = 0; i < m_Channels.Count; i++) + { + m_ConnectionConfig.AddChannel(m_Channels[i]); + } + if (m_ConnectionConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2) + { + throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform"); + } + client.Configure(m_ConnectionConfig, m_MaxConnections); + } + this.RegisterClientMessages(client); + if (matchInfo != null) + { + DebugLog.DebugWrite("NetworkManager StartClient match: " + matchInfo); + client.Connect(matchInfo); + } + else if (m_EndPoint != null) + { + DebugLog.DebugWrite("NetworkManager StartClient using provided SecureTunnel"); + client.Connect(m_EndPoint); + } + else + { + if (string.IsNullOrEmpty(m_NetworkAddress)) + { + DebugLog.DebugWrite("Must set the Network Address field in the manager"); + return null; + } + DebugLog.DebugWrite(string.Concat(new object[] + { + "NetworkManager StartClient address:", + m_NetworkAddress, + " port:", + m_NetworkPort + })); + if (m_UseSimulator) + { + DebugLog.DebugWrite("connecting with simulator"); + client.ConnectWithSimulator(m_NetworkAddress, m_NetworkPort, m_SimulatedLatency, m_PacketLossPercentage); + } + else + { + DebugLog.DebugWrite("connecting"); + client.Connect(m_NetworkAddress, m_NetworkPort); + } + } + if (m_MigrationManager != null) + { + m_MigrationManager.Initialize(client, matchInfo); + } + this.OnStartClient(client); + s_Address = m_NetworkAddress; + return client; + } + + public QSBNetworkClient StartClient(MatchInfo matchInfo) + { + return StartClient(matchInfo, null); + } + + public QSBNetworkClient StartClient() + { + DebugLog.DebugWrite("start client"); + return StartClient(null, null); + } + + public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config) + { + return StartClient(info, config, 0); + } + + public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnections) + { + OnStartHost(); + QSBNetworkClient result; + if (StartServer(config, maxConnections)) + { + QSBNetworkClient networkClient = ConnectLocalClient(); + OnServerConnect(networkClient.connection); + OnStartClient(networkClient); + result = networkClient; + } + else + { + result = null; + } + return result; + } + + public virtual QSBNetworkClient StartHost(MatchInfo info) + { + OnStartHost(); + matchInfo = info; + QSBNetworkClient result; + if (StartServer(info)) + { + QSBNetworkClient networkClient = ConnectLocalClient(); + OnStartClient(networkClient); + result = networkClient; + } + else + { + result = null; + } + return result; + } + + public virtual QSBNetworkClient StartHost() + { + OnStartHost(); + QSBNetworkClient result; + if (StartServer()) + { + QSBNetworkClient networkClient = ConnectLocalClient(); + OnStartClient(networkClient); + result = networkClient; + } + else + { + result = null; + } + return result; + } + + private QSBNetworkClient ConnectLocalClient() + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StartHost port:" + m_NetworkPort); + } + m_NetworkAddress = "localhost"; + client = QSBClientScene.ConnectLocalServer(); + this.RegisterClientMessages(client); + if (m_MigrationManager != null) + { + m_MigrationManager.Initialize(client, matchInfo); + } + return client; + } + + public void StopHost() + { + bool active = QSBNetworkServer.active; + OnStopHost(); + StopServer(); + StopClient(); + if (m_MigrationManager != null) + { + if (active) + { + m_MigrationManager.LostHostOnHost(); + } + } + } + + public void StopServer() + { + if (QSBNetworkServer.active) + { + OnStopServer(); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StopServer"); + } + isNetworkActive = false; + QSBNetworkServer.Shutdown(); + StopMatchMaker(); + if (!string.IsNullOrEmpty(m_OfflineScene)) + { + ServerChangeScene(m_OfflineScene); + } + CleanupNetworkIdentities(); + } + } + + public void StopClient() + { + OnStopClient(); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StopClient"); + } + isNetworkActive = false; + if (client != null) + { + client.Disconnect(); + client.Shutdown(); + client = null; + } + StopMatchMaker(); + ClientScene.DestroyAllClientObjects(); + if (!string.IsNullOrEmpty(m_OfflineScene)) + { + ClientChangeScene(m_OfflineScene, false); + } + CleanupNetworkIdentities(); + } + + public virtual void ServerChangeScene(string newSceneName) + { + if (string.IsNullOrEmpty(newSceneName)) + { + if (LogFilter.logError) + { + Debug.LogError("ServerChangeScene empty scene name"); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("ServerChangeScene " + newSceneName); + } + QSBNetworkServer.SetAllClientsNotReady(); + networkSceneName = newSceneName; + s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); + StringMessage msg = new StringMessage(networkSceneName); + QSBNetworkServer.SendToAll(39, msg); + s_StartPositionIndex = 0; + s_StartPositions.Clear(); + } + } + + private void CleanupNetworkIdentities() + { + foreach (QSBNetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll()) + { + networkIdentity.MarkForReset(); + } + } + + internal void ClientChangeScene(string newSceneName, bool forceReload) + { + if (string.IsNullOrEmpty(newSceneName)) + { + if (LogFilter.logError) + { + Debug.LogError("ClientChangeScene empty scene name"); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); + } + if (newSceneName == networkSceneName) + { + if (m_MigrationManager != null) + { + FinishLoadScene(); + return; + } + if (!forceReload) + { + FinishLoadScene(); + return; + } + } + s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); + networkSceneName = newSceneName; + } + } + + private void FinishLoadScene() + { + if (client != null) + { + if (s_ClientReadyConnection != null) + { + m_ClientLoadedScene = true; + this.OnClientConnect(s_ClientReadyConnection); + s_ClientReadyConnection = null; + } + } + else + { + Debug.Log("FinishLoadScene client is null"); + } + if (QSBNetworkServer.active) + { + QSBNetworkServer.SpawnObjects(); + OnServerSceneChanged(networkSceneName); + } + if (IsClientConnected() && client != null) + { + this.RegisterClientMessages(client); + this.OnClientSceneChanged(client.connection); + } + } + + internal static void UpdateScene() + { + if (!(singleton == null)) + { + if (s_LoadingSceneAsync != null) + { + if (s_LoadingSceneAsync.isDone) + { + if (LogFilter.logDebug) + { + Debug.Log("ClientChangeScene done readyCon:" + s_ClientReadyConnection); + } + singleton.FinishLoadScene(); + s_LoadingSceneAsync.allowSceneActivation = true; + s_LoadingSceneAsync = null; + } + } + } + } + + private void OnDestroy() + { + Debug.Log("NetworkManager destroyed"); + } + + public static void RegisterStartPosition(Transform start) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "RegisterStartPosition: (", + start.gameObject.name, + ") ", + start.position + })); + } + s_StartPositions.Add(start); + } + + public static void UnRegisterStartPosition(Transform start) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "UnRegisterStartPosition: (", + start.gameObject.name, + ") ", + start.position + })); + } + s_StartPositions.Remove(start); + } + + public bool IsClientConnected() + { + return client != null && client.isConnected; + } + + public static void Shutdown() + { + if (!(singleton == null)) + { + s_StartPositions.Clear(); + s_StartPositionIndex = 0; + s_ClientReadyConnection = null; + singleton.StopHost(); + singleton = null; + } + } + + internal void OnServerConnectInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerConnectInternal"); + } + netMsg.conn.SetMaxDelay(m_MaxDelay); + if (m_MaxBufferedPackets != 512) + { + for (int i = 0; i < QSBNetworkServer.numChannels; i++) + { + netMsg.conn.SetChannelOption(i, ChannelOption.MaxPendingBuffers, m_MaxBufferedPackets); + } + } + if (!m_AllowFragmentation) + { + for (int j = 0; j < QSBNetworkServer.numChannels; j++) + { + netMsg.conn.SetChannelOption(j, ChannelOption.AllowFragmentation, 0); + } + } + if (networkSceneName != "" && networkSceneName != m_OfflineScene) + { + StringMessage msg = new StringMessage(networkSceneName); + netMsg.conn.Send(39, msg); + } + if (m_MigrationManager != null) + { + m_MigrationManager.SendPeerInfo(); + } + OnServerConnect(netMsg.conn); + } + + internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerDisconnectInternal"); + } + if (m_MigrationManager != null) + { + m_MigrationManager.SendPeerInfo(); + } + OnServerDisconnect(netMsg.conn); + } + + internal void OnServerReadyMessageInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerReadyMessageInternal"); + } + OnServerReady(netMsg.conn); + } + + internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); + } + netMsg.ReadMessage(s_AddPlayerMessage); + if (s_AddPlayerMessage.msgSize != 0) + { + NetworkReader extraMessageReader = new NetworkReader(s_AddPlayerMessage.msgData); + this.OnServerAddPlayer(netMsg.conn, s_AddPlayerMessage.playerControllerId, extraMessageReader); + } + else + { + this.OnServerAddPlayer(netMsg.conn, s_AddPlayerMessage.playerControllerId); + } + if (m_MigrationManager != null) + { + m_MigrationManager.SendPeerInfo(); + } + } + + internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); + } + netMsg.ReadMessage(s_RemovePlayerMessage); + QSBPlayerController player; + netMsg.conn.GetPlayerController(s_RemovePlayerMessage.playerControllerId, out player); + OnServerRemovePlayer(netMsg.conn, player); + netMsg.conn.RemovePlayerController(s_RemovePlayerMessage.playerControllerId); + if (m_MigrationManager != null) + { + m_MigrationManager.SendPeerInfo(); + } + } + + internal void OnServerErrorInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerErrorInternal"); + } + netMsg.ReadMessage(s_ErrorMessage); + this.OnServerError(netMsg.conn, s_ErrorMessage.errorCode); + } + + internal void OnClientConnectInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientConnectInternal"); + } + netMsg.conn.SetMaxDelay(m_MaxDelay); + string name = SceneManager.GetSceneAt(0).name; + if (string.IsNullOrEmpty(m_OnlineScene) || m_OnlineScene == m_OfflineScene || name == m_OnlineScene) + { + m_ClientLoadedScene = false; + OnClientConnect(netMsg.conn); + } + else + { + s_ClientReadyConnection = netMsg.conn; + } + } + + internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientDisconnectInternal"); + } + if (m_MigrationManager != null) + { + if (m_MigrationManager.LostHostOnClient(netMsg.conn)) + { + return; + } + } + if (!string.IsNullOrEmpty(m_OfflineScene)) + { + ClientChangeScene(m_OfflineScene, false); + } + if (matchMaker != null && matchInfo != null && matchInfo.networkId != NetworkID.Invalid && matchInfo.nodeId != NodeID.Invalid) + { + matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, matchInfo.domain, new NetworkMatch.BasicResponseDelegate(OnDropConnection)); + } + OnClientDisconnect(netMsg.conn); + } + + internal void OnClientNotReadyMessageInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); + } + QSBClientScene.SetNotReady(); + OnClientNotReady(netMsg.conn); + } + + internal void OnClientErrorInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientErrorInternal"); + } + netMsg.ReadMessage(s_ErrorMessage); + this.OnClientError(netMsg.conn, s_ErrorMessage.errorCode); + } + + internal void OnClientSceneInternal(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientSceneInternal"); + } + string newSceneName = netMsg.reader.ReadString(); + if (IsClientConnected() && !QSBNetworkServer.active) + { + ClientChangeScene(newSceneName, true); + } + } + + public virtual void OnServerConnect(QSBNetworkConnection conn) + { + } + + public virtual void OnServerDisconnect(QSBNetworkConnection conn) + { + QSBNetworkServer.DestroyPlayersForConnection(conn); + if (conn.LastError != NetworkError.Ok) + { + if (LogFilter.logError) + { + Debug.LogError("ServerDisconnected due to error: " + conn.LastError); + } + } + } + + public virtual void OnServerReady(QSBNetworkConnection conn) + { + if (conn.PlayerControllers.Count == 0) + { + if (LogFilter.logDebug) + { + Debug.Log("Ready with no player object"); + } + } + QSBNetworkServer.SetClientReady(conn); + } + + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) + { + OnServerAddPlayerInternal(conn, playerControllerId); + } + + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) + { + OnServerAddPlayerInternal(conn, playerControllerId); + } + + private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerControllerId) + { + if (m_PlayerPrefab == null) + { + if (LogFilter.logError) + { + DebugLog.ToConsole("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object.", MessageType.Error); + } + } + else if (m_PlayerPrefab.GetComponent() == null) + { + if (LogFilter.logError) + { + DebugLog.ToConsole("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab.", MessageType.Error); + } + } + else if ((int)playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[(int)playerControllerId].IsValid && conn.PlayerControllers[(int)playerControllerId].gameObject != null) + { + if (LogFilter.logError) + { + Debug.LogError("There is already a player at that playerControllerId for this connections."); + } + } + else + { + Transform startPosition = GetStartPosition(); + GameObject player; + if (startPosition != null) + { + player = Instantiate(m_PlayerPrefab, startPosition.position, startPosition.rotation); + } + else + { + player = Instantiate(m_PlayerPrefab, Vector3.zero, Quaternion.identity); + } + QSBNetworkServer.AddPlayerForConnection(conn, player, playerControllerId); + } + } + + public Transform GetStartPosition() + { + if (s_StartPositions.Count > 0) + { + for (int i = s_StartPositions.Count - 1; i >= 0; i--) + { + if (s_StartPositions[i] == null) + { + s_StartPositions.RemoveAt(i); + } + } + } + Transform result; + if (m_PlayerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0) + { + int index = UnityEngine.Random.Range(0, s_StartPositions.Count); + result = s_StartPositions[index]; + } + else if (m_PlayerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0) + { + if (s_StartPositionIndex >= s_StartPositions.Count) + { + s_StartPositionIndex = 0; + } + Transform transform = s_StartPositions[s_StartPositionIndex]; + s_StartPositionIndex++; + result = transform; + } + else + { + result = null; + } + return result; + } + + public virtual void OnServerRemovePlayer(QSBNetworkConnection conn, QSBPlayerController player) + { + if (player.gameObject != null) + { + QSBNetworkServer.Destroy(player.gameObject); + } + } + + public virtual void OnServerError(QSBNetworkConnection conn, int errorCode) + { + } + + public virtual void OnServerSceneChanged(string sceneName) + { + } + + public virtual void OnClientConnect(QSBNetworkConnection conn) + { + if (!clientLoadedScene) + { + QSBClientScene.Ready(conn); + if (m_AutoCreatePlayer) + { + QSBClientScene.AddPlayer(0); + } + } + } + + public virtual void OnClientDisconnect(QSBNetworkConnection conn) + { + StopClient(); + if (conn.LastError != NetworkError.Ok) + { + if (LogFilter.logError) + { + Debug.LogError("ClientDisconnected due to error: " + conn.LastError); + } + } + } + + public virtual void OnClientError(QSBNetworkConnection conn, int errorCode) + { + } + + public virtual void OnClientNotReady(QSBNetworkConnection conn) + { + } + + public virtual void OnClientSceneChanged(QSBNetworkConnection conn) + { + QSBClientScene.Ready(conn); + if (m_AutoCreatePlayer) + { + bool flag = QSBClientScene.localPlayers.Count == 0; + bool flag2 = false; + for (int i = 0; i < QSBClientScene.localPlayers.Count; i++) + { + if (QSBClientScene.localPlayers[i].gameObject != null) + { + flag2 = true; + break; + } + } + if (!flag2) + { + flag = true; + } + if (flag) + { + QSBClientScene.AddPlayer(0); + } + } + } + + public void StartMatchMaker() + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StartMatchMaker"); + } + SetMatchHost(m_MatchHost, m_MatchPort, m_MatchPort == 443); + } + + public void StopMatchMaker() + { + if (matchMaker != null && matchInfo != null && matchInfo.networkId != NetworkID.Invalid && matchInfo.nodeId != NodeID.Invalid) + { + matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, matchInfo.domain, new NetworkMatch.BasicResponseDelegate(OnDropConnection)); + } + if (matchMaker != null) + { + Destroy(matchMaker); + matchMaker = null; + } + matchInfo = null; + matches = null; + } + + public void SetMatchHost(string newHost, int port, bool https) + { + if (matchMaker == null) + { + matchMaker = base.gameObject.AddComponent(); + } + if (newHost == "127.0.0.1") + { + newHost = "localhost"; + } + string text = "http://"; + if (https) + { + text = "https://"; + } + if (newHost.StartsWith("http://")) + { + newHost = newHost.Replace("http://", ""); + } + if (newHost.StartsWith("https://")) + { + newHost = newHost.Replace("https://", ""); + } + m_MatchHost = newHost; + m_MatchPort = port; + string text2 = string.Concat(new object[] + { + text, + m_MatchHost, + ":", + m_MatchPort + }); + if (LogFilter.logDebug) + { + Debug.Log("SetMatchHost:" + text2); + } + matchMaker.baseUri = new Uri(text2); + } + + public virtual void OnStartHost() + { + } + + public virtual void OnStartServer() + { + } + + public virtual void OnStartClient(QSBNetworkClient client) + { + } + + public virtual void OnStopServer() + { + } + + public virtual void OnStopClient() + { + } + + public virtual void OnStopHost() + { + } + + public virtual void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) + { + if (LogFilter.logDebug) + { + Debug.LogFormat("NetworkManager OnMatchCreate Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", new object[] + { + success, + extendedInfo, + matchInfo + }); + } + if (success) + { + StartHost(matchInfo); + } + } + + public virtual void OnMatchList(bool success, string extendedInfo, List matchList) + { + if (LogFilter.logDebug) + { + Debug.LogFormat("NetworkManager OnMatchList Success:{0}, ExtendedInfo:{1}, matchList.Count:{2}", new object[] + { + success, + extendedInfo, + matchList.Count + }); + } + matches = matchList; + } + + public virtual void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) + { + if (LogFilter.logDebug) + { + Debug.LogFormat("NetworkManager OnMatchJoined Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", new object[] + { + success, + extendedInfo, + matchInfo + }); + } + if (success) + { + StartClient(matchInfo); + } + } + + public virtual void OnDestroyMatch(bool success, string extendedInfo) + { + if (LogFilter.logDebug) + { + Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", new object[] + { + success, + extendedInfo + }); + } + } + + public virtual void OnDropConnection(bool success, string extendedInfo) + { + if (LogFilter.logDebug) + { + Debug.LogFormat("NetworkManager OnDropConnection Success:{0}, ExtendedInfo:{1}", new object[] + { + success, + extendedInfo + }); + } + } + + public virtual void OnSetMatchAttributes(bool success, string extendedInfo) + { + if (LogFilter.logDebug) + { + Debug.LogFormat("NetworkManager OnSetMatchAttributes Success:{0}, ExtendedInfo:{1}", new object[] + { + success, + extendedInfo + }); + } + } + + [SerializeField] + private int m_NetworkPort = 7777; + + [SerializeField] + private bool m_ServerBindToIP; + + [SerializeField] + private string m_ServerBindAddress = ""; + + [SerializeField] + private string m_NetworkAddress = "localhost"; + + [SerializeField] + private bool m_DontDestroyOnLoad = true; + + [SerializeField] + private bool m_RunInBackground = true; + + [SerializeField] + private bool m_ScriptCRCCheck = true; + + [SerializeField] + private float m_MaxDelay = 0.01f; + + [SerializeField] + private LogFilter.FilterLevel m_LogLevel = LogFilter.FilterLevel.Info; + + [SerializeField] + private GameObject m_PlayerPrefab; + + [SerializeField] + private bool m_AutoCreatePlayer = true; + + [SerializeField] + private PlayerSpawnMethod m_PlayerSpawnMethod; + + [SerializeField] + private string m_OfflineScene = ""; + + [SerializeField] + private string m_OnlineScene = ""; + + [SerializeField] + private List m_SpawnPrefabs = new List(); + + [SerializeField] + private bool m_CustomConfig; + + [SerializeField] + private int m_MaxConnections = 4; + + [SerializeField] + private ConnectionConfig m_ConnectionConfig; + + [SerializeField] + private GlobalConfig m_GlobalConfig; + + [SerializeField] + private List m_Channels = new List(); + + [SerializeField] + private bool m_UseWebSockets; + + [SerializeField] + private bool m_UseSimulator; + + [SerializeField] + private int m_SimulatedLatency = 1; + + [SerializeField] + private float m_PacketLossPercentage; + + [SerializeField] + private int m_MaxBufferedPackets = 16; + + [SerializeField] + private bool m_AllowFragmentation = true; + + [SerializeField] + private string m_MatchHost = "mm.unet.unity3d.com"; + + [SerializeField] + private int m_MatchPort = 443; + + [SerializeField] + public string matchName = "default"; + + [SerializeField] + public uint matchSize = 4U; + + private QSBNetworkMigrationManager m_MigrationManager; + + private EndPoint m_EndPoint; + + private bool m_ClientLoadedScene; + + public static string networkSceneName = ""; + + public bool isNetworkActive; + + public QSBNetworkClient client; + + private static List s_StartPositions = new List(); + + private static int s_StartPositionIndex; + + public MatchInfo matchInfo; + + public NetworkMatch matchMaker; + + public List matches; + + public static QSBNetworkManagerUNET singleton; + + private static AddPlayerMessage s_AddPlayerMessage = new AddPlayerMessage(); + + private static RemovePlayerMessage s_RemovePlayerMessage = new RemovePlayerMessage(); + + private static ErrorMessage s_ErrorMessage = new ErrorMessage(); + + private static AsyncOperation s_LoadingSceneAsync; + + private static QSBNetworkConnection s_ClientReadyConnection; + + private static string s_Address; + } +} diff --git a/QSB/QSBNetworkMigrationManager.cs b/QSB/QSBNetworkMigrationManager.cs new file mode 100644 index 000000000..9ae64a55f --- /dev/null +++ b/QSB/QSBNetworkMigrationManager.cs @@ -0,0 +1,1070 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.Networking.Match; +using UnityEngine.Networking.NetworkSystem; +using UnityEngine.Networking.Types; + +namespace QSB +{ + public class QSBNetworkMigrationManager : MonoBehaviour + { + private void AddPendingPlayer(GameObject obj, int connectionId, NetworkInstanceId netId, short playerControllerId) + { + if (!this.m_PendingPlayers.ContainsKey(connectionId)) + { + ConnectionPendingPlayers value = default(ConnectionPendingPlayers); + value.players = new List(); + this.m_PendingPlayers[connectionId] = value; + } + PendingPlayerInfo item = default(PendingPlayerInfo); + item.netId = netId; + item.playerControllerId = playerControllerId; + item.obj = obj; + this.m_PendingPlayers[connectionId].players.Add(item); + } + + private GameObject FindPendingPlayer(int connectionId, NetworkInstanceId netId, short playerControllerId) + { + if (this.m_PendingPlayers.ContainsKey(connectionId)) + { + for (int i = 0; i < this.m_PendingPlayers[connectionId].players.Count; i++) + { + PendingPlayerInfo pendingPlayerInfo = this.m_PendingPlayers[connectionId].players[i]; + if (pendingPlayerInfo.netId == netId && pendingPlayerInfo.playerControllerId == playerControllerId) + { + return pendingPlayerInfo.obj; + } + } + } + return null; + } + + private void RemovePendingPlayer(int connectionId) + { + this.m_PendingPlayers.Remove(connectionId); + } + + public bool hostMigration + { + get + { + return this.m_HostMigration; + } + set + { + this.m_HostMigration = value; + } + } + + public bool showGUI + { + get + { + return this.m_ShowGUI; + } + set + { + this.m_ShowGUI = value; + } + } + + public int offsetX + { + get + { + return this.m_OffsetX; + } + set + { + this.m_OffsetX = value; + } + } + + public int offsetY + { + get + { + return this.m_OffsetY; + } + set + { + this.m_OffsetY = value; + } + } + + public QSBNetworkClient client + { + get + { + return this.m_Client; + } + } + + public bool waitingToBecomeNewHost + { + get + { + return this.m_WaitingToBecomeNewHost; + } + set + { + this.m_WaitingToBecomeNewHost = value; + } + } + + public bool waitingReconnectToNewHost + { + get + { + return this.m_WaitingReconnectToNewHost; + } + set + { + this.m_WaitingReconnectToNewHost = value; + } + } + + public bool disconnectedFromHost + { + get + { + return this.m_DisconnectedFromHost; + } + } + + public bool hostWasShutdown + { + get + { + return this.m_HostWasShutdown; + } + } + + public MatchInfo matchInfo + { + get + { + return this.m_MatchInfo; + } + } + + public int oldServerConnectionId + { + get + { + return this.m_OldServerConnectionId; + } + } + + public string newHostAddress + { + get + { + return this.m_NewHostAddress; + } + set + { + this.m_NewHostAddress = value; + } + } + + public PeerInfoMessage[] peers + { + get + { + return this.m_Peers; + } + } + + public Dictionary pendingPlayers + { + get + { + return this.m_PendingPlayers; + } + } + + private void Start() + { + this.Reset(-1); + } + + public void Reset(int reconnectId) + { + this.m_OldServerConnectionId = -1; + this.m_WaitingToBecomeNewHost = false; + this.m_WaitingReconnectToNewHost = false; + this.m_DisconnectedFromHost = false; + this.m_HostWasShutdown = false; + QSBClientScene.SetReconnectId(reconnectId, this.m_Peers); + if (QSBNetworkManager.singleton != null) + { + QSBNetworkManager.singleton.SetupMigrationManager(this); + } + } + + internal void AssignAuthorityCallback(QSBNetworkConnection conn, QSBNetworkIdentity uv, bool authorityState) + { + PeerAuthorityMessage peerAuthorityMessage = new PeerAuthorityMessage(); + peerAuthorityMessage.connectionId = conn.connectionId; + peerAuthorityMessage.netId = uv.NetId; + peerAuthorityMessage.authorityState = authorityState; + if (LogFilter.logDebug) + { + Debug.Log("AssignAuthorityCallback send for netId" + uv.NetId); + } + for (int i = 0; i < QSBNetworkServer.connections.Count; i++) + { + QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; + if (networkConnection != null) + { + networkConnection.Send(18, peerAuthorityMessage); + } + } + } + + public void Initialize(QSBNetworkClient newClient, MatchInfo newMatchInfo) + { + Debug.Log("NetworkMigrationManager initialize"); + this.m_Client = newClient; + this.m_MatchInfo = newMatchInfo; + newClient.RegisterHandlerSafe(11, new QSBNetworkMessageDelegate(this.OnPeerInfo)); + newClient.RegisterHandlerSafe(18, new QSBNetworkMessageDelegate(this.OnPeerClientAuthority)); + QSBNetworkIdentity.clientAuthorityCallback = new QSBNetworkIdentity.ClientAuthorityCallback(this.AssignAuthorityCallback); + } + + public void DisablePlayerObjects() + { + Debug.Log("NetworkMigrationManager DisablePlayerObjects"); + if (this.m_Peers != null) + { + for (int i = 0; i < this.m_Peers.Length; i++) + { + PeerInfoMessage peerInfoMessage = this.m_Peers[i]; + if (peerInfoMessage.playerIds != null) + { + for (int j = 0; j < peerInfoMessage.playerIds.Length; j++) + { + PeerInfoPlayer peerInfoPlayer = peerInfoMessage.playerIds[j]; + Debug.Log(string.Concat(new object[] + { + "DisablePlayerObjects disable player for ", + peerInfoMessage.address, + " netId:", + peerInfoPlayer.netId, + " control:", + peerInfoPlayer.playerControllerId + })); + GameObject gameObject = ClientScene.FindLocalObject(peerInfoPlayer.netId); + if (gameObject != null) + { + gameObject.SetActive(false); + this.AddPendingPlayer(gameObject, peerInfoMessage.connectionId, peerInfoPlayer.netId, peerInfoPlayer.playerControllerId); + } + else if (LogFilter.logWarn) + { + Debug.LogWarning(string.Concat(new object[] + { + "DisablePlayerObjects didnt find player Conn:", + peerInfoMessage.connectionId, + " NetId:", + peerInfoPlayer.netId + })); + } + } + } + } + } + } + + public void SendPeerInfo() + { + if (this.m_HostMigration) + { + PeerListMessage peerListMessage = new PeerListMessage(); + List list = new List(); + for (int i = 0; i < QSBNetworkServer.connections.Count; i++) + { + QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; + if (networkConnection != null) + { + PeerInfoMessage peerInfoMessage = new PeerInfoMessage(); + string address; + int port; + NetworkID networkID; + NodeID nodeID; + byte b; + NetworkTransport.GetConnectionInfo(QSBNetworkServer.serverHostId, networkConnection.connectionId, out address, out port, out networkID, out nodeID, out b); + peerInfoMessage.connectionId = networkConnection.connectionId; + peerInfoMessage.port = port; + if (i == 0) + { + peerInfoMessage.port = QSBNetworkServer.listenPort; + peerInfoMessage.isHost = true; + peerInfoMessage.address = ""; + } + else + { + peerInfoMessage.address = address; + peerInfoMessage.isHost = false; + } + List list2 = new List(); + for (int j = 0; j < networkConnection.PlayerControllers.Count; j++) + { + QSBPlayerController playerController = networkConnection.PlayerControllers[j]; + if (playerController != null && playerController.unetView != null) + { + PeerInfoPlayer item; + item.netId = playerController.unetView.NetId; + item.playerControllerId = playerController.unetView.PlayerControllerId; + list2.Add(item); + } + } + if (networkConnection.ClientOwnedObjects != null) + { + foreach (NetworkInstanceId netId in networkConnection.ClientOwnedObjects) + { + GameObject gameObject = QSBNetworkServer.FindLocalObject(netId); + if (!(gameObject == null)) + { + QSBNetworkIdentity component = gameObject.GetComponent(); + if (component.PlayerControllerId == -1) + { + PeerInfoPlayer item2; + item2.netId = netId; + item2.playerControllerId = -1; + list2.Add(item2); + } + } + } + } + if (list2.Count > 0) + { + peerInfoMessage.playerIds = list2.ToArray(); + } + list.Add(peerInfoMessage); + } + } + peerListMessage.peers = list.ToArray(); + for (int k = 0; k < QSBNetworkServer.connections.Count; k++) + { + QSBNetworkConnection networkConnection2 = QSBNetworkServer.connections[k]; + if (networkConnection2 != null) + { + peerListMessage.oldServerConnectionId = networkConnection2.connectionId; + networkConnection2.Send(11, peerListMessage); + } + } + } + } + + private void OnPeerClientAuthority(QSBNetworkMessage netMsg) + { + PeerAuthorityMessage peerAuthorityMessage = netMsg.ReadMessage(); + if (LogFilter.logDebug) + { + Debug.Log("OnPeerClientAuthority for netId:" + peerAuthorityMessage.netId); + } + if (this.m_Peers != null) + { + for (int i = 0; i < this.m_Peers.Length; i++) + { + PeerInfoMessage peerInfoMessage = this.m_Peers[i]; + if (peerInfoMessage.connectionId == peerAuthorityMessage.connectionId) + { + if (peerInfoMessage.playerIds == null) + { + peerInfoMessage.playerIds = new PeerInfoPlayer[0]; + } + if (peerAuthorityMessage.authorityState) + { + for (int j = 0; j < peerInfoMessage.playerIds.Length; j++) + { + if (peerInfoMessage.playerIds[j].netId == peerAuthorityMessage.netId) + { + return; + } + } + PeerInfoPlayer item = default(PeerInfoPlayer); + item.netId = peerAuthorityMessage.netId; + item.playerControllerId = -1; + peerInfoMessage.playerIds = new List(peerInfoMessage.playerIds) + { + item + }.ToArray(); + } + else + { + for (int k = 0; k < peerInfoMessage.playerIds.Length; k++) + { + if (peerInfoMessage.playerIds[k].netId == peerAuthorityMessage.netId) + { + List list = new List(peerInfoMessage.playerIds); + list.RemoveAt(k); + peerInfoMessage.playerIds = list.ToArray(); + break; + } + } + } + } + } + GameObject go = ClientScene.FindLocalObject(peerAuthorityMessage.netId); + this.OnAuthorityUpdated(go, peerAuthorityMessage.connectionId, peerAuthorityMessage.authorityState); + } + } + + private void OnPeerInfo(QSBNetworkMessage netMsg) + { + if (LogFilter.logDebug) + { + Debug.Log("OnPeerInfo"); + } + netMsg.ReadMessage(this.m_PeerListMessage); + this.m_Peers = this.m_PeerListMessage.peers; + this.m_OldServerConnectionId = this.m_PeerListMessage.oldServerConnectionId; + for (int i = 0; i < this.m_Peers.Length; i++) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "peer conn ", + this.m_Peers[i].connectionId, + " your conn ", + this.m_PeerListMessage.oldServerConnectionId + })); + } + if (this.m_Peers[i].connectionId == this.m_PeerListMessage.oldServerConnectionId) + { + this.m_Peers[i].isYou = true; + break; + } + } + this.OnPeersUpdated(this.m_PeerListMessage); + } + + private void OnServerReconnectPlayerMessage(QSBNetworkMessage netMsg) + { + ReconnectMessage reconnectMessage = netMsg.ReadMessage(); + Debug.Log(string.Concat(new object[] + { + "OnReconnectMessage: connId=", + reconnectMessage.oldConnectionId, + " playerControllerId:", + reconnectMessage.playerControllerId, + " netId:", + reconnectMessage.netId + })); + GameObject gameObject = this.FindPendingPlayer(reconnectMessage.oldConnectionId, reconnectMessage.netId, reconnectMessage.playerControllerId); + if (gameObject == null) + { + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "OnReconnectMessage connId=", + reconnectMessage.oldConnectionId, + " player null for netId:", + reconnectMessage.netId, + " msg.playerControllerId:", + reconnectMessage.playerControllerId + })); + } + } + else if (gameObject.activeSelf) + { + if (LogFilter.logError) + { + Debug.LogError("OnReconnectMessage connId=" + reconnectMessage.oldConnectionId + " player already active?"); + } + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("OnReconnectMessage: player=" + gameObject); + } + NetworkReader networkReader = null; + if (reconnectMessage.msgSize != 0) + { + networkReader = new NetworkReader(reconnectMessage.msgData); + } + if (reconnectMessage.playerControllerId != -1) + { + if (networkReader == null) + { + this.OnServerReconnectPlayer(netMsg.conn, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId); + } + else + { + this.OnServerReconnectPlayer(netMsg.conn, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId, networkReader); + } + } + else + { + this.OnServerReconnectObject(netMsg.conn, gameObject, reconnectMessage.oldConnectionId); + } + } + } + + public bool ReconnectObjectForConnection(QSBNetworkConnection newConnection, GameObject oldObject, int oldConnectionId) + { + bool result; + if (!QSBNetworkServer.active) + { + if (LogFilter.logError) + { + Debug.LogError("ReconnectObjectForConnection must have active server"); + } + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ReconnectObjectForConnection: oldConnId=", + oldConnectionId, + " obj=", + oldObject, + " conn:", + newConnection + })); + } + if (!this.m_PendingPlayers.ContainsKey(oldConnectionId)) + { + if (LogFilter.logError) + { + Debug.LogError("ReconnectObjectForConnection oldConnId=" + oldConnectionId + " not found."); + } + result = false; + } + else + { + oldObject.SetActive(true); + oldObject.GetComponent().SetNetworkInstanceId(new NetworkInstanceId(0U)); + if (!QSBNetworkServer.SpawnWithClientAuthority(oldObject, newConnection)) + { + if (LogFilter.logError) + { + Debug.LogError("ReconnectObjectForConnection oldConnId=" + oldConnectionId + " SpawnWithClientAuthority failed."); + } + result = false; + } + else + { + result = true; + } + } + } + return result; + } + + public bool ReconnectPlayerForConnection(QSBNetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId) + { + bool result; + if (!QSBNetworkServer.active) + { + if (LogFilter.logError) + { + Debug.LogError("ReconnectPlayerForConnection must have active server"); + } + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "ReconnectPlayerForConnection: oldConnId=", + oldConnectionId, + " player=", + oldPlayer, + " conn:", + newConnection + })); + } + if (!this.m_PendingPlayers.ContainsKey(oldConnectionId)) + { + if (LogFilter.logError) + { + Debug.LogError("ReconnectPlayerForConnection oldConnId=" + oldConnectionId + " not found."); + } + result = false; + } + else + { + oldPlayer.SetActive(true); + QSBNetworkServer.Spawn(oldPlayer); + if (!QSBNetworkServer.AddPlayerForConnection(newConnection, oldPlayer, playerControllerId)) + { + if (LogFilter.logError) + { + Debug.LogError("ReconnectPlayerForConnection oldConnId=" + oldConnectionId + " AddPlayerForConnection failed."); + } + result = false; + } + else + { + if (QSBNetworkServer.localClientActive) + { + this.SendPeerInfo(); + } + result = true; + } + } + } + return result; + } + + public bool LostHostOnClient(QSBNetworkConnection conn) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkMigrationManager client OnDisconnectedFromHost"); + } + bool result; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + if (LogFilter.logError) + { + Debug.LogError("LostHostOnClient: Host migration not supported on WebGL"); + } + result = false; + } + else if (this.m_Client == null) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkMigrationManager LostHostOnHost client was never initialized."); + } + result = false; + } + else if (!this.m_HostMigration) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkMigrationManager LostHostOnHost migration not enabled."); + } + result = false; + } + else + { + this.m_DisconnectedFromHost = true; + this.DisablePlayerObjects(); + byte b; + NetworkTransport.Disconnect(this.m_Client.hostId, this.m_Client.connection.connectionId, out b); + if (this.m_OldServerConnectionId != -1) + { + SceneChangeOption sceneChangeOption; + this.OnClientDisconnectedFromHost(conn, out sceneChangeOption); + result = (sceneChangeOption == SceneChangeOption.StayInOnlineScene); + } + else + { + result = false; + } + } + return result; + } + + public void LostHostOnHost() + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkMigrationManager LostHostOnHost"); + } + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + if (LogFilter.logError) + { + Debug.LogError("LostHostOnHost: Host migration not supported on WebGL"); + } + } + else + { + this.OnServerHostShutdown(); + if (this.m_Peers == null) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkMigrationManager LostHostOnHost no peers"); + } + } + else if (this.m_Peers.Length != 1) + { + this.m_HostWasShutdown = true; + } + } + } + + public bool BecomeNewHost(int port) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkMigrationManager BecomeNewHost " + this.m_MatchInfo); + } + QSBNetworkServer.RegisterHandler(47, new QSBNetworkMessageDelegate(this.OnServerReconnectPlayerMessage)); + QSBNetworkClient networkClient = QSBNetworkServer.BecomeHost(this.m_Client, port, this.m_MatchInfo, this.oldServerConnectionId, this.peers); + bool result; + if (networkClient != null) + { + if (QSBNetworkManager.singleton != null) + { + QSBNetworkManager.singleton.RegisterServerMessages(); + QSBNetworkManager.singleton.UseExternalClient(networkClient); + } + else + { + Debug.LogWarning("MigrationManager BecomeNewHost - No NetworkManager."); + } + networkClient.RegisterHandlerSafe(11, new QSBNetworkMessageDelegate(this.OnPeerInfo)); + this.RemovePendingPlayer(this.m_OldServerConnectionId); + this.Reset(-1); + this.SendPeerInfo(); + result = true; + } + else + { + if (LogFilter.logError) + { + Debug.LogError("NetworkServer.BecomeHost failed"); + } + result = false; + } + return result; + } + + protected virtual void OnClientDisconnectedFromHost(QSBNetworkConnection conn, out SceneChangeOption sceneChange) + { + sceneChange = SceneChangeOption.StayInOnlineScene; + } + + protected virtual void OnServerHostShutdown() + { + } + + protected virtual void OnServerReconnectPlayer(QSBNetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId) + { + this.ReconnectPlayerForConnection(newConnection, oldPlayer, oldConnectionId, playerControllerId); + } + + protected virtual void OnServerReconnectPlayer(QSBNetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId, NetworkReader extraMessageReader) + { + this.ReconnectPlayerForConnection(newConnection, oldPlayer, oldConnectionId, playerControllerId); + } + + protected virtual void OnServerReconnectObject(QSBNetworkConnection newConnection, GameObject oldObject, int oldConnectionId) + { + this.ReconnectObjectForConnection(newConnection, oldObject, oldConnectionId); + } + + protected virtual void OnPeersUpdated(PeerListMessage peers) + { + Debug.Log("NetworkMigrationManager NumPeers " + peers.peers.Length); + } + + protected virtual void OnAuthorityUpdated(GameObject go, int connectionId, bool authorityState) + { + Debug.Log(string.Concat(new object[] + { + "NetworkMigrationManager OnAuthorityUpdated for ", + go, + " conn:", + connectionId, + " state:", + authorityState + })); + } + + public virtual bool FindNewHost(out PeerInfoMessage newHostInfo, out bool youAreNewHost) + { + bool result; + if (this.m_Peers == null) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkMigrationManager FindLowestHost no peers"); + } + newHostInfo = null; + youAreNewHost = false; + result = false; + } + else + { + Debug.Log("NetworkMigrationManager FindLowestHost"); + newHostInfo = new PeerInfoMessage(); + newHostInfo.connectionId = 50000; + newHostInfo.address = ""; + newHostInfo.port = 0; + int num = -1; + youAreNewHost = false; + if (this.m_Peers == null) + { + result = false; + } + else + { + for (int i = 0; i < this.m_Peers.Length; i++) + { + PeerInfoMessage peerInfoMessage = this.m_Peers[i]; + if (peerInfoMessage.connectionId != 0) + { + if (!peerInfoMessage.isHost) + { + if (peerInfoMessage.isYou) + { + num = peerInfoMessage.connectionId; + } + if (peerInfoMessage.connectionId < newHostInfo.connectionId) + { + newHostInfo = peerInfoMessage; + } + } + } + } + if (newHostInfo.connectionId == 50000) + { + result = false; + } + else + { + if (newHostInfo.connectionId == num) + { + youAreNewHost = true; + } + Debug.Log("FindNewHost new host is " + newHostInfo.address); + result = true; + } + } + } + return result; + } + + private void OnGUIHost() + { + int num = this.m_OffsetY; + GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Was Shutdown ID(" + this.m_OldServerConnectionId + ")"); + num += 25; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Migration not supported for WebGL"); + } + else + { + if (this.m_WaitingReconnectToNewHost) + { + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Reconnect as Client")) + { + this.Reset(0); + if (NetworkManager.singleton != null) + { + NetworkManager.singleton.networkAddress = GUI.TextField(new Rect((float)(this.m_OffsetX + 100), (float)num, 95f, 20f), NetworkManager.singleton.networkAddress); + NetworkManager.singleton.StartClient(); + } + else + { + Debug.LogWarning("MigrationManager Old Host Reconnect - No NetworkManager."); + } + } + num += 25; + } + else + { + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Pick New Host")) + { + bool flag; + if (this.FindNewHost(out this.m_NewHostInfo, out flag)) + { + this.m_NewHostAddress = this.m_NewHostInfo.address; + if (flag) + { + Debug.LogWarning("MigrationManager FindNewHost - new host is self?"); + } + else + { + this.m_WaitingReconnectToNewHost = true; + } + } + } + num += 25; + } + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Leave Game")) + { + if (NetworkManager.singleton != null) + { + NetworkManager.singleton.SetupMigrationManager(null); + NetworkManager.singleton.StopHost(); + } + else + { + Debug.LogWarning("MigrationManager Old Host LeaveGame - No NetworkManager."); + } + this.Reset(-1); + } + num += 25; + } + } + + private void OnGUIClient() + { + int num = this.m_OffsetY; + GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Lost Connection To Host ID(" + this.m_OldServerConnectionId + ")"); + num += 25; + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Migration not supported for WebGL"); + } + else + { + if (this.m_WaitingToBecomeNewHost) + { + GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "You are the new host"); + num += 25; + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Start As Host")) + { + if (NetworkManager.singleton != null) + { + this.BecomeNewHost(NetworkManager.singleton.networkPort); + } + else + { + Debug.LogWarning("MigrationManager Client BecomeNewHost - No NetworkManager."); + } + } + num += 25; + } + else if (this.m_WaitingReconnectToNewHost) + { + GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "New host is " + this.m_NewHostAddress); + num += 25; + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Reconnect To New Host")) + { + this.Reset(this.m_OldServerConnectionId); + if (NetworkManager.singleton != null) + { + NetworkManager.singleton.networkAddress = this.m_NewHostAddress; + NetworkManager.singleton.client.ReconnectToNewHost(this.m_NewHostAddress, NetworkManager.singleton.networkPort); + } + else + { + Debug.LogWarning("MigrationManager Client reconnect - No NetworkManager."); + } + } + num += 25; + } + else + { + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Pick New Host")) + { + bool flag; + if (this.FindNewHost(out this.m_NewHostInfo, out flag)) + { + this.m_NewHostAddress = this.m_NewHostInfo.address; + if (flag) + { + this.m_WaitingToBecomeNewHost = true; + } + else + { + this.m_WaitingReconnectToNewHost = true; + } + } + } + num += 25; + } + if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Leave Game")) + { + if (NetworkManager.singleton != null) + { + NetworkManager.singleton.SetupMigrationManager(null); + NetworkManager.singleton.StopHost(); + } + else + { + Debug.LogWarning("MigrationManager Client LeaveGame - No NetworkManager."); + } + this.Reset(-1); + } + num += 25; + } + } + + private void OnGUI() + { + if (this.m_ShowGUI) + { + if (this.m_HostWasShutdown) + { + this.OnGUIHost(); + } + else if (this.m_DisconnectedFromHost && this.m_OldServerConnectionId != -1) + { + this.OnGUIClient(); + } + } + } + + [SerializeField] + private bool m_HostMigration = true; + + [SerializeField] + private bool m_ShowGUI = true; + + [SerializeField] + private int m_OffsetX = 10; + + [SerializeField] + private int m_OffsetY = 300; + + private QSBNetworkClient m_Client; + + private bool m_WaitingToBecomeNewHost; + + private bool m_WaitingReconnectToNewHost; + + private bool m_DisconnectedFromHost; + + private bool m_HostWasShutdown; + + private MatchInfo m_MatchInfo; + + private int m_OldServerConnectionId = -1; + + private string m_NewHostAddress; + + private PeerInfoMessage m_NewHostInfo = new PeerInfoMessage(); + + private PeerListMessage m_PeerListMessage = new PeerListMessage(); + + private PeerInfoMessage[] m_Peers; + + private Dictionary m_PendingPlayers = new Dictionary(); + + public enum SceneChangeOption + { + StayInOnlineScene, + SwitchToOfflineScene + } + + public struct PendingPlayerInfo + { + public NetworkInstanceId netId; + + public short playerControllerId; + + public GameObject obj; + } + + public struct ConnectionPendingPlayers + { + public List players; + } + } +} diff --git a/QSB/QSBNetworkScene.cs b/QSB/QSBNetworkScene.cs index 89dbafafd..225b8fe3b 100644 --- a/QSB/QSBNetworkScene.cs +++ b/QSB/QSBNetworkScene.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -113,16 +114,13 @@ internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId if (component) { component.SetDynamicAssetId(newAssetId); - if (LogFilter.logDebug) + DebugLog.DebugWrite(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "Registering prefab '", - prefab.name, - "' as asset:", - component.AssetId - })); - } + "Registering prefab '", + prefab.name, + "' as asset:", + component.AssetId + })); guidToPrefab[component.AssetId] = prefab; } else if (LogFilter.logError) diff --git a/QSB/QSBNetworkServer.cs b/QSB/QSBNetworkServer.cs index 2f04a400f..93ee51929 100644 --- a/QSB/QSBNetworkServer.cs +++ b/QSB/QSBNetworkServer.cs @@ -1,10 +1,16 @@ -using System; +using OWML.Common; +using QSB.Animation; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using UnityEngine; using UnityEngine.Networking; +using UnityEngine.Networking.Match; +using UnityEngine.Networking.NetworkSystem; +using UnityEngine.Networking.Types; namespace QSB { @@ -12,10 +18,11 @@ public class QSBNetworkServer { private QSBNetworkServer() { + DebugLog.DebugWrite("ctor"); NetworkTransport.Init(); m_RemoveList = new HashSet(); m_ExternalConnections = new HashSet(); - m_NetworkScene = new NetworkScene(); + m_NetworkScene = new QSBNetworkScene(); m_SimpleServerSimple = new ServerSimpleWrapper(this); } @@ -51,7 +58,7 @@ public static ReadOnlyCollection connections } } - public static Dictionary handlers + public static Dictionary handlers { get { @@ -117,7 +124,7 @@ internal static QSBNetworkServer instance { if (s_Instance == null) { - object obj = s_Sync; + var obj = s_Sync; lock (obj) { if (s_Instance == null) @@ -134,7 +141,7 @@ public static bool active { get { - return NetworkServer.s_Active; + return s_Active; } } @@ -174,7 +181,7 @@ public static Type networkConnectionClass } } - public static void SetNetworkConnectionClass() where T : NetworkConnection + public static void SetNetworkConnectionClass() where T : QSBNetworkConnection { instance.m_SimpleServerSimple.SetNetworkConnectionClass(); } @@ -221,7 +228,7 @@ public static bool Listen(MatchInfo matchInfo, int listenPort) } else { - instance.InternalListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, Utility.GetSourceID(), matchInfo.nodeId); + instance.InternalListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, QSBUtility.GetSourceID(), matchInfo.nodeId); result = true; } return result; @@ -229,70 +236,15 @@ public static bool Listen(MatchInfo matchInfo, int listenPort) internal void RegisterMessageHandlers() { - NetworkServerSimple simpleServerSimple = m_SimpleServerSimple; - short msgType = 35; - if (NetworkServer.<> f__mg$cache0 == null) - { - NetworkServer.<> f__mg$cache0 = new NetworkMessageDelegate(NetworkServer.OnClientReadyMessage); - } - simpleServerSimple.RegisterHandlerSafe(msgType, NetworkServer.<> f__mg$cache0); - NetworkServerSimple simpleServerSimple2 = m_SimpleServerSimple; - short msgType2 = 5; - if (NetworkServer.<> f__mg$cache1 == null) - { - NetworkServer.<> f__mg$cache1 = new NetworkMessageDelegate(NetworkServer.OnCommandMessage); - } - simpleServerSimple2.RegisterHandlerSafe(msgType2, NetworkServer.<> f__mg$cache1); - NetworkServerSimple simpleServerSimple3 = m_SimpleServerSimple; - short msgType3 = 6; - if (NetworkServer.<> f__mg$cache2 == null) - { - NetworkServer.<> f__mg$cache2 = new NetworkMessageDelegate(NetworkTransform.HandleTransform); - } - simpleServerSimple3.RegisterHandlerSafe(msgType3, NetworkServer.<> f__mg$cache2); - NetworkServerSimple simpleServerSimple4 = m_SimpleServerSimple; - short msgType4 = 16; - if (NetworkServer.<> f__mg$cache3 == null) - { - NetworkServer.<> f__mg$cache3 = new NetworkMessageDelegate(NetworkTransformChild.HandleChildTransform); - } - simpleServerSimple4.RegisterHandlerSafe(msgType4, NetworkServer.<> f__mg$cache3); - NetworkServerSimple simpleServerSimple5 = m_SimpleServerSimple; - short msgType5 = 38; - if (NetworkServer.<> f__mg$cache4 == null) - { - NetworkServer.<> f__mg$cache4 = new NetworkMessageDelegate(NetworkServer.OnRemovePlayerMessage); - } - simpleServerSimple5.RegisterHandlerSafe(msgType5, NetworkServer.<> f__mg$cache4); - NetworkServerSimple simpleServerSimple6 = m_SimpleServerSimple; - short msgType6 = 40; - if (NetworkServer.<> f__mg$cache5 == null) - { - NetworkServer.<> f__mg$cache5 = new NetworkMessageDelegate(NetworkAnimator.OnAnimationServerMessage); - } - simpleServerSimple6.RegisterHandlerSafe(msgType6, NetworkServer.<> f__mg$cache5); - NetworkServerSimple simpleServerSimple7 = m_SimpleServerSimple; - short msgType7 = 41; - if (NetworkServer.<> f__mg$cache6 == null) - { - NetworkServer.<> f__mg$cache6 = new NetworkMessageDelegate(NetworkAnimator.OnAnimationParametersServerMessage); - } - simpleServerSimple7.RegisterHandlerSafe(msgType7, NetworkServer.<> f__mg$cache6); - NetworkServerSimple simpleServerSimple8 = m_SimpleServerSimple; - short msgType8 = 42; - if (NetworkServer.<> f__mg$cache7 == null) - { - NetworkServer.<> f__mg$cache7 = new NetworkMessageDelegate(NetworkAnimator.OnAnimationTriggerServerMessage); - } - simpleServerSimple8.RegisterHandlerSafe(msgType8, NetworkServer.<> f__mg$cache7); - NetworkServerSimple simpleServerSimple9 = m_SimpleServerSimple; - short msgType9 = 17; - if (NetworkServer.<> f__mg$cache8 == null) - { - NetworkServer.<> f__mg$cache8 = new NetworkMessageDelegate(NetworkConnection.OnFragment); - } - simpleServerSimple9.RegisterHandlerSafe(msgType9, NetworkServer.<> f__mg$cache8); - NetworkServer.maxPacketSize = NetworkServer.hostTopology.DefaultConfig.PacketSize; + m_SimpleServerSimple.RegisterHandlerSafe((short)35, new QSBNetworkMessageDelegate(OnClientReadyMessage)); + m_SimpleServerSimple.RegisterHandlerSafe((short)5, new QSBNetworkMessageDelegate(OnCommandMessage)); + //m_SimpleServerSimple.RegisterHandlerSafe((short)6, new QSBNetworkMessageDelegate(NetworkTransform.HandleTransform)); + //m_SimpleServerSimple.RegisterHandlerSafe((short)16, new QSBNetworkMessageDelegate(NetworkTransformChild.HandleChildTransform)); + m_SimpleServerSimple.RegisterHandlerSafe((short)38, new QSBNetworkMessageDelegate(OnRemovePlayerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe((short)41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe((short)42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); + maxPacketSize = hostTopology.DefaultConfig.PacketSize; } public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) @@ -327,7 +279,7 @@ internal bool InternalListen(string ipAddress, int serverPort) { return false; } - maxPacketSize = NetworkServer.hostTopology.DefaultConfig.PacketSize; + maxPacketSize = hostTopology.DefaultConfig.PacketSize; s_Active = true; RegisterMessageHandlers(); return true; @@ -340,8 +292,8 @@ public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers) { - NetworkClient result; - if (NetworkServer.s_Active) + QSBNetworkClient result; + if (s_Active) { if (LogFilter.logError) { @@ -349,7 +301,7 @@ internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int por } result = null; } - else if (!NetworkClient.active) + else if (!QSBNetworkClient.active) { if (LogFilter.logError) { @@ -359,14 +311,11 @@ internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int por } else { - NetworkServer.Configure(NetworkServer.hostTopology); + Configure(hostTopology); if (matchInfo == null) { - if (LogFilter.logDev) - { - Debug.Log("BecomeHost Listen on " + port); - } - if (!NetworkServer.Listen(port)) + Debug.Log("BecomeHost Listen on " + port); + if (!Listen(port)) { if (LogFilter.logError) { @@ -377,41 +326,32 @@ internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int por } else { - if (LogFilter.logDev) - { - Debug.Log("BecomeHost match:" + matchInfo.networkId); - } - NetworkServer.ListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, Utility.GetSourceID(), matchInfo.nodeId); + Debug.Log("BecomeHost match:" + matchInfo.networkId); + ListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, QSBUtility.GetSourceID(), matchInfo.nodeId); } - foreach (NetworkIdentity networkIdentity in ClientScene.objects.Values) + foreach (var networkIdentity in QSBClientScene.Objects.Values) { if (!(networkIdentity == null) && !(networkIdentity.gameObject == null)) { - NetworkIdentity.AddNetworkId(networkIdentity.netId.Value); - m_NetworkScene.SetLocalObject(networkIdentity.netId, networkIdentity.gameObject, false, false); + QSBNetworkIdentity.AddNetworkId(networkIdentity.NetId.Value); + m_NetworkScene.SetLocalObject(networkIdentity.NetId, networkIdentity.gameObject, false, false); networkIdentity.OnStartServer(true); } } - if (LogFilter.logDev) - { - Debug.Log("NetworkServer BecomeHost done. oldConnectionId:" + oldConnectionId); - } + Debug.Log("NetworkServer BecomeHost done. oldConnectionId:" + oldConnectionId); RegisterMessageHandlers(); - if (!NetworkClient.RemoveClient(oldClient)) + if (!QSBNetworkClient.RemoveClient(oldClient)) { if (LogFilter.logError) { Debug.LogError("BecomeHost failed to remove client"); } } - if (LogFilter.logDev) - { - Debug.Log("BecomeHost localClient ready"); - } - NetworkClient networkClient = ClientScene.ReconnectLocalServer(); - ClientScene.Ready(networkClient.connection); - ClientScene.SetReconnectId(oldConnectionId, peers); - ClientScene.AddPlayer(ClientScene.readyConnection, 0); + Debug.Log("BecomeHost localClient ready"); + var networkClient = QSBClientScene.ReconnectLocalServer(); + QSBClientScene.Ready(networkClient.connection); + QSBClientScene.SetReconnectId(oldConnectionId, peers); + QSBClientScene.AddPlayer(QSBClientScene.readyConnection, 0); result = networkClient; } return result; @@ -419,9 +359,9 @@ internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int por private void InternalSetMaxDelay(float seconds) { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { networkConnection.SetMaxDelay(seconds); @@ -440,7 +380,7 @@ internal int AddLocalClient(QSBLocalClient localClient) } else { - m_LocalConnection = new ULocalConnectionToClient(localClient); + m_LocalConnection = new QSBULocalConnectionToClient(localClient); m_LocalConnection.connectionId = 0; m_SimpleServerSimple.SetConnectionAtIndex(m_LocalConnection); m_LocalConnectionsFakeList.Add(m_LocalConnection); @@ -452,7 +392,7 @@ internal int AddLocalClient(QSBLocalClient localClient) internal void RemoveLocalClient(QSBNetworkConnection localClientConnection) { - for (int i = 0; i < m_LocalConnectionsFakeList.Count; i++) + for (var i = 0; i < m_LocalConnectionsFakeList.Count; i++) { if (m_LocalConnectionsFakeList[i].connectionId == localClientConnection.connectionId) { @@ -472,16 +412,13 @@ internal void RemoveLocalClient(QSBNetworkConnection localClientConnection) internal void SetLocalObjectOnServer(NetworkInstanceId netId, GameObject obj) { - if (LogFilter.logDev) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "SetLocalObjectOnServer ", - netId, - " ", - obj - })); - } + "SetLocalObjectOnServer ", + netId, + " ", + obj + })); m_NetworkScene.SetLocalObject(netId, obj, false, true); } @@ -490,21 +427,18 @@ internal void ActivateLocalClientScene() if (!m_LocalClientActive) { m_LocalClientActive = true; - foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values) + foreach (var networkIdentity in objects.Values) { - if (!networkIdentity.isClient) + if (!networkIdentity.IsClient) { - if (LogFilter.logDev) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "ActivateClientScene ", - networkIdentity.netId, - " ", - networkIdentity.gameObject - })); - } - ClientScene.SetLocalObject(networkIdentity.netId, networkIdentity.gameObject); + "ActivateClientScene ", + networkIdentity.NetId, + " ", + networkIdentity.gameObject + })); + QSBClientScene.SetLocalObject(networkIdentity.NetId, networkIdentity.gameObject); networkIdentity.OnStartClient(); } } @@ -513,14 +447,11 @@ internal void ActivateLocalClientScene() public static bool SendToAll(short msgType, MessageBase msg) { - if (LogFilter.logDev) - { - Debug.Log("Server.SendToAll msgType:" + msgType); - } - bool flag = true; - for (int i = 0; i < NetworkServer.connections.Count; i++) + Debug.Log("Server.SendToAll msgType:" + msgType); + var flag = true; + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { flag &= networkConnection.Send(msgType, msg); @@ -531,23 +462,20 @@ public static bool SendToAll(short msgType, MessageBase msg) private static bool SendToObservers(GameObject contextObj, short msgType, MessageBase msg) { - if (LogFilter.logDev) - { - Debug.Log("Server.SendToObservers id:" + msgType); - } - bool flag = true; - NetworkIdentity component = contextObj.GetComponent(); + Debug.Log("Server.SendToObservers id:" + msgType); + var flag = true; + var component = contextObj.GetComponent(); bool result; - if (component == null || component.observers == null) + if (component == null || component.Observers == null) { result = false; } else { - int count = component.observers.Count; - for (int i = 0; i < count; i++) + var count = component.Observers.Count; + for (var i = 0; i < count; i++) { - NetworkConnection networkConnection = component.observers[i]; + var networkConnection = component.Observers[i]; flag &= networkConnection.Send(msgType, msg); } result = flag; @@ -557,16 +485,13 @@ private static bool SendToObservers(GameObject contextObj, short msgType, Messag public static bool SendToReady(GameObject contextObj, short msgType, MessageBase msg) { - if (LogFilter.logDev) - { - Debug.Log("Server.SendToReady id:" + msgType); - } + Debug.Log("Server.SendToReady id:" + msgType); bool result; if (contextObj == null) { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null && networkConnection.isReady) { networkConnection.Send(msgType, msg); @@ -576,18 +501,18 @@ public static bool SendToReady(GameObject contextObj, short msgType, MessageBase } else { - bool flag = true; - NetworkIdentity component = contextObj.GetComponent(); - if (component == null || component.observers == null) + var flag = true; + var component = contextObj.GetComponent(); + if (component == null || component.Observers == null) { result = false; } else { - int count = component.observers.Count; - for (int j = 0; j < count; j++) + var count = component.Observers.Count; + for (var j = 0; j < count; j++) { - NetworkConnection networkConnection2 = component.observers[j]; + var networkConnection2 = component.Observers[j]; if (networkConnection2.isReady) { flag &= networkConnection2.Send(msgType, msg); @@ -601,21 +526,22 @@ public static bool SendToReady(GameObject contextObj, short msgType, MessageBase public static void SendWriterToReady(GameObject contextObj, NetworkWriter writer, int channelId) { - if (writer.AsArraySegment().Count > 32767) + var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment").Invoke(writer, null); + if (arraySegment.Count > 32767) { throw new UnityException("NetworkWriter used buffer is too big!"); } - NetworkServer.SendBytesToReady(contextObj, writer.AsArraySegment().Array, writer.AsArraySegment().Count, channelId); + SendBytesToReady(contextObj, arraySegment.Array, arraySegment.Count, channelId); } public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int numBytes, int channelId) { if (contextObj == null) { - bool flag = true; - for (int i = 0; i < NetworkServer.connections.Count; i++) + var flag = true; + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null && networkConnection.isReady) { if (!networkConnection.SendBytes(buffer, numBytes, channelId)) @@ -634,14 +560,14 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu } else { - NetworkIdentity component = contextObj.GetComponent(); + var component = contextObj.GetComponent(); try { - bool flag2 = true; - int count = component.observers.Count; - for (int j = 0; j < count; j++) + var flag2 = true; + var count = component.Observers.Count; + for (var j = 0; j < count; j++) { - NetworkConnection networkConnection2 = component.observers[j]; + var networkConnection2 = component.Observers[j]; if (networkConnection2.isReady) { if (!networkConnection2.SendBytes(buffer, numBytes, channelId)) @@ -670,14 +596,14 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu public static void SendBytesToPlayer(GameObject player, byte[] buffer, int numBytes, int channelId) { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { - for (int j = 0; j < networkConnection.playerControllers.Count; j++) + for (var j = 0; j < networkConnection.PlayerControllers.Count; j++) { - if (networkConnection.playerControllers[j].IsValid && networkConnection.playerControllers[j].gameObject == player) + if (networkConnection.PlayerControllers[j].IsValid && networkConnection.PlayerControllers[j].gameObject == player) { networkConnection.SendBytes(buffer, numBytes, channelId); break; @@ -689,14 +615,11 @@ public static void SendBytesToPlayer(GameObject player, byte[] buffer, int numBy public static bool SendUnreliableToAll(short msgType, MessageBase msg) { - if (LogFilter.logDev) - { - Debug.Log("Server.SendUnreliableToAll msgType:" + msgType); - } - bool flag = true; - for (int i = 0; i < NetworkServer.connections.Count; i++) + Debug.Log("Server.SendUnreliableToAll msgType:" + msgType); + var flag = true; + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { flag &= networkConnection.SendUnreliable(msgType, msg); @@ -707,16 +630,13 @@ public static bool SendUnreliableToAll(short msgType, MessageBase msg) public static bool SendUnreliableToReady(GameObject contextObj, short msgType, MessageBase msg) { - if (LogFilter.logDev) - { - Debug.Log("Server.SendUnreliableToReady id:" + msgType); - } + Debug.Log("Server.SendUnreliableToReady id:" + msgType); bool result; if (contextObj == null) { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null && networkConnection.isReady) { networkConnection.SendUnreliable(msgType, msg); @@ -726,12 +646,12 @@ public static bool SendUnreliableToReady(GameObject contextObj, short msgType, M } else { - bool flag = true; - NetworkIdentity component = contextObj.GetComponent(); - int count = component.observers.Count; - for (int j = 0; j < count; j++) + var flag = true; + var component = contextObj.GetComponent(); + var count = component.Observers.Count; + for (var j = 0; j < count; j++) { - NetworkConnection networkConnection2 = component.observers[j]; + var networkConnection2 = component.Observers[j]; if (networkConnection2.isReady) { flag &= networkConnection2.SendUnreliable(msgType, msg); @@ -744,14 +664,11 @@ public static bool SendUnreliableToReady(GameObject contextObj, short msgType, M public static bool SendByChannelToAll(short msgType, MessageBase msg, int channelId) { - if (LogFilter.logDev) + Debug.Log("Server.SendByChannelToAll id:" + msgType); + var flag = true; + for (var i = 0; i < connections.Count; i++) { - Debug.Log("Server.SendByChannelToAll id:" + msgType); - } - bool flag = true; - for (int i = 0; i < NetworkServer.connections.Count; i++) - { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { flag &= networkConnection.SendByChannel(msgType, msg, channelId); @@ -762,16 +679,13 @@ public static bool SendByChannelToAll(short msgType, MessageBase msg, int channe public static bool SendByChannelToReady(GameObject contextObj, short msgType, MessageBase msg, int channelId) { - if (LogFilter.logDev) - { - Debug.Log("Server.SendByChannelToReady msgType:" + msgType); - } + Debug.Log("Server.SendByChannelToReady msgType:" + msgType); bool result; if (contextObj == null) { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null && networkConnection.isReady) { networkConnection.SendByChannel(msgType, msg, channelId); @@ -781,12 +695,12 @@ public static bool SendByChannelToReady(GameObject contextObj, short msgType, Me } else { - bool flag = true; - NetworkIdentity component = contextObj.GetComponent(); - int count = component.observers.Count; - for (int j = 0; j < count; j++) + var flag = true; + var component = contextObj.GetComponent(); + var count = component.Observers.Count; + for (var j = 0; j < count; j++) { - NetworkConnection networkConnection2 = component.observers[j]; + var networkConnection2 = component.Observers[j]; if (networkConnection2.isReady) { flag &= networkConnection2.SendByChannel(msgType, msg, channelId); @@ -816,15 +730,15 @@ internal void InternalDisconnectAll() internal static void Update() { - if (NetworkServer.s_Instance != null) + if (s_Instance != null) { - NetworkServer.s_Instance.InternalUpdate(); + s_Instance.InternalUpdate(); } } private void UpdateServerObjects() { - foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values) + foreach (var networkIdentity in objects.Values) { try { @@ -845,9 +759,9 @@ private void UpdateServerObjects() private void CheckForNullObjects() { - foreach (NetworkInstanceId networkInstanceId in NetworkServer.objects.Keys) + foreach (var networkInstanceId in objects.Keys) { - NetworkIdentity networkIdentity = NetworkServer.objects[networkInstanceId]; + var networkIdentity = objects[networkInstanceId]; if (networkIdentity == null || networkIdentity.gameObject == null) { m_RemoveList.Add(networkInstanceId); @@ -855,9 +769,9 @@ private void CheckForNullObjects() } if (m_RemoveList.Count > 0) { - foreach (NetworkInstanceId key in m_RemoveList) + foreach (var key in m_RemoveList) { - NetworkServer.objects.Remove(key); + objects.Remove(key); } m_RemoveList.Clear(); } @@ -866,30 +780,27 @@ private void CheckForNullObjects() internal void InternalUpdate() { m_SimpleServerSimple.Update(); - if (NetworkServer.m_DontListen) + if (m_DontListen) { m_SimpleServerSimple.UpdateConnections(); } UpdateServerObjects(); } - private void OnConnected(NetworkConnection conn) + private void OnConnected(QSBNetworkConnection conn) { - if (LogFilter.logDebug) - { - Debug.Log("Server accepted client:" + conn.connectionId); - } + Debug.Log("Server accepted client:" + conn.connectionId); conn.SetMaxDelay(m_MaxDelay); conn.InvokeHandlerNoData(32); - NetworkServer.SendCrc(conn); + SendCrc(conn); } - private void OnDisconnected(NetworkConnection conn) + private void OnDisconnected(QSBNetworkConnection conn) { conn.InvokeHandlerNoData(33); - for (int i = 0; i < conn.playerControllers.Count; i++) + for (var i = 0; i < conn.PlayerControllers.Count; i++) { - if (conn.playerControllers[i].gameObject != null) + if (conn.PlayerControllers[i].gameObject != null) { if (LogFilter.logWarn) { @@ -905,7 +816,7 @@ private void OnDisconnected(NetworkConnection conn) conn.Dispose(); } - private void OnData(NetworkConnection conn, int receivedSize, int channelId) + private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) { conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); } @@ -919,7 +830,7 @@ private void GenerateConnectError(int error) GenerateError(null, error); } - private void GenerateDataError(NetworkConnection conn, int error) + private void GenerateDataError(QSBNetworkConnection conn, int error) { if (LogFilter.logError) { @@ -928,7 +839,7 @@ private void GenerateDataError(NetworkConnection conn, int error) GenerateError(conn, error); } - private void GenerateDisconnectError(NetworkConnection conn, int error) + private void GenerateDisconnectError(QSBNetworkConnection conn, int error) { if (LogFilter.logError) { @@ -945,15 +856,15 @@ private void GenerateDisconnectError(NetworkConnection conn, int error) GenerateError(conn, error); } - private void GenerateError(NetworkConnection conn, int error) + private void GenerateError(QSBNetworkConnection conn, int error) { - if (NetworkServer.handlers.ContainsKey(34)) + if (handlers.ContainsKey(34)) { - ErrorMessage errorMessage = new ErrorMessage(); + var errorMessage = new ErrorMessage(); errorMessage.errorCode = error; - NetworkWriter writer = new NetworkWriter(); + var writer = new NetworkWriter(); errorMessage.Serialize(writer); - NetworkReader reader = new NetworkReader(writer); + var reader = new NetworkReader(writer); conn.InvokeHandler(34, reader, 0); } } @@ -975,7 +886,7 @@ public static void ClearHandlers() public static void ClearSpawners() { - NetworkScene.ClearSpawners(); + QSBNetworkScene.ClearSpawners(); } public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) @@ -984,9 +895,9 @@ public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBufferedMsgs = 0; numBytes = 0; lastBufferedPerSecond = 0; - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { int num; @@ -1006,9 +917,9 @@ public static void GetStatsIn(out int numMsgs, out int numBytes) { numMsgs = 0; numBytes = 0; - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { int num; @@ -1022,14 +933,14 @@ public static void GetStatsIn(out int numMsgs, out int numBytes) public static void SendToClientOfPlayer(GameObject player, short msgType, MessageBase msg) { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { - for (int j = 0; j < networkConnection.playerControllers.Count; j++) + for (var j = 0; j < networkConnection.PlayerControllers.Count; j++) { - if (networkConnection.playerControllers[j].IsValid && networkConnection.playerControllers[j].gameObject == player) + if (networkConnection.PlayerControllers[j].IsValid && networkConnection.PlayerControllers[j].gameObject == player) { networkConnection.Send(msgType, msg); return; @@ -1046,9 +957,9 @@ public static void SendToClientOfPlayer(GameObject player, short msgType, Messag public static void SendToClient(int connectionId, short msgType, MessageBase msg) { - if (connectionId < NetworkServer.connections.Count) + if (connectionId < connections.Count) { - NetworkConnection networkConnection = NetworkServer.connections[connectionId]; + var networkConnection = connections[connectionId]; if (networkConnection != null) { networkConnection.Send(msgType, msg); @@ -1061,41 +972,41 @@ public static void SendToClient(int connectionId, short msgType, MessageBase msg } } - public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) + public static bool ReplacePlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) { - NetworkIdentity networkIdentity; - if (NetworkServer.GetNetworkIdentity(player, out networkIdentity)) + QSBNetworkIdentity networkIdentity; + if (GetNetworkIdentity(player, out networkIdentity)) { networkIdentity.SetDynamicAssetId(assetId); } return instance.InternalReplacePlayerForConnection(conn, player, playerControllerId); } - public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId) + public static bool ReplacePlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) { return instance.InternalReplacePlayerForConnection(conn, player, playerControllerId); } - public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) + public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) { - NetworkIdentity networkIdentity; - if (NetworkServer.GetNetworkIdentity(player, out networkIdentity)) + QSBNetworkIdentity networkIdentity; + if (GetNetworkIdentity(player, out networkIdentity)) { networkIdentity.SetDynamicAssetId(assetId); } return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); } - public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, short playerControllerId) + public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) { return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); } - internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject playerGameObject, short playerControllerId) + internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { - NetworkIdentity networkIdentity; + QSBNetworkIdentity networkIdentity; bool result; - if (!NetworkServer.GetNetworkIdentity(playerGameObject, out networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) { if (LogFilter.logError) { @@ -1106,13 +1017,13 @@ internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject else { networkIdentity.Reset(); - if (!NetworkServer.CheckPlayerControllerIdForConnection(conn, playerControllerId)) + if (!CheckPlayerControllerIdForConnection(conn, playerControllerId)) { result = false; } else { - PlayerController playerController = null; + QSBPlayerController playerController = null; GameObject x = null; if (conn.GetPlayerController(playerControllerId, out playerController)) { @@ -1128,10 +1039,10 @@ internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject } else { - PlayerController playerController2 = new PlayerController(playerGameObject, playerControllerId); + var playerController2 = new QSBPlayerController(playerGameObject, playerControllerId); conn.SetPlayerController(playerController2); networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId); - NetworkServer.SetClientReady(conn); + SetClientReady(conn); if (SetupLocalPlayerForConnection(conn, networkIdentity, playerController2)) { result = true; @@ -1143,13 +1054,13 @@ internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject Debug.Log(string.Concat(new object[] { "Adding new playerGameObject object netId: ", - playerGameObject.GetComponent().netId, + playerGameObject.GetComponent().NetId, " asset ID ", - playerGameObject.GetComponent().assetId + playerGameObject.GetComponent().AssetId })); } - NetworkServer.FinishPlayerForConnection(conn, networkIdentity, playerGameObject); - if (networkIdentity.localPlayerAuthority) + FinishPlayerForConnection(conn, networkIdentity, playerGameObject); + if (networkIdentity.LocalPlayerAuthority) { networkIdentity.SetClientOwner(conn); } @@ -1161,7 +1072,7 @@ internal bool InternalAddPlayerForConnection(NetworkConnection conn, GameObject return result; } - private static bool CheckPlayerControllerIdForConnection(NetworkConnection conn, short playerControllerId) + private static bool CheckPlayerControllerIdForConnection(QSBNetworkConnection conn, short playerControllerId) { bool result; if (playerControllerId < 0) @@ -1200,21 +1111,15 @@ private static bool CheckPlayerControllerIdForConnection(NetworkConnection conn, return result; } - private bool SetupLocalPlayerForConnection(NetworkConnection conn, NetworkIdentity uv, PlayerController newPlayerController) + private bool SetupLocalPlayerForConnection(QSBNetworkConnection conn, QSBNetworkIdentity uv, QSBPlayerController newPlayerController) { - if (LogFilter.logDev) - { - Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.netId); - } - ULocalConnectionToClient ulocalConnectionToClient = conn as ULocalConnectionToClient; + Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.NetId); + var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; bool result; if (ulocalConnectionToClient != null) { - if (LogFilter.logDev) - { - Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); - } - if (uv.netId.IsEmpty()) + Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); + if (uv.NetId.IsEmpty()) { uv.OnStartServer(true); } @@ -1233,24 +1138,24 @@ private bool SetupLocalPlayerForConnection(NetworkConnection conn, NetworkIdenti return result; } - private static void FinishPlayerForConnection(NetworkConnection conn, NetworkIdentity uv, GameObject playerGameObject) + private static void FinishPlayerForConnection(QSBNetworkConnection conn, QSBNetworkIdentity uv, GameObject playerGameObject) { - if (uv.netId.IsEmpty()) + if (uv.NetId.IsEmpty()) { - NetworkServer.Spawn(playerGameObject); + Spawn(playerGameObject); } - conn.Send(4, new OwnerMessage + conn.Send(4, new QSBOwnerMessage { - netId = uv.netId, - playerControllerId = uv.playerControllerId + netId = uv.NetId, + playerControllerId = uv.PlayerControllerId }); } - internal bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObject playerGameObject, short playerControllerId) + internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { - NetworkIdentity networkIdentity; + QSBNetworkIdentity networkIdentity; bool result; - if (!NetworkServer.GetNetworkIdentity(playerGameObject, out networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) { if (LogFilter.logError) { @@ -1258,29 +1163,23 @@ internal bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObj } result = false; } - else if (!NetworkServer.CheckPlayerControllerIdForConnection(conn, playerControllerId)) + else if (!CheckPlayerControllerIdForConnection(conn, playerControllerId)) { result = false; } else { - if (LogFilter.logDev) - { - Debug.Log("NetworkServer ReplacePlayer"); - } - PlayerController playerController; + Debug.Log("NetworkServer ReplacePlayer"); + QSBPlayerController playerController; if (conn.GetPlayerController(playerControllerId, out playerController)) { playerController.unetView.SetNotLocalPlayer(); playerController.unetView.ClearClientOwner(); } - PlayerController playerController2 = new PlayerController(playerGameObject, playerControllerId); + var playerController2 = new QSBPlayerController(playerGameObject, playerControllerId); conn.SetPlayerController(playerController2); networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId); - if (LogFilter.logDev) - { - Debug.Log("NetworkServer ReplacePlayer setup local"); - } + Debug.Log("NetworkServer ReplacePlayer setup local"); if (SetupLocalPlayerForConnection(conn, networkIdentity, playerController2)) { result = true; @@ -1297,8 +1196,8 @@ internal bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObj playerGameObject.GetComponent().assetId })); } - NetworkServer.FinishPlayerForConnection(conn, networkIdentity, playerGameObject); - if (networkIdentity.localPlayerAuthority) + FinishPlayerForConnection(conn, networkIdentity, playerGameObject); + if (networkIdentity.LocalPlayerAuthority) { networkIdentity.SetClientOwner(conn); } @@ -1308,16 +1207,13 @@ internal bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObj return result; } - private static bool GetNetworkIdentity(GameObject go, out NetworkIdentity view) + private static bool GetNetworkIdentity(GameObject go, out QSBNetworkIdentity view) { - view = go.GetComponent(); + view = go.GetComponent(); bool result; if (view == null) { - if (LogFilter.logError) - { - Debug.LogError("UNET failure. GameObject doesn't have NetworkIdentity."); - } + Debug.LogError("UNET failure. GameObject doesn't have NetworkIdentity."); result = false; } else @@ -1327,12 +1223,12 @@ private static bool GetNetworkIdentity(GameObject go, out NetworkIdentity view) return result; } - public static void SetClientReady(NetworkConnection conn) + public static void SetClientReady(QSBNetworkConnection conn) { instance.SetClientReadyInternal(conn); } - internal void SetClientReadyInternal(NetworkConnection conn) + internal void SetClientReadyInternal(QSBNetworkConnection conn) { if (LogFilter.logDebug) { @@ -1347,7 +1243,7 @@ internal void SetClientReadyInternal(NetworkConnection conn) } else { - if (conn.playerControllers.Count == 0) + if (conn.PlayerControllers.Count == 0) { if (LogFilter.logDebug) { @@ -1355,14 +1251,11 @@ internal void SetClientReadyInternal(NetworkConnection conn) } } conn.isReady = true; - ULocalConnectionToClient ulocalConnectionToClient = conn as ULocalConnectionToClient; + var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; if (ulocalConnectionToClient != null) { - if (LogFilter.logDev) - { - Debug.Log("NetworkServer Ready handling ULocalConnectionToClient"); - } - foreach (NetworkIdentity networkIdentity in NetworkServer.objects.Values) + Debug.Log("NetworkServer Ready handling ULocalConnectionToClient"); + foreach (var networkIdentity in objects.Values) { if (networkIdentity != null && networkIdentity.gameObject != null) { @@ -1371,12 +1264,9 @@ internal void SetClientReadyInternal(NetworkConnection conn) { networkIdentity.AddObserver(conn); } - if (!networkIdentity.isClient) + if (!networkIdentity.IsClient) { - if (LogFilter.logDev) - { - Debug.Log("LocalClient.SetSpawnObject calling OnStartClient"); - } + Debug.Log("LocalClient.SetSpawnObject calling OnStartClient"); networkIdentity.OnStartClient(); } } @@ -1389,15 +1279,15 @@ internal void SetClientReadyInternal(NetworkConnection conn) Debug.Log(string.Concat(new object[] { "Spawning ", - NetworkServer.objects.Count, + objects.Count, " objects for conn ", conn.connectionId })); } - ObjectSpawnFinishedMessage objectSpawnFinishedMessage = new ObjectSpawnFinishedMessage(); + var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); objectSpawnFinishedMessage.state = 0U; conn.Send(12, objectSpawnFinishedMessage); - foreach (NetworkIdentity networkIdentity2 in NetworkServer.objects.Values) + foreach (var networkIdentity2 in objects.Values) { if (networkIdentity2 == null) { @@ -1415,7 +1305,7 @@ internal void SetClientReadyInternal(NetworkConnection conn) "Sending spawn message for current server objects name='", networkIdentity2.gameObject.name, "' netId=", - networkIdentity2.netId + networkIdentity2.NetId })); } bool flag2 = networkIdentity2.OnCheckObserver(conn); @@ -1431,7 +1321,7 @@ internal void SetClientReadyInternal(NetworkConnection conn) } } - internal static void ShowForConnection(NetworkIdentity uv, NetworkConnection conn) + internal static void ShowForConnection(QSBNetworkIdentity uv, QSBNetworkConnection conn) { if (conn.isReady) { @@ -1449,22 +1339,22 @@ internal static void HideForConnection(QSBNetworkIdentity uv, QSBNetworkConnecti public static void SetAllClientsNotReady() { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { - NetworkServer.SetClientNotReady(networkConnection); + SetClientNotReady(networkConnection); } } } - public static void SetClientNotReady(NetworkConnection conn) + public static void SetClientNotReady(QSBNetworkConnection conn) { instance.InternalSetClientNotReady(conn); } - internal void InternalSetClientNotReady(NetworkConnection conn) + internal void InternalSetClientNotReady(QSBNetworkConnection conn) { if (conn.isReady) { @@ -1474,41 +1364,41 @@ internal void InternalSetClientNotReady(NetworkConnection conn) } conn.isReady = false; conn.RemoveObservers(); - NotReadyMessage msg = new NotReadyMessage(); + var msg = new NotReadyMessage(); conn.Send(36, msg); } } - private static void OnClientReadyMessage(NetworkMessage netMsg) + private static void OnClientReadyMessage(QSBNetworkMessage netMsg) { if (LogFilter.logDebug) { Debug.Log("Default handler for ready message from " + netMsg.conn); } - NetworkServer.SetClientReady(netMsg.conn); + SetClientReady(netMsg.conn); } - private static void OnRemovePlayerMessage(NetworkMessage netMsg) + private static void OnRemovePlayerMessage(QSBNetworkMessage netMsg) { - netMsg.ReadMessage(NetworkServer.s_RemovePlayerMessage); - PlayerController playerController = null; - netMsg.conn.GetPlayerController(NetworkServer.s_RemovePlayerMessage.playerControllerId, out playerController); + netMsg.ReadMessage(s_RemovePlayerMessage); + QSBPlayerController playerController = null; + netMsg.conn.GetPlayerController(s_RemovePlayerMessage.playerControllerId, out playerController); if (playerController != null) { - netMsg.conn.RemovePlayerController(NetworkServer.s_RemovePlayerMessage.playerControllerId); - NetworkServer.Destroy(playerController.gameObject); + netMsg.conn.RemovePlayerController(s_RemovePlayerMessage.playerControllerId); + Destroy(playerController.gameObject); } else if (LogFilter.logError) { - Debug.LogError("Received remove player message but could not find the player ID: " + NetworkServer.s_RemovePlayerMessage.playerControllerId); + Debug.LogError("Received remove player message but could not find the player ID: " + s_RemovePlayerMessage.playerControllerId); } } - private static void OnCommandMessage(NetworkMessage netMsg) + private static void OnCommandMessage(QSBNetworkMessage netMsg) { - int cmdHash = (int)netMsg.reader.ReadPackedUInt32(); - NetworkInstanceId networkInstanceId = netMsg.reader.ReadNetworkId(); - GameObject gameObject = NetworkServer.FindLocalObject(networkInstanceId); + var cmdHash = (int)netMsg.reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.reader.ReadNetworkId(); + var gameObject = FindLocalObject(networkInstanceId); if (gameObject == null) { if (LogFilter.logWarn) @@ -1518,7 +1408,7 @@ private static void OnCommandMessage(NetworkMessage netMsg) } else { - NetworkIdentity component = gameObject.GetComponent(); + var component = gameObject.GetComponent(); if (component == null) { if (LogFilter.logWarn) @@ -1528,11 +1418,11 @@ private static void OnCommandMessage(NetworkMessage netMsg) } else { - bool flag = false; - for (int i = 0; i < netMsg.conn.playerControllers.Count; i++) + var flag = false; + for (var i = 0; i < netMsg.conn.PlayerControllers.Count; i++) { - PlayerController playerController = netMsg.conn.playerControllers[i]; - if (playerController.gameObject != null && playerController.gameObject.GetComponent().netId == component.netId) + var playerController = netMsg.conn.PlayerControllers[i]; + if (playerController.gameObject != null && playerController.gameObject.GetComponent().NetId == component.NetId) { flag = true; break; @@ -1540,7 +1430,7 @@ private static void OnCommandMessage(NetworkMessage netMsg) } if (!flag) { - if (component.clientAuthorityOwner != netMsg.conn) + if (component.ClientAuthorityOwner != netMsg.conn) { if (LogFilter.logWarn) { @@ -1549,16 +1439,13 @@ private static void OnCommandMessage(NetworkMessage netMsg) return; } } - if (LogFilter.logDev) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "OnCommandMessage for netId=", - networkInstanceId, - " conn=", - netMsg.conn - })); - } + "OnCommandMessage for netId=", + networkInstanceId, + " conn=", + netMsg.conn + })); component.HandleCommand(cmdHash, netMsg.reader); } } @@ -1566,57 +1453,48 @@ private static void OnCommandMessage(NetworkMessage netMsg) internal void SpawnObject(GameObject obj) { - NetworkIdentity networkIdentity; - if (!NetworkServer.active) + QSBNetworkIdentity networkIdentity; + if (!active) { - if (LogFilter.logError) - { - Debug.LogError("SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); - } + DebugLog.ToConsole("Error - SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server.", MessageType.Error); } - else if (!NetworkServer.GetNetworkIdentity(obj, out networkIdentity)) + else if (!GetNetworkIdentity(obj, out networkIdentity)) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { - "SpawnObject ", - obj, - " has no NetworkIdentity. Please add a NetworkIdentity to ", - obj - })); - } + "SpawnObject ", + obj, + " has no QSBNetworkIdentity. Please add a NetworkIdentity to ", + obj + })); } else { networkIdentity.Reset(); networkIdentity.OnStartServer(false); - if (LogFilter.logDebug) + DebugLog.DebugWrite(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "SpawnObject instance ID ", - networkIdentity.netId, - " asset ID ", - networkIdentity.assetId - })); - } + "SpawnObject instance ID ", + networkIdentity.NetId, + " asset ID ", + networkIdentity.AssetId + })); networkIdentity.RebuildObservers(true); } } - internal void SendSpawnMessage(NetworkIdentity uv, NetworkConnection conn) + internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) { - if (!uv.serverOnly) + if (!uv.ServerOnly) { - if (uv.sceneId.IsEmpty()) + if (uv.SceneId.IsEmpty()) { - ObjectSpawnMessage objectSpawnMessage = new ObjectSpawnMessage(); - objectSpawnMessage.netId = uv.netId; - objectSpawnMessage.assetId = uv.assetId; + var objectSpawnMessage = new QSBObjectSpawnMessage(); + objectSpawnMessage.netId = uv.NetId; + objectSpawnMessage.assetId = uv.AssetId; objectSpawnMessage.position = uv.transform.position; objectSpawnMessage.rotation = uv.transform.rotation; - NetworkWriter networkWriter = new NetworkWriter(); + var networkWriter = new NetworkWriter(); uv.UNetSerializeAllVars(networkWriter); if (networkWriter.Position > 0) { @@ -1628,16 +1506,16 @@ internal void SendSpawnMessage(NetworkIdentity uv, NetworkConnection conn) } else { - NetworkServer.SendToReady(uv.gameObject, 3, objectSpawnMessage); + SendToReady(uv.gameObject, 3, objectSpawnMessage); } } else { - ObjectSpawnSceneMessage objectSpawnSceneMessage = new ObjectSpawnSceneMessage(); - objectSpawnSceneMessage.netId = uv.netId; - objectSpawnSceneMessage.sceneId = uv.sceneId; + var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); + objectSpawnSceneMessage.netId = uv.NetId; + objectSpawnSceneMessage.sceneId = uv.SceneId; objectSpawnSceneMessage.position = uv.transform.position; - NetworkWriter networkWriter2 = new NetworkWriter(); + var networkWriter2 = new NetworkWriter(); uv.UNetSerializeAllVars(networkWriter2); if (networkWriter2.Position > 0) { @@ -1649,15 +1527,15 @@ internal void SendSpawnMessage(NetworkIdentity uv, NetworkConnection conn) } else { - NetworkServer.SendToReady(uv.gameObject, 3, objectSpawnSceneMessage); + SendToReady(uv.gameObject, 3, objectSpawnSceneMessage); } } } } - public static void DestroyPlayersForConnection(NetworkConnection conn) + public static void DestroyPlayersForConnection(QSBNetworkConnection conn) { - if (conn.playerControllers.Count == 0) + if (conn.PlayerControllers.Count == 0) { if (LogFilter.logWarn) { @@ -1666,109 +1544,103 @@ public static void DestroyPlayersForConnection(NetworkConnection conn) } else { - if (conn.clientOwnedObjects != null) + if (conn.ClientOwnedObjects != null) { - HashSet hashSet = new HashSet(conn.clientOwnedObjects); - foreach (NetworkInstanceId netId in hashSet) + var hashSet = new HashSet(conn.ClientOwnedObjects); + foreach (var netId in hashSet) { - GameObject gameObject = NetworkServer.FindLocalObject(netId); + var gameObject = FindLocalObject(netId); if (gameObject != null) { - NetworkServer.DestroyObject(gameObject); + DestroyObject(gameObject); } } } - for (int i = 0; i < conn.playerControllers.Count; i++) + for (var i = 0; i < conn.PlayerControllers.Count; i++) { - PlayerController playerController = conn.playerControllers[i]; + var playerController = conn.PlayerControllers[i]; if (playerController.IsValid) { if (!(playerController.unetView == null)) { - NetworkServer.DestroyObject(playerController.unetView, true); + DestroyObject(playerController.unetView, true); } playerController.gameObject = null; } } - conn.playerControllers.Clear(); + conn.PlayerControllers.Clear(); } } private static void UnSpawnObject(GameObject obj) { - NetworkIdentity uv; + QSBNetworkIdentity uv; if (obj == null) { - if (LogFilter.logDev) - { - Debug.Log("NetworkServer UnspawnObject is null"); - } + Debug.Log("NetworkServer UnspawnObject is null"); } - else if (NetworkServer.GetNetworkIdentity(obj, out uv)) + else if (GetNetworkIdentity(obj, out uv)) { - NetworkServer.UnSpawnObject(uv); + UnSpawnObject(uv); } } - private static void UnSpawnObject(NetworkIdentity uv) + private static void UnSpawnObject(QSBNetworkIdentity uv) { - NetworkServer.DestroyObject(uv, false); + DestroyObject(uv, false); } private static void DestroyObject(GameObject obj) { - NetworkIdentity uv; + QSBNetworkIdentity uv; if (obj == null) { - if (LogFilter.logDev) - { - Debug.Log("NetworkServer DestroyObject is null"); - } + Debug.Log("NetworkServer DestroyObject is null"); } - else if (NetworkServer.GetNetworkIdentity(obj, out uv)) + else if (GetNetworkIdentity(obj, out uv)) { - NetworkServer.DestroyObject(uv, true); + DestroyObject(uv, true); } } - private static void DestroyObject(NetworkIdentity uv, bool destroyServerObject) + private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObject) { if (LogFilter.logDebug) { - Debug.Log("DestroyObject instance:" + uv.netId); + Debug.Log("DestroyObject instance:" + uv.NetId); } - if (NetworkServer.objects.ContainsKey(uv.netId)) + if (objects.ContainsKey(uv.NetId)) { - NetworkServer.objects.Remove(uv.netId); + objects.Remove(uv.NetId); } - if (uv.clientAuthorityOwner != null) + if (uv.ClientAuthorityOwner != null) { - uv.clientAuthorityOwner.RemoveOwnedObject(uv); + uv.ClientAuthorityOwner.RemoveOwnedObject(uv); } - ObjectDestroyMessage objectDestroyMessage = new ObjectDestroyMessage(); - objectDestroyMessage.netId = uv.netId; - NetworkServer.SendToObservers(uv.gameObject, 1, objectDestroyMessage); + var objectDestroyMessage = new QSBObjectDestroyMessage(); + objectDestroyMessage.netId = uv.NetId; + SendToObservers(uv.gameObject, 1, objectDestroyMessage); uv.ClearObservers(); - if (NetworkClient.active && instance.m_LocalClientActive) + if (QSBNetworkClient.active && instance.m_LocalClientActive) { uv.OnNetworkDestroy(); - ClientScene.SetLocalObject(objectDestroyMessage.netId, null); + QSBClientScene.SetLocalObject(objectDestroyMessage.netId, null); } if (destroyServerObject) { - Object.Destroy(uv.gameObject); + UnityEngine.Object.Destroy(uv.gameObject); } uv.MarkForReset(); } public static void ClearLocalObjects() { - NetworkServer.objects.Clear(); + objects.Clear(); } public static void Spawn(GameObject obj) { - if (NetworkServer.VerifyCanSpawn(obj)) + if (VerifyCanSpawn(obj)) { instance.SpawnObject(obj); } @@ -1782,7 +1654,7 @@ private static bool CheckForPrefab(GameObject obj) private static bool VerifyCanSpawn(GameObject obj) { bool result; - if (NetworkServer.CheckForPrefab(obj)) + if (CheckForPrefab(obj)) { Debug.LogErrorFormat("GameObject {0} is a prefab, it can't be spawned. This will cause errors in builds.", new object[] { @@ -1799,21 +1671,21 @@ private static bool VerifyCanSpawn(GameObject obj) public static bool SpawnWithClientAuthority(GameObject obj, GameObject player) { - NetworkIdentity component = player.GetComponent(); + var component = player.GetComponent(); bool result; if (component == null) { Debug.LogError("SpawnWithClientAuthority player object has no NetworkIdentity"); result = false; } - else if (component.connectionToClient == null) + else if (component.ConnectionToClient == null) { Debug.LogError("SpawnWithClientAuthority player object is not a player."); result = false; } else { - result = NetworkServer.SpawnWithClientAuthority(obj, component.connectionToClient); + result = SpawnWithClientAuthority(obj, component.ConnectionToClient); } return result; } @@ -1828,26 +1700,26 @@ public static bool SpawnWithClientAuthority(GameObject obj, QSBNetworkConnection } else { - NetworkServer.Spawn(obj); - NetworkIdentity component = obj.GetComponent(); - result = (!(component == null) && component.isServer && component.AssignClientAuthority(conn)); + Spawn(obj); + var component = obj.GetComponent(); + result = (!(component == null) && component.IsServer && component.AssignClientAuthority(conn)); } return result; } - public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, NetworkConnection conn) + public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, QSBNetworkConnection conn) { - NetworkServer.Spawn(obj, assetId); - NetworkIdentity component = obj.GetComponent(); - return !(component == null) && component.isServer && component.AssignClientAuthority(conn); + Spawn(obj, assetId); + var component = obj.GetComponent(); + return !(component == null) && component.IsServer && component.AssignClientAuthority(conn); } public static void Spawn(GameObject obj, NetworkHash128 assetId) { - if (NetworkServer.VerifyCanSpawn(obj)) + if (VerifyCanSpawn(obj)) { - NetworkIdentity networkIdentity; - if (NetworkServer.GetNetworkIdentity(obj, out networkIdentity)) + QSBNetworkIdentity networkIdentity; + if (GetNetworkIdentity(obj, out networkIdentity)) { networkIdentity.SetDynamicAssetId(assetId); } @@ -1857,21 +1729,21 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) public static void Destroy(GameObject obj) { - NetworkServer.DestroyObject(obj); + DestroyObject(obj); } public static void UnSpawn(GameObject obj) { - NetworkServer.UnSpawnObject(obj); + UnSpawnObject(obj); } - internal bool InvokeBytes(ULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) + internal bool InvokeBytes(QSBULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { - NetworkReader networkReader = new NetworkReader(buffer); + var networkReader = new NetworkReader(buffer); networkReader.ReadInt16(); - short num = networkReader.ReadInt16(); + var num = networkReader.ReadInt16(); bool result; - if (NetworkServer.handlers.ContainsKey(num) && m_LocalConnection != null) + if (handlers.ContainsKey(num) && m_LocalConnection != null) { m_LocalConnection.InvokeHandler(num, networkReader, channelId); result = true; @@ -1883,14 +1755,14 @@ internal bool InvokeBytes(ULocalConnectionToServer conn, byte[] buffer, int numB return result; } - internal bool InvokeHandlerOnServer(ULocalConnectionToServer conn, short msgType, MessageBase msg, int channelId) + internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgType, MessageBase msg, int channelId) { bool result; - if (NetworkServer.handlers.ContainsKey(msgType) && m_LocalConnection != null) + if (handlers.ContainsKey(msgType) && m_LocalConnection != null) { - NetworkWriter writer = new NetworkWriter(); + var writer = new NetworkWriter(); msg.Serialize(writer); - NetworkReader reader = new NetworkReader(writer); + var reader = new NetworkReader(writer); m_LocalConnection.InvokeHandler(msgType, reader, channelId); result = true; } @@ -1916,26 +1788,26 @@ public static GameObject FindLocalObject(NetworkInstanceId netId) return instance.m_NetworkScene.FindLocalObject(netId); } - public static Dictionary GetConnectionStats() + public static Dictionary GetConnectionStats() { - Dictionary dictionary = new Dictionary(); - for (int i = 0; i < NetworkServer.connections.Count; i++) + var dictionary = new Dictionary(); + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { - foreach (short key in networkConnection.packetStats.Keys) + foreach (short key in networkConnection.PacketStats.Keys) { if (dictionary.ContainsKey(key)) { - NetworkConnection.PacketStat packetStat = dictionary[key]; - packetStat.count += networkConnection.packetStats[key].count; - packetStat.bytes += networkConnection.packetStats[key].bytes; + var packetStat = dictionary[key]; + packetStat.count += networkConnection.PacketStats[key].count; + packetStat.bytes += networkConnection.PacketStats[key].bytes; dictionary[key] = packetStat; } else { - dictionary[key] = new NetworkConnection.PacketStat(networkConnection.packetStats[key]); + dictionary[key] = new QSBNetworkConnection.PacketStat(networkConnection.PacketStats[key]); } } } @@ -1945,9 +1817,9 @@ public static GameObject FindLocalObject(NetworkInstanceId netId) public static void ResetConnectionStats() { - for (int i = 0; i < NetworkServer.connections.Count; i++) + for (var i = 0; i < connections.Count; i++) { - NetworkConnection networkConnection = NetworkServer.connections[i]; + var networkConnection = connections[i]; if (networkConnection != null) { networkConnection.ResetStats(); @@ -1955,19 +1827,19 @@ public static void ResetConnectionStats() } } - public static bool AddExternalConnection(NetworkConnection conn) + public static bool AddExternalConnection(QSBNetworkConnection conn) { return instance.AddExternalConnectionInternal(conn); } - private bool AddExternalConnectionInternal(NetworkConnection conn) + private bool AddExternalConnectionInternal(QSBNetworkConnection conn) { bool result; if (conn.connectionId < 0) { result = false; } - else if (conn.connectionId < NetworkServer.connections.Count && NetworkServer.connections[conn.connectionId] != null) + else if (conn.connectionId < connections.Count && connections[conn.connectionId] != null) { if (LogFilter.logError) { @@ -2011,7 +1883,7 @@ private bool RemoveExternalConnectionInternal(int connectionId) { Debug.Log("RemoveExternalConnection external connection " + connectionId); } - NetworkConnection networkConnection = m_SimpleServerSimple.FindConnection(connectionId); + var networkConnection = m_SimpleServerSimple.FindConnection(connectionId); if (networkConnection != null) { networkConnection.RemoveObservers(); @@ -2022,30 +1894,31 @@ private bool RemoveExternalConnectionInternal(int connectionId) return result; } - private static bool ValidateSceneObject(NetworkIdentity netId) + private static bool ValidateSceneObject(QSBNetworkIdentity netId) { - return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.sceneId.IsEmpty(); + return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); } public static bool SpawnObjects() { bool result; - if (!NetworkServer.active) + if (!active) { result = true; } else { - foreach (NetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll()) + var objectsOfTypeAll = Resources.FindObjectsOfTypeAll(); + foreach (var networkIdentity in objectsOfTypeAll) { - if (NetworkServer.ValidateSceneObject(networkIdentity)) + if (ValidateSceneObject(networkIdentity)) { if (LogFilter.logDebug) { Debug.Log(string.Concat(new object[] { "SpawnObjects sceneId:", - networkIdentity.sceneId, + networkIdentity.SceneId, " name:", networkIdentity.gameObject.name })); @@ -2054,12 +1927,11 @@ public static bool SpawnObjects() networkIdentity.gameObject.SetActive(true); } } - NetworkIdentity[] array; - foreach (NetworkIdentity networkIdentity2 in array) + foreach (var networkIdentity2 in objectsOfTypeAll) { - if (NetworkServer.ValidateSceneObject(networkIdentity2)) + if (ValidateSceneObject(networkIdentity2)) { - NetworkServer.Spawn(networkIdentity2.gameObject); + Spawn(networkIdentity2.gameObject); networkIdentity2.ForceAuthority(true); } } @@ -2068,20 +1940,20 @@ public static bool SpawnObjects() return result; } - private static void SendCrc(NetworkConnection targetConnection) + private static void SendCrc(QSBNetworkConnection targetConnection) { - if (NetworkCRC.singleton != null) + if (QSBNetworkCRC.singleton != null) { - if (NetworkCRC.scriptCRCCheck) + if (QSBNetworkCRC.scriptCRCCheck) { - CRCMessage crcmessage = new CRCMessage(); - List list = new List(); - foreach (string text in NetworkCRC.singleton.scripts.Keys) + var crcmessage = new QSBCRCMessage(); + var list = new List(); + foreach (string text in QSBNetworkCRC.singleton.scripts.Keys) { - list.Add(new CRCMessageEntry + list.Add(new QSBCRCMessageEntry { name = text, - channel = (byte)NetworkCRC.singleton.scripts[text] + channel = (byte)QSBNetworkCRC.singleton.scripts[text] }); } crcmessage.scripts = list.ToArray(); @@ -2099,17 +1971,17 @@ public void SendNetworkInfo(NetworkConnection targetConnection) private static volatile QSBNetworkServer s_Instance; - private static object s_Sync = new Object(); + private static object s_Sync = new UnityEngine.Object(); private static bool m_DontListen; private bool m_LocalClientActive; - private List m_LocalConnectionsFakeList = new List(); + private List m_LocalConnectionsFakeList = new List(); - private ULocalConnectionToClient m_LocalConnection = null; + private QSBULocalConnectionToClient m_LocalConnection = null; - private NetworkScene m_NetworkScene; + private QSBNetworkScene m_NetworkScene; private HashSet m_ExternalConnections; @@ -2125,36 +1997,9 @@ public void SendNetworkInfo(NetworkConnection targetConnection) internal static ushort maxPacketSize; - private static RemovePlayerMessage s_RemovePlayerMessage = new RemovePlayerMessage(); - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache0; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache1; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache2; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache3; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache4; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache5; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache6; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache7; - - [CompilerGenerated] - private static NetworkMessageDelegate<> f__mg$cache8; + private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); - private class ServerSimpleWrapper : NetworkServerSimple + private class ServerSimpleWrapper : QSBNetworkServerSimple { public ServerSimpleWrapper(QSBNetworkServer server) { diff --git a/QSB/QSBNetworkServerSimple.cs b/QSB/QSBNetworkServerSimple.cs new file mode 100644 index 000000000..f70307280 --- /dev/null +++ b/QSB/QSBNetworkServerSimple.cs @@ -0,0 +1,585 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.Networking.Types; + +namespace QSB +{ + public class QSBNetworkServerSimple + { + public QSBNetworkServerSimple() + { + this.m_ConnectionsReadOnly = new ReadOnlyCollection(this.m_Connections); + } + + public int listenPort + { + get + { + return this.m_ListenPort; + } + set + { + this.m_ListenPort = value; + } + } + + public int serverHostId + { + get + { + return this.m_ServerHostId; + } + set + { + this.m_ServerHostId = value; + } + } + + public HostTopology hostTopology + { + get + { + return this.m_HostTopology; + } + } + + public bool useWebSockets + { + get + { + return this.m_UseWebSockets; + } + set + { + this.m_UseWebSockets = value; + } + } + + public ReadOnlyCollection connections + { + get + { + return this.m_ConnectionsReadOnly; + } + } + + public Dictionary handlers + { + get + { + return this.m_MessageHandlers.GetHandlers(); + } + } + + public byte[] messageBuffer + { + get + { + return this.m_MsgBuffer; + } + } + + public NetworkReader messageReader + { + get + { + return this.m_MsgReader; + } + } + + public Type networkConnectionClass + { + get + { + return this.m_NetworkConnectionClass; + } + } + + public void SetNetworkConnectionClass() where T : QSBNetworkConnection + { + this.m_NetworkConnectionClass = typeof(T); + } + + public virtual void Initialize() + { + if (!this.m_Initialized) + { + this.m_Initialized = true; + NetworkTransport.Init(); + this.m_MsgBuffer = new byte[65535]; + this.m_MsgReader = new NetworkReader(this.m_MsgBuffer); + if (this.m_HostTopology == null) + { + ConnectionConfig connectionConfig = new ConnectionConfig(); + connectionConfig.AddChannel(QosType.ReliableSequenced); + connectionConfig.AddChannel(QosType.Unreliable); + this.m_HostTopology = new HostTopology(connectionConfig, 8); + } + if (LogFilter.logDebug) + { + Debug.Log("NetworkServerSimple initialize."); + } + } + } + + public bool Configure(ConnectionConfig config, int maxConnections) + { + HostTopology topology = new HostTopology(config, maxConnections); + return this.Configure(topology); + } + + public bool Configure(HostTopology topology) + { + this.m_HostTopology = topology; + return true; + } + + public bool Listen(string ipAddress, int serverListenPort) + { + this.Initialize(); + this.m_ListenPort = serverListenPort; + if (this.m_UseWebSockets) + { + this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort, ipAddress); + } + else + { + this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort, ipAddress); + } + bool result; + if (this.m_ServerHostId == -1) + { + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "NetworkServerSimple listen: ", + ipAddress, + ":", + this.m_ListenPort + })); + } + result = true; + } + return result; + } + + public bool Listen(int serverListenPort) + { + return this.Listen(serverListenPort, this.m_HostTopology); + } + + public bool Listen(int serverListenPort, HostTopology topology) + { + this.m_HostTopology = topology; + this.Initialize(); + this.m_ListenPort = serverListenPort; + if (this.m_UseWebSockets) + { + this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort); + } + else + { + this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort); + } + bool result; + if (this.m_ServerHostId == -1) + { + result = false; + } + else + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkServerSimple listen " + this.m_ListenPort); + } + result = true; + } + return result; + } + + public void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) + { + this.Initialize(); + this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, this.listenPort); + if (LogFilter.logDebug) + { + Debug.Log("Server Host Slot Id: " + this.m_ServerHostId); + } + this.Update(); + byte b; + NetworkTransport.ConnectAsNetworkHost(this.m_ServerHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out b); + this.m_RelaySlotId = 0; + if (LogFilter.logDebug) + { + Debug.Log("Relay Slot Id: " + this.m_RelaySlotId); + } + } + + public void Stop() + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkServerSimple stop "); + } + NetworkTransport.RemoveHost(this.m_ServerHostId); + this.m_ServerHostId = -1; + } + + internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) + { + this.m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + } + + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + this.m_MessageHandlers.RegisterHandler(msgType, handler); + } + + public void UnregisterHandler(short msgType) + { + this.m_MessageHandlers.UnregisterHandler(msgType); + } + + public void ClearHandlers() + { + this.m_MessageHandlers.ClearMessageHandlers(); + } + + public void UpdateConnections() + { + for (int i = 0; i < this.m_Connections.Count; i++) + { + QSBNetworkConnection networkConnection = this.m_Connections[i]; + if (networkConnection != null) + { + networkConnection.FlushChannels(); + } + } + } + + public void Update() + { + if (this.m_ServerHostId != -1) + { + NetworkEventType networkEventType; + if (this.m_RelaySlotId != -1) + { + byte b; + networkEventType = NetworkTransport.ReceiveRelayEventFromHost(this.m_ServerHostId, out b); + if (networkEventType != NetworkEventType.Nothing) + { + if (LogFilter.logDebug) + { + Debug.Log("NetGroup event:" + networkEventType); + } + } + if (networkEventType == NetworkEventType.ConnectEvent) + { + if (LogFilter.logDebug) + { + Debug.Log("NetGroup server connected"); + } + } + if (networkEventType == NetworkEventType.DisconnectEvent) + { + if (LogFilter.logDebug) + { + Debug.Log("NetGroup server disconnected"); + } + } + } + do + { + byte b; + int connectionId; + int channelId; + int receivedSize; + networkEventType = NetworkTransport.ReceiveFromHost(this.m_ServerHostId, out connectionId, out channelId, this.m_MsgBuffer, this.m_MsgBuffer.Length, out receivedSize, out b); + if (networkEventType != NetworkEventType.Nothing) + { + Debug.Log(string.Concat(new object[] + { + "Server event: host=", + this.m_ServerHostId, + " event=", + networkEventType, + " error=", + b + })); + } + switch (networkEventType) + { + case NetworkEventType.DataEvent: + this.HandleData(connectionId, channelId, receivedSize, b); + break; + case NetworkEventType.ConnectEvent: + this.HandleConnect(connectionId, b); + break; + case NetworkEventType.DisconnectEvent: + this.HandleDisconnect(connectionId, b); + break; + case NetworkEventType.Nothing: + break; + default: + if (LogFilter.logError) + { + Debug.LogError("Unknown network message type received: " + networkEventType); + } + break; + } + } + while (networkEventType != NetworkEventType.Nothing); + this.UpdateConnections(); + } + } + + public QSBNetworkConnection FindConnection(int connectionId) + { + QSBNetworkConnection result; + if (connectionId < 0 || connectionId >= this.m_Connections.Count) + { + result = null; + } + else + { + result = this.m_Connections[connectionId]; + } + return result; + } + + public bool SetConnectionAtIndex(QSBNetworkConnection conn) + { + while (this.m_Connections.Count <= conn.connectionId) + { + this.m_Connections.Add(null); + } + bool result; + if (this.m_Connections[conn.connectionId] != null) + { + result = false; + } + else + { + this.m_Connections[conn.connectionId] = conn; + conn.SetHandlers(this.m_MessageHandlers); + result = true; + } + return result; + } + + public bool RemoveConnectionAtIndex(int connectionId) + { + bool result; + if (connectionId < 0 || connectionId >= this.m_Connections.Count) + { + result = false; + } + else + { + this.m_Connections[connectionId] = null; + result = true; + } + return result; + } + + private void HandleConnect(int connectionId, byte error) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkServerSimple accepted client:" + connectionId); + } + if (error != 0) + { + this.OnConnectError(connectionId, error); + } + else + { + string networkAddress; + int num; + NetworkID networkID; + NodeID nodeID; + byte lastError; + NetworkTransport.GetConnectionInfo(this.m_ServerHostId, connectionId, out networkAddress, out num, out networkID, out nodeID, out lastError); + QSBNetworkConnection networkConnection = (QSBNetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass); + networkConnection.SetHandlers(this.m_MessageHandlers); + networkConnection.Initialize(networkAddress, this.m_ServerHostId, connectionId, this.m_HostTopology); + networkConnection.LastError = (NetworkError)lastError; + while (this.m_Connections.Count <= connectionId) + { + this.m_Connections.Add(null); + } + this.m_Connections[connectionId] = networkConnection; + this.OnConnected(networkConnection); + } + } + + private void HandleDisconnect(int connectionId, byte error) + { + if (LogFilter.logDebug) + { + Debug.Log("NetworkServerSimple disconnect client:" + connectionId); + } + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + if (networkConnection != null) + { + networkConnection.LastError = (NetworkError)error; + if (error != 0) + { + if (error != 6) + { + this.m_Connections[connectionId] = null; + if (LogFilter.logError) + { + Debug.LogError(string.Concat(new object[] + { + "Server client disconnect error, connectionId: ", + connectionId, + " error: ", + (NetworkError)error + })); + } + this.OnDisconnectError(networkConnection, error); + return; + } + } + networkConnection.Disconnect(); + this.m_Connections[connectionId] = null; + if (LogFilter.logDebug) + { + Debug.Log("Server lost client:" + connectionId); + } + this.OnDisconnected(networkConnection); + } + } + + private void HandleData(int connectionId, int channelId, int receivedSize, byte error) + { + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + if (networkConnection == null) + { + if (LogFilter.logError) + { + Debug.LogError("HandleData Unknown connectionId:" + connectionId); + } + } + else + { + networkConnection.LastError = (NetworkError)error; + if (error != 0) + { + this.OnDataError(networkConnection, error); + } + else + { + this.m_MsgReader.SeekZero(); + this.OnData(networkConnection, receivedSize, channelId); + } + } + } + + public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channelId) + { + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + if (networkConnection != null) + { + networkConnection.SendBytes(bytes, numBytes, channelId); + } + } + + public void SendWriterTo(int connectionId, NetworkWriter writer, int channelId) + { + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + if (networkConnection != null) + { + networkConnection.SendWriter(writer, channelId); + } + } + + public void Disconnect(int connectionId) + { + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + if (networkConnection != null) + { + networkConnection.Disconnect(); + this.m_Connections[connectionId] = null; + } + } + + public void DisconnectAllConnections() + { + for (int i = 0; i < this.m_Connections.Count; i++) + { + QSBNetworkConnection networkConnection = this.m_Connections[i]; + if (networkConnection != null) + { + networkConnection.Disconnect(); + networkConnection.Dispose(); + } + } + } + + public virtual void OnConnectError(int connectionId, byte error) + { + Debug.LogError("OnConnectError error:" + error); + } + + public virtual void OnDataError(QSBNetworkConnection conn, byte error) + { + Debug.LogError("OnDataError error:" + error); + } + + public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) + { + Debug.LogError("OnDisconnectError error:" + error); + } + + public virtual void OnConnected(QSBNetworkConnection conn) + { + conn.InvokeHandlerNoData(32); + } + + public virtual void OnDisconnected(QSBNetworkConnection conn) + { + conn.InvokeHandlerNoData(33); + } + + public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) + { + conn.TransportReceive(this.m_MsgBuffer, receivedSize, channelId); + } + + private bool m_Initialized = false; + + private int m_ListenPort; + + private int m_ServerHostId = -1; + + private int m_RelaySlotId = -1; + + private bool m_UseWebSockets; + + private byte[] m_MsgBuffer = null; + + private NetworkReader m_MsgReader = null; + + private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); + + private HostTopology m_HostTopology; + + private List m_Connections = new List(); + + private ReadOnlyCollection m_ConnectionsReadOnly; + + private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); + } +} diff --git a/QSB/QSBRemovePlayerMessage.cs b/QSB/QSBRemovePlayerMessage.cs new file mode 100644 index 000000000..c860d6e8a --- /dev/null +++ b/QSB/QSBRemovePlayerMessage.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + public class QSBRemovePlayerMessage : MessageBase + { + public override void Deserialize(NetworkReader reader) + { + this.playerControllerId = (short)reader.ReadUInt16(); + } + + public override void Serialize(NetworkWriter writer) + { + writer.Write((ushort)this.playerControllerId); + } + + public short playerControllerId; + } +} diff --git a/QSB/QSBULocalConnectionToClient.cs b/QSB/QSBULocalConnectionToClient.cs new file mode 100644 index 000000000..f5046a5c7 --- /dev/null +++ b/QSB/QSBULocalConnectionToClient.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBULocalConnectionToClient : QSBNetworkConnection + { + public QSBULocalConnectionToClient(QSBLocalClient localClient) + { + address = "localClient"; + m_LocalClient = localClient; + } + + public QSBLocalClient localClient + { + get + { + return m_LocalClient; + } + } + + public override bool Send(short msgType, MessageBase msg) + { + m_LocalClient.InvokeHandlerOnClient(msgType, msg, 0); + return true; + } + + public override bool SendUnreliable(short msgType, MessageBase msg) + { + m_LocalClient.InvokeHandlerOnClient(msgType, msg, 1); + return true; + } + + public override bool SendByChannel(short msgType, MessageBase msg, int channelId) + { + m_LocalClient.InvokeHandlerOnClient(msgType, msg, channelId); + return true; + } + + public override bool SendBytes(byte[] bytes, int numBytes, int channelId) + { + m_LocalClient.InvokeBytesOnClient(bytes, channelId); + return true; + } + + public override bool SendWriter(NetworkWriter writer, int channelId) + { + m_LocalClient.InvokeBytesOnClient(writer.AsArray(), channelId); + return true; + } + + public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) + { + numMsgs = 0; + numBufferedMsgs = 0; + numBytes = 0; + lastBufferedPerSecond = 0; + } + + public override void GetStatsIn(out int numMsgs, out int numBytes) + { + numMsgs = 0; + numBytes = 0; + } + + private QSBLocalClient m_LocalClient; + } +} diff --git a/QSB/QSBULocalConnectionToServer.cs b/QSB/QSBULocalConnectionToServer.cs new file mode 100644 index 000000000..3f5bd1f7f --- /dev/null +++ b/QSB/QSBULocalConnectionToServer.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB +{ + class QSBULocalConnectionToServer : QSBNetworkConnection + { + public QSBULocalConnectionToServer(QSBNetworkServer localServer) + { + address = "localServer"; + m_LocalServer = localServer; + } + + public override bool Send(short msgType, MessageBase msg) + { + return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); + } + + public override bool SendUnreliable(short msgType, MessageBase msg) + { + return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); + } + + public override bool SendByChannel(short msgType, MessageBase msg, int channelId) + { + return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); + } + + public override bool SendBytes(byte[] bytes, int numBytes, int channelId) + { + bool result; + if (numBytes <= 0) + { + if (LogFilter.logError) + { + Debug.LogError("LocalConnection:SendBytes cannot send zero bytes"); + } + result = false; + } + else + { + result = m_LocalServer.InvokeBytes(this, bytes, numBytes, channelId); + } + return result; + } + + public override bool SendWriter(NetworkWriter writer, int channelId) + { + return m_LocalServer.InvokeBytes(this, writer.AsArray(), (int)((short)writer.AsArray().Length), channelId); + } + + public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) + { + numMsgs = 0; + numBufferedMsgs = 0; + numBytes = 0; + lastBufferedPerSecond = 0; + } + + public override void GetStatsIn(out int numMsgs, out int numBytes) + { + numMsgs = 0; + numBytes = 0; + } + + private QSBNetworkServer m_LocalServer; + } +} diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 822fb7270..134ed36a8 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -52,7 +52,7 @@ private void Start() private void OnWakeUp() { DebugLog.DebugWrite("ON WAKE UP!"); - if (NetworkServer.active) + if (QSBNetworkServer.active) { QSB.HasWokenUp = true; } diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs index 882d35698..c76129ead 100644 --- a/QSB/Utility/UnetExtensions.cs +++ b/QSB/Utility/UnetExtensions.cs @@ -6,9 +6,9 @@ namespace QSB.Utility { public static class UnetExtensions { - public static PlayerInfo GetPlayer(this NetworkConnection connection) + public static PlayerInfo GetPlayer(this QSBNetworkConnection connection) { - var go = connection.playerControllers[0].gameObject; + var go = connection.PlayerControllers[0].gameObject; var controller = go.GetComponent(); return QSBPlayerManager.GetPlayer(controller.NetId.Value); } diff --git a/UnityProject/Assets/Chert.meta b/UnityProject/Assets/Chert.meta deleted file mode 100644 index db8176b65..000000000 --- a/UnityProject/Assets/Chert.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 39c5ab079a5cdc744a27fce8ed2490bd -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Riebeck.meta b/UnityProject/Assets/Riebeck.meta deleted file mode 100644 index cd227596d..000000000 --- a/UnityProject/Assets/Riebeck.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a757ec354503af14c8d237815b85696f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From d9e6b5c8c96e3adbfc7519e4d6f7717dbb205549 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 20:43:16 +0000 Subject: [PATCH 104/207] more stuff and fixes --- QSB/QSBClientScene.cs | 2 +- QSB/QSBLocalClient.cs | 1 - QSB/QSBNetworkManager.cs | 10 ++++ QSB/QSBNetworkManagerUNET.cs | 9 ++-- QSB/QSBNetworkScene.cs | 100 +++++++++-------------------------- 5 files changed, 39 insertions(+), 83 deletions(-) diff --git a/QSB/QSBClientScene.cs b/QSB/QSBClientScene.cs index d41eddd80..33d875e30 100644 --- a/QSB/QSBClientScene.cs +++ b/QSB/QSBClientScene.cs @@ -581,7 +581,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) { Debug.LogError(string.Concat(new object[] { - "Failed to spawn server object, did you forget to add it to the NetworkManager? assetId=", + "Failed to spawn server object, did you forget to add it to the QSBNetworkManager? assetId=", s_ObjectSpawnMessage.assetId, " netId=", s_ObjectSpawnMessage.netId diff --git a/QSB/QSBLocalClient.cs b/QSB/QSBLocalClient.cs index 9ec7dfa12..c8fa4b9c0 100644 --- a/QSB/QSBLocalClient.cs +++ b/QSB/QSBLocalClient.cs @@ -108,7 +108,6 @@ private void ProcessInternalMessages() } else { - DebugLog.DebugWrite("try replace"); s_InternalMessage.reader.GetType().GetMethod("Replace", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public).Invoke(s_InternalMessage.reader, new object[] { t.buffer }); } s_InternalMessage.reader.ReadInt16(); diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 1eefcadb3..b3b74cfd0 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -50,6 +50,8 @@ private void Awake() playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); var ident = playerPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); @@ -59,6 +61,8 @@ private void Awake() _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); ident = _shipPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _shipPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); @@ -66,6 +70,8 @@ private void Awake() _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); ident = _cameraPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _cameraPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); @@ -73,6 +79,8 @@ private void Awake() _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); ident = _probePrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId",_probePrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); @@ -80,6 +88,8 @@ private void Awake() OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); ident = OrbPrefab.AddComponent(); ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", OrbPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", OrbPrefab.GetComponent().sceneId); OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); diff --git a/QSB/QSBNetworkManagerUNET.cs b/QSB/QSBNetworkManagerUNET.cs index 7c18deb94..1fe64b366 100644 --- a/QSB/QSBNetworkManagerUNET.cs +++ b/QSB/QSBNetworkManagerUNET.cs @@ -623,14 +623,14 @@ internal void RegisterClientMessages(QSBNetworkClient client) client.RegisterHandler(39, new QSBNetworkMessageDelegate(OnClientSceneInternal)); if (m_PlayerPrefab != null) { - ClientScene.RegisterPrefab(m_PlayerPrefab); + QSBClientScene.RegisterPrefab(m_PlayerPrefab); } for (int i = 0; i < m_SpawnPrefabs.Count; i++) { GameObject gameObject = m_SpawnPrefabs[i]; if (gameObject != null) { - ClientScene.RegisterPrefab(gameObject); + QSBClientScene.RegisterPrefab(gameObject); } } } @@ -988,10 +988,7 @@ internal static void UpdateScene() { if (s_LoadingSceneAsync.isDone) { - if (LogFilter.logDebug) - { - Debug.Log("ClientChangeScene done readyCon:" + s_ClientReadyConnection); - } + DebugLog.DebugWrite("ClientChangeScene done readyCon:" + s_ClientReadyConnection); singleton.FinishLoadScene(); s_LoadingSceneAsync.allowSceneActivation = true; s_LoadingSceneAsync = null; diff --git a/QSB/QSBNetworkScene.cs b/QSB/QSBNetworkScene.cs index 225b8fe3b..0e6cd06c1 100644 --- a/QSB/QSBNetworkScene.cs +++ b/QSB/QSBNetworkScene.cs @@ -10,7 +10,7 @@ namespace QSB { class QSBNetworkScene { - internal Dictionary localObjects { get; } = new Dictionary(); + private Dictionary m_LocalObjects = new Dictionary(); internal static Dictionary guidToPrefab { get; } = new Dictionary(); @@ -18,6 +18,14 @@ class QSBNetworkScene internal static Dictionary unspawnHandlers { get; } = new Dictionary(); + internal Dictionary localObjects + { + get + { + return this.m_LocalObjects; + } + } + internal void Shutdown() { this.ClearLocalObjects(); @@ -26,13 +34,6 @@ internal void Shutdown() internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) { - Debug.Log(string.Concat(new object[] - { - "SetLocalObject ", - netId, - " ", - obj - })); if (obj == null) { this.localObjects[netId] = null; @@ -46,6 +47,7 @@ internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isCli } if (networkIdentity == null) { + DebugLog.DebugWrite($"Adding {netId} to local objects."); networkIdentity = obj.GetComponent(); this.localObjects[netId] = networkIdentity; } @@ -69,9 +71,9 @@ internal GameObject FindLocalObject(NetworkInstanceId netId) internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity uv) { bool result; - if (this.localObjects.ContainsKey(netId) && this.localObjects[netId] != null) + if (localObjects.ContainsKey(netId) && localObjects[netId] != null) { - uv = this.localObjects[netId]; + uv = localObjects[netId]; result = true; } else @@ -84,7 +86,7 @@ internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity internal bool RemoveLocalObject(NetworkInstanceId netId) { - return this.localObjects.Remove(netId); + return localObjects.Remove(netId); } internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) @@ -114,13 +116,6 @@ internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId if (component) { component.SetDynamicAssetId(newAssetId); - DebugLog.DebugWrite(string.Concat(new object[] - { - "Registering prefab '", - prefab.name, - "' as asset:", - component.AssetId - })); guidToPrefab[component.AssetId] = prefab; } else if (LogFilter.logError) @@ -131,20 +126,10 @@ internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId internal static void RegisterPrefab(GameObject prefab) { - NetworkIdentity component = prefab.GetComponent(); + QSBNetworkIdentity component = prefab.GetComponent(); if (component) { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "Registering prefab '", - prefab.name, - "' as asset:", - component.assetId - })); - } - guidToPrefab[component.assetId] = prefab; + guidToPrefab[component.AssetId] = prefab; NetworkIdentity[] componentsInChildren = prefab.GetComponentsInChildren(); if (componentsInChildren.Length > 1) { @@ -205,18 +190,6 @@ internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate } else { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "RegisterSpawnHandler asset '", - assetId, - "' ", - spawnHandler.GetMethodName(), - "/", - unspawnHandler.GetMethodName() - })); - } spawnHandlers[assetId] = spawnHandler; unspawnHandlers[assetId] = unspawnHandler; } @@ -224,7 +197,7 @@ internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate internal static void UnregisterPrefab(GameObject prefab) { - NetworkIdentity component = prefab.GetComponent(); + QSBNetworkIdentity component = prefab.GetComponent(); if (component == null) { if (LogFilter.logError) @@ -234,53 +207,30 @@ internal static void UnregisterPrefab(GameObject prefab) } else { - spawnHandlers.Remove(component.assetId); - unspawnHandlers.Remove(component.assetId); + spawnHandlers.Remove(component.AssetId); + unspawnHandlers.Remove(component.AssetId); } } internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { - NetworkIdentity component = prefab.GetComponent(); + QSBNetworkIdentity component = prefab.GetComponent(); if (component == null) { - if (LogFilter.logError) - { - Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); - } + Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } else if (spawnHandler == null || unspawnHandler == null) { - if (LogFilter.logError) - { - Debug.LogError("RegisterPrefab custom spawn function null for " + component.assetId); - } + Debug.LogError("RegisterPrefab custom spawn function null for " + component.AssetId); } - else if (!component.assetId.IsValid()) + else if (!component.AssetId.IsValid()) { - if (LogFilter.logError) - { - Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); - } + Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); } else { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "Registering custom prefab '", - prefab.name, - "' as asset:", - component.assetId, - " ", - spawnHandler.GetMethodName(), - "/", - unspawnHandler.GetMethodName() - })); - } - spawnHandlers[component.assetId] = spawnHandler; - unspawnHandlers[component.assetId] = unspawnHandler; + spawnHandlers[component.AssetId] = spawnHandler; + unspawnHandlers[component.AssetId] = unspawnHandler; } } From af15189ffa179745a0f3ec2f75f6609d7c952dd1 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 21:19:10 +0000 Subject: [PATCH 105/207] redo namespace --- QSB/QSB.csproj | 64 +++++++++---------- QSB/{ => QuantumUNET}/QSBCRCMessage.cs | 2 +- QSB/{ => QuantumUNET}/QSBCRCMessageEntry.cs | 2 +- QSB/{ => QuantumUNET}/QSBChannelBuffer.cs | 32 +++++----- QSB/{ => QuantumUNET}/QSBChannelPacket.cs | 2 +- .../QSBClientAuthorityMessage.cs | 2 +- QSB/{ => QuantumUNET}/QSBClientScene.cs | 2 +- QSB/{ => QuantumUNET}/QSBLocalClient.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetBuffer.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkBehaviour.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkCRC.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkClient.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkConnection.cs | 5 +- QSB/{ => QuantumUNET}/QSBNetworkIdentity.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkManagerHUD.cs | 2 +- .../QSBNetworkManagerUNET.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkMessage.cs | 2 +- .../QSBNetworkMessageDelegate.cs | 2 +- .../QSBNetworkMessageHandlers.cs | 2 +- .../QSBNetworkMigrationManager.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkScene.cs | 2 +- QSB/{ => QuantumUNET}/QSBNetworkServer.cs | 2 +- .../QSBNetworkServerSimple.cs | 2 +- .../QSBObjectDestroyMessage.cs | 2 +- .../QSBObjectSpawnFinishedMessage.cs | 2 +- .../QSBObjectSpawnMessage.cs | 2 +- .../QSBObjectSpawnSceneMessage.cs | 2 +- QSB/{ => QuantumUNET}/QSBOwnerMessage.cs | 2 +- QSB/{ => QuantumUNET}/QSBPlayerController.cs | 2 +- .../QSBRemovePlayerMessage.cs | 2 +- .../QSBULocalConnectionToClient.cs | 2 +- .../QSBULocalConnectionToServer.cs | 2 +- QSB/{ => QuantumUNET}/QSBUtility.cs | 2 +- 33 files changed, 81 insertions(+), 80 deletions(-) rename QSB/{ => QuantumUNET}/QSBCRCMessage.cs (97%) rename QSB/{ => QuantumUNET}/QSBCRCMessageEntry.cs (86%) rename QSB/{ => QuantumUNET}/QSBChannelBuffer.cs (91%) rename QSB/{ => QuantumUNET}/QSBChannelPacket.cs (98%) rename QSB/{ => QuantumUNET}/QSBClientAuthorityMessage.cs (94%) rename QSB/{ => QuantumUNET}/QSBClientScene.cs (99%) rename QSB/{ => QuantumUNET}/QSBLocalClient.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetBuffer.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkBehaviour.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkCRC.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkClient.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkConnection.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkIdentity.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkManagerHUD.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkManagerUNET.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkMessage.cs (96%) rename QSB/{ => QuantumUNET}/QSBNetworkMessageDelegate.cs (86%) rename QSB/{ => QuantumUNET}/QSBNetworkMessageHandlers.cs (98%) rename QSB/{ => QuantumUNET}/QSBNetworkMigrationManager.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkScene.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkServer.cs (99%) rename QSB/{ => QuantumUNET}/QSBNetworkServerSimple.cs (99%) rename QSB/{ => QuantumUNET}/QSBObjectDestroyMessage.cs (93%) rename QSB/{ => QuantumUNET}/QSBObjectSpawnFinishedMessage.cs (93%) rename QSB/{ => QuantumUNET}/QSBObjectSpawnMessage.cs (97%) rename QSB/{ => QuantumUNET}/QSBObjectSpawnSceneMessage.cs (96%) rename QSB/{ => QuantumUNET}/QSBOwnerMessage.cs (95%) rename QSB/{ => QuantumUNET}/QSBPlayerController.cs (97%) rename QSB/{ => QuantumUNET}/QSBRemovePlayerMessage.cs (94%) rename QSB/{ => QuantumUNET}/QSBULocalConnectionToClient.cs (98%) rename QSB/{ => QuantumUNET}/QSBULocalConnectionToServer.cs (98%) rename QSB/{ => QuantumUNET}/QSBUtility.cs (98%) diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 2b08a41ef..9f61a292f 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -132,12 +132,12 @@ - - - - - - + + + + + + @@ -168,37 +168,37 @@ - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + diff --git a/QSB/QSBCRCMessage.cs b/QSB/QuantumUNET/QSBCRCMessage.cs similarity index 97% rename from QSB/QSBCRCMessage.cs rename to QSB/QuantumUNET/QSBCRCMessage.cs index 87f5f216d..a1936e921 100644 --- a/QSB/QSBCRCMessage.cs +++ b/QSB/QuantumUNET/QSBCRCMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBCRCMessage : MessageBase { diff --git a/QSB/QSBCRCMessageEntry.cs b/QSB/QuantumUNET/QSBCRCMessageEntry.cs similarity index 86% rename from QSB/QSBCRCMessageEntry.cs rename to QSB/QuantumUNET/QSBCRCMessageEntry.cs index dacf08eeb..5a78c51aa 100644 --- a/QSB/QSBCRCMessageEntry.cs +++ b/QSB/QuantumUNET/QSBCRCMessageEntry.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace QSB +namespace QSB.QuantumUNET { struct QSBCRCMessageEntry { diff --git a/QSB/QSBChannelBuffer.cs b/QSB/QuantumUNET/QSBChannelBuffer.cs similarity index 91% rename from QSB/QSBChannelBuffer.cs rename to QSB/QuantumUNET/QSBChannelBuffer.cs index 584c3be82..51f9dd4b2 100644 --- a/QSB/QSBChannelBuffer.cs +++ b/QSB/QuantumUNET/QSBChannelBuffer.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBChannelBuffer : IDisposable { @@ -17,7 +17,7 @@ public QSBChannelBuffer(QSBNetworkConnection conn, int bufferSize, byte cid, boo m_ChannelId = cid; m_MaxPendingPacketCount = 16; m_IsReliable = isReliable; - m_AllowFragmentation = (isReliable && isSequenced); + m_AllowFragmentation = isReliable && isSequenced; if (isReliable) { m_PendingPackets = new Queue(); @@ -116,7 +116,7 @@ public bool SetOption(ChannelOption option, int value) } else { - m_AllowFragmentation = (value != 0); + m_AllowFragmentation = value != 0; result = true; } } @@ -164,7 +164,7 @@ public void CheckInternalBuffer() public bool SendWriter(NetworkWriter writer) { var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(writer, null); - return this.SendBytes(arraySegment.Array, arraySegment.Count); + return SendBytes(arraySegment.Array, arraySegment.Count); } public bool Send(short msgType, MessageBase msg) @@ -173,7 +173,7 @@ public bool Send(short msgType, MessageBase msg) msg.Serialize(s_SendWriter); s_SendWriter.FinishMessage(); numMsgsOut++; - return this.SendWriter(s_SendWriter); + return SendWriter(s_SendWriter); } internal bool HandleFragment(NetworkReader reader) @@ -186,7 +186,7 @@ internal bool HandleFragment(NetworkReader reader) fragmentBuffer.SeekZero(); readingFragment = true; } - byte[] array = reader.ReadBytesAndSize(); + var array = reader.ReadBytesAndSize(); fragmentBuffer.WriteBytes(array, (ushort)array.Length); result = false; } @@ -200,24 +200,24 @@ internal bool HandleFragment(NetworkReader reader) internal bool SendFragmentBytes(byte[] bytes, int bytesToSend) { - int num = 0; + var num = 0; while (bytesToSend > 0) { - int num2 = Math.Min(bytesToSend, m_MaxPacketSize - 32); - byte[] array = new byte[num2]; + var num2 = Math.Min(bytesToSend, m_MaxPacketSize - 32); + var array = new byte[num2]; Array.Copy(bytes, num, array, 0, num2); s_FragmentWriter.StartMessage(17); s_FragmentWriter.Write(0); s_FragmentWriter.WriteBytesFull(array); s_FragmentWriter.FinishMessage(); - this.SendWriter(s_FragmentWriter); + SendWriter(s_FragmentWriter); num += num2; bytesToSend -= num2; } s_FragmentWriter.StartMessage(17); s_FragmentWriter.Write(1); s_FragmentWriter.FinishMessage(); - this.SendWriter(s_FragmentWriter); + SendWriter(s_FragmentWriter); return true; } @@ -269,7 +269,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) { if (m_PendingPackets.Count == 0) { - if (!m_CurrentPacket.SendToTransport(m_Connection, (int)m_ChannelId)) + if (!m_CurrentPacket.SendToTransport(m_Connection, m_ChannelId)) { QueuePacket(); } @@ -295,7 +295,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) result = true; } } - else if (!m_CurrentPacket.SendToTransport(m_Connection, (int)m_ChannelId)) + else if (!m_CurrentPacket.SendToTransport(m_Connection, m_ChannelId)) { if (LogFilter.logError) { @@ -312,7 +312,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) else { m_CurrentPacket.Write(bytes, bytesToSend); - result = (maxDelay != 0f || SendInternalBuffer()); + result = maxDelay != 0f || SendInternalBuffer(); } return result; } @@ -357,7 +357,7 @@ public bool SendInternalBuffer() while (m_PendingPackets.Count > 0) { var channelPacket = m_PendingPackets.Dequeue(); - if (!channelPacket.SendToTransport(m_Connection, (int)m_ChannelId)) + if (!channelPacket.SendToTransport(m_Connection, m_ChannelId)) { m_PendingPackets.Enqueue(channelPacket); break; @@ -377,7 +377,7 @@ public bool SendInternalBuffer() } else { - result = m_CurrentPacket.SendToTransport(m_Connection, (int)m_ChannelId); + result = m_CurrentPacket.SendToTransport(m_Connection, m_ChannelId); } return result; } diff --git a/QSB/QSBChannelPacket.cs b/QSB/QuantumUNET/QSBChannelPacket.cs similarity index 98% rename from QSB/QSBChannelPacket.cs rename to QSB/QuantumUNET/QSBChannelPacket.cs index a4a763dab..51b79d5d3 100644 --- a/QSB/QSBChannelPacket.cs +++ b/QSB/QuantumUNET/QSBChannelPacket.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { struct QSBChannelPacket { diff --git a/QSB/QSBClientAuthorityMessage.cs b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs similarity index 94% rename from QSB/QSBClientAuthorityMessage.cs rename to QSB/QuantumUNET/QSBClientAuthorityMessage.cs index ec84fde0e..2c6c577fd 100644 --- a/QSB/QSBClientAuthorityMessage.cs +++ b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBClientAuthorityMessage : MessageBase { diff --git a/QSB/QSBClientScene.cs b/QSB/QuantumUNET/QSBClientScene.cs similarity index 99% rename from QSB/QSBClientScene.cs rename to QSB/QuantumUNET/QSBClientScene.cs index 33d875e30..85c13a8f7 100644 --- a/QSB/QSBClientScene.cs +++ b/QSB/QuantumUNET/QSBClientScene.cs @@ -8,7 +8,7 @@ using UnityEngine.Networking; using UnityEngine.Networking.NetworkSystem; -namespace QSB +namespace QSB.QuantumUNET { public class QSBClientScene { diff --git a/QSB/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs similarity index 99% rename from QSB/QSBLocalClient.cs rename to QSB/QuantumUNET/QSBLocalClient.cs index c8fa4b9c0..55512ec7d 100644 --- a/QSB/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -6,7 +6,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBLocalClient : QSBNetworkClient { diff --git a/QSB/QSBNetBuffer.cs b/QSB/QuantumUNET/QSBNetBuffer.cs similarity index 99% rename from QSB/QSBNetBuffer.cs rename to QSB/QuantumUNET/QSBNetBuffer.cs index 180601ded..96f013183 100644 --- a/QSB/QSBNetBuffer.cs +++ b/QSB/QuantumUNET/QSBNetBuffer.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine; -namespace QSB +namespace QSB.QuantumUNET { class QSBNetBuffer { diff --git a/QSB/QSBNetworkBehaviour.cs b/QSB/QuantumUNET/QSBNetworkBehaviour.cs similarity index 99% rename from QSB/QSBNetworkBehaviour.cs rename to QSB/QuantumUNET/QSBNetworkBehaviour.cs index 77ed60b18..78c08f0f4 100644 --- a/QSB/QSBNetworkBehaviour.cs +++ b/QSB/QuantumUNET/QSBNetworkBehaviour.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkBehaviour : MonoBehaviour { diff --git a/QSB/QSBNetworkCRC.cs b/QSB/QuantumUNET/QSBNetworkCRC.cs similarity index 99% rename from QSB/QSBNetworkCRC.cs rename to QSB/QuantumUNET/QSBNetworkCRC.cs index 7f3203288..4789a49be 100644 --- a/QSB/QSBNetworkCRC.cs +++ b/QSB/QuantumUNET/QSBNetworkCRC.cs @@ -6,7 +6,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkCRC { diff --git a/QSB/QSBNetworkClient.cs b/QSB/QuantumUNET/QSBNetworkClient.cs similarity index 99% rename from QSB/QSBNetworkClient.cs rename to QSB/QuantumUNET/QSBNetworkClient.cs index a723077a9..2ddd54f15 100644 --- a/QSB/QSBNetworkClient.cs +++ b/QSB/QuantumUNET/QSBNetworkClient.cs @@ -10,7 +10,7 @@ using UnityEngine.Networking.Match; using UnityEngine.Networking.NetworkSystem; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkClient { diff --git a/QSB/QSBNetworkConnection.cs b/QSB/QuantumUNET/QSBNetworkConnection.cs similarity index 99% rename from QSB/QSBNetworkConnection.cs rename to QSB/QuantumUNET/QSBNetworkConnection.cs index 40ae16304..2de09d462 100644 --- a/QSB/QSBNetworkConnection.cs +++ b/QSB/QuantumUNET/QSBNetworkConnection.cs @@ -1,11 +1,12 @@ -using System; +using QSB.QuantumUNET; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkConnection : IDisposable { diff --git a/QSB/QSBNetworkIdentity.cs b/QSB/QuantumUNET/QSBNetworkIdentity.cs similarity index 99% rename from QSB/QSBNetworkIdentity.cs rename to QSB/QuantumUNET/QSBNetworkIdentity.cs index ddfd8d5e5..f1af937f0 100644 --- a/QSB/QSBNetworkIdentity.cs +++ b/QSB/QuantumUNET/QSBNetworkIdentity.cs @@ -6,7 +6,7 @@ using OWML.ModHelper.Events; using QSB.Utility; -namespace QSB +namespace QSB.QuantumUNET { public sealed class QSBNetworkIdentity : MonoBehaviour { diff --git a/QSB/QSBNetworkManagerHUD.cs b/QSB/QuantumUNET/QSBNetworkManagerHUD.cs similarity index 99% rename from QSB/QSBNetworkManagerHUD.cs rename to QSB/QuantumUNET/QSBNetworkManagerHUD.cs index 31642eb46..3fda872ed 100644 --- a/QSB/QSBNetworkManagerHUD.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerHUD.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking.Match; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkManagerHUD : MonoBehaviour { diff --git a/QSB/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs similarity index 99% rename from QSB/QSBNetworkManagerUNET.cs rename to QSB/QuantumUNET/QSBNetworkManagerUNET.cs index 1fe64b366..2aebddc43 100644 --- a/QSB/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -12,7 +12,7 @@ using UnityEngine.Networking.Types; using UnityEngine.SceneManagement; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkManagerUNET : MonoBehaviour { diff --git a/QSB/QSBNetworkMessage.cs b/QSB/QuantumUNET/QSBNetworkMessage.cs similarity index 96% rename from QSB/QSBNetworkMessage.cs rename to QSB/QuantumUNET/QSBNetworkMessage.cs index 932dae46b..2b7d6e505 100644 --- a/QSB/QSBNetworkMessage.cs +++ b/QSB/QuantumUNET/QSBNetworkMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkMessage { diff --git a/QSB/QSBNetworkMessageDelegate.cs b/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs similarity index 86% rename from QSB/QSBNetworkMessageDelegate.cs rename to QSB/QuantumUNET/QSBNetworkMessageDelegate.cs index ed8c880f7..8dc3b7fbd 100644 --- a/QSB/QSBNetworkMessageDelegate.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Text; -namespace QSB +namespace QSB.QuantumUNET { public delegate void QSBNetworkMessageDelegate(QSBNetworkMessage netMsg); } diff --git a/QSB/QSBNetworkMessageHandlers.cs b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs similarity index 98% rename from QSB/QSBNetworkMessageHandlers.cs rename to QSB/QuantumUNET/QSBNetworkMessageHandlers.cs index b05ad4520..4727f151a 100644 --- a/QSB/QSBNetworkMessageHandlers.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine; -namespace QSB +namespace QSB.QuantumUNET { class QSBNetworkMessageHandlers { diff --git a/QSB/QSBNetworkMigrationManager.cs b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs similarity index 99% rename from QSB/QSBNetworkMigrationManager.cs rename to QSB/QuantumUNET/QSBNetworkMigrationManager.cs index 9ae64a55f..4414eb1b9 100644 --- a/QSB/QSBNetworkMigrationManager.cs +++ b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs @@ -8,7 +8,7 @@ using UnityEngine.Networking.NetworkSystem; using UnityEngine.Networking.Types; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkMigrationManager : MonoBehaviour { diff --git a/QSB/QSBNetworkScene.cs b/QSB/QuantumUNET/QSBNetworkScene.cs similarity index 99% rename from QSB/QSBNetworkScene.cs rename to QSB/QuantumUNET/QSBNetworkScene.cs index 0e6cd06c1..16c2e2ecc 100644 --- a/QSB/QSBNetworkScene.cs +++ b/QSB/QuantumUNET/QSBNetworkScene.cs @@ -6,7 +6,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBNetworkScene { diff --git a/QSB/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs similarity index 99% rename from QSB/QSBNetworkServer.cs rename to QSB/QuantumUNET/QSBNetworkServer.cs index 93ee51929..647105992 100644 --- a/QSB/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -12,7 +12,7 @@ using UnityEngine.Networking.NetworkSystem; using UnityEngine.Networking.Types; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkServer { diff --git a/QSB/QSBNetworkServerSimple.cs b/QSB/QuantumUNET/QSBNetworkServerSimple.cs similarity index 99% rename from QSB/QSBNetworkServerSimple.cs rename to QSB/QuantumUNET/QSBNetworkServerSimple.cs index f70307280..2474817eb 100644 --- a/QSB/QSBNetworkServerSimple.cs +++ b/QSB/QuantumUNET/QSBNetworkServerSimple.cs @@ -7,7 +7,7 @@ using UnityEngine.Networking; using UnityEngine.Networking.Types; -namespace QSB +namespace QSB.QuantumUNET { public class QSBNetworkServerSimple { diff --git a/QSB/QSBObjectDestroyMessage.cs b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs similarity index 93% rename from QSB/QSBObjectDestroyMessage.cs rename to QSB/QuantumUNET/QSBObjectDestroyMessage.cs index 962c693cf..31e2a70d3 100644 --- a/QSB/QSBObjectDestroyMessage.cs +++ b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBObjectDestroyMessage : MessageBase { diff --git a/QSB/QSBObjectSpawnFinishedMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs similarity index 93% rename from QSB/QSBObjectSpawnFinishedMessage.cs rename to QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs index 7ea6306d1..bc4f6c16a 100644 --- a/QSB/QSBObjectSpawnFinishedMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBObjectSpawnFinishedMessage : MessageBase { diff --git a/QSB/QSBObjectSpawnMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs similarity index 97% rename from QSB/QSBObjectSpawnMessage.cs rename to QSB/QuantumUNET/QSBObjectSpawnMessage.cs index 7a0f45b54..2c64812dd 100644 --- a/QSB/QSBObjectSpawnMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBObjectSpawnMessage : MessageBase { diff --git a/QSB/QSBObjectSpawnSceneMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs similarity index 96% rename from QSB/QSBObjectSpawnSceneMessage.cs rename to QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs index 05754b53e..06aa75e07 100644 --- a/QSB/QSBObjectSpawnSceneMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBObjectSpawnSceneMessage : MessageBase { diff --git a/QSB/QSBOwnerMessage.cs b/QSB/QuantumUNET/QSBOwnerMessage.cs similarity index 95% rename from QSB/QSBOwnerMessage.cs rename to QSB/QuantumUNET/QSBOwnerMessage.cs index 684f3f9a7..b3e734f17 100644 --- a/QSB/QSBOwnerMessage.cs +++ b/QSB/QuantumUNET/QSBOwnerMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBOwnerMessage : MessageBase { diff --git a/QSB/QSBPlayerController.cs b/QSB/QuantumUNET/QSBPlayerController.cs similarity index 97% rename from QSB/QSBPlayerController.cs rename to QSB/QuantumUNET/QSBPlayerController.cs index ed4da952b..92f8f66e4 100644 --- a/QSB/QSBPlayerController.cs +++ b/QSB/QuantumUNET/QSBPlayerController.cs @@ -1,6 +1,6 @@ using UnityEngine; -namespace QSB +namespace QSB.QuantumUNET { public class QSBPlayerController { diff --git a/QSB/QSBRemovePlayerMessage.cs b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs similarity index 94% rename from QSB/QSBRemovePlayerMessage.cs rename to QSB/QuantumUNET/QSBRemovePlayerMessage.cs index c860d6e8a..e651721f8 100644 --- a/QSB/QSBRemovePlayerMessage.cs +++ b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { public class QSBRemovePlayerMessage : MessageBase { diff --git a/QSB/QSBULocalConnectionToClient.cs b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs similarity index 98% rename from QSB/QSBULocalConnectionToClient.cs rename to QSB/QuantumUNET/QSBULocalConnectionToClient.cs index f5046a5c7..080296dfe 100644 --- a/QSB/QSBULocalConnectionToClient.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBULocalConnectionToClient : QSBNetworkConnection { diff --git a/QSB/QSBULocalConnectionToServer.cs b/QSB/QuantumUNET/QSBULocalConnectionToServer.cs similarity index 98% rename from QSB/QSBULocalConnectionToServer.cs rename to QSB/QuantumUNET/QSBULocalConnectionToServer.cs index 3f5bd1f7f..88d061187 100644 --- a/QSB/QSBULocalConnectionToServer.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.QuantumUNET { class QSBULocalConnectionToServer : QSBNetworkConnection { diff --git a/QSB/QSBUtility.cs b/QSB/QuantumUNET/QSBUtility.cs similarity index 98% rename from QSB/QSBUtility.cs rename to QSB/QuantumUNET/QSBUtility.cs index ceac74827..03fa13623 100644 --- a/QSB/QSBUtility.cs +++ b/QSB/QuantumUNET/QSBUtility.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking.Types; -namespace QSB +namespace QSB.QuantumUNET { public class QSBUtility { From 8a5600aa6af8c9714348f3c5dad9c2e575cc01c6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 21:21:43 +0000 Subject: [PATCH 106/207] fix stuff --- QSB/Animation/CrouchSync.cs | 3 ++- QSB/Animation/QSBNetworkAnimator.cs | 1 + QSB/EventsCore/QSBEvent.cs | 1 + QSB/GeyserSync/QSBGeyser.cs | 1 + QSB/MessagesCore/MessageHandler.cs | 1 + QSB/OrbSync/Events/OrbUserEvent.cs | 1 + QSB/OrbSync/OrbManager.cs | 1 + QSB/Player/PlayerSyncObject.cs | 3 ++- QSB/Player/QSBPlayerManager.cs | 1 + QSB/QSB.cs | 1 + QSB/QSBNetworkManager.cs | 1 + QSB/TimeSync/PreserveTimeScale.cs | 1 + QSB/TimeSync/WakeUpSync.cs | 1 + QSB/TransformSync/NomaiOrbTransformSync.cs | 3 ++- QSB/Utility/UnetExtensions.cs | 1 + 15 files changed, 18 insertions(+), 3 deletions(-) diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 9cfba8e54..df5231e1b 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -1,4 +1,5 @@ -using System; +using QSB.QuantumUNET; +using System; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index baf9d6e33..8ac338019 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -1,4 +1,5 @@ using QSB.Animation.Events; +using QSB.QuantumUNET; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 1d415a50f..69abda07d 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -1,5 +1,6 @@ using QSB.Messaging; using QSB.Player; +using QSB.QuantumUNET; using QSB.TransformSync; using UnityEngine.Networking; diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index 7ab69c38a..b03499bb2 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -1,4 +1,5 @@ using QSB.EventsCore; +using QSB.QuantumUNET; using QSB.WorldSync; using UnityEngine.Networking; diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 25635b214..f1714aa98 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.EventsCore; +using QSB.QuantumUNET; using QSB.Utility; using System; using System.Linq; diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 4b11f02b5..8a4bcaf39 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.EventsCore; +using QSB.QuantumUNET; using QSB.TransformSync; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 0261c4c57..b7dbbcf29 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -1,4 +1,5 @@ using OWML.Common; +using QSB.QuantumUNET; using QSB.Utility; using QSB.WorldSync; using System.Linq; diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 77f59682e..8fd840fb1 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -1,4 +1,5 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.Player { diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 2efa49fa0..aa359d02b 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -1,5 +1,6 @@ using OWML.Common; using QSB.Player.Events; +using QSB.QuantumUNET; using QSB.TransformSync; using QSB.Utility; using System.Collections.Generic; diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 921a28ca2..380177005 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -6,6 +6,7 @@ using QSB.GeyserSync; using QSB.OrbSync; using QSB.Patches; +using QSB.QuantumUNET; using QSB.SectorSync; using QSB.TimeSync; using QSB.Utility; diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index b3b74cfd0..183b7cf8e 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -9,6 +9,7 @@ using QSB.OrbSync; using QSB.Patches; using QSB.Player; +using QSB.QuantumUNET; using QSB.SectorSync; using QSB.TimeSync; using QSB.TransformSync; diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index 50a64f5eb..23b58872f 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -1,4 +1,5 @@ using OWML.ModHelper.Events; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.TimeSync diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 134ed36a8..74c4d58bd 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,5 +1,6 @@ using QSB.DeathSync; using QSB.EventsCore; +using QSB.QuantumUNET; using QSB.TimeSync.Events; using QSB.Utility; using UnityEngine; diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index b5aac18b7..3b58490e9 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -1,4 +1,5 @@ -using QSB.Utility; +using QSB.QuantumUNET; +using QSB.Utility; using QSB.WorldSync; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs index c76129ead..88927e346 100644 --- a/QSB/Utility/UnetExtensions.cs +++ b/QSB/Utility/UnetExtensions.cs @@ -1,4 +1,5 @@ using QSB.Player; +using QSB.QuantumUNET; using QSB.TransformSync; using UnityEngine.Networking; From c6c76cb3957eb991fdb24c0986fcb156eeb4e79c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 21:23:01 +0000 Subject: [PATCH 107/207] C L E A N --- QSB/Animation/AnimControllerPatch.cs | 36 +- QSB/Animation/AnimFloatParam.cs | 22 +- QSB/Animation/AnimationType.cs | 20 +- QSB/Animation/AnimatorMirror.cs | 160 ++++---- QSB/Animation/CrouchSync.cs | 1 - QSB/Animation/Events/ChangeAnimTypeEvent.cs | 34 +- QSB/Animation/Events/CrouchEvent.cs | 42 +- QSB/Animation/Events/PlayerSuitEvent.cs | 96 ++--- QSB/Animation/Events/QSBAnimationMessage.cs | 56 +-- .../Events/QSBAnimationParametersMessage.cs | 44 +-- .../Events/QSBAnimationTriggerMessage.cs | 30 +- QSB/Animation/PlayerHeadRotationSync.cs | 34 +- QSB/ConversationSync/ConversationManager.cs | 262 ++++++------ QSB/ConversationSync/ConversationPatches.cs | 192 ++++----- QSB/ConversationSync/ConversationType.cs | 14 +- .../Events/ConversationEvent.cs | 76 ++-- .../Events/ConversationMessage.cs | 40 +- .../Events/ConversationStartEndEvent.cs | 104 ++--- .../Events/ConversationStartEndMessage.cs | 40 +- QSB/DeathSync/DeathPatches.cs | 44 +-- QSB/DeathSync/Events/PlayerDeathEvent.cs | 38 +- QSB/DeathSync/Necronomicon.cs | 190 ++++----- QSB/DeathSync/PreventShipDestruction.cs | 60 +-- QSB/DeathSync/RespawnOnDeath.cs | 258 ++++++------ QSB/ElevatorSync/ElevatorManager.cs | 50 +-- QSB/ElevatorSync/ElevatorPatches.cs | 28 +- QSB/ElevatorSync/Events/ElevatorEvent.cs | 34 +- QSB/ElevatorSync/QSBElevator.cs | 88 ++--- QSB/EventsCore/EventNames.cs | 72 ++-- QSB/EventsCore/EventType.cs | 52 +-- QSB/EventsCore/IQSBEvent.cs | 10 +- QSB/EventsCore/QSBEvent.cs | 1 - QSB/EventsCore/QSBEventManager.cs | 84 ++-- QSB/GeyserSync/Events/GeyserEvent.cs | 48 +-- QSB/GeyserSync/GeyserManager.cs | 66 ++-- QSB/GeyserSync/QSBGeyser.cs | 1 - QSB/Instruments/InstrumentsManager.cs | 206 +++++----- QSB/Instruments/QSBCamera/CameraController.cs | 136 +++---- QSB/Instruments/QSBCamera/CameraManager.cs | 192 ++++----- QSB/Instruments/QSBCamera/CameraMode.cs | 10 +- QSB/MessagesCore/EnumMessage.cs | 28 +- QSB/MessagesCore/FloatMessage.cs | 28 +- QSB/MessagesCore/PlayerMessage.cs | 30 +- QSB/MessagesCore/ToggleMessage.cs | 28 +- QSB/OrbSync/Events/OrbUserEvent.cs | 2 - QSB/OrbSync/OrbManager.cs | 1 - QSB/OrbSync/QSBOrbSlot.cs | 56 +-- QSB/Patches/QSBPatch.cs | 10 +- QSB/Patches/QSBPatchTypes.cs | 12 +- QSB/Player/Events/PlayerJoinEvent.cs | 52 +-- QSB/Player/Events/PlayerJoinMessage.cs | 28 +- QSB/Player/Events/PlayerLeaveEvent.cs | 40 +- QSB/Player/Events/PlayerLeaveMessage.cs | 28 +- QSB/Player/Events/PlayerReadyEvent.cs | 72 ++-- QSB/Player/Events/PlayerSectorEvent.cs | 86 ++-- QSB/Player/Events/PlayerStateMessage.cs | 52 +-- QSB/Player/Events/PlayerStatesRequestEvent.cs | 42 +- .../Events/ServerSendPlayerStatesEvent.cs | 56 +-- QSB/Player/PlayerHUDMarker.cs | 108 ++--- QSB/Player/PlayerInfo.cs | 130 +++--- QSB/Player/PlayerSyncObject.cs | 1 - QSB/Player/QSBPlayerManager.cs | 1 - QSB/Player/State.cs | 24 +- QSB/QSBNetworkManager.cs | 2 +- QSB/QuantumUNET/QSBCRCMessage.cs | 6 +- QSB/QuantumUNET/QSBCRCMessageEntry.cs | 7 +- QSB/QuantumUNET/QSBChannelBuffer.cs | 2 - QSB/QuantumUNET/QSBChannelPacket.cs | 3 - QSB/QuantumUNET/QSBClientAuthorityMessage.cs | 6 +- QSB/QuantumUNET/QSBClientScene.cs | 3 - QSB/QuantumUNET/QSBLocalClient.cs | 6 +- QSB/QuantumUNET/QSBNetBuffer.cs | 3 - QSB/QuantumUNET/QSBNetworkBehaviour.cs | 19 +- QSB/QuantumUNET/QSBNetworkCRC.cs | 2 - QSB/QuantumUNET/QSBNetworkClient.cs | 2 - QSB/QuantumUNET/QSBNetworkConnection.cs | 4 +- QSB/QuantumUNET/QSBNetworkIdentity.cs | 7 +- QSB/QuantumUNET/QSBNetworkManagerHUD.cs | 5 +- QSB/QuantumUNET/QSBNetworkManagerUNET.cs | 2 - QSB/QuantumUNET/QSBNetworkMessage.cs | 3 - QSB/QuantumUNET/QSBNetworkMessageDelegate.cs | 7 +- QSB/QuantumUNET/QSBNetworkMessageHandlers.cs | 5 +- QSB/QuantumUNET/QSBNetworkMigrationManager.cs | 5 +- QSB/QuantumUNET/QSBNetworkScene.cs | 3 - QSB/QuantumUNET/QSBNetworkServer.cs | 2 - QSB/QuantumUNET/QSBNetworkServerSimple.cs | 2 - QSB/QuantumUNET/QSBObjectDestroyMessage.cs | 6 +- .../QSBObjectSpawnFinishedMessage.cs | 6 +- QSB/QuantumUNET/QSBObjectSpawnMessage.cs | 6 +- QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs | 6 +- QSB/QuantumUNET/QSBOwnerMessage.cs | 6 +- QSB/QuantumUNET/QSBRemovePlayerMessage.cs | 6 +- .../QSBULocalConnectionToClient.cs | 6 +- QSB/QuantumUNET/QSBUtility.cs | 2 - QSB/SectorSync/QSBSector.cs | 26 +- QSB/SectorSync/QSBSectorManager.cs | 78 ++-- QSB/SectorSync/SectorSync.cs | 76 ++-- QSB/TimeSync/Events/ServerTimeEvent.cs | 34 +- QSB/TimeSync/Events/ServerTimeMessage.cs | 34 +- QSB/TimeSync/PreserveTimeScale.cs | 1 - QSB/TimeSync/TimeSyncType.cs | 12 +- QSB/TimeSync/WakeUpPatches.cs | 32 +- QSB/TimeSync/WakeUpSync.cs | 1 - QSB/Tools/Events/PlayerFlashlightEvent.cs | 62 +-- QSB/Tools/Events/PlayerProbeEvent.cs | 62 +-- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 62 +-- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 62 +-- QSB/Tools/Events/PlayerTranslatorEvent.cs | 62 +-- QSB/Tools/PlayerToolsManager.cs | 374 +++++++++--------- QSB/Tools/ProbePatches.cs | 42 +- QSB/Tools/QSBFlashlight.cs | 142 +++---- QSB/Tools/QSBProbe.cs | 46 +-- QSB/Tools/QSBTool.cs | 102 ++--- QSB/Tools/ToolType.cs | 12 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 1 - QSB/Utility/DebugActions.cs | 72 ++-- QSB/Utility/DebugLog.cs | 80 ++-- QSB/Utility/FlagsHelper.cs | 44 +-- QSB/Utility/GOExtensions.cs | 48 +-- QSB/Utility/ListExtensions.cs | 28 +- QSB/Utility/QuaternionHelper.cs | 56 +-- QSB/Utility/UnetExtensions.cs | 1 - .../Events/BoolWorldObjectMessage.cs | 28 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 28 +- QSB/WorldSync/WorldObject.cs | 8 +- 125 files changed, 2824 insertions(+), 2928 deletions(-) diff --git a/QSB/Animation/AnimControllerPatch.cs b/QSB/Animation/AnimControllerPatch.cs index 725702ae1..00f411ff3 100644 --- a/QSB/Animation/AnimControllerPatch.cs +++ b/QSB/Animation/AnimControllerPatch.cs @@ -3,24 +3,24 @@ namespace QSB.Animation { - public static class AnimControllerPatch - { - public static RuntimeAnimatorController SuitedAnimController { get; private set; } + public static class AnimControllerPatch + { + public static RuntimeAnimatorController SuitedAnimController { get; private set; } - public static void Init() - { - QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); - QSB.Helper.Events.Event += OnEvent; - } + public static void Init() + { + QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); + QSB.Helper.Events.Event += OnEvent; + } - private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is PlayerAnimController playerAnimController && - ev == OWML.Common.Events.BeforeStart && - SuitedAnimController == null) - { - SuitedAnimController = playerAnimController.GetValue("_baseAnimController"); - } - } - } + private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is PlayerAnimController playerAnimController && + ev == OWML.Common.Events.BeforeStart && + SuitedAnimController == null) + { + SuitedAnimController = playerAnimController.GetValue("_baseAnimController"); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimFloatParam.cs b/QSB/Animation/AnimFloatParam.cs index 8b4f2e78a..be3a71a04 100644 --- a/QSB/Animation/AnimFloatParam.cs +++ b/QSB/Animation/AnimFloatParam.cs @@ -2,17 +2,17 @@ namespace QSB.Animation { - public class AnimFloatParam - { - public float Current { get; private set; } - public float Target { get; set; } + public class AnimFloatParam + { + public float Current { get; private set; } + public float Target { get; set; } - private float _velocity; + private float _velocity; - public float Smooth(float smoothTime) - { - Current = Mathf.SmoothDamp(Current, Target, ref _velocity, smoothTime); - return Current; - } - } + public float Smooth(float smoothTime) + { + Current = Mathf.SmoothDamp(Current, Target, ref _velocity, smoothTime); + return Current; + } + } } \ No newline at end of file diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs index 6b6e44ba9..977bcda4f 100644 --- a/QSB/Animation/AnimationType.cs +++ b/QSB/Animation/AnimationType.cs @@ -1,13 +1,13 @@ namespace QSB.Animation { - public enum AnimationType - { - Chert, - Esker, - Feldspar, - Gabbro, - PlayerSuited, - PlayerUnsuited, - Riebeck - } + public enum AnimationType + { + Chert, + Esker, + Feldspar, + Gabbro, + PlayerSuited, + PlayerUnsuited, + Riebeck + } } \ No newline at end of file diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 3fb87fd0d..d57ac95ac 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -7,92 +7,92 @@ namespace QSB.Animation { - public class AnimatorMirror : MonoBehaviour - { - private const float SmoothTime = 0.05f; + public class AnimatorMirror : MonoBehaviour + { + private const float SmoothTime = 0.05f; - private Animator _from; - private Animator _to; + private Animator _from; + private Animator _to; - private readonly Dictionary _floatParams = new Dictionary(); + private readonly Dictionary _floatParams = new Dictionary(); - public void Init(Animator from, Animator to) - { - _from = from; - _to = to; - if (_from.runtimeAnimatorController == null) - { - DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); - _from.runtimeAnimatorController = _to.runtimeAnimatorController; - } - else if (_to.runtimeAnimatorController == null) - { - DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); - _to.runtimeAnimatorController = _from.runtimeAnimatorController; - } - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } - } + public void Init(Animator from, Animator to) + { + _from = from; + _to = to; + if (_from.runtimeAnimatorController == null) + { + DebugLog.DebugWrite($"Warning - \"From\" ({from.name}) controller is null.", MessageType.Warning); + _from.runtimeAnimatorController = _to.runtimeAnimatorController; + } + else if (_to.runtimeAnimatorController == null) + { + DebugLog.DebugWrite($"Warning - \"To\" ({to.name}) controller is null.", MessageType.Warning); + _to.runtimeAnimatorController = _from.runtimeAnimatorController; + } + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } - private PlayerInfo GetPlayer() - { - return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; - } + private PlayerInfo GetPlayer() + { + return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; + } - private void Update() - { - if (_to == null || _from == null) - { - return; - } - if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) - { - _to.runtimeAnimatorController = _from.runtimeAnimatorController; - } - SyncParams(); - SmoothFloats(); - } + private void Update() + { + if (_to == null || _from == null) + { + return; + } + if (_to.runtimeAnimatorController != _from.runtimeAnimatorController) + { + _to.runtimeAnimatorController = _from.runtimeAnimatorController; + } + SyncParams(); + SmoothFloats(); + } - private void SyncParams() - { - foreach (var fromParam in _from.parameters) - { - switch (fromParam.type) - { - case AnimatorControllerParameterType.Float: - if (!_floatParams.ContainsKey(fromParam.name)) - { - DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); - RebuildFloatParams(); - break; - } - _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); - break; - case AnimatorControllerParameterType.Bool: - _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); - break; - } - } - } + private void SyncParams() + { + foreach (var fromParam in _from.parameters) + { + switch (fromParam.type) + { + case AnimatorControllerParameterType.Float: + if (!_floatParams.ContainsKey(fromParam.name)) + { + DebugLog.ToConsole($"Warning - Tried to sync anim float that doesn't exist in dict : {fromParam.name}", MessageType.Warning); + RebuildFloatParams(); + break; + } + _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); + break; + case AnimatorControllerParameterType.Bool: + _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); + break; + } + } + } - private void SmoothFloats() - { - foreach (var floatParam in _floatParams) - { - var current = floatParam.Value.Smooth(SmoothTime); - _to.SetFloat(floatParam.Key, current); - } - } + private void SmoothFloats() + { + foreach (var floatParam in _floatParams) + { + var current = floatParam.Value.Smooth(SmoothTime); + _to.SetFloat(floatParam.Key, current); + } + } - public void RebuildFloatParams() - { - _floatParams.Clear(); - foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) - { - _floatParams.Add(param.name, new AnimFloatParam()); - } - } - } + public void RebuildFloatParams() + { + _floatParams.Clear(); + foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) + { + _floatParams.Add(param.name, new AnimFloatParam()); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index df5231e1b..50caa747e 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -1,7 +1,6 @@ using QSB.QuantumUNET; using System; using UnityEngine; -using UnityEngine.Networking; namespace QSB.Animation { diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 415c90fc9..76d96e680 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -5,26 +5,26 @@ namespace QSB.Animation.Events { - public class ChangeAnimTypeEvent : QSBEvent> - { - public override EventType Type => EventType.PlayInstrument; + public class ChangeAnimTypeEvent : QSBEvent> + { + public override EventType Type => EventType.PlayInstrument; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); - private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); + private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); - private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage - { - AboutId = player, - Value = type - }; + private EnumMessage CreateMessage(uint player, AnimationType type) => new EnumMessage + { + AboutId = player, + Value = type + }; - public override void OnReceiveRemote(EnumMessage message) - { - QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); - QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); - } - } + public override void OnReceiveRemote(EnumMessage message) + { + QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); + QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index 1a4191f6f..a38232cd2 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -4,30 +4,30 @@ namespace QSB.Animation.Events { - public class CrouchEvent : QSBEvent - { - public override EventType Type => EventType.AnimTrigger; + public class CrouchEvent : QSBEvent + { + public override EventType Type => EventType.AnimTrigger; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); - private void Handler(float value) => SendEvent(CreateMessage(value)); + private void Handler(float value) => SendEvent(CreateMessage(value)); - private FloatMessage CreateMessage(float value) => new FloatMessage - { - AboutId = LocalPlayerId, - Value = value - }; + private FloatMessage CreateMessage(float value) => new FloatMessage + { + AboutId = LocalPlayerId, + Value = value + }; - public override void OnReceiveRemote(FloatMessage message) - { - var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); - if (animationSync == null) - { - return; - } - animationSync.HandleCrouch(message.Value); - } - } + public override void OnReceiveRemote(FloatMessage message) + { + var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); + if (animationSync == null) + { + return; + } + animationSync.HandleCrouch(message.Value); + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index b2924ab4e..57e5de49f 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -4,52 +4,52 @@ namespace QSB.Animation { - public class PlayerSuitEvent : QSBEvent - { - public override EventType Type => EventType.SuitActiveChange; - - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.SuitUp, HandleSuitUp); - GlobalMessenger.AddListener(EventNames.RemoveSuit, HandleSuitDown); - } - - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.SuitUp, HandleSuitUp); - GlobalMessenger.RemoveListener(EventNames.RemoveSuit, HandleSuitDown); - } - - private void HandleSuitUp() => SendEvent(CreateMessage(true)); - private void HandleSuitDown() => SendEvent(CreateMessage(false)); - - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; - - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player?.UpdateState(State.Suit, message.ToggleValue); - - if (!player.IsReady) - { - return; - } - - var animator = player.AnimationSync; - var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; - animator.SetAnimationType(type); - } - - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); - var animator = QSBPlayerManager.LocalPlayer.AnimationSync; - var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; - animator.CurrentType = type; - } - } + public class PlayerSuitEvent : QSBEvent + { + public override EventType Type => EventType.SuitActiveChange; + + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.SuitUp, HandleSuitUp); + GlobalMessenger.AddListener(EventNames.RemoveSuit, HandleSuitDown); + } + + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.SuitUp, HandleSuitUp); + GlobalMessenger.RemoveListener(EventNames.RemoveSuit, HandleSuitDown); + } + + private void HandleSuitUp() => SendEvent(CreateMessage(true)); + private void HandleSuitDown() => SendEvent(CreateMessage(false)); + + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; + + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player?.UpdateState(State.Suit, message.ToggleValue); + + if (!player.IsReady) + { + return; + } + + var animator = player.AnimationSync; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.SetAnimationType(type); + } + + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); + var animator = QSBPlayerManager.LocalPlayer.AnimationSync; + var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited; + animator.CurrentType = type; + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs index ab6523b5c..85557fd9b 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -2,34 +2,34 @@ namespace QSB.Animation.Events { - class QSBAnimationMessage : MessageBase - { - public NetworkInstanceId netId; - public int stateHash; - public float normalizedTime; - public byte[] parameters; + class QSBAnimationMessage : MessageBase + { + public NetworkInstanceId netId; + public int stateHash; + public float normalizedTime; + public byte[] parameters; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - stateHash = (int)reader.ReadPackedUInt32(); - normalizedTime = reader.ReadSingle(); - parameters = reader.ReadBytesAndSize(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - writer.WritePackedUInt32((uint)stateHash); - writer.Write(normalizedTime); - if (parameters == null) - { - writer.WriteBytesAndSize(parameters, 0); - } - else - { - writer.WriteBytesAndSize(parameters, parameters.Length); - } - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)stateHash); + writer.Write(normalizedTime); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs index 4d34b97f6..a01082883 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -2,28 +2,28 @@ namespace QSB.Animation.Events { - class QSBAnimationParametersMessage : MessageBase - { - public NetworkInstanceId netId; - public byte[] parameters; + class QSBAnimationParametersMessage : MessageBase + { + public NetworkInstanceId netId; + public byte[] parameters; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - parameters = reader.ReadBytesAndSize(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + parameters = reader.ReadBytesAndSize(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - if (parameters == null) - { - writer.WriteBytesAndSize(parameters, 0); - } - else - { - writer.WriteBytesAndSize(parameters, parameters.Length); - } - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + if (parameters == null) + { + writer.WriteBytesAndSize(parameters, 0); + } + else + { + writer.WriteBytesAndSize(parameters, parameters.Length); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs index 1be48b7d9..414e2f029 100644 --- a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs +++ b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs @@ -2,21 +2,21 @@ namespace QSB.Animation.Events { - class QSBAnimationTriggerMessage : MessageBase - { - public NetworkInstanceId netId; - public int hash; + class QSBAnimationTriggerMessage : MessageBase + { + public NetworkInstanceId netId; + public int hash; - public override void Deserialize(NetworkReader reader) - { - netId = reader.ReadNetworkId(); - hash = (int)reader.ReadPackedUInt32(); - } + public override void Deserialize(NetworkReader reader) + { + netId = reader.ReadNetworkId(); + hash = (int)reader.ReadPackedUInt32(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(netId); - writer.WritePackedUInt32((uint)hash); - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(netId); + writer.WritePackedUInt32((uint)hash); + } + } } \ No newline at end of file diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index 4905a7cf8..9d29335e8 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -2,23 +2,23 @@ namespace QSB.Animation { - public class PlayerHeadRotationSync : MonoBehaviour - { - private Animator _attachedAnimator; - private Transform _lookBase; + public class PlayerHeadRotationSync : MonoBehaviour + { + private Animator _attachedAnimator; + private Transform _lookBase; - public void Init(Transform lookBase) - { - _attachedAnimator = GetComponent(); - _lookBase = lookBase; - } + public void Init(Transform lookBase) + { + _attachedAnimator = GetComponent(); + _lookBase = lookBase; + } - void LateUpdate() - { - var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); - // Get the camera's local rotation with respect to the player body - var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; - bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); - } - } + void LateUpdate() + { + var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); + // Get the camera's local rotation with respect to the player body + var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; + bone.localRotation = Quaternion.Euler(0f, 0f, lookLocalRotation.eulerAngles.x); + } + } } \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index b2f910276..05e2dafc5 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -11,135 +11,135 @@ namespace QSB.ConversationSync { - public class ConversationManager : MonoBehaviour - { - public static ConversationManager Instance { get; private set; } - public AssetBundle ConversationAssetBundle { get; private set; } - private GameObject BoxPrefab; - public Dictionary BoxMappings = new Dictionary(); - - private void Start() - { - Instance = this; - - ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); - - BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); - // TODO : make dynamic so it can be different sizes! - var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); - if (font == null) - { - DebugLog.ToConsole("Error - Font is null!", MessageType.Error); - } - BoxPrefab.GetComponent().font = font; - BoxPrefab.GetComponent().color = Color.white; - } - - public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) - { - var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); - if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) - { - // No player talking to tree - return uint.MaxValue; - } - // .First() should be fine here as only one player should be talking to a character. - return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; - } - - public void SendPlayerOption(string text) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); - } - - public void SendCharacterDialogue(int id, string text) - { - if (id == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); - } - - public void CloseBoxPlayer() - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); - } - - public void CloseBoxCharacter(int id) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); - } - - public void SendConvState(int charId, bool state) - { - if (charId == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); - } - - public void DisplayPlayerConversationBox(uint playerId, string text) - { - if (playerId == QSBPlayerManager.LocalPlayerId) - { - DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); - return; - } - - var player = QSBPlayerManager.GetPlayer(playerId); - - // Destroy old box if it exists - var playerBox = player.CurrentDialogueBox; - if (playerBox != null) - { - Destroy(playerBox); - } - - QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); - } - - public void DisplayCharacterConversationBox(int index, string text) - { - if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) - { - DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); - return; - } - - // Remove old box if it exists - var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; - if (BoxMappings.ContainsKey(oldDialogueTree)) - { - Destroy(BoxMappings[oldDialogueTree]); - BoxMappings.Remove(oldDialogueTree); - } - - BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); - } - - private GameObject CreateBox(Transform parent, float vertOffset, string text) - { - var newBox = Instantiate(BoxPrefab); - newBox.SetActive(false); - newBox.transform.parent = parent; - newBox.transform.localPosition = new Vector3(0, vertOffset, 0); - newBox.transform.rotation = parent.rotation; - var lookAt = newBox.AddComponent(); - lookAt.SetValue("_useLookAt", false); - lookAt.SetValue("_localFacingVector", Vector3.back); - lookAt.SetValue("_localRotationAxis", Vector3.up); - newBox.GetComponent().text = text; - newBox.SetActive(true); - return newBox; - } - } + public class ConversationManager : MonoBehaviour + { + public static ConversationManager Instance { get; private set; } + public AssetBundle ConversationAssetBundle { get; private set; } + private GameObject BoxPrefab; + public Dictionary BoxMappings = new Dictionary(); + + private void Start() + { + Instance = this; + + ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); + + BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + // TODO : make dynamic so it can be different sizes! + var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); + if (font == null) + { + DebugLog.ToConsole("Error - Font is null!", MessageType.Error); + } + BoxPrefab.GetComponent().font = font; + BoxPrefab.GetComponent().color = Color.white; + } + + public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) + { + var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); + if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) + { + // No player talking to tree + return uint.MaxValue; + } + // .First() should be fine here as only one player should be talking to a character. + return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + } + + public void SendPlayerOption(string text) + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); + } + + public void SendCharacterDialogue(int id, string text) + { + if (id == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + } + + public void CloseBoxPlayer() + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); + } + + public void CloseBoxCharacter(int id) + { + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + } + + public void SendConvState(int charId, bool state) + { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); + } + + public void DisplayPlayerConversationBox(uint playerId, string text) + { + if (playerId == QSBPlayerManager.LocalPlayerId) + { + DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); + return; + } + + var player = QSBPlayerManager.GetPlayer(playerId); + + // Destroy old box if it exists + var playerBox = player.CurrentDialogueBox; + if (playerBox != null) + { + Destroy(playerBox); + } + + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); + } + + public void DisplayCharacterConversationBox(int index, string text) + { + if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) + { + DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); + return; + } + + // Remove old box if it exists + var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; + if (BoxMappings.ContainsKey(oldDialogueTree)) + { + Destroy(BoxMappings[oldDialogueTree]); + BoxMappings.Remove(oldDialogueTree); + } + + BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); + } + + private GameObject CreateBox(Transform parent, float vertOffset, string text) + { + var newBox = Instantiate(BoxPrefab); + newBox.SetActive(false); + newBox.transform.parent = parent; + newBox.transform.localPosition = new Vector3(0, vertOffset, 0); + newBox.transform.rotation = parent.rotation; + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); + newBox.GetComponent().text = text; + newBox.SetActive(true); + return newBox; + } + } } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 8b77d4441..a22917f14 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -7,108 +7,108 @@ namespace QSB.ConversationSync { - public class ConversationPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public class ConversationPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static void StartConversation(CharacterDialogueTree __instance) - { - var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); - if (index == -1) - { - DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); - } - QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; - ConversationManager.Instance.SendConvState(index, true); - } + public static void StartConversation(CharacterDialogueTree __instance) + { + var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); + if (index == -1) + { + DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); + } + QSBPlayerManager.LocalPlayer.CurrentDialogueID = index; + ConversationManager.Instance.SendConvState(index, true); + } - public static bool EndConversation(CharacterDialogueTree __instance) - { - if (!__instance.enabled) - { - return false; - } - if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) - { - DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); - return false; - } - ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); - ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); - QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; - ConversationManager.Instance.CloseBoxPlayer(); - return true; - } + public static bool EndConversation(CharacterDialogueTree __instance) + { + if (!__instance.enabled) + { + return false; + } + if (QSBPlayerManager.LocalPlayer.CurrentDialogueID == -1) + { + DebugLog.ToConsole($"Warning - Ending conversation with CurrentDialogueId of -1! Called from {__instance.name}", MessageType.Warning); + return false; + } + ConversationManager.Instance.SendConvState(QSBPlayerManager.LocalPlayer.CurrentDialogueID, false); + ConversationManager.Instance.CloseBoxCharacter(QSBPlayerManager.LocalPlayer.CurrentDialogueID); + QSBPlayerManager.LocalPlayer.CurrentDialogueID = -1; + ConversationManager.Instance.CloseBoxPlayer(); + return true; + } - public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) - { - if (optionIndex < 0) - { - // in a page where there is no selectable options - ConversationManager.Instance.CloseBoxPlayer(); - return true; - } + public static bool InputDialogueOption(int optionIndex, DialogueBoxVer2 ____currentDialogueBox) + { + if (optionIndex < 0) + { + // in a page where there is no selectable options + ConversationManager.Instance.CloseBoxPlayer(); + return true; + } - var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); - ConversationManager.Instance.SendPlayerOption(selectedOption.Text); - return true; - } + var selectedOption = ____currentDialogueBox.OptionFromUIIndex(optionIndex); + ConversationManager.Instance.SendPlayerOption(selectedOption.Text); + return true; + } - public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) - { - var key = ____name + ____listPagesToDisplay[____currentPage]; - // Sending key so translation can be done on client side - should make different language-d clients compatible - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, - () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); - } + public static void GetNextPage(string ____name, List ____listPagesToDisplay, int ____currentPage) + { + var key = ____name + ____listPagesToDisplay[____currentPage]; + // Sending key so translation can be done on client side - should make different language-d clients compatible + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, + () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); + } - public static bool OnAnimatorIK(float ___headTrackingWeight, - bool ___lookOnlyWhenTalking, - bool ____playerInHeadZone, - bool ____inConversation, - ref float ____currentLookWeight, - ref Vector3 ____currentLookTarget, - DampedSpring3D ___lookSpring, - Animator ____animator, - CharacterDialogueTree ____dialogueTree) - { - var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - Vector3 position; - if (playerId == uint.MaxValue) - { - // TODO : Find closest player and track to that camera. - position = Locator.GetActiveCamera().transform.position; - } - else - { - position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; - } - float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); - ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); - ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); - ____animator.SetLookAtPosition(____currentLookTarget); - ____animator.SetLookAtWeight(____currentLookWeight); - return false; - } + public static bool OnAnimatorIK(float ___headTrackingWeight, + bool ___lookOnlyWhenTalking, + bool ____playerInHeadZone, + bool ____inConversation, + ref float ____currentLookWeight, + ref Vector3 ____currentLookTarget, + DampedSpring3D ___lookSpring, + Animator ____animator, + CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + Vector3 position; + if (playerId == uint.MaxValue) + { + // TODO : Find closest player and track to that camera. + position = Locator.GetActiveCamera().transform.position; + } + else + { + position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; + } + float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); + ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); + ____animator.SetLookAtPosition(____currentLookTarget); + ____animator.SetLookAtWeight(____currentLookWeight); + return false; + } - public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) - { - var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - if (playerId == uint.MaxValue) - { - return true; - } - return false; - } + public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) + { + var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); + if (playerId == uint.MaxValue) + { + return true; + } + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); - QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); - QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); - QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); + QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); + QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); + QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); + QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); + } + } } diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 5384727e1..660c77e59 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -1,10 +1,10 @@ namespace QSB.ConversationSync { - public enum ConversationType - { - Character, - Player, - CloseCharacter, - ClosePlayer - } + public enum ConversationType + { + Character, + Player, + CloseCharacter, + ClosePlayer + } } diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 119f0f2cd..502945556 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -4,47 +4,47 @@ namespace QSB.ConversationSync.Events { - public class ConversationEvent : QSBEvent - { - public override EventType Type => EventType.Conversation; + public class ConversationEvent : QSBEvent + { + public override EventType Type => EventType.Conversation; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); - private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); + private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); - private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage - { - AboutId = LocalPlayerId, - ObjectId = (int)id, - Type = type, - Message = message - }; + private ConversationMessage CreateMessage(uint id, string message, ConversationType type) => new ConversationMessage + { + AboutId = LocalPlayerId, + ObjectId = (int)id, + Type = type, + Message = message + }; - public override void OnReceiveRemote(ConversationMessage message) - { - switch (message.Type) - { - case ConversationType.Character: - var translated = TextTranslation.Translate(message.Message).Trim(); - ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); - break; - case ConversationType.Player: - ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); - break; - case ConversationType.CloseCharacter: - if (message.ObjectId == -1) - { - break; - } - var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; - UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); - break; - case ConversationType.ClosePlayer: - UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); - break; - } - } - } + public override void OnReceiveRemote(ConversationMessage message) + { + switch (message.Type) + { + case ConversationType.Character: + var translated = TextTranslation.Translate(message.Message).Trim(); + ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); + break; + case ConversationType.Player: + ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); + break; + case ConversationType.CloseCharacter: + if (message.ObjectId == -1) + { + break; + } + var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; + UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); + break; + case ConversationType.ClosePlayer: + UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); + break; + } + } + } } diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 5bf1ea0c7..3064358f5 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -3,26 +3,26 @@ namespace QSB.ConversationSync.Events { - public class ConversationMessage : PlayerMessage - { - public ConversationType Type { get; set; } - public int ObjectId { get; set; } - public string Message { get; set; } + public class ConversationMessage : PlayerMessage + { + public ConversationType Type { get; set; } + public int ObjectId { get; set; } + public string Message { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ObjectId = reader.ReadInt32(); - Type = (ConversationType)reader.ReadInt32(); - Message = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + Type = (ConversationType)reader.ReadInt32(); + Message = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ObjectId); - writer.Write((int)Type); - writer.Write(Message); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + writer.Write((int)Type); + writer.Write(Message); + } + } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 5313451f1..0c98039c4 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -9,62 +9,62 @@ namespace QSB.ConversationSync.Events { - public class ConversationStartEndEvent : QSBEvent - { - public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; + public class ConversationStartEndEvent : QSBEvent + { + public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); - private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); + private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); - private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage - { - AboutId = LocalPlayerId, - CharacterId = charId, - PlayerId = playerId, - State = state - }; + private ConversationStartEndMessage CreateMessage(int charId, uint playerId, bool state) => new ConversationStartEndMessage + { + AboutId = LocalPlayerId, + CharacterId = charId, + PlayerId = playerId, + State = state + }; - public override void OnReceiveRemote(ConversationStartEndMessage message) - { - if (message.CharacterId == -1) - { - DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); - return; - } - var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; - var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); + public override void OnReceiveRemote(ConversationStartEndMessage message) + { + if (message.CharacterId == -1) + { + DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); + return; + } + var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; + var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); - // Make character face player and talk - if (animController != default(CharacterAnimController)) - { - if (message.State) - { - // Start talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; - animController.SetValue("_inConversation", true); - animController.SetValue("_playerInHeadZone", true); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Talking"); - } - dialogueTree.GetComponent().DisableInteraction(); - } - else - { - // Stop talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; - animController.SetValue("_inConversation", false); - animController.SetValue("_playerInHeadZone", false); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Idle"); - } - dialogueTree.GetComponent().EnableInteraction(); - } - } - } - } + // Make character face player and talk + if (animController != default(CharacterAnimController)) + { + if (message.State) + { + // Start talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + animController.SetValue("_inConversation", true); + animController.SetValue("_playerInHeadZone", true); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Talking"); + } + dialogueTree.GetComponent().DisableInteraction(); + } + else + { + // Stop talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + animController.SetValue("_inConversation", false); + animController.SetValue("_playerInHeadZone", false); + if (animController.GetValue("_hasTalkAnimation")) + { + animController.GetValue("_animator").SetTrigger("Idle"); + } + dialogueTree.GetComponent().EnableInteraction(); + } + } + } + } } diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index f53657c10..2054ca48e 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -3,26 +3,26 @@ namespace QSB.ConversationSync.Events { - public class ConversationStartEndMessage : PlayerMessage - { - public int CharacterId { get; set; } - public uint PlayerId { get; set; } - public bool State { get; set; } + public class ConversationStartEndMessage : PlayerMessage + { + public int CharacterId { get; set; } + public uint PlayerId { get; set; } + public bool State { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - CharacterId = reader.ReadInt32(); - PlayerId = reader.ReadUInt32(); - State = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + CharacterId = reader.ReadInt32(); + PlayerId = reader.ReadUInt32(); + State = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(CharacterId); - writer.Write(PlayerId); - writer.Write(State); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(CharacterId); + writer.Write(PlayerId); + writer.Write(State); + } + } } diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index fd3d70ae9..41e0e0f2f 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -3,31 +3,31 @@ namespace QSB.DeathSync { - public class DeathPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class DeathPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - public static bool PreFinishDeathSequence(DeathType deathType) - { - if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) - { - // Allow real death - return true; - } + public static bool PreFinishDeathSequence(DeathType deathType) + { + if (RespawnOnDeath.Instance.AllowedDeathTypes.Contains(deathType)) + { + // Allow real death + return true; + } - RespawnOnDeath.Instance.ResetShip(); - RespawnOnDeath.Instance.ResetPlayer(); + RespawnOnDeath.Instance.ResetShip(); + RespawnOnDeath.Instance.ResetPlayer(); - // Prevent original death method from running. - return false; - } + // Prevent original death method from running. + return false; + } - public static void BroadcastDeath(DeathType deathType) => GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); + public static void BroadcastDeath(DeathType deathType) => GlobalMessenger.FireEvent(EventNames.QSBPlayerDeath, deathType); - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); - QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); + QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); + } + } } \ No newline at end of file diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 57cd35c1f..6aea56ba1 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -5,29 +5,29 @@ namespace QSB.DeathSync.Events { - public class PlayerDeathEvent : QSBEvent> - { - public override EventType Type => EventType.PlayerDeath; + public class PlayerDeathEvent : QSBEvent> + { + public override EventType Type => EventType.PlayerDeath; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); - private void Handler(DeathType type) => SendEvent(CreateMessage(type)); + private void Handler(DeathType type) => SendEvent(CreateMessage(type)); - private EnumMessage CreateMessage(DeathType type) => new EnumMessage - { - AboutId = LocalPlayerId, - Value = type - }; + private EnumMessage CreateMessage(DeathType type) => new EnumMessage + { + AboutId = LocalPlayerId, + Value = type + }; - public override void OnReceiveRemote(EnumMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - var deathMessage = Necronomicon.GetPhrase(message.Value); - DebugLog.ToAll(string.Format(deathMessage, playerName)); - } + public override void OnReceiveRemote(EnumMessage message) + { + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; + var deathMessage = Necronomicon.GetPhrase(message.Value); + DebugLog.ToAll(string.Format(deathMessage, playerName)); + } - public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); - } + public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); + } } diff --git a/QSB/DeathSync/Necronomicon.cs b/QSB/DeathSync/Necronomicon.cs index e9dfda79a..5aa9407e2 100644 --- a/QSB/DeathSync/Necronomicon.cs +++ b/QSB/DeathSync/Necronomicon.cs @@ -4,102 +4,102 @@ namespace QSB.DeathSync { - public static class Necronomicon - { + public static class Necronomicon + { - private static readonly Dictionary DeathDictionary = new Dictionary - { - { DeathType.Default, new[] - { - "{0} died" - } }, - { DeathType.Impact, new[] - { - "{0} forgot to use retro-rockets", - "{0} bonked into the ground too hard", - "{0} went splat" - } }, - { DeathType.Asphyxiation, new[] - { - "{0} forgot to breathe", - "{0} forgot how to breathe", - "{0} forgot to check their oxygen meter", - "{0} lacked oxygen", - "{0} didn't need air anyway" - } }, - { DeathType.Energy, new[] - { - "{0} was cooked", - "{0} failed the Hotshot achievement", - "{0} forgot to install an AC unit", - "{0} got too hot" - } }, - { DeathType.Supernova, new[] - { - "{0} ran out of time", - "{0} got vaporized", - "{0} lost track of time", - "{0} got front row seats to the supernova", - "{0} heard the End of Times music", - "{0} watched the sun go kaboom", - "{0} became cosmic marshmallow", - "{0} photosynthesized too much" - } }, - { DeathType.Digestion, new[] - { - "{0} was eaten", - "{0} found a fish", - "{0} encountered an evil creature", - "{0} followed the light, then was followed by it", - "{0} messed with the wrong species of fish" - } }, - { DeathType.BigBang, new[] - { - "{0} sacrificed themself for the universe", - "{0} knows the true meaning of sacrifice", - "{0} won at the cost of their life" - } }, - { DeathType.Crushed, new[] - { - "{0} went through the tunnel too slow", - "{0} didn't make it out in time", - "{0} was squished", - "{0} thought the Sunless City was safe", - "{0} was buried" - } }, - { DeathType.Meditation, new[] - { - "{0} took a deep breath and died", - "{0} fell asleep", - "{0} got killed by Gabbro's advice" - } }, - { DeathType.TimeLoop, new[] - { - "{0} ran out of time", - "{0} was caught by a statue", - "{0}'s memories were pilfered", - "{0}'s memories fell into a black hole", - "{0}'s universe was eaten by Grobletombus" - } }, - { DeathType.Lava, new[] - { - "{0} tried to swim in lava", - "{0} didn't know what the glowy orange liquid was", - "{0} slipped in lava", - "{0} became one with the glowing gooey rock" - } }, - { DeathType.BlackHole, new[] - { - "{0} should visit the Ash Twin Project again", - "{0} waited inside the Ash Twin Project", - "{0} chased their memories" - } } - }; + private static readonly Dictionary DeathDictionary = new Dictionary + { + { DeathType.Default, new[] + { + "{0} died" + } }, + { DeathType.Impact, new[] + { + "{0} forgot to use retro-rockets", + "{0} bonked into the ground too hard", + "{0} went splat" + } }, + { DeathType.Asphyxiation, new[] + { + "{0} forgot to breathe", + "{0} forgot how to breathe", + "{0} forgot to check their oxygen meter", + "{0} lacked oxygen", + "{0} didn't need air anyway" + } }, + { DeathType.Energy, new[] + { + "{0} was cooked", + "{0} failed the Hotshot achievement", + "{0} forgot to install an AC unit", + "{0} got too hot" + } }, + { DeathType.Supernova, new[] + { + "{0} ran out of time", + "{0} got vaporized", + "{0} lost track of time", + "{0} got front row seats to the supernova", + "{0} heard the End of Times music", + "{0} watched the sun go kaboom", + "{0} became cosmic marshmallow", + "{0} photosynthesized too much" + } }, + { DeathType.Digestion, new[] + { + "{0} was eaten", + "{0} found a fish", + "{0} encountered an evil creature", + "{0} followed the light, then was followed by it", + "{0} messed with the wrong species of fish" + } }, + { DeathType.BigBang, new[] + { + "{0} sacrificed themself for the universe", + "{0} knows the true meaning of sacrifice", + "{0} won at the cost of their life" + } }, + { DeathType.Crushed, new[] + { + "{0} went through the tunnel too slow", + "{0} didn't make it out in time", + "{0} was squished", + "{0} thought the Sunless City was safe", + "{0} was buried" + } }, + { DeathType.Meditation, new[] + { + "{0} took a deep breath and died", + "{0} fell asleep", + "{0} got killed by Gabbro's advice" + } }, + { DeathType.TimeLoop, new[] + { + "{0} ran out of time", + "{0} was caught by a statue", + "{0}'s memories were pilfered", + "{0}'s memories fell into a black hole", + "{0}'s universe was eaten by Grobletombus" + } }, + { DeathType.Lava, new[] + { + "{0} tried to swim in lava", + "{0} didn't know what the glowy orange liquid was", + "{0} slipped in lava", + "{0} became one with the glowing gooey rock" + } }, + { DeathType.BlackHole, new[] + { + "{0} should visit the Ash Twin Project again", + "{0} waited inside the Ash Twin Project", + "{0} chased their memories" + } } + }; - public static string GetPhrase(DeathType deathType) - { - return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); - } + public static string GetPhrase(DeathType deathType) + { + return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); + } - } + } } diff --git a/QSB/DeathSync/PreventShipDestruction.cs b/QSB/DeathSync/PreventShipDestruction.cs index 4ab33b415..01d190fcf 100644 --- a/QSB/DeathSync/PreventShipDestruction.cs +++ b/QSB/DeathSync/PreventShipDestruction.cs @@ -6,38 +6,38 @@ namespace QSB.DeathSync { - public class PreventShipDestruction : MonoBehaviour - { - private void Awake() - { - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + public class PreventShipDestruction : MonoBehaviour + { + private void Awake() + { + QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); + QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); - QSB.Helper.Events.Event += OnEvent; - } + QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); + QSB.Helper.Events.Event += OnEvent; + } - private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is ShipDamageController shipDamageController && - ev == OWML.Common.Events.AfterAwake) - { - shipDamageController.SetValue("_exploded", true); - } - } + private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is ShipDamageController shipDamageController && + ev == OWML.Common.Events.AfterAwake) + { + shipDamageController.SetValue("_exploded", true); + } + } - private static class Patch - { - public static IEnumerable ReturnNull(IEnumerable instructions) - { - return new List - { - new CodeInstruction(OpCodes.Ldnull), - new CodeInstruction(OpCodes.Ret) - }; - } - } - } + private static class Patch + { + public static IEnumerable ReturnNull(IEnumerable instructions) + { + return new List + { + new CodeInstruction(OpCodes.Ldnull), + new CodeInstruction(OpCodes.Ret) + }; + } + } + } } diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index 30f3de784..a142a7973 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -7,133 +7,133 @@ namespace QSB.DeathSync { - /// - /// Client-only-side component for managing respawning after death. - /// - public class RespawnOnDeath : MonoBehaviour - { - public static RespawnOnDeath Instance; - - public readonly DeathType[] AllowedDeathTypes = { - DeathType.BigBang, - DeathType.Supernova, - DeathType.TimeLoop - }; - - private SpawnPoint _shipSpawnPoint; - private SpawnPoint _playerSpawnPoint; - private OWRigidbody _shipBody; - private PlayerSpawner _playerSpawner; - private FluidDetector _fluidDetector; - private PlayerResources _playerResources; - private ShipComponent[] _shipComponents; - private HatchController _hatchController; - private ShipCockpitController _cockpitController; - private PlayerSpacesuit _spaceSuit; - - private void Awake() - { - Instance = this; - - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); - QSB.Helper.Events.Event += OnEvent; - } - - private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) - { - if (behaviour is PlayerResources && ev == OWML.Common.Events.AfterStart) - { - Init(); - } - } - - public void Init() - { - var playerTransform = Locator.GetPlayerTransform(); - _playerResources = playerTransform.GetComponent(); - _spaceSuit = playerTransform.GetComponentInChildren(true); - _playerSpawner = FindObjectOfType(); - _fluidDetector = Locator.GetPlayerCamera().GetComponentInChildren(); - - var shipTransform = Locator.GetShipTransform(); - if (shipTransform == null) - { - return; - } - _shipComponents = shipTransform.GetComponentsInChildren(); - _hatchController = shipTransform.GetComponentInChildren(); - _cockpitController = shipTransform.GetComponentInChildren(); - _shipBody = Locator.GetShipBody(); - _shipSpawnPoint = GetSpawnPoint(true); - - // Move debug spawn point to initial ship position. - _playerSpawnPoint = GetSpawnPoint(); - _shipSpawnPoint.transform.position = shipTransform.position; - _shipSpawnPoint.transform.rotation = shipTransform.rotation; - } - - public void ResetShip() - { - if (_shipBody == null) - { - return; - } - - // Reset ship position. - if (_shipSpawnPoint == null) - { - DebugLog.ToConsole("_shipSpawnPoint is null!", MessageType.Warning); - return; - } - _shipBody.SetVelocity(_shipSpawnPoint.GetPointVelocity()); - _shipBody.WarpToPositionRotation(_shipSpawnPoint.transform.position, _shipSpawnPoint.transform.rotation); - - // Reset ship damage. - if (Locator.GetShipTransform()) - { - foreach (var shipComponent in _shipComponents) - { - shipComponent.SetDamaged(false); - } - } - - Invoke(nameof(ExitShip), 0.01f); - } - - private void ExitShip() - { - _cockpitController.Invoke("ExitFlightConsole"); - _cockpitController.Invoke("CompleteExitFlightConsole"); - _hatchController.SetValue("_isPlayerInShip", false); - _hatchController.Invoke("OpenHatch"); - GlobalMessenger.FireEvent(EventNames.ExitShip); - } - - public void ResetPlayer() - { - // Reset player position. - var playerBody = Locator.GetPlayerBody(); - playerBody.WarpToPositionRotation(_playerSpawnPoint.transform.position, _playerSpawnPoint.transform.rotation); - playerBody.SetVelocity(_playerSpawnPoint.GetPointVelocity()); - _playerSpawnPoint.AddObjectToTriggerVolumes(Locator.GetPlayerDetector().gameObject); - _playerSpawnPoint.AddObjectToTriggerVolumes(_fluidDetector.gameObject); - _playerSpawnPoint.OnSpawnPlayer(); - - // Stop suffocation sound effect. - _playerResources.SetValue("_isSuffocating", false); - - // Reset player health and resources. - _playerResources.DebugRefillResources(); - - // Remove space suit. - _spaceSuit.RemoveSuit(true); - } - - private SpawnPoint GetSpawnPoint(bool isShip = false) - { - return _playerSpawner - .GetValue("_spawnList") - .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); - } - } + /// + /// Client-only-side component for managing respawning after death. + /// + public class RespawnOnDeath : MonoBehaviour + { + public static RespawnOnDeath Instance; + + public readonly DeathType[] AllowedDeathTypes = { + DeathType.BigBang, + DeathType.Supernova, + DeathType.TimeLoop + }; + + private SpawnPoint _shipSpawnPoint; + private SpawnPoint _playerSpawnPoint; + private OWRigidbody _shipBody; + private PlayerSpawner _playerSpawner; + private FluidDetector _fluidDetector; + private PlayerResources _playerResources; + private ShipComponent[] _shipComponents; + private HatchController _hatchController; + private ShipCockpitController _cockpitController; + private PlayerSpacesuit _spaceSuit; + + private void Awake() + { + Instance = this; + + QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); + QSB.Helper.Events.Event += OnEvent; + } + + private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) + { + if (behaviour is PlayerResources && ev == OWML.Common.Events.AfterStart) + { + Init(); + } + } + + public void Init() + { + var playerTransform = Locator.GetPlayerTransform(); + _playerResources = playerTransform.GetComponent(); + _spaceSuit = playerTransform.GetComponentInChildren(true); + _playerSpawner = FindObjectOfType(); + _fluidDetector = Locator.GetPlayerCamera().GetComponentInChildren(); + + var shipTransform = Locator.GetShipTransform(); + if (shipTransform == null) + { + return; + } + _shipComponents = shipTransform.GetComponentsInChildren(); + _hatchController = shipTransform.GetComponentInChildren(); + _cockpitController = shipTransform.GetComponentInChildren(); + _shipBody = Locator.GetShipBody(); + _shipSpawnPoint = GetSpawnPoint(true); + + // Move debug spawn point to initial ship position. + _playerSpawnPoint = GetSpawnPoint(); + _shipSpawnPoint.transform.position = shipTransform.position; + _shipSpawnPoint.transform.rotation = shipTransform.rotation; + } + + public void ResetShip() + { + if (_shipBody == null) + { + return; + } + + // Reset ship position. + if (_shipSpawnPoint == null) + { + DebugLog.ToConsole("_shipSpawnPoint is null!", MessageType.Warning); + return; + } + _shipBody.SetVelocity(_shipSpawnPoint.GetPointVelocity()); + _shipBody.WarpToPositionRotation(_shipSpawnPoint.transform.position, _shipSpawnPoint.transform.rotation); + + // Reset ship damage. + if (Locator.GetShipTransform()) + { + foreach (var shipComponent in _shipComponents) + { + shipComponent.SetDamaged(false); + } + } + + Invoke(nameof(ExitShip), 0.01f); + } + + private void ExitShip() + { + _cockpitController.Invoke("ExitFlightConsole"); + _cockpitController.Invoke("CompleteExitFlightConsole"); + _hatchController.SetValue("_isPlayerInShip", false); + _hatchController.Invoke("OpenHatch"); + GlobalMessenger.FireEvent(EventNames.ExitShip); + } + + public void ResetPlayer() + { + // Reset player position. + var playerBody = Locator.GetPlayerBody(); + playerBody.WarpToPositionRotation(_playerSpawnPoint.transform.position, _playerSpawnPoint.transform.rotation); + playerBody.SetVelocity(_playerSpawnPoint.GetPointVelocity()); + _playerSpawnPoint.AddObjectToTriggerVolumes(Locator.GetPlayerDetector().gameObject); + _playerSpawnPoint.AddObjectToTriggerVolumes(_fluidDetector.gameObject); + _playerSpawnPoint.OnSpawnPlayer(); + + // Stop suffocation sound effect. + _playerResources.SetValue("_isSuffocating", false); + + // Reset player health and resources. + _playerResources.DebugRefillResources(); + + // Remove space suit. + _spaceSuit.RemoveSuit(true); + } + + private SpawnPoint GetSpawnPoint(bool isShip = false) + { + return _playerSpawner + .GetValue("_spawnList") + .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); + } + } } diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index 377d01cd8..375a33cfe 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -5,34 +5,34 @@ namespace QSB.ElevatorSync { - public class ElevatorManager : MonoBehaviour - { - public static ElevatorManager Instance { get; private set; } + public class ElevatorManager : MonoBehaviour + { + public static ElevatorManager Instance { get; private set; } - private List _elevators; + private List _elevators; - private void Awake() - { - Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - _elevators = Resources.FindObjectsOfTypeAll().ToList(); - for (var id = 0; id < _elevators.Count; id++) - { - var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); - qsbElevator.Init(_elevators[id], id); - WorldRegistry.AddObject(qsbElevator); - } - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + _elevators = Resources.FindObjectsOfTypeAll().ToList(); + for (var id = 0; id < _elevators.Count; id++) + { + var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); + qsbElevator.Init(_elevators[id], id); + WorldRegistry.AddObject(qsbElevator); + } + } - public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); - } + public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); + } } diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 7c8012803..7b1e8c62a 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -3,20 +3,20 @@ namespace QSB.ElevatorSync { - public class ElevatorPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class ElevatorPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - public static void StartLift(Elevator __instance) - { - var isGoingUp = __instance.GetValue("_goingToTheEnd"); - var id = ElevatorManager.Instance.GetId(__instance); - GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); - } + public static void StartLift(Elevator __instance) + { + var isGoingUp = __instance.GetValue("_goingToTheEnd"); + var id = ElevatorManager.Instance.GetId(__instance); + GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); + } + } } diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 4a7060fc1..4489ea415 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -4,26 +4,26 @@ namespace QSB.ElevatorSync.Events { - public class ElevatorEvent : QSBEvent - { - public override EventType Type => EventType.Elevator; + public class ElevatorEvent : QSBEvent + { + public override EventType Type => EventType.Elevator; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); - private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); + private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); - private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage - { - State = isGoingUp, - ObjectId = id - }; + private BoolWorldObjectMessage CreateMessage(int id, bool isGoingUp) => new BoolWorldObjectMessage + { + State = isGoingUp, + ObjectId = id + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var elevator = WorldRegistry.GetObject(message.ObjectId); - elevator?.RemoteCall(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var elevator = WorldRegistry.GetObject(message.ObjectId); + elevator?.RemoteCall(message.State); + } + } } diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index c04d023d6..8958e4b0f 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -4,54 +4,54 @@ namespace QSB.ElevatorSync { - public class QSBElevator : WorldObject - { - private Elevator _elevator; - private Vector3 _startLocalPos; - private Vector3 _endLocalPos; + public class QSBElevator : WorldObject + { + private Elevator _elevator; + private Vector3 _startLocalPos; + private Vector3 _endLocalPos; - private SingleInteractionVolume _interactVolume; - private OWAudioSource _owAudioSourceOneShot; - private OWAudioSource _owAudioSourceLP; + private SingleInteractionVolume _interactVolume; + private OWAudioSource _owAudioSourceOneShot; + private OWAudioSource _owAudioSourceLP; - public void Init(Elevator elevator, int id) - { - _elevator = elevator; - ObjectId = id; - QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); - } + public void Init(Elevator elevator, int id) + { + _elevator = elevator; + ObjectId = id; + QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); + } - private void InitValues() - { - _startLocalPos = _elevator.GetValue("_startLocalPos"); - _endLocalPos = _elevator.GetValue("_endLocalPos"); - _interactVolume = _elevator.GetValue("_interactVolume"); - _owAudioSourceOneShot = _elevator.GetValue("_owAudioSourceOneShot"); - _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); - } + private void InitValues() + { + _startLocalPos = _elevator.GetValue("_startLocalPos"); + _endLocalPos = _elevator.GetValue("_endLocalPos"); + _interactVolume = _elevator.GetValue("_interactVolume"); + _owAudioSourceOneShot = _elevator.GetValue("_owAudioSourceOneShot"); + _owAudioSourceLP = _elevator.GetValue("_owAudioSourceLP"); + } - public void RemoteCall(bool isGoingUp) - { - SetDirection(isGoingUp); - RemoteStartLift(); - } + public void RemoteCall(bool isGoingUp) + { + SetDirection(isGoingUp); + RemoteStartLift(); + } - private void SetDirection(bool isGoingUp) - { - var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; - _elevator.SetValue("_goingToTheEnd", isGoingUp); - _elevator.SetValue("_targetLocalPos", targetPos); - _interactVolume.transform.Rotate(0f, 180f, 0f); - } + private void SetDirection(bool isGoingUp) + { + var targetPos = isGoingUp ? _endLocalPos : _startLocalPos; + _elevator.SetValue("_goingToTheEnd", isGoingUp); + _elevator.SetValue("_targetLocalPos", targetPos); + _interactVolume.transform.Rotate(0f, 180f, 0f); + } - private void RemoteStartLift() - { - _elevator.enabled = true; - _elevator.SetValue("_initLocalPos", _elevator.transform.localPosition); - _elevator.SetValue("_initLiftTime", Time.time); - _owAudioSourceOneShot.PlayOneShot(AudioType.TH_LiftActivate); - _owAudioSourceLP.FadeIn(0.5f); - _interactVolume.DisableInteraction(); - } - } + private void RemoteStartLift() + { + _elevator.enabled = true; + _elevator.SetValue("_initLocalPos", _elevator.transform.localPosition); + _elevator.SetValue("_initLiftTime", Time.time); + _owAudioSourceOneShot.PlayOneShot(AudioType.TH_LiftActivate); + _owAudioSourceLP.FadeIn(0.5f); + _interactVolume.DisableInteraction(); + } + } } diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index 9012f9a9c..a2cd8543e 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -1,40 +1,40 @@ namespace QSB.EventsCore { - public static class EventNames - { - public static string TurnOnFlashlight = "TurnOnFlashlight"; - public static string TurnOffFlashlight = "TurnOffFlashlight"; - public static string LaunchProbe = "LaunchProbe"; - public static string RetrieveProbe = "RetrieveProbe"; - public static string ProbeLauncherEquipped = "ProbeLauncherEquipped"; - public static string ProbeLauncherUnequipped = "ProbeLauncherUnequipped"; - public static string EquipSignalscope = "EquipSignalscope"; - public static string UnequipSignalscope = "UnequipSignalscope"; - public static string SuitUp = "SuitUp"; - public static string RemoveSuit = "RemoveSuit"; - public static string EquipTranslator = "EquipTranslator"; - public static string UnequipTranslator = "UnequipTranslator"; - public static string ExitShip = "ExitShip"; - public static string RestartTimeLoop = "RestartTimeLoop"; - public static string WakeUp = "WakeUp"; + public static class EventNames + { + public static string TurnOnFlashlight = "TurnOnFlashlight"; + public static string TurnOffFlashlight = "TurnOffFlashlight"; + public static string LaunchProbe = "LaunchProbe"; + public static string RetrieveProbe = "RetrieveProbe"; + public static string ProbeLauncherEquipped = "ProbeLauncherEquipped"; + public static string ProbeLauncherUnequipped = "ProbeLauncherUnequipped"; + public static string EquipSignalscope = "EquipSignalscope"; + public static string UnequipSignalscope = "UnequipSignalscope"; + public static string SuitUp = "SuitUp"; + public static string RemoveSuit = "RemoveSuit"; + public static string EquipTranslator = "EquipTranslator"; + public static string UnequipTranslator = "UnequipTranslator"; + public static string ExitShip = "ExitShip"; + public static string RestartTimeLoop = "RestartTimeLoop"; + public static string WakeUp = "WakeUp"; - public static string QSBPlayerDeath = "QSBPlayerDeath"; - public static string QSBPlayerJoin = "QSBPlayerJoin"; - public static string QSBPlayerLeave = "QSBPlayerLeave"; - public static string QSBPlayerReady = "QSBPlayerReady"; - public static string QSBSectorChange = "QSBSectorChange"; - public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; - public static string QSBServerTime = "QSBServerTime"; - public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; - public static string QSBOnProbeWarp = "QSBOnProbeWarp"; - public static string QSBStartLift = "QSBStartLift"; - public static string QSBGeyserState = "QSBGeyserState"; - public static string QSBCrouch = "QSBAnimTrigger"; - public static string QSBOrbSlot = "QSBOrbSlot"; - public static string QSBOrbUser = "QSBOrbUser"; - public static string QSBConversation = "QSBConversation"; - public static string QSBConversationStartEnd = "QSBConversationStartEnd"; - public static string QSBChangeAnimType = "QSBPlayInstrument"; - public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; - } + public static string QSBPlayerDeath = "QSBPlayerDeath"; + public static string QSBPlayerJoin = "QSBPlayerJoin"; + public static string QSBPlayerLeave = "QSBPlayerLeave"; + public static string QSBPlayerReady = "QSBPlayerReady"; + public static string QSBSectorChange = "QSBSectorChange"; + public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; + public static string QSBServerTime = "QSBServerTime"; + public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; + public static string QSBOnProbeWarp = "QSBOnProbeWarp"; + public static string QSBStartLift = "QSBStartLift"; + public static string QSBGeyserState = "QSBGeyserState"; + public static string QSBCrouch = "QSBAnimTrigger"; + public static string QSBOrbSlot = "QSBOrbSlot"; + public static string QSBOrbUser = "QSBOrbUser"; + public static string QSBConversation = "QSBConversation"; + public static string QSBConversationStartEnd = "QSBConversationStartEnd"; + public static string QSBChangeAnimType = "QSBPlayInstrument"; + public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; + } } diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index 660f1e481..b082285cd 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -1,29 +1,29 @@ namespace QSB.EventsCore { - public enum EventType - { - Sector, - ServerTime, - AnimTrigger, - PlayerState, - PlayerStatesRequest, - FlashlightActiveChange, - SignalscopeActiveChange, - TranslatorActiveChange, - ProbeLauncherActiveChange, - SuitActiveChange, - PlayerJoin, - PlayerLeave, - PlayerDeath, - PlayerSectorChange, - PlayerReady, - ProbeActiveChange, - Elevator, - Geyser, - OrbSlot, - OrbUser, - Conversation, - ConversationStartEnd, - PlayInstrument - } + public enum EventType + { + Sector, + ServerTime, + AnimTrigger, + PlayerState, + PlayerStatesRequest, + FlashlightActiveChange, + SignalscopeActiveChange, + TranslatorActiveChange, + ProbeLauncherActiveChange, + SuitActiveChange, + PlayerJoin, + PlayerLeave, + PlayerDeath, + PlayerSectorChange, + PlayerReady, + ProbeActiveChange, + Elevator, + Geyser, + OrbSlot, + OrbUser, + Conversation, + ConversationStartEnd, + PlayInstrument + } } diff --git a/QSB/EventsCore/IQSBEvent.cs b/QSB/EventsCore/IQSBEvent.cs index 438a7d31f..4b8b8dc3d 100644 --- a/QSB/EventsCore/IQSBEvent.cs +++ b/QSB/EventsCore/IQSBEvent.cs @@ -1,8 +1,8 @@ namespace QSB.EventsCore { - public interface IQSBEvent - { - void SetupListener(); - void CloseListener(); - } + public interface IQSBEvent + { + void SetupListener(); + void CloseListener(); + } } diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 69abda07d..6648f17a6 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -2,7 +2,6 @@ using QSB.Player; using QSB.QuantumUNET; using QSB.TransformSync; -using UnityEngine.Networking; namespace QSB.EventsCore { diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 0f20259be..0dafd0d70 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -14,54 +14,54 @@ namespace QSB.EventsCore { - public static class QSBEventManager - { - public static bool Ready { get; private set; } + public static class QSBEventManager + { + public static bool Ready { get; private set; } - private static List _eventList = new List(); + private static List _eventList = new List(); - public static void Init() - { - _eventList = new List - { - new PlayerReadyEvent(), - new PlayerJoinEvent(), - new PlayerSuitEvent(), - new PlayerFlashlightEvent(), - new PlayerSignalscopeEvent(), - new PlayerTranslatorEvent(), - new PlayerProbeLauncherEvent(), - new PlayerProbeEvent(), - new PlayerSectorEvent(), - new PlayerLeaveEvent(), - new PlayerDeathEvent(), - new PlayerStatesRequestEvent(), - new ElevatorEvent(), - new GeyserEvent(), - new ServerTimeEvent(), - new CrouchEvent(), - new OrbSlotEvent(), - new OrbUserEvent(), - new ConversationEvent(), - new ConversationStartEndEvent(), - new ChangeAnimTypeEvent(), - new ServerSendPlayerStatesEvent() - }; + public static void Init() + { + _eventList = new List + { + new PlayerReadyEvent(), + new PlayerJoinEvent(), + new PlayerSuitEvent(), + new PlayerFlashlightEvent(), + new PlayerSignalscopeEvent(), + new PlayerTranslatorEvent(), + new PlayerProbeLauncherEvent(), + new PlayerProbeEvent(), + new PlayerSectorEvent(), + new PlayerLeaveEvent(), + new PlayerDeathEvent(), + new PlayerStatesRequestEvent(), + new ElevatorEvent(), + new GeyserEvent(), + new ServerTimeEvent(), + new CrouchEvent(), + new OrbSlotEvent(), + new OrbUserEvent(), + new ConversationEvent(), + new ConversationStartEndEvent(), + new ChangeAnimTypeEvent(), + new ServerSendPlayerStatesEvent() + }; - _eventList.ForEach(ev => ev.SetupListener()); + _eventList.ForEach(ev => ev.SetupListener()); - Ready = true; + Ready = true; - DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); - } + DebugLog.DebugWrite("Event Manager ready.", MessageType.Success); + } - public static void Reset() - { - Ready = false; + public static void Reset() + { + Ready = false; - _eventList.ForEach(ev => ev.CloseListener()); + _eventList.ForEach(ev => ev.CloseListener()); - _eventList = new List(); - } - } + _eventList = new List(); + } + } } diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 8cd7a7bd7..0ac1134be 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -4,33 +4,33 @@ namespace QSB.GeyserSync.Events { - public class GeyserEvent : QSBEvent - { - public override EventType Type => EventType.Geyser; + public class GeyserEvent : QSBEvent + { + public override EventType Type => EventType.Geyser; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); + } - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id, - State = state - }; + private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + State = state + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - var geyser = WorldRegistry.GetObject(message.ObjectId); - geyser?.SetState(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + var geyser = WorldRegistry.GetObject(message.ObjectId); + geyser?.SetState(message.State); + } + } } diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index 45f3d399f..b90c06a09 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -4,41 +4,41 @@ namespace QSB.GeyserSync { - public class GeyserManager : MonoBehaviour - { - public static GeyserManager Instance { get; private set; } + public class GeyserManager : MonoBehaviour + { + public static GeyserManager Instance { get; private set; } - private void Awake() - { - Instance = this; - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - QSBPatchManager.OnPatchType += OnPatchType; - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + QSBPatchManager.OnPatchType += OnPatchType; + } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - QSBPatchManager.OnPatchType -= OnPatchType; - } + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + QSBPatchManager.OnPatchType -= OnPatchType; + } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - var geyserControllers = Resources.FindObjectsOfTypeAll(); - for (var id = 0; id < geyserControllers.Length; id++) - { - var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); - qsbGeyser.Init(geyserControllers[id], id); - WorldRegistry.AddObject(qsbGeyser); - } - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + var geyserControllers = Resources.FindObjectsOfTypeAll(); + for (var id = 0; id < geyserControllers.Length; id++) + { + var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); + qsbGeyser.Init(geyserControllers[id], id); + WorldRegistry.AddObject(qsbGeyser); + } + } - public void OnPatchType(QSBPatchTypes type) - { - if (type != QSBPatchTypes.OnNonServerClientConnect) - { - return; - } - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); - } - } + public void OnPatchType(QSBPatchTypes type) + { + if (type != QSBPatchTypes.OnNonServerClientConnect) + { + return; + } + QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + } + } } \ No newline at end of file diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index b03499bb2..e4328ca3b 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -1,7 +1,6 @@ using QSB.EventsCore; using QSB.QuantumUNET; using QSB.WorldSync; -using UnityEngine.Networking; namespace QSB.GeyserSync { diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index f0859c6c6..46f879bdb 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -8,121 +8,121 @@ namespace QSB.Instruments { - public class InstrumentsManager : PlayerSyncObject - { - private Transform rootObj; - private AnimationType _savedType; - private GameObject ChertDrum; + public class InstrumentsManager : PlayerSyncObject + { + private Transform rootObj; + private AnimationType _savedType; + private GameObject ChertDrum; - public void InitLocal(Transform root) - { - rootObj = root; - gameObject.AddComponent(); + public void InitLocal(Transform root) + { + rootObj = root; + gameObject.AddComponent(); - QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt += () => ReturnToPlayer(); + QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ExitTaunt += () => ReturnToPlayer(); - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - QSBPlayerManager.PlayerSyncObjects.Add(this); - } + QSBPlayerManager.PlayerSyncObjects.Add(this); + } - public void InitRemote(Transform root) - { - rootObj = root; - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + public void InitRemote(Transform root) + { + rootObj = root; + QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - QSBPlayerManager.PlayerSyncObjects.Add(this); - } + QSBPlayerManager.PlayerSyncObjects.Add(this); + } - private void OnDestroy() - { - if (!IsLocalPlayer) - { - return; - } - DebugLog.DebugWrite($"OnDestroy {PlayerId}"); - QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); - } + private void OnDestroy() + { + if (!IsLocalPlayer) + { + return; + } + DebugLog.DebugWrite($"OnDestroy {PlayerId}"); + QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); + QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); + QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); + QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); + QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); + } - private void SetupInstruments() - { - var bundle = QSB.InstrumentAssetBundle; - ChertDrum = MakeChertDrum(bundle); - } + private void SetupInstruments() + { + var bundle = QSB.InstrumentAssetBundle; + ChertDrum = MakeChertDrum(bundle); + } - // EyeCompatibility : Need to find right object. - private GameObject MakeChertDrum(AssetBundle bundle) - { - var drum = new GameObject(); - var mf = drum.AddComponent(); - mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; - var mr = drum.AddComponent(); - mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; - drum.transform.parent = rootObj; - drum.transform.rotation = rootObj.rotation; - drum.transform.localPosition = Vector3.zero; - drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); - drum.SetActive(false); + // EyeCompatibility : Need to find right object. + private GameObject MakeChertDrum(AssetBundle bundle) + { + var drum = new GameObject(); + var mf = drum.AddComponent(); + mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; + var mr = drum.AddComponent(); + mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; + drum.transform.parent = rootObj; + drum.transform.rotation = rootObj.rotation; + drum.transform.localPosition = Vector3.zero; + drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); + drum.SetActive(false); - return drum; - } + return drum; + } - public void StartInstrument(AnimationType type) - { - if (!IsLocalPlayer) - { - DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); - return; - } - if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) - { - return; - } - _savedType = Player.AnimationSync.CurrentType; - CameraManager.Instance.SwitchTo3rdPerson(); - SwitchToType(type); - } + public void StartInstrument(AnimationType type) + { + if (!IsLocalPlayer) + { + DebugLog.DebugWrite("Error - Tried to start instrument on non-local player!", MessageType.Error); + return; + } + if (Player.PlayingInstrument || !Locator.GetPlayerController().IsGrounded()) + { + return; + } + _savedType = Player.AnimationSync.CurrentType; + CameraManager.Instance.SwitchTo3rdPerson(); + SwitchToType(type); + } - public void ReturnToPlayer() - { - if (!Player.PlayingInstrument) - { - return; - } - CameraManager.Instance.SwitchTo1stPerson(); - SwitchToType(_savedType); - } + public void ReturnToPlayer() + { + if (!Player.PlayingInstrument) + { + return; + } + CameraManager.Instance.SwitchTo1stPerson(); + SwitchToType(_savedType); + } - public void SwitchToType(AnimationType type) - { - DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); - QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); - CheckInstrumentProps(type); - } + public void SwitchToType(AnimationType type) + { + DebugLog.DebugWrite($"switch to type {type} player {PlayerId}"); + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, QSBPlayerManager.LocalPlayerId, type); + QSBPlayerManager.LocalPlayer.AnimationSync.SetAnimationType(type); + CheckInstrumentProps(type); + } - public void CheckInstrumentProps(AnimationType type) - { - switch (type) - { - case AnimationType.Chert: - ChertDrum.SetActive(true); - break; - case AnimationType.PlayerSuited: - case AnimationType.PlayerUnsuited: - ChertDrum.SetActive(false); - break; - } - } - } + public void CheckInstrumentProps(AnimationType type) + { + switch (type) + { + case AnimationType.Chert: + ChertDrum.SetActive(true); + break; + case AnimationType.PlayerSuited: + case AnimationType.PlayerUnsuited: + ChertDrum.SetActive(false); + break; + } + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index 1dad97a0e..dccd8e236 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -2,78 +2,78 @@ namespace QSB.Instruments.QSBCamera { - class CameraController : MonoBehaviour - { - private float _degreesX; - private float _degreesY; - private Quaternion _rotationX; - private Quaternion _rotationY; + class CameraController : MonoBehaviour + { + private float _degreesX; + private float _degreesY; + private Quaternion _rotationX; + private Quaternion _rotationY; - // How far along the ray to move the camera. Avoids clipping into the walls. - private const float PercentToMove = 0.80f; - // Maximum distance for camera clipping - private const float RayLength = 5f; + // How far along the ray to move the camera. Avoids clipping into the walls. + private const float PercentToMove = 0.80f; + // Maximum distance for camera clipping + private const float RayLength = 5f; - public GameObject CameraObject; + public GameObject CameraObject; - void FixedUpdate() - { - if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) - { - return; - } - UpdatePosition(); - UpdateInput(); - UpdateRotation(); - } + void FixedUpdate() + { + if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) + { + return; + } + UpdatePosition(); + UpdateInput(); + UpdateRotation(); + } - private void UpdatePosition() - { - var origin = transform.position; - var localDirection = CameraObject.transform.localPosition.normalized; - Vector3 localTargetPoint; - if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) - { - // Raycast hit collider, get target from hitpoint. - localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; - } - else - { - // Raycast didn't hit collider, get target from camera direction - localTargetPoint = localDirection * RayLength * PercentToMove; - } - var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); - var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); - Vector3 movement; - if (targetDistance < currentDistance) - { - // Snap to target to avoid clipping - movement = localTargetPoint; - } - else - { - // Move camera out slowly - movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); - } - CameraObject.transform.localPosition = movement; - } + private void UpdatePosition() + { + var origin = transform.position; + var localDirection = CameraObject.transform.localPosition.normalized; + Vector3 localTargetPoint; + if (Physics.Raycast(origin, transform.TransformDirection(localDirection), out var outRay, RayLength, LayerMask.GetMask("Default"))) + { + // Raycast hit collider, get target from hitpoint. + localTargetPoint = transform.InverseTransformPoint(outRay.point) * PercentToMove; + } + else + { + // Raycast didn't hit collider, get target from camera direction + localTargetPoint = localDirection * RayLength * PercentToMove; + } + var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); + var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); + Vector3 movement; + if (targetDistance < currentDistance) + { + // Snap to target to avoid clipping + movement = localTargetPoint; + } + else + { + // Move camera out slowly + movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); + } + CameraObject.transform.localPosition = movement; + } - private void UpdateInput() - { - var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); - _degreesX += input.x * 180f * Time.fixedDeltaTime; - _degreesY += input.y * 180f * Time.fixedDeltaTime; - } + private void UpdateInput() + { + var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); + _degreesX += input.x * 180f * Time.fixedDeltaTime; + _degreesY += input.y * 180f * Time.fixedDeltaTime; + } - private void UpdateRotation() - { - _degreesX %= 360f; - _degreesY %= 360f; - _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); - _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); - _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); - var localRotation = _rotationX * _rotationY * Quaternion.identity; - transform.localRotation = localRotation; - } - } + private void UpdateRotation() + { + _degreesX %= 360f; + _degreesY %= 360f; + _degreesY = Mathf.Clamp(_degreesY, -80f, 80f); + _rotationX = Quaternion.AngleAxis(_degreesX, Vector3.up); + _rotationY = Quaternion.AngleAxis(_degreesY, Vector3.left); + var localRotation = _rotationX * _rotationY * Quaternion.identity; + transform.localRotation = localRotation; + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 41c956684..fc7478eab 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -5,110 +5,110 @@ namespace QSB.Instruments.QSBCamera { - public class CameraManager : MonoBehaviour - { - public static CameraManager Instance; - private GameObject CameraBase; - private GameObject CameraObj; - private Camera Camera; - private OWCamera OWCamera; - public bool IsSetUp { get; private set; } - public CameraMode Mode { get; private set; } + public class CameraManager : MonoBehaviour + { + public static CameraManager Instance; + private GameObject CameraBase; + private GameObject CameraObj; + private Camera Camera; + private OWCamera OWCamera; + public bool IsSetUp { get; private set; } + public CameraMode Mode { get; private set; } - public void Start() - { - Instance = this; - SetupCamera(); - } + public void Start() + { + Instance = this; + SetupCamera(); + } - private void SetupCamera() - { - CameraBase = new GameObject(); - CameraBase.SetActive(false); - CameraBase.AddComponent(); - CameraBase.transform.parent = Locator.GetPlayerTransform(); - CameraBase.transform.localPosition = Vector3.zero; - CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); + private void SetupCamera() + { + CameraBase = new GameObject(); + CameraBase.SetActive(false); + CameraBase.AddComponent(); + CameraBase.transform.parent = Locator.GetPlayerTransform(); + CameraBase.transform.localPosition = Vector3.zero; + CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); - CameraObj = new GameObject(); - CameraObj.transform.parent = CameraBase.transform; - CameraObj.transform.localPosition = new Vector3(0, 0, -5f); - CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); - Camera = CameraObj.AddComponent(); - Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); - Camera.clearFlags = CameraClearFlags.Color; - Camera.backgroundColor = Color.black; - Camera.fieldOfView = 90f; - Camera.nearClipPlane = 0.1f; - Camera.farClipPlane = 40000f; - Camera.depth = 0f; - Camera.enabled = false; - OWCamera = CameraObj.AddComponent(); - OWCamera.renderSkybox = true; + CameraObj = new GameObject(); + CameraObj.transform.parent = CameraBase.transform; + CameraObj.transform.localPosition = new Vector3(0, 0, -5f); + CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); + Camera = CameraObj.AddComponent(); + Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); + Camera.clearFlags = CameraClearFlags.Color; + Camera.backgroundColor = Color.black; + Camera.fieldOfView = 90f; + Camera.nearClipPlane = 0.1f; + Camera.farClipPlane = 40000f; + Camera.depth = 0f; + Camera.enabled = false; + OWCamera = CameraObj.AddComponent(); + OWCamera.renderSkybox = true; - CameraBase.AddComponent().CameraObject = CameraObj; + CameraBase.AddComponent().CameraObject = CameraObj; - var screenGrab = CameraObj.AddComponent(); - screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; + var screenGrab = CameraObj.AddComponent(); + screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; - var fogImage = CameraObj.AddComponent(); - fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; + var fogImage = CameraObj.AddComponent(); + fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; - CameraBase.SetActive(true); + CameraBase.SetActive(true); - IsSetUp = true; - } + IsSetUp = true; + } - public void SwitchTo3rdPerson() - { - if (!IsSetUp) - { - DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); - OWInput.ChangeInputMode(InputMode.None); - Mode = CameraMode.ThirdPerson; - return; - } - if (Mode == CameraMode.ThirdPerson) - { - DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); - return; - } - if (OWInput.GetInputMode() != InputMode.Character) - { - DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); - return; - } - OWInput.ChangeInputMode(InputMode.None); - GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); - Locator.GetPlayerCamera().mainCamera.enabled = false; - if (CameraObj.GetComponent() == null) - { - var postProcessing = CameraObj.AddComponent(); - postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; - } - Camera.enabled = true; - Mode = CameraMode.ThirdPerson; - } + public void SwitchTo3rdPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.None); + Mode = CameraMode.ThirdPerson; + return; + } + if (Mode == CameraMode.ThirdPerson) + { + DebugLog.ToConsole("Warning - Already in 3rd person!", MessageType.Warning); + return; + } + if (OWInput.GetInputMode() != InputMode.Character) + { + DebugLog.ToConsole("Warning - Cannot change to 3rd person while not in Character inputmode!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.None); + GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); + Locator.GetPlayerCamera().mainCamera.enabled = false; + if (CameraObj.GetComponent() == null) + { + var postProcessing = CameraObj.AddComponent(); + postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; + } + Camera.enabled = true; + Mode = CameraMode.ThirdPerson; + } - public void SwitchTo1stPerson() - { - if (!IsSetUp) - { - DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); - OWInput.ChangeInputMode(InputMode.Character); - Mode = CameraMode.FirstPerson; - return; - } - if (Mode == CameraMode.FirstPerson) - { - DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); - return; - } - OWInput.ChangeInputMode(InputMode.Character); - GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); - Locator.GetActiveCamera().mainCamera.enabled = true; - Camera.enabled = false; - Mode = CameraMode.FirstPerson; - } - } + public void SwitchTo1stPerson() + { + if (!IsSetUp) + { + DebugLog.ToConsole("Warning - Camera not set up!", MessageType.Warning); + OWInput.ChangeInputMode(InputMode.Character); + Mode = CameraMode.FirstPerson; + return; + } + if (Mode == CameraMode.FirstPerson) + { + DebugLog.ToConsole("Warning - Already in 1st person!", MessageType.Warning); + return; + } + OWInput.ChangeInputMode(InputMode.Character); + GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); + Locator.GetActiveCamera().mainCamera.enabled = true; + Camera.enabled = false; + Mode = CameraMode.FirstPerson; + } + } } diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs index 738ca214d..7102ec52b 100644 --- a/QSB/Instruments/QSBCamera/CameraMode.cs +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -1,8 +1,8 @@ namespace QSB.Instruments.QSBCamera { - public enum CameraMode - { - FirstPerson, - ThirdPerson - } + public enum CameraMode + { + FirstPerson, + ThirdPerson + } } diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index 6138b2db2..adb8d4bfb 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -3,20 +3,20 @@ namespace QSB.MessagesCore { - public class EnumMessage : PlayerMessage - { - public T Value; + public class EnumMessage : PlayerMessage + { + public T Value; - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Value = (T)(object)reader.ReadInt32(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Value = (T)(object)reader.ReadInt32(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write((int)(object)Value); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write((int)(object)Value); + } + } } diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/MessagesCore/FloatMessage.cs index b0ce45a0e..9cc74f21f 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -3,20 +3,20 @@ namespace QSB.MessagesCore { - public class FloatMessage : PlayerMessage - { - public float Value; + public class FloatMessage : PlayerMessage + { + public float Value; - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - Value = reader.ReadSingle(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + Value = reader.ReadSingle(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(Value); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(Value); + } + } } \ No newline at end of file diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 054465e30..2a9f73d84 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -2,21 +2,21 @@ namespace QSB.Messaging { - public class PlayerMessage : MessageBase - { - public uint FromId { get; set; } - public uint AboutId { get; set; } + public class PlayerMessage : MessageBase + { + public uint FromId { get; set; } + public uint AboutId { get; set; } - public override void Deserialize(NetworkReader reader) - { - FromId = reader.ReadUInt32(); - AboutId = reader.ReadUInt32(); - } + public override void Deserialize(NetworkReader reader) + { + FromId = reader.ReadUInt32(); + AboutId = reader.ReadUInt32(); + } - public override void Serialize(NetworkWriter writer) - { - writer.Write(FromId); - writer.Write(AboutId); - } - } + public override void Serialize(NetworkWriter writer) + { + writer.Write(FromId); + writer.Write(AboutId); + } + } } diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs index 328cafedc..8e2f02926 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/MessagesCore/ToggleMessage.cs @@ -2,20 +2,20 @@ namespace QSB.Messaging { - public class ToggleMessage : PlayerMessage - { - public bool ToggleValue { get; set; } + public class ToggleMessage : PlayerMessage + { + public bool ToggleValue { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ToggleValue = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ToggleValue = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ToggleValue); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ToggleValue); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 8a4bcaf39..358b45965 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,12 +1,10 @@ using OWML.Common; using QSB.EventsCore; using QSB.QuantumUNET; -using QSB.TransformSync; using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; using System.Linq; -using UnityEngine.Networking; namespace QSB.OrbSync.Events { diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index b7dbbcf29..81dfed6a0 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -4,7 +4,6 @@ using QSB.WorldSync; using System.Linq; using UnityEngine; -using UnityEngine.Networking; namespace QSB.OrbSync { diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index 9358557c3..ff3af77a8 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -3,36 +3,36 @@ namespace QSB.OrbSync { - public class QSBOrbSlot : WorldObject - { - public NomaiInterfaceSlot InterfaceSlot { get; private set; } + public class QSBOrbSlot : WorldObject + { + public NomaiInterfaceSlot InterfaceSlot { get; private set; } - private bool _initialized; + private bool _initialized; - public void Init(NomaiInterfaceSlot slot, int id) - { - ObjectId = id; - InterfaceSlot = slot; - _initialized = true; - WorldRegistry.AddObject(this); - } + public void Init(NomaiInterfaceSlot slot, int id) + { + ObjectId = id; + InterfaceSlot = slot; + _initialized = true; + WorldRegistry.AddObject(this); + } - public void HandleEvent(bool state) - { - if (QSB.HasWokenUp) - { - GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); - } - } + public void HandleEvent(bool state) + { + if (QSB.HasWokenUp) + { + GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); + } + } - public void SetState(bool state) - { - if (!_initialized) - { - return; - } - var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; - WorldRegistry.RaiseEvent(InterfaceSlot, ev); - } - } + public void SetState(bool state) + { + if (!_initialized) + { + return; + } + var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; + WorldRegistry.RaiseEvent(InterfaceSlot, ev); + } + } } diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index bafc9edbf..6bdeacd50 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -1,9 +1,9 @@ namespace QSB { - public abstract class QSBPatch - { - public abstract QSBPatchTypes Type { get; } + public abstract class QSBPatch + { + public abstract QSBPatchTypes Type { get; } - public abstract void DoPatches(); - } + public abstract void DoPatches(); + } } diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 53ff573de..4b2e689ed 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -1,9 +1,9 @@ namespace QSB { - public enum QSBPatchTypes - { - OnModStart, - OnClientConnect, - OnNonServerClientConnect - } + public enum QSBPatchTypes + { + OnModStart, + OnClientConnect, + OnNonServerClientConnect + } } diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index 07bb919c9..ed1fa4542 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -4,36 +4,36 @@ namespace QSB.Player.Events { - public class PlayerJoinEvent : QSBEvent - { - public override EventType Type => EventType.PlayerJoin; + public class PlayerJoinEvent : QSBEvent + { + public override EventType Type => EventType.PlayerJoin; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); - private void Handler(string name) => SendEvent(CreateMessage(name)); + private void Handler(string name) => SendEvent(CreateMessage(name)); - private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage - { - AboutId = LocalPlayerId, - PlayerName = name - }; + private PlayerJoinMessage CreateMessage(string name) => new PlayerJoinMessage + { + AboutId = LocalPlayerId, + PlayerName = name + }; - public override void OnReceiveRemote(PlayerJoinMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.Name = message.PlayerName; - DebugLog.ToHud($"{player.Name} joined!"); - DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); - } + public override void OnReceiveRemote(PlayerJoinMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.Name = message.PlayerName; + DebugLog.ToHud($"{player.Name} joined!"); + DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); + } - public override void OnReceiveLocal(PlayerJoinMessage message) - { - var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); - player.Name = message.PlayerName; - var text = $"Connected to server as {player.Name}."; - DebugLog.ToAll(text, MessageType.Info); - } - } + public override void OnReceiveLocal(PlayerJoinMessage message) + { + var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); + player.Name = message.PlayerName; + var text = $"Connected to server as {player.Name}."; + DebugLog.ToAll(text, MessageType.Info); + } + } } diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 97a1efa39..d313e050e 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -3,20 +3,20 @@ namespace QSB.Player.Events { - public class PlayerJoinMessage : PlayerMessage - { - public string PlayerName { get; set; } + public class PlayerJoinMessage : PlayerMessage + { + public string PlayerName { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - PlayerName = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + PlayerName = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(PlayerName); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(PlayerName); + } + } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index bf7fca673..3141e6148 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -5,29 +5,29 @@ namespace QSB.Player.Events { - public class PlayerLeaveEvent : QSBEvent - { - public override EventType Type => EventType.PlayerLeave; + public class PlayerLeaveEvent : QSBEvent + { + public override EventType Type => EventType.PlayerLeave; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); - private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); + private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); - private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage - { - AboutId = playerId, - NetIds = netIds - }; + private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage + { + AboutId = playerId, + NetIds = netIds + }; - public override void OnReceiveRemote(PlayerLeaveMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); - QSBPlayerManager.RemovePlayer(message.AboutId); - message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); - } - } + public override void OnReceiveRemote(PlayerLeaveMessage message) + { + var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; + DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); + QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(message.AboutId); + message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); + } + } } diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs index 216700437..d4c559aba 100644 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -5,20 +5,20 @@ namespace QSB.Player.Events { - public class PlayerLeaveMessage : PlayerMessage - { - public uint[] NetIds { get; set; } + public class PlayerLeaveMessage : PlayerMessage + { + public uint[] NetIds { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); + } + } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 14a57b300..3bc188cff 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -7,46 +7,46 @@ namespace QSB.Player.Events { - public class PlayerReadyEvent : QSBEvent - { - public override EventType Type => EventType.PlayerReady; + public class PlayerReadyEvent : QSBEvent + { + public override EventType Type => EventType.PlayerReady; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); - private void Handler(bool ready) => SendEvent(CreateMessage(ready)); + private void Handler(bool ready) => SendEvent(CreateMessage(ready)); - private ToggleMessage CreateMessage(bool ready) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = ready - }; + private ToggleMessage CreateMessage(bool ready) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = ready + }; - public override void OnServerReceive(ToggleMessage message) - { - DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); - if (message.FromId == QSBPlayerManager.LocalPlayerId) - { - return; - } - QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - } + public override void OnServerReceive(ToggleMessage message) + { + DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); + if (message.FromId == QSBPlayerManager.LocalPlayerId) + { + return; + } + QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + } - public override void OnReceiveRemote(ToggleMessage message) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - if (!QSBPlayerManager.PlayerExists(message.FromId)) - { - DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); - return; - } - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); - } - } - } + public override void OnReceiveRemote(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); + return; + } + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); + } + } + } } diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 784dee43c..4afa19103 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -7,47 +7,47 @@ namespace QSB.Player.Events { - public class PlayerSectorEvent : QSBEvent - { - public override EventType Type => EventType.PlayerSectorChange; - - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); - } - - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); - } - - private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); - - private WorldObjectMessage CreateMessage(uint netId, QSBSector sector) => new WorldObjectMessage - { - AboutId = netId, - ObjectId = sector.ObjectId - }; - - public override void OnReceiveRemote(WorldObjectMessage message) - { - if (!QSBSceneManager.IsInUniverse) - { - return; - } - var sector = WorldRegistry.GetObject(message.ObjectId); - - if (sector == null) - { - DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); - return; - } - - var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); - - QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, - () => transformSync?.SetReferenceSector(sector)); - } - - } + public class PlayerSectorEvent : QSBEvent + { + public override EventType Type => EventType.PlayerSectorChange; + + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); + } + + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); + } + + private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); + + private WorldObjectMessage CreateMessage(uint netId, QSBSector sector) => new WorldObjectMessage + { + AboutId = netId, + ObjectId = sector.ObjectId + }; + + public override void OnReceiveRemote(WorldObjectMessage message) + { + if (!QSBSceneManager.IsInUniverse) + { + return; + } + var sector = WorldRegistry.GetObject(message.ObjectId); + + if (sector == null) + { + DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); + return; + } + + var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); + + QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, + () => transformSync?.SetReferenceSector(sector)); + } + + } } diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index b881e4c1d..a1dcef64f 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -3,32 +3,32 @@ namespace QSB.Player.Events { - public class PlayerStateMessage : PlayerMessage - { - public string PlayerName { get; set; } - public bool PlayerReady { get; set; } - public State PlayerState { get; set; } - public Sector.Name SectorID { get; set; } - public string SectorName { get; set; } + public class PlayerStateMessage : PlayerMessage + { + public string PlayerName { get; set; } + public bool PlayerReady { get; set; } + public State PlayerState { get; set; } + public Sector.Name SectorID { get; set; } + public string SectorName { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - PlayerName = reader.ReadString(); - PlayerReady = reader.ReadBoolean(); - PlayerState = (State)reader.ReadInt32(); - SectorID = (Sector.Name)reader.ReadInt32(); - SectorName = reader.ReadString(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + PlayerName = reader.ReadString(); + PlayerReady = reader.ReadBoolean(); + PlayerState = (State)reader.ReadInt32(); + SectorID = (Sector.Name)reader.ReadInt32(); + SectorName = reader.ReadString(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(PlayerName); - writer.Write(PlayerReady); - writer.Write((int)PlayerState); - writer.Write((int)SectorID); - writer.Write(SectorName); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(PlayerName); + writer.Write(PlayerReady); + writer.Write((int)PlayerState); + writer.Write((int)SectorID); + writer.Write(SectorName); + } + } } diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 1af7a0a7d..30cddccc6 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -6,30 +6,30 @@ namespace QSB.Player.Events { - public class PlayerStatesRequestEvent : QSBEvent - { - public override EventType Type => EventType.PlayerStatesRequest; + public class PlayerStatesRequestEvent : QSBEvent + { + public override EventType Type => EventType.PlayerStatesRequest; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); - private void Handler() => SendEvent(CreateMessage()); + private void Handler() => SendEvent(CreateMessage()); - private PlayerMessage CreateMessage() => new PlayerMessage - { - AboutId = LocalPlayerId - }; + private PlayerMessage CreateMessage() => new PlayerMessage + { + AboutId = LocalPlayerId + }; - public override void OnServerReceive(PlayerMessage message) - { - DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); - } - } - } + public override void OnServerReceive(PlayerMessage message) + { + DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); + } + } + } } diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index ac9230bd5..53d0f082e 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -4,37 +4,37 @@ namespace QSB.Player.Events { - public class ServerSendPlayerStatesEvent : QSBEvent - { - public override EventType Type => EventType.PlayerState; + public class ServerSendPlayerStatesEvent : QSBEvent + { + public override EventType Type => EventType.PlayerState; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); - private void Handler() - { - foreach (var player in QSBPlayerManager.PlayerList) - { - DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); - SendEvent(CreateMessage(player)); - } - } + private void Handler() + { + foreach (var player in QSBPlayerManager.PlayerList) + { + DebugLog.DebugWrite($" - Sending playerstate of player ID {player.PlayerId}", MessageType.Info); + SendEvent(CreateMessage(player)); + } + } - private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage - { - AboutId = player.PlayerId, - PlayerName = player.Name, - PlayerReady = player.IsReady, - PlayerState = player.State - }; + private PlayerStateMessage CreateMessage(PlayerInfo player) => new PlayerStateMessage + { + AboutId = player.PlayerId, + PlayerName = player.Name, + PlayerReady = player.IsReady, + PlayerState = player.State + }; - public override void OnReceiveRemote(PlayerStateMessage message) - { - DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen( - () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, - () => QSBPlayerManager.HandleFullStateMessage(message)); - } - } + public override void OnReceiveRemote(PlayerStateMessage message) + { + DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); + QSB.Helper.Events.Unity.RunWhen( + () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, + () => QSBPlayerManager.HandleFullStateMessage(message)); + } + } } diff --git a/QSB/Player/PlayerHUDMarker.cs b/QSB/Player/PlayerHUDMarker.cs index afc3a167b..61ea6f4f2 100644 --- a/QSB/Player/PlayerHUDMarker.cs +++ b/QSB/Player/PlayerHUDMarker.cs @@ -2,58 +2,58 @@ namespace QSB.Player { - public class PlayerHUDMarker : HUDDistanceMarker - { - private PlayerInfo _player; - private bool _isReady; - - protected override void InitCanvasMarker() - { - _markerRadius = 2f; - - _markerTarget = new GameObject().transform; - _markerTarget.parent = transform; - - _markerTarget.localPosition = Vector3.up * 2; - } - - public void Init(PlayerInfo player) - { - _player = player; - _player.HudMarker = this; - _isReady = true; - } - - protected override void RefreshOwnVisibility() - { - if (_canvasMarker != null) - { - _canvasMarker.SetVisibility(true); - } - } - - private void Update() - { - if (!_isReady || !_player.IsReady) - { - return; - } - _markerLabel = _player.Name.ToUpper(); - _isReady = false; - - base.InitCanvasMarker(); - } - - public void Remove() - { - // do N O T destroy the parent - it completely breaks the ENTIRE GAME - if (_canvasMarker?.gameObject != null) - { - _canvasMarker.DestroyMarker(); - } - Destroy(_markerTarget.gameObject); - Destroy(this); - } - - } + public class PlayerHUDMarker : HUDDistanceMarker + { + private PlayerInfo _player; + private bool _isReady; + + protected override void InitCanvasMarker() + { + _markerRadius = 2f; + + _markerTarget = new GameObject().transform; + _markerTarget.parent = transform; + + _markerTarget.localPosition = Vector3.up * 2; + } + + public void Init(PlayerInfo player) + { + _player = player; + _player.HudMarker = this; + _isReady = true; + } + + protected override void RefreshOwnVisibility() + { + if (_canvasMarker != null) + { + _canvasMarker.SetVisibility(true); + } + } + + private void Update() + { + if (!_isReady || !_player.IsReady) + { + return; + } + _markerLabel = _player.Name.ToUpper(); + _isReady = false; + + base.InitCanvasMarker(); + } + + public void Remove() + { + // do N O T destroy the parent - it completely breaks the ENTIRE GAME + if (_canvasMarker?.gameObject != null) + { + _canvasMarker.DestroyMarker(); + } + Destroy(_markerTarget.gameObject); + Destroy(this); + } + + } } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 22c1bffbc..d0cd01088 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -6,78 +6,78 @@ namespace QSB.Player { - public class PlayerInfo - { - public uint PlayerId { get; } - public string Name { get; set; } - public bool IsReady { get; set; } - public PlayerHUDMarker HudMarker { get; set; } - public State State { get; set; } + public class PlayerInfo + { + public uint PlayerId { get; } + public string Name { get; set; } + public bool IsReady { get; set; } + public PlayerHUDMarker HudMarker { get; set; } + public State State { get; set; } - // Body Objects - public GameObject Camera { get; set; } - public GameObject Body { get; set; } + // Body Objects + public GameObject Camera { get; set; } + public GameObject Body { get; set; } - // Tools - public GameObject ProbeBody { get; set; } - public QSBProbe Probe { get; set; } - public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); - public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); - public QSBTool Translator => GetToolByType(ToolType.Translator); - public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); + // Tools + public GameObject ProbeBody { get; set; } + public QSBProbe Probe { get; set; } + public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); + public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); + public QSBTool Translator => GetToolByType(ToolType.Translator); + public QSBTool ProbeLauncher => GetToolByType(ToolType.ProbeLauncher); - // Conversation - public int CurrentDialogueID { get; set; } - public GameObject CurrentDialogueBox { get; set; } + // Conversation + public int CurrentDialogueID { get; set; } + public GameObject CurrentDialogueBox { get; set; } - // Animation - public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); - public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited - && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; + // Animation + public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); + public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited + && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; - public PlayerInfo(uint id) - { - PlayerId = id; - CurrentDialogueID = -1; - } + public PlayerInfo(uint id) + { + PlayerId = id; + CurrentDialogueID = -1; + } - public void UpdateState(State state, bool value) - { - var states = State; - if (value) - { - FlagsHelper.Set(ref states, state); - } - else - { - FlagsHelper.Unset(ref states, state); - } - State = states; - } + public void UpdateState(State state, bool value) + { + var states = State; + if (value) + { + FlagsHelper.Set(ref states, state); + } + else + { + FlagsHelper.Unset(ref states, state); + } + State = states; + } - public void UpdateStateObjects() - { - if (OWInput.GetInputMode() == InputMode.None) - { - return; - } - FlashLight?.UpdateState(FlagsHelper.IsSet(State, State.Flashlight)); - Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); - ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); - Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, - () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); - } + public void UpdateStateObjects() + { + if (OWInput.GetInputMode() == InputMode.None) + { + return; + } + FlashLight?.UpdateState(FlagsHelper.IsSet(State, State.Flashlight)); + Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); + ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); + Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); + QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, + () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); + } - public bool GetState(State state) - { - return FlagsHelper.IsSet(State, state); - } + public bool GetState(State state) + { + return FlagsHelper.IsSet(State, state); + } - private QSBTool GetToolByType(ToolType type) - { - return Camera?.GetComponentsInChildren() - .FirstOrDefault(x => x.Type == type); - } - } + private QSBTool GetToolByType(ToolType type) + { + return Camera?.GetComponentsInChildren() + .FirstOrDefault(x => x.Type == type); + } + } } \ No newline at end of file diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 8fd840fb1..4933c6b25 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -1,5 +1,4 @@ using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.Player { diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index aa359d02b..6b2ee5da6 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -5,7 +5,6 @@ using QSB.Utility; using System.Collections.Generic; using System.Linq; -using UnityEngine.Networking; namespace QSB.Player { diff --git a/QSB/Player/State.cs b/QSB/Player/State.cs index d0217277f..49b666abb 100644 --- a/QSB/Player/State.cs +++ b/QSB/Player/State.cs @@ -2,16 +2,16 @@ namespace QSB.Player { - [Flags] - public enum State - { - None = 0, - Flashlight = 1, - Suit = 2, - ProbeLauncher = 4, - Signalscope = 8, - Translator = 16, - ProbeActive = 32 - //Increment these in binary to add more states - } + [Flags] + public enum State + { + None = 0, + Flashlight = 1, + Suit = 2, + ProbeLauncher = 4, + Signalscope = 8, + Translator = 16, + ProbeActive = 32 + //Increment these in binary to add more states + } } \ No newline at end of file diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 183b7cf8e..7628d40e3 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -80,7 +80,7 @@ private void Awake() _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); ident = _probePrefab.AddComponent(); ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId",_probePrefab.GetComponent().assetId); + ident.SetValue("m_AssetId", _probePrefab.GetComponent().assetId); ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); diff --git a/QSB/QuantumUNET/QSBCRCMessage.cs b/QSB/QuantumUNET/QSBCRCMessage.cs index a1936e921..229de0ba1 100644 --- a/QSB/QuantumUNET/QSBCRCMessage.cs +++ b/QSB/QuantumUNET/QSBCRCMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBCRCMessageEntry.cs b/QSB/QuantumUNET/QSBCRCMessageEntry.cs index 5a78c51aa..54cdc56a3 100644 --- a/QSB/QuantumUNET/QSBCRCMessageEntry.cs +++ b/QSB/QuantumUNET/QSBCRCMessageEntry.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { struct QSBCRCMessageEntry { diff --git a/QSB/QuantumUNET/QSBChannelBuffer.cs b/QSB/QuantumUNET/QSBChannelBuffer.cs index 51f9dd4b2..0c6d3d135 100644 --- a/QSB/QuantumUNET/QSBChannelBuffer.cs +++ b/QSB/QuantumUNET/QSBChannelBuffer.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBChannelPacket.cs b/QSB/QuantumUNET/QSBChannelPacket.cs index 51b79d5d3..abc9c279f 100644 --- a/QSB/QuantumUNET/QSBChannelPacket.cs +++ b/QSB/QuantumUNET/QSBChannelPacket.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs index 2c6c577fd..50f8dc9cf 100644 --- a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs +++ b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBClientScene.cs b/QSB/QuantumUNET/QSBClientScene.cs index 85c13a8f7..10c0a033f 100644 --- a/QSB/QuantumUNET/QSBClientScene.cs +++ b/QSB/QuantumUNET/QSBClientScene.cs @@ -1,9 +1,6 @@ using QSB.Animation; using QSB.Utility; -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.NetworkSystem; diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs index 55512ec7d..cd2fb412f 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -1,8 +1,4 @@ -using QSB.Utility; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBNetBuffer.cs b/QSB/QuantumUNET/QSBNetBuffer.cs index 96f013183..9b58625b1 100644 --- a/QSB/QuantumUNET/QSBNetBuffer.cs +++ b/QSB/QuantumUNET/QSBNetBuffer.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBNetworkBehaviour.cs b/QSB/QuantumUNET/QSBNetworkBehaviour.cs index 78c08f0f4..87b6603e8 100644 --- a/QSB/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QSB/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using System.Net.Sockets; using UnityEngine; using UnityEngine.Networking; @@ -212,16 +211,16 @@ internal static string GetInvoker(int cmdHash) return result; } - internal static bool GetInvokerForHashCommand(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + internal static bool GetInvokerForHashCommand(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) => GetInvokerForHash(cmdHash, UNetInvokeType.Command, out invokeClass, out invokeFunction); - internal static bool GetInvokerForHashClientRpc(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + internal static bool GetInvokerForHashClientRpc(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) => GetInvokerForHash(cmdHash, UNetInvokeType.ClientRpc, out invokeClass, out invokeFunction); - internal static bool GetInvokerForHashSyncList(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + internal static bool GetInvokerForHashSyncList(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) => GetInvokerForHash(cmdHash, UNetInvokeType.SyncList, out invokeClass, out invokeFunction); - internal static bool GetInvokerForHashSyncEvent(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) + internal static bool GetInvokerForHashSyncEvent(int cmdHash, out Type invokeClass, out CmdDelegate invokeFunction) => GetInvokerForHash(cmdHash, UNetInvokeType.SyncEvent, out invokeClass, out invokeFunction); private static bool GetInvokerForHash(int cmdHash, UNetInvokeType invokeType, out Type invokeClass, out CmdDelegate invokeFunction) @@ -276,7 +275,7 @@ internal static void DumpInvokers() } } - internal bool ContainsCommandDelegate(int cmdHash) + internal bool ContainsCommandDelegate(int cmdHash) => s_CmdHandlerDelegates.ContainsKey(cmdHash); internal bool InvokeCommandDelegate(int cmdHash, NetworkReader reader) @@ -425,16 +424,16 @@ private static string GetCmdHashPrefixName(int cmdHash, string prefix) return result; } - internal static string GetCmdHashCmdName(int cmdHash) + internal static string GetCmdHashCmdName(int cmdHash) => GetCmdHashPrefixName(cmdHash, "InvokeCmd"); - internal static string GetCmdHashRpcName(int cmdHash) + internal static string GetCmdHashRpcName(int cmdHash) => GetCmdHashPrefixName(cmdHash, "InvokeRpc"); - internal static string GetCmdHashEventName(int cmdHash) + internal static string GetCmdHashEventName(int cmdHash) => GetCmdHashPrefixName(cmdHash, "InvokeSyncEvent"); - internal static string GetCmdHashListName(int cmdHash) + internal static string GetCmdHashListName(int cmdHash) => GetCmdHashPrefixName(cmdHash, "InvokeSyncList"); protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref NetworkInstanceId netIdField) diff --git a/QSB/QuantumUNET/QSBNetworkCRC.cs b/QSB/QuantumUNET/QSBNetworkCRC.cs index 4789a49be..d45f248b3 100644 --- a/QSB/QuantumUNET/QSBNetworkCRC.cs +++ b/QSB/QuantumUNET/QSBNetworkCRC.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBNetworkClient.cs b/QSB/QuantumUNET/QSBNetworkClient.cs index 2ddd54f15..b9644ec01 100644 --- a/QSB/QuantumUNET/QSBNetworkClient.cs +++ b/QSB/QuantumUNET/QSBNetworkClient.cs @@ -1,10 +1,8 @@ using QSB.Utility; using System; using System.Collections.Generic; -using System.Linq; using System.Net; using System.Net.Sockets; -using System.Text; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; diff --git a/QSB/QuantumUNET/QSBNetworkConnection.cs b/QSB/QuantumUNET/QSBNetworkConnection.cs index 2de09d462..b3c5969a7 100644 --- a/QSB/QuantumUNET/QSBNetworkConnection.cs +++ b/QSB/QuantumUNET/QSBNetworkConnection.cs @@ -1,7 +1,5 @@ -using QSB.QuantumUNET; -using System; +using System; using System.Collections.Generic; -using System.Linq; using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBNetworkIdentity.cs b/QSB/QuantumUNET/QSBNetworkIdentity.cs index f1af937f0..a9a1136b4 100644 --- a/QSB/QuantumUNET/QSBNetworkIdentity.cs +++ b/QSB/QuantumUNET/QSBNetworkIdentity.cs @@ -1,10 +1,9 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Networking; -using OWML.ModHelper.Events; -using QSB.Utility; namespace QSB.QuantumUNET { @@ -87,7 +86,7 @@ internal void ForceAuthority(bool authority) } } - + public ReadOnlyCollection Observers { diff --git a/QSB/QuantumUNET/QSBNetworkManagerHUD.cs b/QSB/QuantumUNET/QSBNetworkManagerHUD.cs index 3fda872ed..a8fc64f8f 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerHUD.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking.Match; diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs index 2aebddc43..14fe264a2 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -2,9 +2,7 @@ using QSB.Utility; using System; using System.Collections.Generic; -using System.Linq; using System.Net; -using System.Text; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; diff --git a/QSB/QuantumUNET/QSBNetworkMessage.cs b/QSB/QuantumUNET/QSBNetworkMessage.cs index 2b7d6e505..214fa5e79 100644 --- a/QSB/QuantumUNET/QSBNetworkMessage.cs +++ b/QSB/QuantumUNET/QSBNetworkMessage.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine.Networking; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs b/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs index 8dc3b7fbd..c52bcf40a 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public delegate void QSBNetworkMessageDelegate(QSBNetworkMessage netMsg); } diff --git a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs index 4727f151a..96aa1c4ef 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Generic; using UnityEngine; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs index 4414eb1b9..36e1b941e 100644 --- a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; diff --git a/QSB/QuantumUNET/QSBNetworkScene.cs b/QSB/QuantumUNET/QSBNetworkScene.cs index 16c2e2ecc..6dd02f64d 100644 --- a/QSB/QuantumUNET/QSBNetworkScene.cs +++ b/QSB/QuantumUNET/QSBNetworkScene.cs @@ -1,8 +1,5 @@ using QSB.Utility; -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index 647105992..d595ee938 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -4,8 +4,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; diff --git a/QSB/QuantumUNET/QSBNetworkServerSimple.cs b/QSB/QuantumUNET/QSBNetworkServerSimple.cs index 2474817eb..cccd2228c 100644 --- a/QSB/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QSB/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Types; diff --git a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs index 31e2a70d3..d2cacca66 100644 --- a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs +++ b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs index bc4f6c16a..8ee726cbe 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs index 2c64812dd..598fac9e5 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; +using UnityEngine; using UnityEngine.Networking; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs index 06aa75e07..794a7996b 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; +using UnityEngine; using UnityEngine.Networking; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBOwnerMessage.cs b/QSB/QuantumUNET/QSBOwnerMessage.cs index b3e734f17..043ace3fb 100644 --- a/QSB/QuantumUNET/QSBOwnerMessage.cs +++ b/QSB/QuantumUNET/QSBOwnerMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs index e651721f8..4f352b215 100644 --- a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs index 080296dfe..1f018ba13 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBUtility.cs b/QSB/QuantumUNET/QSBUtility.cs index 03fa13623..2165abe7f 100644 --- a/QSB/QuantumUNET/QSBUtility.cs +++ b/QSB/QuantumUNET/QSBUtility.cs @@ -1,7 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking.Types; diff --git a/QSB/SectorSync/QSBSector.cs b/QSB/SectorSync/QSBSector.cs index 8634d445c..1b39882e8 100644 --- a/QSB/SectorSync/QSBSector.cs +++ b/QSB/SectorSync/QSBSector.cs @@ -3,18 +3,18 @@ namespace QSB.SectorSync { - public class QSBSector : WorldObject - { - public Sector Sector { get; private set; } - public Sector.Name Type => Sector.GetName(); - public string Name => Sector.name; - public Transform Transform => Sector.transform; - public Vector3 Position => Transform.position; + public class QSBSector : WorldObject + { + public Sector Sector { get; private set; } + public Sector.Name Type => Sector.GetName(); + public string Name => Sector.name; + public Transform Transform => Sector.transform; + public Vector3 Position => Transform.position; - public void Init(Sector sector, int id) - { - Sector = sector; - ObjectId = id; - } - } + public void Init(Sector sector, int id) + { + Sector = sector; + ObjectId = id; + } + } } diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 504c8dba3..771643b06 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -6,48 +6,48 @@ namespace QSB.SectorSync { - public class QSBSectorManager : MonoBehaviour - { - public static QSBSectorManager Instance { get; private set; } + public class QSBSectorManager : MonoBehaviour + { + public static QSBSectorManager Instance { get; private set; } - public bool IsReady { get; private set; } + public bool IsReady { get; private set; } - private readonly Sector.Name[] _sectorBlacklist = - { - Sector.Name.Ship - }; + private readonly Sector.Name[] _sectorBlacklist = + { + Sector.Name.Ship + }; - private void Awake() - { - Instance = this; - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); - DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); - } - private void OnDestroy() - { - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); - } + private void Awake() + { + Instance = this; + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); + DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); + } + private void OnDestroy() + { + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); + } - public void RebuildSectors() - { - DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); - WorldRegistry.RemoveObjects(); - var sectors = Resources.FindObjectsOfTypeAll().ToList(); - for (var id = 0; id < sectors.Count; id++) - { - var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); - qsbSector.Init(sectors[id], id); - WorldRegistry.AddObject(qsbSector); - } - IsReady = WorldRegistry.GetObjects().Any(); - } + public void RebuildSectors() + { + DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); + WorldRegistry.RemoveObjects(); + var sectors = Resources.FindObjectsOfTypeAll().ToList(); + for (var id = 0; id < sectors.Count; id++) + { + var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); + qsbSector.Init(sectors[id], id); + WorldRegistry.AddObject(qsbSector); + } + IsReady = WorldRegistry.GetObjects().Any(); + } - public QSBSector GetClosestSector(Transform trans) - { - return WorldRegistry.GetObjects() - .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) - .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) - .First(); - } - } + public QSBSector GetClosestSector(Transform trans) + { + return WorldRegistry.GetObjects() + .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) + .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) + .First(); + } + } } diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 66950ee89..18f468896 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -5,45 +5,45 @@ namespace QSB.SectorSync { - public class SectorSync : MonoBehaviour - { - private const float CheckInterval = 0.5f; - private float _checkTimer = CheckInterval; + public class SectorSync : MonoBehaviour + { + private const float CheckInterval = 0.5f; + private float _checkTimer = CheckInterval; - private void Update() - { - if (!QSBSectorManager.Instance.IsReady) - { - return; - } - _checkTimer += Time.unscaledDeltaTime; - if (_checkTimer < CheckInterval) - { - return; - } - QSBPlayerManager.GetSyncObjects().Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); - _checkTimer = 0; - } + private void Update() + { + if (!QSBSectorManager.Instance.IsReady) + { + return; + } + _checkTimer += Time.unscaledDeltaTime; + if (_checkTimer < CheckInterval) + { + return; + } + QSBPlayerManager.GetSyncObjects().Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); + _checkTimer = 0; + } - private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) - { - var syncedTransform = transformSync.SyncedTransform; - if (syncedTransform == null || syncedTransform.position == Vector3.zero) - { - return; - } - var closestSector = QSBSectorManager.Instance.GetClosestSector(syncedTransform); - if (closestSector == transformSync.ReferenceSector) - { - return; - } - transformSync.SetReferenceSector(closestSector); - SendSector(transformSync.NetId.Value, closestSector); - } + private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) + { + var syncedTransform = transformSync.SyncedTransform; + if (syncedTransform == null || syncedTransform.position == Vector3.zero) + { + return; + } + var closestSector = QSBSectorManager.Instance.GetClosestSector(syncedTransform); + if (closestSector == transformSync.ReferenceSector) + { + return; + } + transformSync.SetReferenceSector(closestSector); + SendSector(transformSync.NetId.Value, closestSector); + } - private void SendSector(uint id, QSBSector sector) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); - } - } + private void SendSector(uint id, QSBSector sector) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); + } + } } diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index c3829b76e..77d9364aa 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -2,26 +2,26 @@ namespace QSB.TimeSync.Events { - public class ServerTimeEvent : QSBEvent - { - public override EventType Type => EventType.ServerTime; + public class ServerTimeEvent : QSBEvent + { + public override EventType Type => EventType.ServerTime; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); - private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); + private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); - private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage - { - AboutId = LocalPlayerId, - ServerTime = time, - LoopCount = count - }; + private ServerTimeMessage CreateMessage(float time, int count) => new ServerTimeMessage + { + AboutId = LocalPlayerId, + ServerTime = time, + LoopCount = count + }; - public override void OnReceiveRemote(ServerTimeMessage message) - { - WakeUpSync.LocalInstance.OnClientReceiveMessage(message); - } - } + public override void OnReceiveRemote(ServerTimeMessage message) + { + WakeUpSync.LocalInstance.OnClientReceiveMessage(message); + } + } } diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 9831ed726..8f31071a4 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -3,23 +3,23 @@ namespace QSB.TimeSync.Events { - public class ServerTimeMessage : PlayerMessage - { - public float ServerTime { get; set; } - public int LoopCount { get; set; } + public class ServerTimeMessage : PlayerMessage + { + public float ServerTime { get; set; } + public int LoopCount { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ServerTime = reader.ReadSingle(); - LoopCount = reader.ReadInt16(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ServerTime = reader.ReadSingle(); + LoopCount = reader.ReadInt16(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ServerTime); - writer.Write(LoopCount); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ServerTime); + writer.Write(LoopCount); + } + } } \ No newline at end of file diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index 23b58872f..1b3dc1e71 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -1,6 +1,5 @@ using OWML.ModHelper.Events; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.TimeSync { diff --git a/QSB/TimeSync/TimeSyncType.cs b/QSB/TimeSync/TimeSyncType.cs index 2fe1ca0c1..6556cbeca 100644 --- a/QSB/TimeSync/TimeSyncType.cs +++ b/QSB/TimeSync/TimeSyncType.cs @@ -1,9 +1,9 @@ namespace QSB.TimeSync { - public enum TimeSyncType - { - None, - Pausing, - Fastforwarding - } + public enum TimeSyncType + { + None, + Pausing, + Fastforwarding + } } diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index 8bd2bffaf..65364a8e9 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -2,22 +2,22 @@ namespace QSB.TimeSync { - public class WakeUpPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; + public class WakeUpPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnNonServerClientConnect; - public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) - { - if (__instance.gameObject.CompareTag("MainCamera") && QSBSceneManager.CurrentScene != OWScene.EyeOfTheUniverse) - { - __instance.Invoke("WakeUp"); - } - return false; - } + public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __instance) + { + if (__instance.gameObject.CompareTag("MainCamera") && QSBSceneManager.CurrentScene != OWScene.EyeOfTheUniverse) + { + __instance.Invoke("WakeUp"); + } + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); + } + } } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 74c4d58bd..45723a6f5 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -4,7 +4,6 @@ using QSB.TimeSync.Events; using QSB.Utility; using UnityEngine; -using UnityEngine.Networking; namespace QSB.TimeSync { diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 10a71aaef..3cc770c83 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerFlashlightEvent : QSBEvent - { - public override EventType Type => EventType.FlashlightActiveChange; + public class PlayerFlashlightEvent : QSBEvent + { + public override EventType Type => EventType.FlashlightActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.TurnOnFlashlight, HandleTurnOn); - GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, HandleTurnOff); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.TurnOnFlashlight, HandleTurnOn); + GlobalMessenger.AddListener(EventNames.TurnOffFlashlight, HandleTurnOff); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, HandleTurnOn); - GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, HandleTurnOff); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.TurnOnFlashlight, HandleTurnOn); + GlobalMessenger.RemoveListener(EventNames.TurnOffFlashlight, HandleTurnOff); + } - private void HandleTurnOn() => SendEvent(CreateMessage(true)); - private void HandleTurnOff() => SendEvent(CreateMessage(false)); + private void HandleTurnOn() => SendEvent(CreateMessage(true)); + private void HandleTurnOff() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Flashlight, message.ToggleValue); - player.FlashLight?.UpdateState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Flashlight, message.ToggleValue); + player.FlashLight?.UpdateState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index de6fa3435..638223560 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerProbeEvent : QSBEvent - { - public override EventType Type => EventType.ProbeActiveChange; + public class PlayerProbeEvent : QSBEvent + { + public override EventType Type => EventType.ProbeActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.LaunchProbe, HandleLaunch); - GlobalMessenger.AddListener(EventNames.RetrieveProbe, HandleRetrieve); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.LaunchProbe, HandleLaunch); + GlobalMessenger.AddListener(EventNames.RetrieveProbe, HandleRetrieve); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.LaunchProbe, HandleLaunch); - GlobalMessenger.RemoveListener(EventNames.RetrieveProbe, HandleRetrieve); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.LaunchProbe, HandleLaunch); + GlobalMessenger.RemoveListener(EventNames.RetrieveProbe, HandleRetrieve); + } - private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); - private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); + private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); + private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.ProbeActive, message.ToggleValue); - player.Probe?.SetState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.ProbeActive, message.ToggleValue); + player.Probe?.SetState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 38e8651cb..4973595dc 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerProbeLauncherEvent : QSBEvent - { - public override EventType Type => EventType.ProbeLauncherActiveChange; + public class PlayerProbeLauncherEvent : QSBEvent + { + public override EventType Type => EventType.ProbeLauncherActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.ProbeLauncherEquipped, HandleEquip); - GlobalMessenger.AddListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.ProbeLauncherEquipped, HandleEquip); + GlobalMessenger.AddListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.ProbeLauncherEquipped, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.ProbeLauncherEquipped, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.ProbeLauncherUnequipped, HandleUnequip); + } - private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); - private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); + private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); + private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.ProbeLauncher, message.ToggleValue); - player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.ProbeLauncher, message.ToggleValue); + player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 9a7f0bc19..f0c4461d7 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerSignalscopeEvent : QSBEvent - { - public override EventType Type => EventType.SignalscopeActiveChange; + public class PlayerSignalscopeEvent : QSBEvent + { + public override EventType Type => EventType.SignalscopeActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.EquipSignalscope, HandleEquip); - GlobalMessenger.AddListener(EventNames.UnequipSignalscope, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.EquipSignalscope, HandleEquip); + GlobalMessenger.AddListener(EventNames.UnequipSignalscope, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.EquipSignalscope, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.EquipSignalscope, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.UnequipSignalscope, HandleUnequip); + } - private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); + private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Signalscope, message.ToggleValue); - player.Signalscope?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Signalscope, message.ToggleValue); + player.Signalscope?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); + } + } } diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 9c3f05a35..741aeda3e 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -4,41 +4,41 @@ namespace QSB.Tools.Events { - public class PlayerTranslatorEvent : QSBEvent - { - public override EventType Type => EventType.TranslatorActiveChange; + public class PlayerTranslatorEvent : QSBEvent + { + public override EventType Type => EventType.TranslatorActiveChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.EquipTranslator, HandleEquip); - GlobalMessenger.AddListener(EventNames.UnequipTranslator, HandleUnequip); - } + public override void SetupListener() + { + GlobalMessenger.AddListener(EventNames.EquipTranslator, HandleEquip); + GlobalMessenger.AddListener(EventNames.UnequipTranslator, HandleUnequip); + } - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.EquipTranslator, HandleEquip); - GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, HandleUnequip); - } + public override void CloseListener() + { + GlobalMessenger.RemoveListener(EventNames.EquipTranslator, HandleEquip); + GlobalMessenger.RemoveListener(EventNames.UnequipTranslator, HandleUnequip); + } - private void HandleEquip() => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); + private void HandleEquip() => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); - private ToggleMessage CreateMessage(bool value) => new ToggleMessage - { - AboutId = LocalPlayerId, - ToggleValue = value - }; + private ToggleMessage CreateMessage(bool value) => new ToggleMessage + { + AboutId = LocalPlayerId, + ToggleValue = value + }; - public override void OnReceiveRemote(ToggleMessage message) - { - var player = QSBPlayerManager.GetPlayer(message.AboutId); - player.UpdateState(State.Translator, message.ToggleValue); - player.Translator?.ChangeEquipState(message.ToggleValue); - } + public override void OnReceiveRemote(ToggleMessage message) + { + var player = QSBPlayerManager.GetPlayer(message.AboutId); + player.UpdateState(State.Translator, message.ToggleValue); + player.Translator?.ChangeEquipState(message.ToggleValue); + } - public override void OnReceiveLocal(ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); - } - } + public override void OnReceiveLocal(ToggleMessage message) + { + QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); + } + } } diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index e368fbabd..096687871 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -6,191 +6,191 @@ namespace QSB.Tools { - public class PlayerToolsManager - { - private static Transform _toolStowTransform; - private static Transform _toolHoldTransform; - private static Material _playerToolsMaterial; - private static Material _lightbulbMaterial; - - private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); - private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); - private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); - private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); - - public static void Init(Transform camera) - { - CreateStowTransforms(camera); - - if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) - { - _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; - _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; - } - else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) - { - // EyeCompatibility : Get these materials another way. - _playerToolsMaterial = null; - _lightbulbMaterial = null; - } - - CreateFlashlight(camera); - CreateSignalscope(camera); - CreateProbeLauncher(camera); - CreateTranslator(camera); - } - - public static void CreateProbe(Transform body, PlayerInfo player) - { - var newProbe = body.gameObject.AddComponent(); - player.Probe = newProbe; - } - - private static void CreateStowTransforms(Transform cameraBody) - { - var stow = new GameObject("ToolStowTransform"); - _toolStowTransform = stow.transform; - stow.transform.parent = cameraBody; - stow.transform.localPosition = Vector3.zero; - stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); - - var hold = new GameObject("ToolHoldTransform"); - _toolHoldTransform = hold.transform; - hold.transform.parent = cameraBody; - hold.transform.localPosition = Vector3.zero; - hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); - } - - private static GameObject CreateFlashlight(Transform cameraBody) - { - var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); - flashlightRoot.SetActive(false); - var oldComponent = flashlightRoot.GetComponent(); - var component = flashlightRoot.AddComponent(); - - component.Init(oldComponent); - oldComponent.enabled = false; - - flashlightRoot.transform.parent = cameraBody; - flashlightRoot.transform.localPosition = FlashlightOffset; - flashlightRoot.SetActive(true); - - return flashlightRoot; - } - - private static GameObject CreateSignalscope(Transform cameraBody) - { - var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); - signalscopeRoot.SetActive(false); - - Object.Destroy(signalscopeRoot.GetComponent()); - Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") - .Find("Props_HEA_Signalscope_Prepass").gameObject); - - var oldSignalscope = signalscopeRoot.GetComponent(); - var tool = signalscopeRoot.AddComponent(); - tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Signalscope; - tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; - oldSignalscope.enabled = false; - - GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial; - - signalscopeRoot.transform.parent = cameraBody; - signalscopeRoot.transform.localPosition = Vector3.zero; - signalscopeRoot.transform.localScale = SignalscopeScale; - signalscopeRoot.SetActive(true); - - return signalscopeRoot; - } - - private static GameObject CreateTranslator(Transform cameraBody) - { - var original = GameObject.Find("NomaiTranslatorProp"); - - var translatorRoot = original.InstantiateInactive(); - - var group = translatorRoot.transform.Find("TranslatorGroup"); - var model = group.Find("Props_HEA_Translator"); - - Object.Destroy(translatorRoot.GetComponent()); - Object.Destroy(group.Find("Canvas").gameObject); - Object.Destroy(group.Find("Lighting").gameObject); - Object.Destroy(group.Find("TranslatorBeams").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); - - var oldTranslator = translatorRoot.GetComponent(); - var tool = translatorRoot.AddComponent(); - tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Translator; - tool.ToolGameObject = group.gameObject; - Object.Destroy(oldTranslator); - - GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial; - - translatorRoot.transform.parent = cameraBody; - translatorRoot.transform.localPosition = Vector3.zero; - translatorRoot.transform.localScale = TranslatorScale; - QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); - - return translatorRoot; - } - - private static GameObject CreateProbeLauncher(Transform cameraBody) - { - var launcherRoot = new GameObject("ProbeLauncher"); - var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); - var model = Object.Instantiate(modelOrig); - model.transform.parent = launcherRoot.transform; - - Object.Destroy(model.transform.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); - Object.Destroy(model.transform.Find("Props_HEA_Probe_Prelaunch").Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); - - var tool = launcherRoot.AddComponent(); - var spring = new DampedSpringQuat - { - velocity = Vector4.zero, - settings = new DampedSpringSettings - { - springConstant = 50f, - dampingCoefficient = 8.485282f, - mass = 1 - } - }; - tool.MoveSpring = spring; - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.ProbeLauncher; - tool.ToolGameObject = model; - - GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[0] = _playerToolsMaterial; - GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[1] = _lightbulbMaterial; - GetRenderer(launcherRoot, "PressureGauge_Arrow").material = _playerToolsMaterial; - GetRenderer(launcherRoot, "ProbeLauncherChassis").material = _playerToolsMaterial; - - launcherRoot.transform.parent = cameraBody; - launcherRoot.transform.localPosition = ProbeLauncherOffset; - launcherRoot.SetActive(true); - - return launcherRoot; - } - - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) - { - return root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); - } - } + public class PlayerToolsManager + { + private static Transform _toolStowTransform; + private static Transform _toolHoldTransform; + private static Material _playerToolsMaterial; + private static Material _lightbulbMaterial; + + private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); + private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); + private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); + private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); + + public static void Init(Transform camera) + { + CreateStowTransforms(camera); + + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) + { + _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; + _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; + } + else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) + { + // EyeCompatibility : Get these materials another way. + _playerToolsMaterial = null; + _lightbulbMaterial = null; + } + + CreateFlashlight(camera); + CreateSignalscope(camera); + CreateProbeLauncher(camera); + CreateTranslator(camera); + } + + public static void CreateProbe(Transform body, PlayerInfo player) + { + var newProbe = body.gameObject.AddComponent(); + player.Probe = newProbe; + } + + private static void CreateStowTransforms(Transform cameraBody) + { + var stow = new GameObject("ToolStowTransform"); + _toolStowTransform = stow.transform; + stow.transform.parent = cameraBody; + stow.transform.localPosition = Vector3.zero; + stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); + + var hold = new GameObject("ToolHoldTransform"); + _toolHoldTransform = hold.transform; + hold.transform.parent = cameraBody; + hold.transform.localPosition = Vector3.zero; + hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); + } + + private static GameObject CreateFlashlight(Transform cameraBody) + { + var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); + flashlightRoot.SetActive(false); + var oldComponent = flashlightRoot.GetComponent(); + var component = flashlightRoot.AddComponent(); + + component.Init(oldComponent); + oldComponent.enabled = false; + + flashlightRoot.transform.parent = cameraBody; + flashlightRoot.transform.localPosition = FlashlightOffset; + flashlightRoot.SetActive(true); + + return flashlightRoot; + } + + private static GameObject CreateSignalscope(Transform cameraBody) + { + var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); + signalscopeRoot.SetActive(false); + + Object.Destroy(signalscopeRoot.GetComponent()); + Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") + .Find("Props_HEA_Signalscope_Prepass").gameObject); + + var oldSignalscope = signalscopeRoot.GetComponent(); + var tool = signalscopeRoot.AddComponent(); + tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Signalscope; + tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; + oldSignalscope.enabled = false; + + GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = _playerToolsMaterial; + + signalscopeRoot.transform.parent = cameraBody; + signalscopeRoot.transform.localPosition = Vector3.zero; + signalscopeRoot.transform.localScale = SignalscopeScale; + signalscopeRoot.SetActive(true); + + return signalscopeRoot; + } + + private static GameObject CreateTranslator(Transform cameraBody) + { + var original = GameObject.Find("NomaiTranslatorProp"); + + var translatorRoot = original.InstantiateInactive(); + + var group = translatorRoot.transform.Find("TranslatorGroup"); + var model = group.Find("Props_HEA_Translator"); + + Object.Destroy(translatorRoot.GetComponent()); + Object.Destroy(group.Find("Canvas").gameObject); + Object.Destroy(group.Find("Lighting").gameObject); + Object.Destroy(group.Find("TranslatorBeams").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); + + var oldTranslator = translatorRoot.GetComponent(); + var tool = translatorRoot.AddComponent(); + tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Translator; + tool.ToolGameObject = group.gameObject; + Object.Destroy(oldTranslator); + + GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = _playerToolsMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = _playerToolsMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = _lightbulbMaterial; + GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = _lightbulbMaterial; + + translatorRoot.transform.parent = cameraBody; + translatorRoot.transform.localPosition = Vector3.zero; + translatorRoot.transform.localScale = TranslatorScale; + QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + + return translatorRoot; + } + + private static GameObject CreateProbeLauncher(Transform cameraBody) + { + var launcherRoot = new GameObject("ProbeLauncher"); + var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); + var model = Object.Instantiate(modelOrig); + model.transform.parent = launcherRoot.transform; + + Object.Destroy(model.transform.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); + Object.Destroy(model.transform.Find("Props_HEA_Probe_Prelaunch").Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); + + var tool = launcherRoot.AddComponent(); + var spring = new DampedSpringQuat + { + velocity = Vector4.zero, + settings = new DampedSpringSettings + { + springConstant = 50f, + dampingCoefficient = 8.485282f, + mass = 1 + } + }; + tool.MoveSpring = spring; + tool.StowTransform = _toolStowTransform; + tool.HoldTransform = _toolHoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.ProbeLauncher; + tool.ToolGameObject = model; + + GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[0] = _playerToolsMaterial; + GetRenderer(launcherRoot, "Props_HEA_Probe_Prelaunch").materials[1] = _lightbulbMaterial; + GetRenderer(launcherRoot, "PressureGauge_Arrow").material = _playerToolsMaterial; + GetRenderer(launcherRoot, "ProbeLauncherChassis").material = _playerToolsMaterial; + + launcherRoot.transform.parent = cameraBody; + launcherRoot.transform.localPosition = ProbeLauncherOffset; + launcherRoot.SetActive(true); + + return launcherRoot; + } + + private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) + { + return root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); + } + } } \ No newline at end of file diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs index 0564aa513..e26196aac 100644 --- a/QSB/Tools/ProbePatches.cs +++ b/QSB/Tools/ProbePatches.cs @@ -2,28 +2,28 @@ namespace QSB.Tools { - public class ProbePatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; + public class ProbePatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - private static void ProbeAnchor() - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); - } + private static void ProbeAnchor() + { + GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); + } - private static bool ProbeWarp(ref bool ____isRetrieving) - { - if (!____isRetrieving) - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); - } - return true; - } + private static bool ProbeWarp(ref bool ____isRetrieving) + { + if (!____isRetrieving) + { + GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); + } + return true; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); - QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); + QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); + } + } } diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index bf9a32d55..2c1860576 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -3,82 +3,82 @@ namespace QSB.Tools { - public class QSBFlashlight : MonoBehaviour - { - private OWLight2[] _lights; - private Transform _root; - private Transform _basePivot; - private Transform _wobblePivot; + public class QSBFlashlight : MonoBehaviour + { + private OWLight2[] _lights; + private Transform _root; + private Transform _basePivot; + private Transform _wobblePivot; - private bool _flashlightOn; - private Vector3 _baseForward; - private Quaternion _baseRotation; + private bool _flashlightOn; + private Vector3 _baseForward; + private Quaternion _baseRotation; - private void Start() - { - _baseForward = _basePivot.forward; - _baseRotation = _basePivot.rotation; - } + private void Start() + { + _baseForward = _basePivot.forward; + _baseRotation = _basePivot.rotation; + } - public void Init(Flashlight oldComponent) - { - _lights = oldComponent.GetValue("_lights"); - _root = oldComponent.GetValue("_root"); - _basePivot = oldComponent.GetValue("_basePivot"); - _wobblePivot = oldComponent.GetValue("_wobblePivot"); - } + public void Init(Flashlight oldComponent) + { + _lights = oldComponent.GetValue("_lights"); + _root = oldComponent.GetValue("_root"); + _basePivot = oldComponent.GetValue("_basePivot"); + _wobblePivot = oldComponent.GetValue("_wobblePivot"); + } - public void UpdateState(bool value) - { - if (value) - { - TurnOn(); - } - else - { - TurnOff(); - } - } + public void UpdateState(bool value) + { + if (value) + { + TurnOn(); + } + else + { + TurnOff(); + } + } - private void TurnOn() - { - if (_flashlightOn) - { - return; - } - foreach (var light in _lights) - { - light.GetLight().enabled = true; - } - _flashlightOn = true; - var rotation = _root.rotation; - _basePivot.rotation = rotation; - _baseRotation = rotation; - _baseForward = _basePivot.forward; - } + private void TurnOn() + { + if (_flashlightOn) + { + return; + } + foreach (var light in _lights) + { + light.GetLight().enabled = true; + } + _flashlightOn = true; + var rotation = _root.rotation; + _basePivot.rotation = rotation; + _baseRotation = rotation; + _baseForward = _basePivot.forward; + } - private void TurnOff() - { - if (!_flashlightOn) - { - return; - } - foreach (var light in _lights) - { - light.GetLight().enabled = false; - } - _flashlightOn = false; - } + private void TurnOff() + { + if (!_flashlightOn) + { + return; + } + foreach (var light in _lights) + { + light.GetLight().enabled = false; + } + _flashlightOn = false; + } - private void FixedUpdate() - { - // This really isn't needed... but it makes it look that extra bit nicer. - var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); - var b = lhs * _baseRotation; - _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); - _basePivot.rotation = _baseRotation; - _baseForward = _basePivot.forward; - _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; - } - } + private void FixedUpdate() + { + // This really isn't needed... but it makes it look that extra bit nicer. + var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); + var b = lhs * _baseRotation; + _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); + _basePivot.rotation = _baseRotation; + _baseForward = _basePivot.forward; + _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; + } + } } diff --git a/QSB/Tools/QSBProbe.cs b/QSB/Tools/QSBProbe.cs index fece67832..aa876086b 100644 --- a/QSB/Tools/QSBProbe.cs +++ b/QSB/Tools/QSBProbe.cs @@ -3,29 +3,29 @@ namespace QSB.Tools { - public class QSBProbe : MonoBehaviour - { - public void SetState(bool state) - { - if (state) - { - Activate(); - } - else - { - Deactivate(); - } - } + public class QSBProbe : MonoBehaviour + { + public void SetState(bool state) + { + if (state) + { + Activate(); + } + else + { + Deactivate(); + } + } - private void Activate() - { - gameObject.SetActive(true); - gameObject.Show(); - } + private void Activate() + { + gameObject.SetActive(true); + gameObject.Show(); + } - private void Deactivate() - { - gameObject.Hide(); - } - } + private void Deactivate() + { + gameObject.Hide(); + } + } } diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index 40a26e3d2..237c13f30 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -2,55 +2,55 @@ namespace QSB.Tools { - public class QSBTool : PlayerTool - { - public ToolType Type { get; set; } - public GameObject ToolGameObject { get; set; } - - public DampedSpringQuat MoveSpring - { - get => _moveSpring; - set => _moveSpring = value; - } - - public Transform StowTransform - { - get => _stowTransform; - set => _stowTransform = value; - } - - public Transform HoldTransform - { - get => _holdTransform; - set => _holdTransform = value; - } - - public float ArrivalDegrees - { - get => _arrivalDegrees; - set => _arrivalDegrees = value; - } - - private void OnEnable() - { - ToolGameObject?.SetActive(true); - } - - private void OnDisable() - { - ToolGameObject?.SetActive(false); - } - - public void ChangeEquipState(bool equipState) - { - if (equipState) - { - EquipTool(); - } - else - { - UnequipTool(); - } - } - } + public class QSBTool : PlayerTool + { + public ToolType Type { get; set; } + public GameObject ToolGameObject { get; set; } + + public DampedSpringQuat MoveSpring + { + get => _moveSpring; + set => _moveSpring = value; + } + + public Transform StowTransform + { + get => _stowTransform; + set => _stowTransform = value; + } + + public Transform HoldTransform + { + get => _holdTransform; + set => _holdTransform = value; + } + + public float ArrivalDegrees + { + get => _arrivalDegrees; + set => _arrivalDegrees = value; + } + + private void OnEnable() + { + ToolGameObject?.SetActive(true); + } + + private void OnDisable() + { + ToolGameObject?.SetActive(false); + } + + public void ChangeEquipState(bool equipState) + { + if (equipState) + { + EquipTool(); + } + else + { + UnequipTool(); + } + } + } } \ No newline at end of file diff --git a/QSB/Tools/ToolType.cs b/QSB/Tools/ToolType.cs index 1021097df..a1e2a7efd 100644 --- a/QSB/Tools/ToolType.cs +++ b/QSB/Tools/ToolType.cs @@ -1,9 +1,9 @@ namespace QSB.Tools { - public enum ToolType - { - Signalscope, - ProbeLauncher, - Translator - } + public enum ToolType + { + Signalscope, + ProbeLauncher, + Translator + } } \ No newline at end of file diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 3b58490e9..bcde3f8cc 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -2,7 +2,6 @@ using QSB.Utility; using QSB.WorldSync; using UnityEngine; -using UnityEngine.Networking; namespace QSB.TransformSync { diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index c81622515..96f85616c 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -2,44 +2,44 @@ namespace QSB.Utility { - public class DebugActions : MonoBehaviour - { - private void GoToVessel() - { - var spawnPoint = GameObject.Find("Spawn_Vessel").GetComponent(); + public class DebugActions : MonoBehaviour + { + private void GoToVessel() + { + var spawnPoint = GameObject.Find("Spawn_Vessel").GetComponent(); - var playerBody = Locator.GetPlayerBody(); - playerBody.WarpToPositionRotation(spawnPoint.transform.position, spawnPoint.transform.rotation); - playerBody.SetVelocity(spawnPoint.GetPointVelocity()); - } + var playerBody = Locator.GetPlayerBody(); + playerBody.WarpToPositionRotation(spawnPoint.transform.position, spawnPoint.transform.rotation); + playerBody.SetVelocity(spawnPoint.GetPointVelocity()); + } - private void InsertWarpCore() - { - var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); - var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); - socket.PlaceIntoSocket(warpCore); + private void InsertWarpCore() + { + var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); + var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); + socket.PlaceIntoSocket(warpCore); - GetComponent().SetPillarRaised(true, true); - } + GetComponent().SetPillarRaised(true, true); + } - private void Update() - { - if (!QSB.DebugMode) - { - return; - } - if (Input.GetKeyDown(KeyCode.Keypad1)) - { - GoToVessel(); - } - if (Input.GetKeyDown(KeyCode.Keypad2)) - { - InsertWarpCore(); - } - if (Input.GetKeyDown(KeyCode.Keypad3)) - { - LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); - } - } - } + private void Update() + { + if (!QSB.DebugMode) + { + return; + } + if (Input.GetKeyDown(KeyCode.Keypad1)) + { + GoToVessel(); + } + if (Input.GetKeyDown(KeyCode.Keypad2)) + { + InsertWarpCore(); + } + if (Input.GetKeyDown(KeyCode.Keypad3)) + { + LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); + } + } + } } \ No newline at end of file diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index 141e56017..a49870676 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -5,48 +5,48 @@ namespace QSB.Utility { - public static class DebugLog - { - public static void ToConsole(string message, MessageType type = MessageType.Message) - { - // make custom method name in owml log. - // i wrote the owml code for this so this is fine?? shut up i dont want to change owml - var console = (ModSocketOutput)QSB.Helper.Console; - var method = console.GetType() - .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) - .Last(x => x.Name == "WriteLine"); - var callingType = GetCallingType(new StackTrace()); - method.Invoke(console, new object[] { type, message, callingType }); - } + public static class DebugLog + { + public static void ToConsole(string message, MessageType type = MessageType.Message) + { + // make custom method name in owml log. + // i wrote the owml code for this so this is fine?? shut up i dont want to change owml + var console = (ModSocketOutput)QSB.Helper.Console; + var method = console.GetType() + .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) + .Last(x => x.Name == "WriteLine"); + var callingType = GetCallingType(new StackTrace()); + method.Invoke(console, new object[] { type, message, callingType }); + } - public static void ToHud(string message) - { - if (Locator.GetPlayerBody() == null) - { - return; - } - var data = new NotificationData(NotificationTarget.Player, message.ToUpper()); - NotificationManager.SharedInstance.PostNotification(data); - } + public static void ToHud(string message) + { + if (Locator.GetPlayerBody() == null) + { + return; + } + var data = new NotificationData(NotificationTarget.Player, message.ToUpper()); + NotificationManager.SharedInstance.PostNotification(data); + } - public static void ToAll(string message, MessageType type = MessageType.Message) - { - ToConsole(message, type); - ToHud(message); - } + public static void ToAll(string message, MessageType type = MessageType.Message) + { + ToConsole(message, type); + ToHud(message); + } - public static void DebugWrite(string message, MessageType type = MessageType.Message) - { - if (QSB.DebugMode) - { - ToConsole(message, type); - } - } + public static void DebugWrite(string message, MessageType type = MessageType.Message) + { + if (QSB.DebugMode) + { + ToConsole(message, type); + } + } - private static string GetCallingType(StackTrace frame) - { - var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); - return stackFrame.GetMethod().DeclaringType.Name; - } - } + private static string GetCallingType(StackTrace frame) + { + var stackFrame = frame.GetFrames().First(x => x.GetMethod().DeclaringType.Name != "DebugLog"); + return stackFrame.GetMethod().DeclaringType.Name; + } + } } diff --git a/QSB/Utility/FlagsHelper.cs b/QSB/Utility/FlagsHelper.cs index 2854cf0bc..c68b8e926 100644 --- a/QSB/Utility/FlagsHelper.cs +++ b/QSB/Utility/FlagsHelper.cs @@ -1,31 +1,31 @@ namespace QSB.Utility { - // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp + // Stolen from here : https://stackoverflow.com/questions/3261451/using-a-bitmask-in-c-sharp - public static class FlagsHelper - { - public static bool IsSet(T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static class FlagsHelper + { + public static bool IsSet(T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - return (flagsValue & flagValue) != 0; - } + return (flagsValue & flagValue) != 0; + } - public static void Set(ref T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static void Set(ref T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - flags = (T)(object)(flagsValue | flagValue); - } + flags = (T)(object)(flagsValue | flagValue); + } - public static void Unset(ref T flags, T flag) where T : struct - { - var flagsValue = (int)(object)flags; - var flagValue = (int)(object)flag; + public static void Unset(ref T flags, T flag) where T : struct + { + var flagsValue = (int)(object)flags; + var flagValue = (int)(object)flag; - flags = (T)(object)(flagsValue & ~flagValue); - } - } + flags = (T)(object)(flagsValue & ~flagValue); + } + } } diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index 9d1e53e54..e734ac455 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -2,32 +2,32 @@ namespace QSB.Utility { - public static class GOExtensions - { - public static void Show(this GameObject gameObject) => SetVisibility(gameObject, true); + public static class GOExtensions + { + public static void Show(this GameObject gameObject) => SetVisibility(gameObject, true); - public static void Hide(this GameObject gameObject) => SetVisibility(gameObject, false); + public static void Hide(this GameObject gameObject) => SetVisibility(gameObject, false); - private static void SetVisibility(GameObject gameObject, bool isVisible) - { - var renderers = gameObject.GetComponentsInChildren(); - foreach (var renderer in renderers) - { - renderer.enabled = isVisible; - } - } + private static void SetVisibility(GameObject gameObject, bool isVisible) + { + var renderers = gameObject.GetComponentsInChildren(); + foreach (var renderer in renderers) + { + renderer.enabled = isVisible; + } + } - public static GameObject InstantiateInactive(this GameObject original) - { - original.SetActive(false); - var copy = Object.Instantiate(original); - original.SetActive(true); - return copy; - } + public static GameObject InstantiateInactive(this GameObject original) + { + original.SetActive(false); + var copy = Object.Instantiate(original); + original.SetActive(true); + return copy; + } - public static Transform InstantiateInactive(this Transform original) - { - return original.gameObject.InstantiateInactive().transform; - } - } + public static Transform InstantiateInactive(this Transform original) + { + return original.gameObject.InstantiateInactive().transform; + } + } } diff --git a/QSB/Utility/ListExtensions.cs b/QSB/Utility/ListExtensions.cs index c0ae8fddf..b01174049 100644 --- a/QSB/Utility/ListExtensions.cs +++ b/QSB/Utility/ListExtensions.cs @@ -3,18 +3,18 @@ namespace QSB.Utility { - public static class ListExtensions - { - public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) - { - var seenKeys = new HashSet(); - foreach (var element in source) - { - if (seenKeys.Add(keySelector(element))) - { - yield return element; - } - } - } - } + public static class ListExtensions + { + public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) + { + var seenKeys = new HashSet(); + foreach (var element in source) + { + if (seenKeys.Add(keySelector(element))) + { + yield return element; + } + } + } + } } diff --git a/QSB/Utility/QuaternionHelper.cs b/QSB/Utility/QuaternionHelper.cs index 8be8a0dee..363f5f9c3 100644 --- a/QSB/Utility/QuaternionHelper.cs +++ b/QSB/Utility/QuaternionHelper.cs @@ -2,32 +2,32 @@ namespace QSB.Utility { - public static class QuaternionHelper - { - // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b - public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) - { - // account for double-cover - var dot = Quaternion.Dot(rot, target); - var multi = dot > 0f ? 1f : -1f; - target.x *= multi; - target.y *= multi; - target.z *= multi; - target.w *= multi; - // smooth damp (nlerp approx) - var result = new Vector4( - Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), - Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), - Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), - Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) - ).normalized; - // compute deriv - var dtInv = 1f / Time.deltaTime; - deriv.x = (result.x - rot.x) * dtInv; - deriv.y = (result.y - rot.y) * dtInv; - deriv.z = (result.z - rot.z) * dtInv; - deriv.w = (result.w - rot.w) * dtInv; - return new Quaternion(result.x, result.y, result.z, result.w); - } - } + public static class QuaternionHelper + { + // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b + public static Quaternion SmoothDamp(Quaternion rot, Quaternion target, ref Quaternion deriv, float time) + { + // account for double-cover + var dot = Quaternion.Dot(rot, target); + var multi = dot > 0f ? 1f : -1f; + target.x *= multi; + target.y *= multi; + target.z *= multi; + target.w *= multi; + // smooth damp (nlerp approx) + var result = new Vector4( + Mathf.SmoothDamp(rot.x, target.x, ref deriv.x, time), + Mathf.SmoothDamp(rot.y, target.y, ref deriv.y, time), + Mathf.SmoothDamp(rot.z, target.z, ref deriv.z, time), + Mathf.SmoothDamp(rot.w, target.w, ref deriv.w, time) + ).normalized; + // compute deriv + var dtInv = 1f / Time.deltaTime; + deriv.x = (result.x - rot.x) * dtInv; + deriv.y = (result.y - rot.y) * dtInv; + deriv.z = (result.z - rot.z) * dtInv; + deriv.w = (result.w - rot.w) * dtInv; + return new Quaternion(result.x, result.y, result.z, result.w); + } + } } diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs index 88927e346..1e93f1fcf 100644 --- a/QSB/Utility/UnetExtensions.cs +++ b/QSB/Utility/UnetExtensions.cs @@ -1,7 +1,6 @@ using QSB.Player; using QSB.QuantumUNET; using QSB.TransformSync; -using UnityEngine.Networking; namespace QSB.Utility { diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 533a2b1ba..fa02052a1 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -2,20 +2,20 @@ namespace QSB.WorldSync.Events { - public class BoolWorldObjectMessage : WorldObjectMessage - { - public bool State { get; set; } + public class BoolWorldObjectMessage : WorldObjectMessage + { + public bool State { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - State = reader.ReadBoolean(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + State = reader.ReadBoolean(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(State); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(State); + } + } } diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 0a7631d88..e86442178 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -3,20 +3,20 @@ namespace QSB.WorldSync.Events { - public class WorldObjectMessage : PlayerMessage - { - public int ObjectId { get; set; } + public class WorldObjectMessage : PlayerMessage + { + public int ObjectId { get; set; } - public override void Deserialize(NetworkReader reader) - { - base.Deserialize(reader); - ObjectId = reader.ReadInt32(); - } + public override void Deserialize(NetworkReader reader) + { + base.Deserialize(reader); + ObjectId = reader.ReadInt32(); + } - public override void Serialize(NetworkWriter writer) - { - base.Serialize(writer); - writer.Write(ObjectId); - } - } + public override void Serialize(NetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ObjectId); + } + } } \ No newline at end of file diff --git a/QSB/WorldSync/WorldObject.cs b/QSB/WorldSync/WorldObject.cs index 89ec54b02..b8f423bd8 100644 --- a/QSB/WorldSync/WorldObject.cs +++ b/QSB/WorldSync/WorldObject.cs @@ -1,7 +1,7 @@ namespace QSB.WorldSync { - public class WorldObject - { - public int ObjectId { get; protected set; } - } + public class WorldObject + { + public int ObjectId { get; protected set; } + } } From 7925b637a0ab88747fc2107c56c950b91b5aac22 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 2 Dec 2020 21:29:53 +0000 Subject: [PATCH 108/207] more tabs --- QSB/Animation/AnimationSync.cs | 466 +++++++------- QSB/Animation/CrouchSync.cs | 116 ++-- QSB/Animation/QSBNetworkAnimator.cs | 680 ++++++++++----------- QSB/EventsCore/QSBEvent.cs | 100 +-- QSB/GeyserSync/QSBGeyser.cs | 58 +- QSB/MessagesCore/MessageHandler.cs | 112 ++-- QSB/OrbSync/Events/OrbSlotEvent.cs | 38 +- QSB/OrbSync/Events/OrbUserEvent.cs | 136 ++--- QSB/OrbSync/OrbManager.cs | 88 +-- QSB/OrbSync/OrbPatches.cs | 106 ++-- QSB/Patches/QSBPatchManager.cs | 58 +- QSB/Player/PlayerSyncObject.cs | 14 +- QSB/Player/QSBPlayerManager.cs | 254 ++++---- QSB/QSB.cs | 148 ++--- QSB/QSBInputManager.cs | 88 +-- QSB/QSBNetworkLobby.cs | 114 ++-- QSB/QSBNetworkManager.cs | 574 ++++++++--------- QSB/QSBSceneManager.cs | 48 +- QSB/TimeSync/PreserveTimeScale.cs | 34 +- QSB/TimeSync/WakeUpSync.cs | 492 +++++++-------- QSB/TransformSync/NomaiOrbTransformSync.cs | 182 +++--- QSB/TransformSync/PlayerCameraSync.cs | 62 +- QSB/TransformSync/PlayerProbeSync.cs | 184 +++--- QSB/TransformSync/PlayerTransformSync.cs | 84 +-- QSB/TransformSync/ShipTransformSync.cs | 110 ++-- QSB/TransformSync/TransformSync.cs | 254 ++++---- QSB/WorldSync/WorldRegistry.cs | 130 ++-- 27 files changed, 2365 insertions(+), 2365 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 4590a1a91..f92e79965 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -8,237 +8,237 @@ namespace QSB.Animation { - public class AnimationSync : PlayerSyncObject - { - private Animator _anim; - private Animator _bodyAnim; - private QSBNetworkAnimator _netAnim; - - private RuntimeAnimatorController _suitedAnimController; - private AnimatorOverrideController _unsuitedAnimController; - private GameObject _suitedGraphics; - private GameObject _unsuitedGraphics; - private PlayerCharacterController _playerController; - private CrouchSync _crouchSync; - - private RuntimeAnimatorController _chertController; - private RuntimeAnimatorController _eskerController; - private RuntimeAnimatorController _feldsparController; - private RuntimeAnimatorController _gabbroController; - private RuntimeAnimatorController _riebeckController; - - public AnimatorMirror Mirror { get; private set; } - public AnimationType CurrentType = AnimationType.PlayerUnsuited; - public Animator Animator - { - get { return _bodyAnim; } - } - - private void Awake() - { - _anim = gameObject.AddComponent(); - _netAnim = gameObject.AddComponent(); - _netAnim.enabled = false; - _netAnim.animator = _anim; - - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); - } - - private void OnDestroy() - { - _netAnim.enabled = false; - if (_playerController == null) - { - return; - } - _playerController.OnJump -= OnJump; - _playerController.OnBecomeGrounded -= OnBecomeGrounded; - _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); - } - - private void LoadControllers() - { - var bundle = QSB.InstrumentAssetBundle; - _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; - _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; - } - - private void InitCommon(Transform body) - { - if (QSBSceneManager.IsInUniverse) - { - LoadControllers(); - } - _netAnim.enabled = true; - _bodyAnim = body.GetComponent(); - Mirror = body.gameObject.AddComponent(); - if (IsLocalPlayer) - { - Mirror.Init(_bodyAnim, _anim); - } - else - { - Mirror.Init(_anim, _bodyAnim); - } - - QSBPlayerManager.PlayerSyncObjects.Add(this); - - for (var i = 0; i < _anim.parameterCount; i++) - { - _netAnim.SetParameterAutoSend(i, true); - } - - var playerAnimController = body.GetComponent(); - _suitedAnimController = AnimControllerPatch.SuitedAnimController; - _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); - _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); - _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); - } - - public void InitLocal(Transform body) - { - InitCommon(body); - - _playerController = body.parent.GetComponent(); - _playerController.OnJump += OnJump; - _playerController.OnBecomeGrounded += OnBecomeGrounded; - _playerController.OnBecomeUngrounded += OnBecomeUngrounded; - - InitCrouchSync(); - } - - public void InitRemote(Transform body) - { - InitCommon(body); - - var playerAnimController = body.GetComponent(); - playerAnimController.enabled = false; - - playerAnimController.SetValue("_suitedGroup", new GameObject()); - playerAnimController.SetValue("_unsuitedGroup", new GameObject()); - playerAnimController.SetValue("_baseAnimController", null); - playerAnimController.SetValue("_unsuitedAnimOverride", null); - playerAnimController.SetValue("_rightArmHidden", false); - - var rightArmObjects = playerAnimController.GetValue("_rightArmObjects").ToList(); - rightArmObjects.ForEach(rightArmObject => rightArmObject.layer = LayerMask.NameToLayer("Default")); - - body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; - body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; - - InitCrouchSync(); - - var ikSync = body.gameObject.AddComponent(); - QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); - } - - private void InitCrouchSync() - { - _crouchSync = gameObject.AddComponent(); - _crouchSync.Init(this, _playerController, _bodyAnim); - } - - private void OnJump() => _netAnim.SetTrigger("Jump"); - private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); - private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - - public void SendCrouch(float value = 0) - { - GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - } - - public void HandleCrouch(float value) - { - _crouchSync.CrouchParam.Target = value; - } - - private void SuitUp() - { - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); - SetAnimationType(AnimationType.PlayerSuited); - } - - private void SuitDown() - { - GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); - SetAnimationType(AnimationType.PlayerUnsuited); - } - - public void SetSuitState(bool state) - { - if (state) - { - SuitUp(); - return; - } - SuitDown(); - } - - public void SetAnimationType(AnimationType type) - { - if (CurrentType == type) - { - return; - } - CurrentType = type; - if (_unsuitedAnimController == null) - { - DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); - } - if (_suitedAnimController == null) - { - DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); - } - RuntimeAnimatorController controller = default; - switch (type) - { - case AnimationType.PlayerSuited: - controller = _suitedAnimController; - _unsuitedGraphics?.SetActive(false); - _suitedGraphics?.SetActive(true); - break; - case AnimationType.PlayerUnsuited: - controller = _unsuitedAnimController; - _unsuitedGraphics?.SetActive(true); - _suitedGraphics?.SetActive(false); - break; - case AnimationType.Chert: - controller = _chertController; - break; - case AnimationType.Esker: - controller = _eskerController; - break; - case AnimationType.Feldspar: - controller = _feldsparController; - break; - case AnimationType.Gabbro: - controller = _gabbroController; - break; - case AnimationType.Riebeck: - controller = _riebeckController; - break; - } - _anim.runtimeAnimatorController = controller; - _bodyAnim.runtimeAnimatorController = controller; - if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) - { - _bodyAnim.SetTrigger("Playing"); - _anim.SetTrigger("Playing"); - } - else - { - // Avoids "jumping" when exiting instrument and putting on suit - _bodyAnim.SetTrigger("Grounded"); - _anim.SetTrigger("Grounded"); - } - _netAnim.animator = _anim; // Probably not needed. - Mirror.RebuildFloatParams(); - for (var i = 0; i < _anim.parameterCount; i++) - { - _netAnim.SetParameterAutoSend(i, true); - } - } - } + public class AnimationSync : PlayerSyncObject + { + private Animator _anim; + private Animator _bodyAnim; + private QSBNetworkAnimator _netAnim; + + private RuntimeAnimatorController _suitedAnimController; + private AnimatorOverrideController _unsuitedAnimController; + private GameObject _suitedGraphics; + private GameObject _unsuitedGraphics; + private PlayerCharacterController _playerController; + private CrouchSync _crouchSync; + + private RuntimeAnimatorController _chertController; + private RuntimeAnimatorController _eskerController; + private RuntimeAnimatorController _feldsparController; + private RuntimeAnimatorController _gabbroController; + private RuntimeAnimatorController _riebeckController; + + public AnimatorMirror Mirror { get; private set; } + public AnimationType CurrentType = AnimationType.PlayerUnsuited; + public Animator Animator + { + get { return _bodyAnim; } + } + + private void Awake() + { + _anim = gameObject.AddComponent(); + _netAnim = gameObject.AddComponent(); + _netAnim.enabled = false; + _netAnim.animator = _anim; + + QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); + } + + private void OnDestroy() + { + _netAnim.enabled = false; + if (_playerController == null) + { + return; + } + _playerController.OnJump -= OnJump; + _playerController.OnBecomeGrounded -= OnBecomeGrounded; + _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; + + QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); + } + + private void LoadControllers() + { + var bundle = QSB.InstrumentAssetBundle; + _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; + _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; + } + + private void InitCommon(Transform body) + { + if (QSBSceneManager.IsInUniverse) + { + LoadControllers(); + } + _netAnim.enabled = true; + _bodyAnim = body.GetComponent(); + Mirror = body.gameObject.AddComponent(); + if (IsLocalPlayer) + { + Mirror.Init(_bodyAnim, _anim); + } + else + { + Mirror.Init(_anim, _bodyAnim); + } + + QSBPlayerManager.PlayerSyncObjects.Add(this); + + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } + + var playerAnimController = body.GetComponent(); + _suitedAnimController = AnimControllerPatch.SuitedAnimController; + _unsuitedAnimController = playerAnimController.GetValue("_unsuitedAnimOverride"); + _suitedGraphics = playerAnimController.GetValue("_suitedGroup"); + _unsuitedGraphics = playerAnimController.GetValue("_unsuitedGroup"); + } + + public void InitLocal(Transform body) + { + InitCommon(body); + + _playerController = body.parent.GetComponent(); + _playerController.OnJump += OnJump; + _playerController.OnBecomeGrounded += OnBecomeGrounded; + _playerController.OnBecomeUngrounded += OnBecomeUngrounded; + + InitCrouchSync(); + } + + public void InitRemote(Transform body) + { + InitCommon(body); + + var playerAnimController = body.GetComponent(); + playerAnimController.enabled = false; + + playerAnimController.SetValue("_suitedGroup", new GameObject()); + playerAnimController.SetValue("_unsuitedGroup", new GameObject()); + playerAnimController.SetValue("_baseAnimController", null); + playerAnimController.SetValue("_unsuitedAnimOverride", null); + playerAnimController.SetValue("_rightArmHidden", false); + + var rightArmObjects = playerAnimController.GetValue("_rightArmObjects").ToList(); + rightArmObjects.ForEach(rightArmObject => rightArmObject.layer = LayerMask.NameToLayer("Default")); + + body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; + body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; + + InitCrouchSync(); + + var ikSync = body.gameObject.AddComponent(); + QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); + } + + private void InitCrouchSync() + { + _crouchSync = gameObject.AddComponent(); + _crouchSync.Init(this, _playerController, _bodyAnim); + } + + private void OnJump() => _netAnim.SetTrigger("Jump"); + private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); + private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); + + public void SendCrouch(float value = 0) + { + GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); + } + + public void HandleCrouch(float value) + { + _crouchSync.CrouchParam.Target = value; + } + + private void SuitUp() + { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerSuited); + SetAnimationType(AnimationType.PlayerSuited); + } + + private void SuitDown() + { + GlobalMessenger.FireEvent(EventNames.QSBChangeAnimType, PlayerId, AnimationType.PlayerUnsuited); + SetAnimationType(AnimationType.PlayerUnsuited); + } + + public void SetSuitState(bool state) + { + if (state) + { + SuitUp(); + return; + } + SuitDown(); + } + + public void SetAnimationType(AnimationType type) + { + if (CurrentType == type) + { + return; + } + CurrentType = type; + if (_unsuitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Unsuited controller is null. ({PlayerId})", MessageType.Error); + } + if (_suitedAnimController == null) + { + DebugLog.DebugWrite($"Error - Suited controller is null. ({PlayerId})", MessageType.Error); + } + RuntimeAnimatorController controller = default; + switch (type) + { + case AnimationType.PlayerSuited: + controller = _suitedAnimController; + _unsuitedGraphics?.SetActive(false); + _suitedGraphics?.SetActive(true); + break; + case AnimationType.PlayerUnsuited: + controller = _unsuitedAnimController; + _unsuitedGraphics?.SetActive(true); + _suitedGraphics?.SetActive(false); + break; + case AnimationType.Chert: + controller = _chertController; + break; + case AnimationType.Esker: + controller = _eskerController; + break; + case AnimationType.Feldspar: + controller = _feldsparController; + break; + case AnimationType.Gabbro: + controller = _gabbroController; + break; + case AnimationType.Riebeck: + controller = _riebeckController; + break; + } + _anim.runtimeAnimatorController = controller; + _bodyAnim.runtimeAnimatorController = controller; + if (type != AnimationType.PlayerSuited && type != AnimationType.PlayerUnsuited) + { + _bodyAnim.SetTrigger("Playing"); + _anim.SetTrigger("Playing"); + } + else + { + // Avoids "jumping" when exiting instrument and putting on suit + _bodyAnim.SetTrigger("Grounded"); + _anim.SetTrigger("Grounded"); + } + _netAnim.animator = _anim; // Probably not needed. + Mirror.RebuildFloatParams(); + for (var i = 0; i < _anim.parameterCount; i++) + { + _netAnim.SetParameterAutoSend(i, true); + } + } + } } \ No newline at end of file diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 50caa747e..55c9699d5 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -4,69 +4,69 @@ namespace QSB.Animation { - public class CrouchSync : QSBNetworkBehaviour - { - public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); + public class CrouchSync : QSBNetworkBehaviour + { + public AnimFloatParam CrouchParam { get; } = new AnimFloatParam(); - private const float CrouchSendInterval = 0.1f; - private const float CrouchChargeThreshold = 0.01f; - private const float CrouchSmoothTime = 0.05f; - private const int CrouchLayerIndex = 1; + private const float CrouchSendInterval = 0.1f; + private const float CrouchChargeThreshold = 0.01f; + private const float CrouchSmoothTime = 0.05f; + private const int CrouchLayerIndex = 1; - private float _sendTimer; - private float _lastSentJumpChargeFraction; + private float _sendTimer; + private float _lastSentJumpChargeFraction; - private AnimationSync _animationSync; - private PlayerCharacterController _playerController; - private Animator _bodyAnim; + private AnimationSync _animationSync; + private PlayerCharacterController _playerController; + private Animator _bodyAnim; - public void Init(AnimationSync animationSync, PlayerCharacterController playerController, Animator bodyAnim) - { - _animationSync = animationSync; - _playerController = playerController; - _bodyAnim = bodyAnim; - } + public void Init(AnimationSync animationSync, PlayerCharacterController playerController, Animator bodyAnim) + { + _animationSync = animationSync; + _playerController = playerController; + _bodyAnim = bodyAnim; + } - private void Update() - { - if (IsLocalPlayer) - { - SyncLocalCrouch(); - return; - } - SyncRemoteCrouch(); - } + private void Update() + { + if (IsLocalPlayer) + { + SyncLocalCrouch(); + return; + } + SyncRemoteCrouch(); + } - private void SyncLocalCrouch() - { - if (_playerController == null) - { - return; - } - _sendTimer += Time.unscaledDeltaTime; - if (_sendTimer < CrouchSendInterval) - { - return; - } - var jumpChargeFraction = _playerController.GetJumpChargeFraction(); - if (Math.Abs(jumpChargeFraction - _lastSentJumpChargeFraction) < CrouchChargeThreshold) - { - return; - } - _animationSync.SendCrouch(jumpChargeFraction); - _lastSentJumpChargeFraction = jumpChargeFraction; - _sendTimer = 0; - } + private void SyncLocalCrouch() + { + if (_playerController == null) + { + return; + } + _sendTimer += Time.unscaledDeltaTime; + if (_sendTimer < CrouchSendInterval) + { + return; + } + var jumpChargeFraction = _playerController.GetJumpChargeFraction(); + if (Math.Abs(jumpChargeFraction - _lastSentJumpChargeFraction) < CrouchChargeThreshold) + { + return; + } + _animationSync.SendCrouch(jumpChargeFraction); + _lastSentJumpChargeFraction = jumpChargeFraction; + _sendTimer = 0; + } - private void SyncRemoteCrouch() - { - if (_bodyAnim == null) - { - return; - } - CrouchParam.Smooth(CrouchSmoothTime); - var jumpChargeFraction = CrouchParam.Current; - _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); - } - } + private void SyncRemoteCrouch() + { + if (_bodyAnim == null) + { + return; + } + CrouchParam.Smooth(CrouchSmoothTime); + var jumpChargeFraction = CrouchParam.Current; + _bodyAnim.SetLayerWeight(CrouchLayerIndex, jumpChargeFraction); + } + } } \ No newline at end of file diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index 8ac338019..e97ed55ed 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -5,370 +5,370 @@ namespace QSB.Animation { - // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. + // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. - class QSBNetworkAnimator : QSBNetworkBehaviour - { - private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); - private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); - private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); + class QSBNetworkAnimator : QSBNetworkBehaviour + { + private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); + private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); + private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); - private Animator m_Animator; - private uint m_ParameterSendBits; - private int m_AnimationHash; - private int m_TransitionHash; - private NetworkWriter m_ParameterWriter; - private float m_SendTimer; + private Animator m_Animator; + private uint m_ParameterSendBits; + private int m_AnimationHash; + private int m_TransitionHash; + private NetworkWriter m_ParameterWriter; + private float m_SendTimer; - public Animator animator - { - get - { - return m_Animator; - } - set - { - m_Animator = value; - m_ParameterSendBits = 0U; - } - } + public Animator animator + { + get + { + return m_Animator; + } + set + { + m_Animator = value; + m_ParameterSendBits = 0U; + } + } - public void SetParameterAutoSend(int index, bool value) - { - if (value) - m_ParameterSendBits |= (uint)(1 << index); - else - m_ParameterSendBits &= (uint)~(1 << index); - } + public void SetParameterAutoSend(int index, bool value) + { + if (value) + m_ParameterSendBits |= (uint)(1 << index); + else + m_ParameterSendBits &= (uint)~(1 << index); + } - public bool GetParameterAutoSend(int index) - { - return ((int)m_ParameterSendBits & 1 << index) != 0; - } + public bool GetParameterAutoSend(int index) + { + return ((int)m_ParameterSendBits & 1 << index) != 0; + } - public override void OnStartAuthority() - { - m_ParameterWriter = new NetworkWriter(); - } + public override void OnStartAuthority() + { + m_ParameterWriter = new NetworkWriter(); + } - private void FixedUpdate() - { - if (m_ParameterWriter == null) - { - return; - } - CheckSendRate(); - if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) - { - return; - } - var animationMessage = new QSBAnimationMessage - { - netId = NetId, - stateHash = stateHash, - normalizedTime = normalizedTime - }; + private void FixedUpdate() + { + if (m_ParameterWriter == null) + { + return; + } + CheckSendRate(); + if (!CheckAnimStateChanged(out var stateHash, out var normalizedTime)) + { + return; + } + var animationMessage = new QSBAnimationMessage + { + netId = NetId, + stateHash = stateHash, + normalizedTime = normalizedTime + }; - m_ParameterWriter.SeekZero(); - WriteParameters(m_ParameterWriter, false); - animationMessage.parameters = m_ParameterWriter.ToArray(); + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, false); + animationMessage.parameters = m_ParameterWriter.ToArray(); - if (HasAuthority || QSBClientScene.readyConnection != null) - { - QSBClientScene.readyConnection.Send(40, animationMessage); - } - else - { - if (!IsServer || LocalPlayerAuthority) - { - return; - } - QSBNetworkServer.SendToReady(gameObject, 40, animationMessage); - } - } + if (HasAuthority || QSBClientScene.readyConnection != null) + { + QSBClientScene.readyConnection.Send(40, animationMessage); + } + else + { + if (!IsServer || LocalPlayerAuthority) + { + return; + } + QSBNetworkServer.SendToReady(gameObject, 40, animationMessage); + } + } - private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) - { - stateHash = 0; - normalizedTime = 0.0f; - if (m_Animator.IsInTransition(0)) - { - var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); - if (animatorTransitionInfo.fullPathHash == m_TransitionHash) - { - return false; - } - m_TransitionHash = animatorTransitionInfo.fullPathHash; - m_AnimationHash = 0; - return true; - } - var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); - if (animatorStateInfo.fullPathHash == m_AnimationHash) - { - return false; - } - if (m_AnimationHash != 0) - { - stateHash = animatorStateInfo.fullPathHash; - normalizedTime = animatorStateInfo.normalizedTime; - } - m_TransitionHash = 0; - m_AnimationHash = animatorStateInfo.fullPathHash; - return true; - } + private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime) + { + stateHash = 0; + normalizedTime = 0.0f; + if (m_Animator.IsInTransition(0)) + { + var animatorTransitionInfo = m_Animator.GetAnimatorTransitionInfo(0); + if (animatorTransitionInfo.fullPathHash == m_TransitionHash) + { + return false; + } + m_TransitionHash = animatorTransitionInfo.fullPathHash; + m_AnimationHash = 0; + return true; + } + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + if (animatorStateInfo.fullPathHash == m_AnimationHash) + { + return false; + } + if (m_AnimationHash != 0) + { + stateHash = animatorStateInfo.fullPathHash; + normalizedTime = animatorStateInfo.normalizedTime; + } + m_TransitionHash = 0; + m_AnimationHash = animatorStateInfo.fullPathHash; + return true; + } - private void CheckSendRate() - { - if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) - { - return; - } - m_SendTimer = Time.time + GetNetworkSendInterval(); - var parametersMessage = new QSBAnimationParametersMessage - { - netId = NetId - }; - m_ParameterWriter.SeekZero(); - WriteParameters(m_ParameterWriter, true); - parametersMessage.parameters = m_ParameterWriter.ToArray(); - if (HasAuthority && QSBClientScene.readyConnection != null) - { - QSBClientScene.readyConnection.Send(41, parametersMessage); - } - else - { - if (!IsServer || LocalPlayerAuthority) - return; - QSBNetworkServer.SendToReady(gameObject, 41, parametersMessage); - } - } + private void CheckSendRate() + { + if (GetNetworkSendInterval() == 0.0 || m_SendTimer >= Time.time) + { + return; + } + m_SendTimer = Time.time + GetNetworkSendInterval(); + var parametersMessage = new QSBAnimationParametersMessage + { + netId = NetId + }; + m_ParameterWriter.SeekZero(); + WriteParameters(m_ParameterWriter, true); + parametersMessage.parameters = m_ParameterWriter.ToArray(); + if (HasAuthority && QSBClientScene.readyConnection != null) + { + QSBClientScene.readyConnection.Send(41, parametersMessage); + } + else + { + if (!IsServer || LocalPlayerAuthority) + return; + QSBNetworkServer.SendToReady(gameObject, 41, parametersMessage); + } + } - internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) - { - if (HasAuthority) - { - return; - } - if (msg.stateHash != 0) - { - m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); - } - ReadParameters(reader, false); - } + internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) + { + if (HasAuthority) + { + return; + } + if (msg.stateHash != 0) + { + m_Animator.Play(msg.stateHash, 0, msg.normalizedTime); + } + ReadParameters(reader, false); + } - internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) - { - if (HasAuthority) - { - return; - } - ReadParameters(reader, true); - } + internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) + { + if (HasAuthority) + { + return; + } + ReadParameters(reader, true); + } - internal void HandleAnimTriggerMsg(int hash) - { - m_Animator.SetTrigger(hash); - } + internal void HandleAnimTriggerMsg(int hash) + { + m_Animator.SetTrigger(hash); + } - private void WriteParameters(NetworkWriter writer, bool autoSend) - { - for (int index = 0; index < m_Animator.parameters.Length; ++index) - { - if (!autoSend || GetParameterAutoSend(index)) - { - var parameter = m_Animator.parameters[index]; - switch (parameter.type) - { - case AnimatorControllerParameterType.Int: - writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); - break; - case AnimatorControllerParameterType.Float: - writer.Write(m_Animator.GetFloat(parameter.nameHash)); - break; - case AnimatorControllerParameterType.Bool: - writer.Write(m_Animator.GetBool(parameter.nameHash)); - break; - } - } - } - } + private void WriteParameters(NetworkWriter writer, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Float: + writer.Write(m_Animator.GetFloat(parameter.nameHash)); + break; + case AnimatorControllerParameterType.Bool: + writer.Write(m_Animator.GetBool(parameter.nameHash)); + break; + } + } + } + } - private void ReadParameters(NetworkReader reader, bool autoSend) - { - for (int index = 0; index < m_Animator.parameters.Length; ++index) - { - if (!autoSend || GetParameterAutoSend(index)) - { - var parameter = m_Animator.parameters[index]; - if (reader.Length == reader.Position) - { - return; - } - switch (parameter.type) - { - case AnimatorControllerParameterType.Int: - var num = (int)reader.ReadPackedUInt32(); - m_Animator.SetInteger(parameter.nameHash, num); - break; - case AnimatorControllerParameterType.Float: - var single = reader.ReadSingle(); - m_Animator.SetFloat(parameter.nameHash, single); - break; - case AnimatorControllerParameterType.Bool: - var flag = reader.ReadBoolean(); - m_Animator.SetBool(parameter.nameHash, flag); - break; - } - } - } - } + private void ReadParameters(NetworkReader reader, bool autoSend) + { + for (int index = 0; index < m_Animator.parameters.Length; ++index) + { + if (!autoSend || GetParameterAutoSend(index)) + { + var parameter = m_Animator.parameters[index]; + if (reader.Length == reader.Position) + { + return; + } + switch (parameter.type) + { + case AnimatorControllerParameterType.Int: + var num = (int)reader.ReadPackedUInt32(); + m_Animator.SetInteger(parameter.nameHash, num); + break; + case AnimatorControllerParameterType.Float: + var single = reader.ReadSingle(); + m_Animator.SetFloat(parameter.nameHash, single); + break; + case AnimatorControllerParameterType.Bool: + var flag = reader.ReadBoolean(); + m_Animator.SetBool(parameter.nameHash, flag); + break; + } + } + } + } - public override bool OnSerialize(NetworkWriter writer, bool forceAll) - { - if (!forceAll) - { - return false; - } - if (m_Animator.IsInTransition(0)) - { - var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); - writer.Write(animatorStateInfo.fullPathHash); - writer.Write(animatorStateInfo.normalizedTime); - } - else - { - var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); - writer.Write(animatorStateInfo.fullPathHash); - writer.Write(animatorStateInfo.normalizedTime); - } - WriteParameters(writer, false); - return true; - } + public override bool OnSerialize(NetworkWriter writer, bool forceAll) + { + if (!forceAll) + { + return false; + } + if (m_Animator.IsInTransition(0)) + { + var animatorStateInfo = m_Animator.GetNextAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + else + { + var animatorStateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); + writer.Write(animatorStateInfo.fullPathHash); + writer.Write(animatorStateInfo.normalizedTime); + } + WriteParameters(writer, false); + return true; + } - public override void OnDeserialize(NetworkReader reader, bool initialState) - { - if (!initialState) - { - return; - } - var stateNameHash = reader.ReadInt32(); - var normalizedTime = reader.ReadSingle(); - ReadParameters(reader, false); - m_Animator.Play(stateNameHash, 0, normalizedTime); - } + public override void OnDeserialize(NetworkReader reader, bool initialState) + { + if (!initialState) + { + return; + } + var stateNameHash = reader.ReadInt32(); + var normalizedTime = reader.ReadSingle(); + ReadParameters(reader, false); + m_Animator.Play(stateNameHash, 0, normalizedTime); + } - public void SetTrigger(string triggerName) - { - SetTrigger(Animator.StringToHash(triggerName)); - } + public void SetTrigger(string triggerName) + { + SetTrigger(Animator.StringToHash(triggerName)); + } - public void SetTrigger(int hash) - { - var animationTriggerMessage = new QSBAnimationTriggerMessage - { - netId = NetId, - hash = hash - }; - if (HasAuthority && LocalPlayerAuthority) - { - if (QSBNetworkClient.allClients.Count <= 0) - { - return; - } - var readyConnection = QSBClientScene.readyConnection; - if (readyConnection == null) - { - return; - } - readyConnection.Send(42, animationTriggerMessage); - } - else - { - if (!IsServer || LocalPlayerAuthority) - { - return; - } - QSBNetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); - } - } + public void SetTrigger(int hash) + { + var animationTriggerMessage = new QSBAnimationTriggerMessage + { + netId = NetId, + hash = hash + }; + if (HasAuthority && LocalPlayerAuthority) + { + if (QSBNetworkClient.allClients.Count <= 0) + { + return; + } + var readyConnection = QSBClientScene.readyConnection; + if (readyConnection == null) + { + return; + } + readyConnection.Send(42, animationTriggerMessage); + } + else + { + if (!IsServer || LocalPlayerAuthority) + { + return; + } + QSBNetworkServer.SendToReady(gameObject, 42, animationTriggerMessage); + } + } - internal static void OnAnimationServerMessage(QSBNetworkMessage netMsg) - { - netMsg.ReadMessage(AnimationMessage); - var localObject = QSBNetworkServer.FindLocalObject(AnimationMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - var reader = new NetworkReader(AnimationMessage.parameters); - component?.HandleAnimMsg(AnimationMessage, reader); - QSBNetworkServer.SendToReady(localObject, 40, AnimationMessage); - } + internal static void OnAnimationServerMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(AnimationMessage); + var localObject = QSBNetworkServer.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(AnimationMessage.parameters); + component?.HandleAnimMsg(AnimationMessage, reader); + QSBNetworkServer.SendToReady(localObject, 40, AnimationMessage); + } - internal static void OnAnimationParametersServerMessage(QSBNetworkMessage netMsg) - { - netMsg.ReadMessage(ParametersMessage); - var localObject = QSBNetworkServer.FindLocalObject(ParametersMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - var reader = new NetworkReader(ParametersMessage.parameters); - component?.HandleAnimParamsMsg(ParametersMessage, reader); - QSBNetworkServer.SendToReady(localObject, 41, ParametersMessage); - } + internal static void OnAnimationParametersServerMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(ParametersMessage); + var localObject = QSBNetworkServer.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + var reader = new NetworkReader(ParametersMessage.parameters); + component?.HandleAnimParamsMsg(ParametersMessage, reader); + QSBNetworkServer.SendToReady(localObject, 41, ParametersMessage); + } - internal static void OnAnimationTriggerServerMessage(QSBNetworkMessage netMsg) - { - netMsg.ReadMessage(TriggersMessage); - var localObject = QSBNetworkServer.FindLocalObject(TriggersMessage.netId); - if (localObject == null) - { - return; - } - var component = localObject.GetComponent(); - component?.HandleAnimTriggerMsg(TriggersMessage.hash); - QSBNetworkServer.SendToReady(localObject, 42, TriggersMessage); - } + internal static void OnAnimationTriggerServerMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(TriggersMessage); + var localObject = QSBNetworkServer.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + { + return; + } + var component = localObject.GetComponent(); + component?.HandleAnimTriggerMsg(TriggersMessage.hash); + QSBNetworkServer.SendToReady(localObject, 42, TriggersMessage); + } - internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) - { - netMsg.ReadMessage(AnimationMessage); - var localObject = QSBClientScene.FindLocalObject(AnimationMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - var reader = new NetworkReader(AnimationMessage.parameters); - component.HandleAnimMsg(AnimationMessage, reader); - } + internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(AnimationMessage); + var localObject = QSBClientScene.FindLocalObject(AnimationMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + var reader = new NetworkReader(AnimationMessage.parameters); + component.HandleAnimMsg(AnimationMessage, reader); + } - internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg) - { - netMsg.ReadMessage(ParametersMessage); - var localObject = QSBClientScene.FindLocalObject(ParametersMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - var reader = new NetworkReader(ParametersMessage.parameters); - component.HandleAnimParamsMsg(ParametersMessage, reader); - } + internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(ParametersMessage); + var localObject = QSBClientScene.FindLocalObject(ParametersMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + var reader = new NetworkReader(ParametersMessage.parameters); + component.HandleAnimParamsMsg(ParametersMessage, reader); + } - internal static void OnAnimationTriggerClientMessage(QSBNetworkMessage netMsg) - { - netMsg.ReadMessage(TriggersMessage); - var localObject = QSBClientScene.FindLocalObject(TriggersMessage.netId); - if (localObject == null) - return; - var component = localObject.GetComponent(); - if (component == null) - return; - component.HandleAnimTriggerMsg(TriggersMessage.hash); - } - } + internal static void OnAnimationTriggerClientMessage(QSBNetworkMessage netMsg) + { + netMsg.ReadMessage(TriggersMessage); + var localObject = QSBClientScene.FindLocalObject(TriggersMessage.netId); + if (localObject == null) + return; + var component = localObject.GetComponent(); + if (component == null) + return; + component.HandleAnimTriggerMsg(TriggersMessage.hash); + } + } } \ No newline at end of file diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 6648f17a6..61b91d958 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -5,64 +5,64 @@ namespace QSB.EventsCore { - public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() - { - public abstract EventType Type { get; } - public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; - private readonly MessageHandler _eventHandler; + public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() + { + public abstract EventType Type { get; } + public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; + private readonly MessageHandler _eventHandler; - protected QSBEvent() - { - _eventHandler = new MessageHandler(Type); - _eventHandler.OnClientReceiveMessage += OnClientReceive; - _eventHandler.OnServerReceiveMessage += OnServerReceive; - } + protected QSBEvent() + { + _eventHandler = new MessageHandler(Type); + _eventHandler.OnClientReceiveMessage += OnClientReceive; + _eventHandler.OnServerReceiveMessage += OnServerReceive; + } - public abstract void SetupListener(); + public abstract void SetupListener(); - public abstract void CloseListener(); + public abstract void CloseListener(); - public virtual void OnReceiveRemote(T message) - { - } + public virtual void OnReceiveRemote(T message) + { + } - public virtual void OnReceiveLocal(T message) - { - } + public virtual void OnReceiveLocal(T message) + { + } - public virtual void OnServerReceive(T message) - { - _eventHandler.SendToAll(message); - } + public virtual void OnServerReceive(T message) + { + _eventHandler.SendToAll(message); + } - public void SendEvent(T message) - { - message.FromId = QSBPlayerManager.LocalPlayerId; - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); - } + public void SendEvent(T message) + { + message.FromId = QSBPlayerManager.LocalPlayerId; + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); + } - private void Send(T message) - { - if (QSBNetworkServer.active) - { - _eventHandler.SendToAll(message); - } - else - { - _eventHandler.SendToServer(message); - } - } + private void Send(T message) + { + if (QSBNetworkServer.active) + { + _eventHandler.SendToAll(message); + } + else + { + _eventHandler.SendToServer(message); + } + } - private void OnClientReceive(T message) - { - if (message.FromId == QSBPlayerManager.LocalPlayerId || - QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) - { - OnReceiveLocal(message); - return; - } + private void OnClientReceive(T message) + { + if (message.FromId == QSBPlayerManager.LocalPlayerId || + QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) + { + OnReceiveLocal(message); + return; + } - OnReceiveRemote(message); - } - } + OnReceiveRemote(message); + } + } } diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index e4328ca3b..3427dbc65 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -4,37 +4,37 @@ namespace QSB.GeyserSync { - public class QSBGeyser : WorldObject - { - private GeyserController _geyserController; + public class QSBGeyser : WorldObject + { + private GeyserController _geyserController; - public void Init(GeyserController geyserController, int id) - { - ObjectId = id; - _geyserController = geyserController; + public void Init(GeyserController geyserController, int id) + { + ObjectId = id; + _geyserController = geyserController; - geyserController.OnGeyserActivateEvent += () => HandleEvent(true); - geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false); - } + geyserController.OnGeyserActivateEvent += () => HandleEvent(true); + geyserController.OnGeyserDeactivateEvent += () => HandleEvent(false); + } - private void HandleEvent(bool state) - { - if (QSBNetworkServer.active) - { - GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); - } - } + private void HandleEvent(bool state) + { + if (QSBNetworkServer.active) + { + GlobalMessenger.FireEvent(EventNames.QSBGeyserState, ObjectId, state); + } + } - public void SetState(bool state) - { - if (state) - { - _geyserController?.ActivateGeyser(); - } - else - { - _geyserController?.DeactivateGeyser(); - } - } - } + public void SetState(bool state) + { + if (state) + { + _geyserController?.ActivateGeyser(); + } + else + { + _geyserController?.DeactivateGeyser(); + } + } + } } diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index f1714aa98..89b101ec4 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -8,68 +8,68 @@ namespace QSB.Messaging { - // Extend this to create new message handlers. - public class MessageHandler where T : MessageBase, new() - { - public event Action OnClientReceiveMessage; - public event Action OnServerReceiveMessage; + // Extend this to create new message handlers. + public class MessageHandler where T : MessageBase, new() + { + public event Action OnClientReceiveMessage; + public event Action OnServerReceiveMessage; - private readonly EventType _eventType; + private readonly EventType _eventType; - public MessageHandler(EventType eventType) - { - _eventType = eventType + MsgType.Highest + 1; - if (QSBNetworkManager.Instance.IsReady) - { - Init(); - } - else - { - QSBNetworkManager.Instance.OnNetworkManagerReady += Init; - } - } + public MessageHandler(EventType eventType) + { + _eventType = eventType + MsgType.Highest + 1; + if (QSBNetworkManager.Instance.IsReady) + { + Init(); + } + else + { + QSBNetworkManager.Instance.OnNetworkManagerReady += Init; + } + } - private void Init() - { - var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); - if (QSBNetworkServer.handlers.Keys.Contains((short)_eventType)) - { - DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); - QSBNetworkServer.handlers.Remove((short)_eventType); - } - QSBNetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); - QSBNetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); - } + private void Init() + { + var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); + if (QSBNetworkServer.handlers.Keys.Contains((short)_eventType)) + { + DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); + QSBNetworkServer.handlers.Remove((short)_eventType); + } + QSBNetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); + QSBNetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); + } - public void SendToAll(T message) - { - if (!QSBNetworkManager.Instance.IsReady) - { - return; - } - QSBNetworkServer.SendToAll((short)_eventType, message); - } + public void SendToAll(T message) + { + if (!QSBNetworkManager.Instance.IsReady) + { + return; + } + QSBNetworkServer.SendToAll((short)_eventType, message); + } - public void SendToServer(T message) - { - if (!QSBNetworkManager.Instance.IsReady) - { - return; - } - QSBNetworkManager.singleton.client.Send((short)_eventType, message); - } + public void SendToServer(T message) + { + if (!QSBNetworkManager.Instance.IsReady) + { + return; + } + QSBNetworkManager.singleton.client.Send((short)_eventType, message); + } - private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) - { - var message = netMsg.ReadMessage(); - OnClientReceiveMessage?.Invoke(message); - } + private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) + { + var message = netMsg.ReadMessage(); + OnClientReceiveMessage?.Invoke(message); + } - private void OnServerReceiveMessageHandler(QSBNetworkMessage netMsg) - { - var message = netMsg.ReadMessage(); - OnServerReceiveMessage?.Invoke(message); - } + private void OnServerReceiveMessageHandler(QSBNetworkMessage netMsg) + { + var message = netMsg.ReadMessage(); + OnServerReceiveMessage?.Invoke(message); + } - } + } } diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index c10bbde5a..eb28c6cd6 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -5,28 +5,28 @@ namespace QSB.OrbSync.Events { - public class OrbSlotEvent : QSBEvent - { - public override EventType Type => EventType.OrbSlot; + public class OrbSlotEvent : QSBEvent + { + public override EventType Type => EventType.OrbSlot; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id, - State = state - }; + private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id, + State = state + }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) - { - DebugLog.DebugWrite($"receive slot {message.ObjectId} to {message.State}"); - var orbSlot = WorldRegistry.GetObject(message.ObjectId); - orbSlot?.SetState(message.State); - } - } + public override void OnReceiveRemote(BoolWorldObjectMessage message) + { + DebugLog.DebugWrite($"receive slot {message.ObjectId} to {message.State}"); + var orbSlot = WorldRegistry.GetObject(message.ObjectId); + orbSlot?.SetState(message.State); + } + } } diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 358b45965..5952730a5 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -8,79 +8,79 @@ namespace QSB.OrbSync.Events { - public class OrbUserEvent : QSBEvent - { - public override EventType Type => EventType.OrbUser; + public class OrbUserEvent : QSBEvent + { + public override EventType Type => EventType.OrbUser; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); - private void Handler(int id) => SendEvent(CreateMessage(id)); + private void Handler(int id) => SendEvent(CreateMessage(id)); - private WorldObjectMessage CreateMessage(int id) => new WorldObjectMessage - { - AboutId = LocalPlayerId, - ObjectId = id - }; + private WorldObjectMessage CreateMessage(int id) => new WorldObjectMessage + { + AboutId = LocalPlayerId, + ObjectId = id + }; - public override void OnServerReceive(WorldObjectMessage message) - { - var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); - foreach (var item in QSBNetworkServer.connections) - { - DebugLog.DebugWrite(item.GetPlayer().PlayerId.ToString()); - } - if (WorldRegistry.OrbSyncList.Count == 0) - { - DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (fromPlayer == null) - { - DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); - } - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); - if (orb == null) - { - DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orbIdentity = orb.GetComponent(); - if (orbIdentity == null) - { - DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) - { - DebugLog.DebugWrite($"Removed authority of orb {message.ObjectId} from {orbIdentity.ClientAuthorityOwner.GetPlayer().PlayerId}"); - orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); - } - DebugLog.DebugWrite($"Assigned authority of orb {message.ObjectId} to player {message.FromId}."); - orbIdentity.AssignClientAuthority(fromPlayer); - orb.enabled = true; - } + public override void OnServerReceive(WorldObjectMessage message) + { + var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); + foreach (var item in QSBNetworkServer.connections) + { + DebugLog.DebugWrite(item.GetPlayer().PlayerId.ToString()); + } + if (WorldRegistry.OrbSyncList.Count == 0) + { + DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (fromPlayer == null) + { + DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); + } + var orb = WorldRegistry.OrbSyncList + .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + if (orb == null) + { + DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orbIdentity = orb.GetComponent(); + if (orbIdentity == null) + { + DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) + { + DebugLog.DebugWrite($"Removed authority of orb {message.ObjectId} from {orbIdentity.ClientAuthorityOwner.GetPlayer().PlayerId}"); + orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); + } + DebugLog.DebugWrite($"Assigned authority of orb {message.ObjectId} to player {message.FromId}."); + orbIdentity.AssignClientAuthority(fromPlayer); + orb.enabled = true; + } - public override void OnReceiveRemote(WorldObjectMessage message) - { - if (WorldRegistry.OrbSyncList.Count < message.ObjectId) - { - DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {WorldRegistry.OrbSyncList.Count}.", MessageType.Error); - return; - } - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); - orb.enabled = true; - } + public override void OnReceiveRemote(WorldObjectMessage message) + { + if (WorldRegistry.OrbSyncList.Count < message.ObjectId) + { + DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {WorldRegistry.OrbSyncList.Count}.", MessageType.Error); + return; + } + var orb = WorldRegistry.OrbSyncList + .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + orb.enabled = true; + } - public override void OnReceiveLocal(WorldObjectMessage message) - { - if (QSBNetworkServer.active) - { - OnServerReceive(message); - } - } - } + public override void OnReceiveLocal(WorldObjectMessage message) + { + if (QSBNetworkServer.active) + { + OnServerReceive(message); + } + } + } } diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 81dfed6a0..3108b1842 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -7,54 +7,54 @@ namespace QSB.OrbSync { - public class OrbManager : MonoBehaviour - { - public static OrbManager Instance { get; private set; } + public class OrbManager : MonoBehaviour + { + public static OrbManager Instance { get; private set; } - private void Awake() - { - Instance = this; - } + private void Awake() + { + Instance = this; + } - private void BuildOrbSlots() - { - DebugLog.DebugWrite("Building QSBOrbSlots...", MessageType.Info); - WorldRegistry.RemoveObjects(); - var orbSlots = Resources.FindObjectsOfTypeAll(); - for (var id = 0; id < orbSlots.Length; id++) - { - var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); - qsbOrbSlot.Init(orbSlots[id], id); - } + private void BuildOrbSlots() + { + DebugLog.DebugWrite("Building QSBOrbSlots...", MessageType.Info); + WorldRegistry.RemoveObjects(); + var orbSlots = Resources.FindObjectsOfTypeAll(); + for (var id = 0; id < orbSlots.Length; id++) + { + var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); + qsbOrbSlot.Init(orbSlots[id], id); + } - DebugLog.DebugWrite($"Finished orb slot build with {orbSlots.Length} slots.", MessageType.Success); - } + DebugLog.DebugWrite($"Finished orb slot build with {orbSlots.Length} slots.", MessageType.Success); + } - public void BuildOrbs() - { - DebugLog.DebugWrite("Building orb syncs...", MessageType.Info); - WorldRegistry.OldOrbList.Clear(); - WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); - if (QSBNetworkServer.active) - { - DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); - WorldRegistry.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject)); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); - } - DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} orbs.", MessageType.Success); - } + public void BuildOrbs() + { + DebugLog.DebugWrite("Building orb syncs...", MessageType.Info); + WorldRegistry.OldOrbList.Clear(); + WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); + if (QSBNetworkServer.active) + { + DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); + WorldRegistry.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject)); + WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + } + DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} orbs.", MessageType.Success); + } - public void QueueBuildSlots() - { - DebugLog.DebugWrite("Queueing build of QSBOrbSlots...", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); - } + public void QueueBuildSlots() + { + DebugLog.DebugWrite("Queueing build of QSBOrbSlots...", MessageType.Info); + QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); + } - public void QueueBuildOrbs() - { - DebugLog.DebugWrite("Queueing build of NetworkOrbs...", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); - } - } + public void QueueBuildOrbs() + { + DebugLog.DebugWrite("Queueing build of NetworkOrbs...", MessageType.Info); + QSB.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); + } + } } \ No newline at end of file diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 436dc6fdc..8fd21ceba 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -4,60 +4,60 @@ namespace QSB.OrbSync { - public class OrbPatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + public class OrbPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) - { - if (__result) - { - GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); - } - } + public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instance) + { + if (__result) + { + GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); + } + } - public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __instance, NomaiInterfaceOrb orb, - bool ____ignoreDraggedOrbs, float ____radius, float ____exitRadius, ref NomaiInterfaceOrb ____occupyingOrb) - { - if (____ignoreDraggedOrbs && orb.IsBeingDragged()) - { - __result = false; - return false; - } - var orbDistance = Vector3.Distance(orb.transform.position, __instance.transform.position); - var triggerRadius = orb.IsBeingDragged() ? ____exitRadius : ____radius; - if (____occupyingOrb == null && orbDistance < ____radius) - { - ____occupyingOrb = orb; - if (Time.timeSinceLevelLoad > 1f) - { - WorldRegistry.HandleSlotStateChange(__instance, orb, true); - WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); - } - __result = true; - return false; - } - if (____occupyingOrb == null || ____occupyingOrb != orb) - { - __result = false; - return false; - } - if (orbDistance > triggerRadius) - { - WorldRegistry.HandleSlotStateChange(__instance, orb, false); - ____occupyingOrb = null; - WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); - __result = false; - return false; - } - __result = true; - return false; - } + public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __instance, NomaiInterfaceOrb orb, + bool ____ignoreDraggedOrbs, float ____radius, float ____exitRadius, ref NomaiInterfaceOrb ____occupyingOrb) + { + if (____ignoreDraggedOrbs && orb.IsBeingDragged()) + { + __result = false; + return false; + } + var orbDistance = Vector3.Distance(orb.transform.position, __instance.transform.position); + var triggerRadius = orb.IsBeingDragged() ? ____exitRadius : ____radius; + if (____occupyingOrb == null && orbDistance < ____radius) + { + ____occupyingOrb = orb; + if (Time.timeSinceLevelLoad > 1f) + { + WorldRegistry.HandleSlotStateChange(__instance, orb, true); + WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); + } + __result = true; + return false; + } + if (____occupyingOrb == null || ____occupyingOrb != orb) + { + __result = false; + return false; + } + if (orbDistance > triggerRadius) + { + WorldRegistry.HandleSlotStateChange(__instance, orb, false); + ____occupyingOrb = null; + WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); + __result = false; + return false; + } + __result = true; + return false; + } - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); - QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); - } - } + public override void DoPatches() + { + QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); + QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); + } + } } diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index f558f71c0..c12473b8e 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -12,38 +12,38 @@ namespace QSB.Patches { - public delegate void PatchEvent(QSBPatchTypes type); + public delegate void PatchEvent(QSBPatchTypes type); - public static class QSBPatchManager - { - public static List _patchList = new List(); + public static class QSBPatchManager + { + public static List _patchList = new List(); - public static event PatchEvent OnPatchType; + public static event PatchEvent OnPatchType; - public static void Init() - { - _patchList = new List - { - new ConversationPatches(), - new DeathPatches(), - new ElevatorPatches(), - new OrbPatches(), - new WakeUpPatches(), - new ProbePatches() - }; + public static void Init() + { + _patchList = new List + { + new ConversationPatches(), + new DeathPatches(), + new ElevatorPatches(), + new OrbPatches(), + new WakeUpPatches(), + new ProbePatches() + }; - DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); - } + DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); + } - public static void DoPatchType(QSBPatchTypes type) - { - OnPatchType?.Invoke(type); - DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); - foreach (var patch in _patchList.Where(x => x.Type == type)) - { - DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); - patch.DoPatches(); - } - } - } + public static void DoPatchType(QSBPatchTypes type) + { + OnPatchType?.Invoke(type); + DebugLog.DebugWrite($"Patch block {Enum.GetName(typeof(QSBPatchTypes), type)}", MessageType.Info); + foreach (var patch in _patchList.Where(x => x.Type == type)) + { + DebugLog.DebugWrite($" - Patching in {patch.GetType().Name}", MessageType.Info); + patch.DoPatches(); + } + } + } } diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 4933c6b25..381705cb0 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -2,11 +2,11 @@ namespace QSB.Player { - public abstract class PlayerSyncObject : QSBNetworkBehaviour - { - public uint AttachedNetId => GetComponent()?.NetId.Value ?? uint.MaxValue; - public uint PlayerId => this.GetPlayerOfObject(); - public uint PreviousPlayerId { get; set; } - public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); - } + public abstract class PlayerSyncObject : QSBNetworkBehaviour + { + public uint AttachedNetId => GetComponent()?.NetId.Value ?? uint.MaxValue; + public uint PlayerId => this.GetPlayerOfObject(); + public uint PreviousPlayerId { get; set; } + public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); + } } diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 6b2ee5da6..e5891331e 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -8,142 +8,142 @@ namespace QSB.Player { - public static class QSBPlayerManager - { - public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.NetId.Value ?? uint.MaxValue; - public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); - public static List PlayerList { get; } = new List(); + public static class QSBPlayerManager + { + public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.NetId.Value ?? uint.MaxValue; + public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); + public static List PlayerList { get; } = new List(); - public static List PlayerSyncObjects { get; } = new List(); + public static List PlayerSyncObjects { get; } = new List(); - public static PlayerInfo GetPlayer(uint id) - { - if (id == uint.MaxValue || id == 0U) - { - return default; - } - var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); - if (player != null) - { - return player; - } - DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); - player = new PlayerInfo(id); - PlayerList.Add(player); - return player; - } + public static PlayerInfo GetPlayer(uint id) + { + if (id == uint.MaxValue || id == 0U) + { + return default; + } + var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); + if (player != null) + { + return player; + } + DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); + player = new PlayerInfo(id); + PlayerList.Add(player); + return player; + } - public static void RemovePlayer(uint id) - { - DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); - PlayerList.Remove(GetPlayer(id)); - } + public static void RemovePlayer(uint id) + { + DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); + PlayerList.Remove(GetPlayer(id)); + } - public static void RemoveAllPlayers() - { - DebugLog.DebugWrite($"Removing all players.", MessageType.Info); - PlayerList.Clear(); - } + public static void RemoveAllPlayers() + { + DebugLog.DebugWrite($"Removing all players.", MessageType.Info); + PlayerList.Clear(); + } - public static bool PlayerExists(uint id) - { - return id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); - } + public static bool PlayerExists(uint id) + { + return id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); + } - public static void HandleFullStateMessage(PlayerStateMessage message) - { - var player = GetPlayer(message.AboutId); - player.Name = message.PlayerName; - player.IsReady = message.PlayerReady; - player.State = message.PlayerState; - if (LocalPlayer.IsReady) - { - player.UpdateStateObjects(); - } - } + public static void HandleFullStateMessage(PlayerStateMessage message) + { + var player = GetPlayer(message.AboutId); + player.Name = message.PlayerName; + player.IsReady = message.PlayerReady; + player.State = message.PlayerState; + if (LocalPlayer.IsReady) + { + player.UpdateStateObjects(); + } + } - public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - { - return PlayerSyncObjects.OfType().Where(x => x != null); - } + public static IEnumerable GetSyncObjects() where T : PlayerSyncObject + { + return PlayerSyncObjects.OfType().Where(x => x != null); + } - public static T GetSyncObject(uint id) where T : PlayerSyncObject - { - return GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); - } + public static T GetSyncObject(uint id) where T : PlayerSyncObject + { + return GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + } - public static bool IsBelongingToLocalPlayer(uint id) - { - return id == LocalPlayerId || - PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); - } + public static bool IsBelongingToLocalPlayer(uint id) + { + return id == LocalPlayerId || + PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); + } - public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) - { - if (PlayerList.Count == 0) - { - DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // Get all Player IDs - var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); - // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. - var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); - if (playerIds.Min() > syncObject.AttachedNetId) - { - DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) - // and the highest ID below the syncobject's id is the same as the highest player id. - if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) - { - // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. - if (syncObject.PreviousPlayerId != uint.MaxValue) - { - return syncObject.PreviousPlayerId; - } - // If the syncobject is a PlayerTransformSync, make a player. - if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) - { - return GetPlayer(syncObject.AttachedNetId).PlayerId; - } - DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - if (syncObject.PreviousPlayerId == uint.MaxValue) - { - DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - } - syncObject.PreviousPlayerId = lowerBound; - return lowerBound; - } + public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) + { + if (PlayerList.Count == 0) + { + DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + // Get all Player IDs + var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); + // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. + var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); + if (playerIds.Min() > syncObject.AttachedNetId) + { + DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) + // and the highest ID below the syncobject's id is the same as the highest player id. + if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) + { + // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. + if (syncObject.PreviousPlayerId != uint.MaxValue) + { + return syncObject.PreviousPlayerId; + } + // If the syncobject is a PlayerTransformSync, make a player. + if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) + { + return GetPlayer(syncObject.AttachedNetId).PlayerId; + } + DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + syncObject.PreviousPlayerId = uint.MaxValue; + return uint.MaxValue; + } + if (syncObject.PreviousPlayerId == uint.MaxValue) + { + DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); + } + syncObject.PreviousPlayerId = lowerBound; + return lowerBound; + } - public static List GetPlayerNetIds(PlayerInfo player) - { - if (PlayerSyncObjects.Count == 0) - { - return default; - } - int count = 0; - int totalCount = PlayerSyncObjects.Count; - PlayerSyncObjects.RemoveAll(x => x == null); - PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); - if (PlayerSyncObjects.Count != totalCount) - { - DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); - } - foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) - { - if (item.PlayerId == player.PlayerId) - { - count++; - } - } - return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); - } - } + public static List GetPlayerNetIds(PlayerInfo player) + { + if (PlayerSyncObjects.Count == 0) + { + return default; + } + int count = 0; + int totalCount = PlayerSyncObjects.Count; + PlayerSyncObjects.RemoveAll(x => x == null); + PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); + if (PlayerSyncObjects.Count != totalCount) + { + DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); + } + foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) + { + if (item.PlayerId == player.PlayerId) + { + count++; + } + } + return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); + } + } } diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 380177005..56d6d0eb7 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -15,92 +15,92 @@ namespace QSB { - public class QSB : ModBehaviour - { - public static IModBehaviour ModBehaviour { get; private set; } - public static IModHelper Helper { get; private set; } - public static string DefaultServerIP { get; private set; } - public static int Port { get; private set; } - public static bool DebugMode { get; private set; } - public static AssetBundle NetworkAssetBundle { get; private set; } - public static AssetBundle InstrumentAssetBundle { get; private set; } - public static bool HasWokenUp { get; set; } + public class QSB : ModBehaviour + { + public static IModBehaviour ModBehaviour { get; private set; } + public static IModHelper Helper { get; private set; } + public static string DefaultServerIP { get; private set; } + public static int Port { get; private set; } + public static bool DebugMode { get; private set; } + public static AssetBundle NetworkAssetBundle { get; private set; } + public static AssetBundle InstrumentAssetBundle { get; private set; } + public static bool HasWokenUp { get; set; } - private void Awake() - { - Application.runInBackground = true; + private void Awake() + { + Application.runInBackground = true; - var instance = TextTranslation.Get().GetValue("m_table"); - instance.theUITable[(int)UITextType.PleaseUseController] = - "Quantum Space Buddies is best experienced with friends..."; + var instance = TextTranslation.Get().GetValue("m_table"); + instance.theUITable[(int)UITextType.PleaseUseController] = + "Quantum Space Buddies is best experienced with friends..."; - ModBehaviour = this; + ModBehaviour = this; - LogFilter.currentLogLevel = LogFilter.Debug; + LogFilter.currentLogLevel = LogFilter.Debug; - // Application.logMessageReceived += Application_logMessageReceived; - } + // Application.logMessageReceived += Application_logMessageReceived; + } - private void Application_logMessageReceived(string condition, string stackTrace, LogType type) - { - switch (type) - { - case LogType.Assert: - DebugLog.DebugWrite($"Assert - {condition}", MessageType.Message); - break; - case LogType.Log: - DebugLog.DebugWrite($"Log - {condition}", MessageType.Message); - break; - case LogType.Warning: - DebugLog.DebugWrite($"Warning - {condition}", MessageType.Warning); - break; - } - } + private void Application_logMessageReceived(string condition, string stackTrace, LogType type) + { + switch (type) + { + case LogType.Assert: + DebugLog.DebugWrite($"Assert - {condition}", MessageType.Message); + break; + case LogType.Log: + DebugLog.DebugWrite($"Log - {condition}", MessageType.Message); + break; + case LogType.Warning: + DebugLog.DebugWrite($"Warning - {condition}", MessageType.Warning); + break; + } + } - private void Start() - { - Helper = ModHelper; - DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); + private void Start() + { + Helper = ModHelper; + DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); - NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); - InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); + NetworkAssetBundle = Helper.Assets.LoadBundle("assets/network"); + InstrumentAssetBundle = Helper.Assets.LoadBundle("assets/instruments"); - QSBPatchManager.Init(); + QSBPatchManager.Init(); - QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); + QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); - // Turns out these are very finicky about what order they go. QSBNetworkManager seems to - // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being - // null (even though it isn't...) - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); + // Turns out these are very finicky about what order they go. QSBNetworkManager seems to + // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being + // null (even though it isn't...) + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); - // Stop players being able to pause - Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); - } + // Stop players being able to pause + Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); + } - void Update() - { - QSBNetworkIdentity.UNetStaticUpdate(); - } + void Update() + { + QSBNetworkIdentity.UNetStaticUpdate(); + } - public override void Configure(IModConfig config) - { - DefaultServerIP = config.GetSettingsValue("defaultServerIP"); - Port = config.GetSettingsValue("port"); - if (QSBNetworkManager.Instance != null) - { - QSBNetworkManager.Instance.networkPort = Port; - } - DebugMode = config.GetSettingsValue("debugMode"); - } - } + public override void Configure(IModConfig config) + { + DefaultServerIP = config.GetSettingsValue("defaultServerIP"); + Port = config.GetSettingsValue("port"); + if (QSBNetworkManager.Instance != null) + { + QSBNetworkManager.Instance.networkPort = Port; + } + DebugMode = config.GetSettingsValue("debugMode"); + } + } } diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index 449c4ff9d..c3e8fae63 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -2,53 +2,53 @@ namespace QSB { - public delegate void InputEvent(); + public delegate void InputEvent(); - public class QSBInputManager : MonoBehaviour - { - public static QSBInputManager Instance; + public class QSBInputManager : MonoBehaviour + { + public static QSBInputManager Instance; - public static event InputEvent ChertTaunt; - public static event InputEvent EskerTaunt; - public static event InputEvent RiebeckTaunt; - public static event InputEvent GabbroTaunt; - public static event InputEvent FeldsparTaunt; - public static event InputEvent ExitTaunt; + public static event InputEvent ChertTaunt; + public static event InputEvent EskerTaunt; + public static event InputEvent RiebeckTaunt; + public static event InputEvent GabbroTaunt; + public static event InputEvent FeldsparTaunt; + public static event InputEvent ExitTaunt; - public void Awake() => Instance = this; + public void Awake() => Instance = this; - public void Update() - { - if (Input.GetKey(KeyCode.T)) - { - // Listed order is from sun to dark bramble - if (Input.GetKeyDown(KeyCode.Alpha1)) - { - ChertTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha2)) - { - EskerTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha5)) - { - RiebeckTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha4)) - { - GabbroTaunt?.Invoke(); - } - else if (Input.GetKeyDown(KeyCode.Alpha3)) - { - FeldsparTaunt?.Invoke(); - } - } + public void Update() + { + if (Input.GetKey(KeyCode.T)) + { + // Listed order is from sun to dark bramble + if (Input.GetKeyDown(KeyCode.Alpha1)) + { + ChertTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha2)) + { + EskerTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha5)) + { + RiebeckTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha4)) + { + GabbroTaunt?.Invoke(); + } + else if (Input.GetKeyDown(KeyCode.Alpha3)) + { + FeldsparTaunt?.Invoke(); + } + } - if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero - || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) - { - ExitTaunt?.Invoke(); - } - } - } + if (OWInput.GetValue(InputLibrary.moveXZ, InputMode.None) != Vector2.zero + || OWInput.GetValue(InputLibrary.jump, InputMode.None) != 0f) + { + ExitTaunt?.Invoke(); + } + } + } } diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index a19582a4e..d7f10c0e6 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -6,65 +6,65 @@ namespace QSB { - public class QSBNetworkLobby : NetworkBehaviour - { - public bool CanEditName { get; set; } - public string PlayerName { get; private set; } + public class QSBNetworkLobby : NetworkBehaviour + { + public bool CanEditName { get; set; } + public string PlayerName { get; private set; } - private readonly string[] _defaultNames = { - "Arkose", - "Chert", - "Esker", - "Hal", - "Hornfels", - "Feldspar", - "Gabbro", - "Galena", - "Gneiss", - "Gossan", - "Marl", - "Mica", - "Moraine", - "Porphy", - "Riebeck", - "Rutile", - "Slate", - "Spinel", - "Tektite", - "Tephra", - "Tuff", - "Jinha" - }; + private readonly string[] _defaultNames = { + "Arkose", + "Chert", + "Esker", + "Hal", + "Hornfels", + "Feldspar", + "Gabbro", + "Galena", + "Gneiss", + "Gossan", + "Marl", + "Mica", + "Moraine", + "Porphy", + "Riebeck", + "Rutile", + "Slate", + "Spinel", + "Tektite", + "Tephra", + "Tuff", + "Jinha" + }; - private void Awake() - { - PlayerName = GetPlayerName(); - CanEditName = true; - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); - } + private void Awake() + { + PlayerName = GetPlayerName(); + CanEditName = true; + QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + } - private string GetPlayerName() - { - var profileManager = StandaloneProfileManager.SharedInstance; - profileManager.Initialize(); - var profile = profileManager.GetValue("_currentProfile"); - var profileName = profile?.profileName; - return !string.IsNullOrEmpty(profileName) - ? profileName - : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); - } + private string GetPlayerName() + { + var profileManager = StandaloneProfileManager.SharedInstance; + profileManager.Initialize(); + var profile = profileManager.GetValue("_currentProfile"); + var profileName = profile?.profileName; + return !string.IsNullOrEmpty(profileName) + ? profileName + : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); + } - private void OnGUI() - { - GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); - if (CanEditName) - { - PlayerName = GUI.TextField(new Rect(60, 10, 145, 20f), PlayerName); - } - else - { - GUI.Label(new Rect(60, 10, 145, 20f), PlayerName); - } - } - } + private void OnGUI() + { + GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); + if (CanEditName) + { + PlayerName = GUI.TextField(new Rect(60, 10, 145, 20f), PlayerName); + } + else + { + GUI.Label(new Rect(60, 10, 145, 20f), PlayerName); + } + } + } } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 7628d40e3..f6727d20c 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -22,291 +22,291 @@ namespace QSB { - public class QSBNetworkManager : QSBNetworkManagerUNET - { - private const int MaxConnections = 128; - private const int MaxBufferedPackets = 64; - - public static QSBNetworkManager Instance { get; private set; } - - public event Action OnNetworkManagerReady; - public bool IsReady { get; private set; } - - private QSBNetworkLobby _lobby; - private AssetBundle _assetBundle; - private GameObject _shipPrefab; - private GameObject _cameraPrefab; - private GameObject _probePrefab; - public GameObject OrbPrefab; - - private void Awake() - { - DebugLog.DebugWrite("AWAKE"); - Instance = this; - - _lobby = gameObject.AddComponent(); - _assetBundle = QSB.NetworkAssetBundle; - - DebugLog.DebugWrite("player"); - playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - var ident = playerPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - playerPrefab.AddComponent(); - - DebugLog.DebugWrite("ship"); - _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); - ident = _shipPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", _shipPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); - _shipPrefab.AddComponent(); - spawnPrefabs.Add(_shipPrefab); - - DebugLog.DebugWrite("camera"); - _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); - ident = _cameraPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", _cameraPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); - _cameraPrefab.AddComponent(); - spawnPrefabs.Add(_cameraPrefab); - - DebugLog.DebugWrite("probe"); - _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); - ident = _probePrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", _probePrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); - _probePrefab.AddComponent(); - spawnPrefabs.Add(_probePrefab); - - DebugLog.DebugWrite("orb"); - OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - ident = OrbPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", OrbPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", OrbPrefab.GetComponent().sceneId); - OrbPrefab.AddComponent(); - spawnPrefabs.Add(OrbPrefab); - - ConfigureNetworkManager(); - QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; - } - - private void OnDestroy() - => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; - - private void OnSceneLoaded(OWScene scene) - { - DebugLog.DebugWrite("scene loaded"); - OrbManager.Instance.BuildOrbs(); - OrbManager.Instance.QueueBuildSlots(); - WorldRegistry.OldDialogueTrees.Clear(); - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - - private void ConfigureNetworkManager() - { - networkAddress = QSB.DefaultServerIP; - networkPort = QSB.Port; - maxConnections = MaxConnections; - customConfig = true; - connectionConfig.AddChannel(QosType.Reliable); - connectionConfig.AddChannel(QosType.Unreliable); - this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); - channels.Add(QosType.Reliable); - channels.Add(QosType.Unreliable); - - DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); - } - - public override void OnStartServer() - { - DebugLog.DebugWrite("OnStartServer", MessageType.Info); - if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) - { - OrbManager.Instance.QueueBuildOrbs(); - } - if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) - { - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); - } - - QSBNetworkServer.UnregisterHandler(40); - QSBNetworkServer.UnregisterHandler(41); - QSBNetworkServer.UnregisterHandler(42); - QSBNetworkServer.RegisterHandler(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); - QSBNetworkServer.RegisterHandler(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); - QSBNetworkServer.RegisterHandler(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); - } - - public override void OnServerAddPlayer(QSBNetworkConnection connection, short playerControllerId) // Called on the server when a client joins - { - DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); - base.OnServerAddPlayer(connection, playerControllerId); - - QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); - QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); - QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); - } - - public override void OnClientConnect(QSBNetworkConnection connection) // Called on the client when connecting to a server - { - DebugLog.DebugWrite("OnClientConnect", MessageType.Info); - base.OnClientConnect(connection); - - gameObject.AddComponent(); - gameObject.AddComponent(); - gameObject.AddComponent(); - - if (QSBSceneManager.IsInUniverse) - { - QSBSectorManager.Instance.RebuildSectors(); - OrbManager.Instance.QueueBuildSlots(); - } - - if (!QSBNetworkServer.localClientActive) - { - QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); - singleton.client.UnregisterHandler(40); - singleton.client.UnregisterHandler(41); - singleton.client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - singleton.client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); - } - singleton.client.UnregisterHandler(42); - singleton.client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); - - QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); - - _lobby.CanEditName = false; - - OnNetworkManagerReady?.Invoke(); - IsReady = true; - - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, - () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, - () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); - } - - public override void OnStopClient() // Called on the client when closing connection - { - DebugLog.DebugWrite("OnStopClient", MessageType.Info); - DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); - Destroy(GetComponent()); - Destroy(GetComponent()); - Destroy(GetComponent()); - QSBEventManager.Reset(); - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - - foreach (var player in QSBPlayerManager.PlayerList) - { - QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); - } - QSBPlayerManager.RemoveAllPlayers(); - - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldDialogueTrees.Clear(); - - _lobby.CanEditName = true; - } - - public override void OnServerDisconnect(QSBNetworkConnection connection) // Called on the server when any client disconnects - { - DebugLog.DebugWrite("OnServerDisconnect", MessageType.Info); - var player = connection.GetPlayer(); - var netIds = connection.ClientOwnedObjects.Select(x => x.Value).ToArray(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); - - foreach (var item in WorldRegistry.OrbSyncList) - { - var identity = item.GetComponent(); - if (identity.ClientAuthorityOwner == connection) - { - identity.RemoveClientAuthority(connection); - } - } - - player.HudMarker?.Remove(); - CleanupConnection(connection); - } - - public override void OnStopServer() - { - DebugLog.DebugWrite("OnStopServer", MessageType.Info); - Destroy(GetComponent()); - Destroy(GetComponent()); - Destroy(GetComponent()); - QSBEventManager.Reset(); - DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - QSBNetworkServer.connections.ToList().ForEach(CleanupConnection); - - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - - base.OnStopServer(); - } - - private void CleanupConnection(QSBNetworkConnection connection) - { - var player = connection.GetPlayer(); - DebugLog.ToConsole($"{player.Name} disconnected.", MessageType.Info); - QSBPlayerManager.RemovePlayer(player.PlayerId); - - var netIds = connection.ClientOwnedObjects?.Select(x => x.Value).ToList(); - netIds.ForEach(CleanupNetworkBehaviour); - } - - public void CleanupNetworkBehaviour(uint netId) - { - DebugLog.DebugWrite($"Cleaning up netId {netId}"); - // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them - var networkBehaviours = FindObjectsOfType() - .Where(x => x != null && x.NetId.Value == netId); - foreach (var networkBehaviour in networkBehaviours) - { - var transformSync = networkBehaviour.GetComponent(); - - if (transformSync != null) - { - DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); - if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.HasAuthority) - { - DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); - Destroy(transformSync.SyncedTransform.gameObject); - } - } - - var animationSync = networkBehaviour.GetComponent(); - - if (animationSync != null) - { - DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); - } - - if (!networkBehaviour.HasAuthority) - { - DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); - Destroy(networkBehaviour.gameObject); - } - } - } - } + public class QSBNetworkManager : QSBNetworkManagerUNET + { + private const int MaxConnections = 128; + private const int MaxBufferedPackets = 64; + + public static QSBNetworkManager Instance { get; private set; } + + public event Action OnNetworkManagerReady; + public bool IsReady { get; private set; } + + private QSBNetworkLobby _lobby; + private AssetBundle _assetBundle; + private GameObject _shipPrefab; + private GameObject _cameraPrefab; + private GameObject _probePrefab; + public GameObject OrbPrefab; + + private void Awake() + { + DebugLog.DebugWrite("AWAKE"); + Instance = this; + + _lobby = gameObject.AddComponent(); + _assetBundle = QSB.NetworkAssetBundle; + + DebugLog.DebugWrite("player"); + playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); + var ident = playerPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + playerPrefab.AddComponent(); + + DebugLog.DebugWrite("ship"); + _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); + ident = _shipPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _shipPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); + _shipPrefab.AddComponent(); + spawnPrefabs.Add(_shipPrefab); + + DebugLog.DebugWrite("camera"); + _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); + ident = _cameraPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _cameraPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); + _cameraPrefab.AddComponent(); + spawnPrefabs.Add(_cameraPrefab); + + DebugLog.DebugWrite("probe"); + _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); + ident = _probePrefab.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", _probePrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); + _probePrefab.AddComponent(); + spawnPrefabs.Add(_probePrefab); + + DebugLog.DebugWrite("orb"); + OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); + ident = OrbPrefab.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", OrbPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", OrbPrefab.GetComponent().sceneId); + OrbPrefab.AddComponent(); + spawnPrefabs.Add(OrbPrefab); + + ConfigureNetworkManager(); + QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; + } + + private void OnDestroy() + => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; + + private void OnSceneLoaded(OWScene scene) + { + DebugLog.DebugWrite("scene loaded"); + OrbManager.Instance.BuildOrbs(); + OrbManager.Instance.QueueBuildSlots(); + WorldRegistry.OldDialogueTrees.Clear(); + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } + + private void ConfigureNetworkManager() + { + networkAddress = QSB.DefaultServerIP; + networkPort = QSB.Port; + maxConnections = MaxConnections; + customConfig = true; + connectionConfig.AddChannel(QosType.Reliable); + connectionConfig.AddChannel(QosType.Unreliable); + this.SetValue("m_MaxBufferedPackets", MaxBufferedPackets); + channels.Add(QosType.Reliable); + channels.Add(QosType.Unreliable); + + DebugLog.DebugWrite("Network Manager ready.", MessageType.Success); + } + + public override void OnStartServer() + { + DebugLog.DebugWrite("OnStartServer", MessageType.Info); + if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) + { + OrbManager.Instance.QueueBuildOrbs(); + } + if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) + { + WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + } + + QSBNetworkServer.UnregisterHandler(40); + QSBNetworkServer.UnregisterHandler(41); + QSBNetworkServer.UnregisterHandler(42); + QSBNetworkServer.RegisterHandler(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + QSBNetworkServer.RegisterHandler(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + QSBNetworkServer.RegisterHandler(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); + } + + public override void OnServerAddPlayer(QSBNetworkConnection connection, short playerControllerId) // Called on the server when a client joins + { + DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); + base.OnServerAddPlayer(connection, playerControllerId); + + QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); + QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection); + QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection); + } + + public override void OnClientConnect(QSBNetworkConnection connection) // Called on the client when connecting to a server + { + DebugLog.DebugWrite("OnClientConnect", MessageType.Info); + base.OnClientConnect(connection); + + gameObject.AddComponent(); + gameObject.AddComponent(); + gameObject.AddComponent(); + + if (QSBSceneManager.IsInUniverse) + { + QSBSectorManager.Instance.RebuildSectors(); + OrbManager.Instance.QueueBuildSlots(); + } + + if (!QSBNetworkServer.localClientActive) + { + QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); + singleton.client.UnregisterHandler(40); + singleton.client.UnregisterHandler(41); + singleton.client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + singleton.client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + } + singleton.client.UnregisterHandler(42); + singleton.client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + + QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); + + _lobby.CanEditName = false; + + OnNetworkManagerReady?.Invoke(); + IsReady = true; + + QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); + + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); + + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); + } + + public override void OnStopClient() // Called on the client when closing connection + { + DebugLog.DebugWrite("OnStopClient", MessageType.Info); + DebugLog.ToConsole("Disconnecting from server...", MessageType.Info); + Destroy(GetComponent()); + Destroy(GetComponent()); + Destroy(GetComponent()); + QSBEventManager.Reset(); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); + + foreach (var player in QSBPlayerManager.PlayerList) + { + QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); + } + QSBPlayerManager.RemoveAllPlayers(); + + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.OrbSyncList.Clear(); + WorldRegistry.OldDialogueTrees.Clear(); + + _lobby.CanEditName = true; + } + + public override void OnServerDisconnect(QSBNetworkConnection connection) // Called on the server when any client disconnects + { + DebugLog.DebugWrite("OnServerDisconnect", MessageType.Info); + var player = connection.GetPlayer(); + var netIds = connection.ClientOwnedObjects.Select(x => x.Value).ToArray(); + GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); + + foreach (var item in WorldRegistry.OrbSyncList) + { + var identity = item.GetComponent(); + if (identity.ClientAuthorityOwner == connection) + { + identity.RemoveClientAuthority(connection); + } + } + + player.HudMarker?.Remove(); + CleanupConnection(connection); + } + + public override void OnStopServer() + { + DebugLog.DebugWrite("OnStopServer", MessageType.Info); + Destroy(GetComponent()); + Destroy(GetComponent()); + Destroy(GetComponent()); + QSBEventManager.Reset(); + DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); + QSBNetworkServer.connections.ToList().ForEach(CleanupConnection); + + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + WorldRegistry.RemoveObjects(); + + base.OnStopServer(); + } + + private void CleanupConnection(QSBNetworkConnection connection) + { + var player = connection.GetPlayer(); + DebugLog.ToConsole($"{player.Name} disconnected.", MessageType.Info); + QSBPlayerManager.RemovePlayer(player.PlayerId); + + var netIds = connection.ClientOwnedObjects?.Select(x => x.Value).ToList(); + netIds.ForEach(CleanupNetworkBehaviour); + } + + public void CleanupNetworkBehaviour(uint netId) + { + DebugLog.DebugWrite($"Cleaning up netId {netId}"); + // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them + var networkBehaviours = FindObjectsOfType() + .Where(x => x != null && x.NetId.Value == netId); + foreach (var networkBehaviour in networkBehaviours) + { + var transformSync = networkBehaviour.GetComponent(); + + if (transformSync != null) + { + DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); + QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); + if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.HasAuthority) + { + DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); + Destroy(transformSync.SyncedTransform.gameObject); + } + } + + var animationSync = networkBehaviour.GetComponent(); + + if (animationSync != null) + { + DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); + QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); + } + + if (!networkBehaviour.HasAuthority) + { + DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); + Destroy(networkBehaviour.gameObject); + } + } + } + } } \ No newline at end of file diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 84e2583dc..dff06700c 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -4,33 +4,33 @@ namespace QSB { - public static class QSBSceneManager - { - public static OWScene CurrentScene => LoadManager.GetCurrentScene(); + public static class QSBSceneManager + { + public static OWScene CurrentScene => LoadManager.GetCurrentScene(); - public static bool IsInUniverse => InUniverse(CurrentScene); + public static bool IsInUniverse => InUniverse(CurrentScene); - public static event Action OnSceneLoaded; - public static event Action OnUniverseSceneLoaded; + public static event Action OnSceneLoaded; + public static event Action OnUniverseSceneLoaded; - static QSBSceneManager() - { - LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; - DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); - } + static QSBSceneManager() + { + LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; + DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); + } - private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) - { - DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); - var universe = InUniverse(newScene); - OnSceneLoaded?.Invoke(newScene, universe); - if (universe) - { - OnUniverseSceneLoaded?.Invoke(newScene); - } - } + private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) + { + DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); + var universe = InUniverse(newScene); + OnSceneLoaded?.Invoke(newScene, universe); + if (universe) + { + OnUniverseSceneLoaded?.Invoke(newScene); + } + } - private static bool InUniverse(OWScene scene) - => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) + => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; + } } diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index 1b3dc1e71..bd3ef0e3c 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -3,23 +3,23 @@ namespace QSB.TimeSync { - public class PreserveTimeScale : QSBNetworkBehaviour - { - private void Start() - { - QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button + public class PreserveTimeScale : QSBNetworkBehaviour + { + private void Start() + { + QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button - // Allow server to sleep at campfires - if (IsServer) - { - return; - } + // Allow server to sleep at campfires + if (IsServer) + { + return; + } - var campfires = FindObjectsOfType(); - foreach (var campfire in campfires) - { - campfire.SetValue("_canSleepHere", false); // Stop players from sleeping at campfires - } - } - } + var campfires = FindObjectsOfType(); + foreach (var campfire in campfires) + { + campfire.SetValue("_canSleepHere", false); // Stop players from sleeping at campfires + } + } + } } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 45723a6f5..29f8bf251 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -7,250 +7,250 @@ namespace QSB.TimeSync { - public class WakeUpSync : QSBNetworkBehaviour - { - public static WakeUpSync LocalInstance { get; private set; } - - private const float TimeThreshold = 0.5f; - private const float MaxFastForwardSpeed = 60f; - private const float MaxFastForwardDiff = 20f; - private const float MinFastForwardSpeed = 2f; - - private enum State { NotLoaded, Loaded, FastForwarding, Pausing } - private State _state = State.NotLoaded; - - private float _sendTimer; - private float _serverTime; - private float _timeScale; - private bool _isInputEnabled = true; - private bool _isFirstFastForward = true; - private int _localLoopCount; - private int _serverLoopCount; - - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } - - private void Start() - { - if (!IsLocalPlayer) - { - return; - } - - if (QSBSceneManager.IsInUniverse) - { - Init(); - } - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - - GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); - GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); - } - - private void OnWakeUp() - { - DebugLog.DebugWrite("ON WAKE UP!"); - if (QSBNetworkServer.active) - { - QSB.HasWokenUp = true; - } - } - - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); - GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); - } - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); - if (isInUniverse) - { - Init(); - } - else - { - _state = State.NotLoaded; - } - } - - private void OnLoopStart() - { - _localLoopCount++; - } - - private void Init() - { - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - _state = State.Loaded; - gameObject.AddComponent(); - if (IsServer) - { - SendServerTime(); - } - else - { - WakeUpOrSleep(); - } - } - - private void SendServerTime() - { - GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); - } - - public void OnClientReceiveMessage(ServerTimeMessage message) - { - _serverTime = message.ServerTime; - _serverLoopCount = message.LoopCount; - WakeUpOrSleep(); - } - - private void WakeUpOrSleep() - { - if (_state == State.NotLoaded || _localLoopCount != _serverLoopCount) - { - return; - } - - var myTime = Time.timeSinceLevelLoad; - var diff = myTime - _serverTime; - - if (diff > TimeThreshold) - { - StartPausing(); - return; - } - - if (diff < -TimeThreshold) - { - StartFastForwarding(); - } - } - - private void StartFastForwarding() - { - if (_state == State.FastForwarding) - { - return; - } - _timeScale = MaxFastForwardSpeed; - _state = State.FastForwarding; - TimeSyncUI.Start(TimeSyncType.Fastforwarding); - } - - private void StartPausing() - { - if (_state == State.Pausing) - { - return; - } - _timeScale = 0f; - _state = State.Pausing; - SpinnerUI.Show(); - TimeSyncUI.Start(TimeSyncType.Pausing); - } - - private void ResetTimeScale() - { - _timeScale = 1f; - _state = State.Loaded; - - if (!_isInputEnabled) - { - EnableInput(); - } - _isFirstFastForward = false; - QSB.HasWokenUp = true; - Physics.SyncTransforms(); - SpinnerUI.Hide(); - TimeSyncUI.Stop(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - RespawnOnDeath.Instance.Init(); - } - - private void DisableInput() - { - _isInputEnabled = false; - OWInput.ChangeInputMode(InputMode.None); - } - - private void EnableInput() - { - _isInputEnabled = true; - OWInput.ChangeInputMode(InputMode.Character); - } - - private void Update() - { - if (IsServer) - { - UpdateServer(); - } - else if (IsLocalPlayer) - { - UpdateLocal(); - } - } - - private void UpdateServer() - { - if (_state != State.Loaded) - { - return; - } - - _sendTimer += Time.unscaledDeltaTime; - if (_sendTimer > 1) - { - SendServerTime(); - _sendTimer = 0; - } - } - - private void UpdateLocal() - { - _serverTime += Time.unscaledDeltaTime; - - if (_state == State.NotLoaded) - { - return; - } - - if (_state == State.FastForwarding) - { - var diff = _serverTime - Time.timeSinceLevelLoad; - Time.timeScale = Mathf.Lerp(MinFastForwardSpeed, MaxFastForwardSpeed, Mathf.Abs(diff) / MaxFastForwardDiff); - - if (QSBSceneManager.CurrentScene == OWScene.SolarSystem && _isFirstFastForward) - { - var spawnPoint = Locator.GetPlayerBody().GetComponent().GetInitialSpawnPoint().transform; - Locator.GetPlayerTransform().position = spawnPoint.position; - Locator.GetPlayerTransform().rotation = spawnPoint.rotation; - Physics.SyncTransforms(); - } - } - else - { - Time.timeScale = _timeScale; - } - - var isDoneFastForwarding = _state == State.FastForwarding && Time.timeSinceLevelLoad >= _serverTime; - var isDonePausing = _state == State.Pausing && Time.timeSinceLevelLoad < _serverTime; - - if (isDoneFastForwarding || isDonePausing) - { - ResetTimeScale(); - } - - if (!_isInputEnabled && OWInput.GetInputMode() != InputMode.None) - { - DisableInput(); - } - } - } + public class WakeUpSync : QSBNetworkBehaviour + { + public static WakeUpSync LocalInstance { get; private set; } + + private const float TimeThreshold = 0.5f; + private const float MaxFastForwardSpeed = 60f; + private const float MaxFastForwardDiff = 20f; + private const float MinFastForwardSpeed = 2f; + + private enum State { NotLoaded, Loaded, FastForwarding, Pausing } + private State _state = State.NotLoaded; + + private float _sendTimer; + private float _serverTime; + private float _timeScale; + private bool _isInputEnabled = true; + private bool _isFirstFastForward = true; + private int _localLoopCount; + private int _serverLoopCount; + + public override void OnStartLocalPlayer() + { + LocalInstance = this; + } + + private void Start() + { + if (!IsLocalPlayer) + { + return; + } + + if (QSBSceneManager.IsInUniverse) + { + Init(); + } + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + + GlobalMessenger.AddListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.AddListener(EventNames.WakeUp, OnWakeUp); + } + + private void OnWakeUp() + { + DebugLog.DebugWrite("ON WAKE UP!"); + if (QSBNetworkServer.active) + { + QSB.HasWokenUp = true; + } + } + + private void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); + GlobalMessenger.RemoveListener(EventNames.WakeUp, OnWakeUp); + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); + if (isInUniverse) + { + Init(); + } + else + { + _state = State.NotLoaded; + } + } + + private void OnLoopStart() + { + _localLoopCount++; + } + + private void Init() + { + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + _state = State.Loaded; + gameObject.AddComponent(); + if (IsServer) + { + SendServerTime(); + } + else + { + WakeUpOrSleep(); + } + } + + private void SendServerTime() + { + GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); + } + + public void OnClientReceiveMessage(ServerTimeMessage message) + { + _serverTime = message.ServerTime; + _serverLoopCount = message.LoopCount; + WakeUpOrSleep(); + } + + private void WakeUpOrSleep() + { + if (_state == State.NotLoaded || _localLoopCount != _serverLoopCount) + { + return; + } + + var myTime = Time.timeSinceLevelLoad; + var diff = myTime - _serverTime; + + if (diff > TimeThreshold) + { + StartPausing(); + return; + } + + if (diff < -TimeThreshold) + { + StartFastForwarding(); + } + } + + private void StartFastForwarding() + { + if (_state == State.FastForwarding) + { + return; + } + _timeScale = MaxFastForwardSpeed; + _state = State.FastForwarding; + TimeSyncUI.Start(TimeSyncType.Fastforwarding); + } + + private void StartPausing() + { + if (_state == State.Pausing) + { + return; + } + _timeScale = 0f; + _state = State.Pausing; + SpinnerUI.Show(); + TimeSyncUI.Start(TimeSyncType.Pausing); + } + + private void ResetTimeScale() + { + _timeScale = 1f; + _state = State.Loaded; + + if (!_isInputEnabled) + { + EnableInput(); + } + _isFirstFastForward = false; + QSB.HasWokenUp = true; + Physics.SyncTransforms(); + SpinnerUI.Hide(); + TimeSyncUI.Stop(); + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + RespawnOnDeath.Instance.Init(); + } + + private void DisableInput() + { + _isInputEnabled = false; + OWInput.ChangeInputMode(InputMode.None); + } + + private void EnableInput() + { + _isInputEnabled = true; + OWInput.ChangeInputMode(InputMode.Character); + } + + private void Update() + { + if (IsServer) + { + UpdateServer(); + } + else if (IsLocalPlayer) + { + UpdateLocal(); + } + } + + private void UpdateServer() + { + if (_state != State.Loaded) + { + return; + } + + _sendTimer += Time.unscaledDeltaTime; + if (_sendTimer > 1) + { + SendServerTime(); + _sendTimer = 0; + } + } + + private void UpdateLocal() + { + _serverTime += Time.unscaledDeltaTime; + + if (_state == State.NotLoaded) + { + return; + } + + if (_state == State.FastForwarding) + { + var diff = _serverTime - Time.timeSinceLevelLoad; + Time.timeScale = Mathf.Lerp(MinFastForwardSpeed, MaxFastForwardSpeed, Mathf.Abs(diff) / MaxFastForwardDiff); + + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem && _isFirstFastForward) + { + var spawnPoint = Locator.GetPlayerBody().GetComponent().GetInitialSpawnPoint().transform; + Locator.GetPlayerTransform().position = spawnPoint.position; + Locator.GetPlayerTransform().rotation = spawnPoint.rotation; + Physics.SyncTransforms(); + } + } + else + { + Time.timeScale = _timeScale; + } + + var isDoneFastForwarding = _state == State.FastForwarding && Time.timeSinceLevelLoad >= _serverTime; + var isDonePausing = _state == State.Pausing && Time.timeSinceLevelLoad < _serverTime; + + if (isDoneFastForwarding || isDonePausing) + { + ResetTimeScale(); + } + + if (!_isInputEnabled && OWInput.GetInputMode() != InputMode.None) + { + DisableInput(); + } + } + } } \ No newline at end of file diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index bcde3f8cc..20513639e 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -5,95 +5,95 @@ namespace QSB.TransformSync { - public class NomaiOrbTransformSync : QSBNetworkBehaviour - { - public NomaiInterfaceOrb AttachedOrb { get; private set; } - public Transform OrbTransform { get; private set; } - - private int Index => WorldRegistry.OrbSyncList.IndexOf(this); - - private const int MaxUpdatesBeforeDisable = 5; - - private bool _isInitialized; - private bool _isReady; - private Transform _orbParent; - private int _updateCount; - - public override void OnStartClient() - { - DontDestroyOnLoad(this); - WorldRegistry.OrbSyncList.Add(this); - - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); - } - - public override void OnStartAuthority() - { - DebugLog.DebugWrite("START AUTHORITY - has auth? : " + HasAuthority); - } - - public override void OnStopAuthority() - { - DebugLog.DebugWrite("END AUTHORITY - has auth? : " + HasAuthority); - } - - private void OnReady() - { - AttachedOrb = WorldRegistry.OldOrbList[Index]; - _isReady = true; - } - - private void OnDestroy() - { - WorldRegistry.OrbSyncList.Remove(this); - } - - protected void Init() - { - OrbTransform = AttachedOrb.transform; - _orbParent = AttachedOrb.GetAttachedOWRigidbody().GetOrigParent(); - _isInitialized = true; - } - - private void Update() - { - if (!_isInitialized && _isReady) - { - Init(); - } - else if (_isInitialized && !_isReady) - { - _isInitialized = false; - } - - if (OrbTransform == null || !_isInitialized) - { - return; - } - - UpdateTransform(); - } - - protected virtual void UpdateTransform() - { - if (HasAuthority) - { - transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); - transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - return; - } - OrbTransform.position = _orbParent.TransformPoint(transform.position); - OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - - if (transform.localPosition == Vector3.zero) - { - _updateCount++; - } - if (_updateCount >= MaxUpdatesBeforeDisable) - { - enabled = false; - _updateCount = 0; - } - } - } + public class NomaiOrbTransformSync : QSBNetworkBehaviour + { + public NomaiInterfaceOrb AttachedOrb { get; private set; } + public Transform OrbTransform { get; private set; } + + private int Index => WorldRegistry.OrbSyncList.IndexOf(this); + + private const int MaxUpdatesBeforeDisable = 5; + + private bool _isInitialized; + private bool _isReady; + private Transform _orbParent; + private int _updateCount; + + public override void OnStartClient() + { + DontDestroyOnLoad(this); + WorldRegistry.OrbSyncList.Add(this); + + QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); + } + + public override void OnStartAuthority() + { + DebugLog.DebugWrite("START AUTHORITY - has auth? : " + HasAuthority); + } + + public override void OnStopAuthority() + { + DebugLog.DebugWrite("END AUTHORITY - has auth? : " + HasAuthority); + } + + private void OnReady() + { + AttachedOrb = WorldRegistry.OldOrbList[Index]; + _isReady = true; + } + + private void OnDestroy() + { + WorldRegistry.OrbSyncList.Remove(this); + } + + protected void Init() + { + OrbTransform = AttachedOrb.transform; + _orbParent = AttachedOrb.GetAttachedOWRigidbody().GetOrigParent(); + _isInitialized = true; + } + + private void Update() + { + if (!_isInitialized && _isReady) + { + Init(); + } + else if (_isInitialized && !_isReady) + { + _isInitialized = false; + } + + if (OrbTransform == null || !_isInitialized) + { + return; + } + + UpdateTransform(); + } + + protected virtual void UpdateTransform() + { + if (HasAuthority) + { + transform.position = _orbParent.InverseTransformPoint(OrbTransform.position); + transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + return; + } + OrbTransform.position = _orbParent.TransformPoint(transform.position); + OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + + if (transform.localPosition == Vector3.zero) + { + _updateCount++; + } + if (_updateCount >= MaxUpdatesBeforeDisable) + { + enabled = false; + _updateCount = 0; + } + } + } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index efc92f4d3..156882940 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -7,45 +7,45 @@ namespace QSB.TransformSync { - public class PlayerCameraSync : TransformSync - { - public static PlayerCameraSync LocalInstance { get; private set; } + public class PlayerCameraSync : TransformSync + { + public static PlayerCameraSync LocalInstance { get; private set; } - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } + public override void OnStartLocalPlayer() + { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); + LocalInstance = this; + } - protected override Transform InitLocalTransform() - { - var body = Locator.GetPlayerCamera().gameObject.transform; + protected override Transform InitLocalTransform() + { + var body = Locator.GetPlayerCamera().gameObject.transform; - Player.Camera = body.gameObject; + Player.Camera = body.gameObject; - Player.IsReady = true; - GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); - DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); - GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); + Player.IsReady = true; + GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); + DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); + GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = new GameObject("RemotePlayerCamera"); + protected override Transform InitRemoteTransform() + { + var body = new GameObject("RemotePlayerCamera"); - PlayerToolsManager.Init(body.transform); + PlayerToolsManager.Init(body.transform); - Player.Camera = body; + Player.Camera = body; - return body.transform; - } + return body.transform; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index fb2fe6241..6c71ae2d6 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -6,96 +6,96 @@ namespace QSB.TransformSync { - public class PlayerProbeSync : TransformSync - { - public static PlayerProbeSync LocalInstance { get; private set; } - - private Transform _disabledSocket; - - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } - - private Transform GetProbe() - { - return Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - } - - protected override Transform InitLocalTransform() - { - var body = GetProbe(); - - SetSocket(Player.Camera.transform); - Player.ProbeBody = body.gameObject; - - return body; - } - - protected override Transform InitRemoteTransform() - { - var probe = GetProbe(); - - if (probe == null) - { - DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); - return default; - } - - var body = probe.InstantiateInactive(); - body.name = "RemoteProbeTransform"; - - Destroy(body.GetComponentInChildren()); - - PlayerToolsManager.CreateProbe(body, Player); - - QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); - Player.ProbeBody = body.gameObject; - - return body; - } - - private void SetSocket(Transform socket) - { - DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); - _disabledSocket = socket; - } - - protected override void UpdateTransform() - { - base.UpdateTransform(); - if (Player == null) - { - DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); - return; - } - if (_disabledSocket == null) - { - DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); - return; - } - if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) - { - return; - } - if (HasAuthority) - { - transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - return; - } - if (SyncedTransform.position == Vector3.zero) - { - return; - } - SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - } - - public override bool IsReady => Locator.GetProbe() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public class PlayerProbeSync : TransformSync + { + public static PlayerProbeSync LocalInstance { get; private set; } + + private Transform _disabledSocket; + + public override void OnStartLocalPlayer() + { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); + LocalInstance = this; + } + + private Transform GetProbe() + { + return Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); + } + + protected override Transform InitLocalTransform() + { + var body = GetProbe(); + + SetSocket(Player.Camera.transform); + Player.ProbeBody = body.gameObject; + + return body; + } + + protected override Transform InitRemoteTransform() + { + var probe = GetProbe(); + + if (probe == null) + { + DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); + return default; + } + + var body = probe.InstantiateInactive(); + body.name = "RemoteProbeTransform"; + + Destroy(body.GetComponentInChildren()); + + PlayerToolsManager.CreateProbe(body, Player); + + QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); + Player.ProbeBody = body.gameObject; + + return body; + } + + private void SetSocket(Transform socket) + { + DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); + _disabledSocket = socket; + } + + protected override void UpdateTransform() + { + base.UpdateTransform(); + if (Player == null) + { + DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); + return; + } + if (_disabledSocket == null) + { + DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); + return; + } + if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) + { + return; + } + if (HasAuthority) + { + transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + return; + } + if (SyncedTransform.position == Vector3.zero) + { + return; + } + SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + } + + public override bool IsReady => Locator.GetProbe() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index 3b468926c..f710b30ca 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -7,59 +7,59 @@ namespace QSB.TransformSync { - public class PlayerTransformSync : TransformSync - { - public static PlayerTransformSync LocalInstance { get; private set; } + public class PlayerTransformSync : TransformSync + { + public static PlayerTransformSync LocalInstance { get; private set; } - static PlayerTransformSync() - { - DebugLog.DebugWrite("Constructor", MessageType.Info); - AnimControllerPatch.Init(); - } + static PlayerTransformSync() + { + DebugLog.DebugWrite("Constructor", MessageType.Info); + AnimControllerPatch.Init(); + } - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } + public override void OnStartLocalPlayer() + { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); + LocalInstance = this; + } - private Transform GetPlayerModel() - { - return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); - } + private Transform GetPlayerModel() + { + return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); + } - protected override Transform InitLocalTransform() - { - var body = GetPlayerModel(); + protected override Transform InitLocalTransform() + { + var body = GetPlayerModel(); - GetComponent().InitLocal(body); - GetComponent().InitLocal(body); + GetComponent().InitLocal(body); + GetComponent().InitLocal(body); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = Instantiate(GetPlayerModel()); + protected override Transform InitRemoteTransform() + { + var body = Instantiate(GetPlayerModel()); - GetComponent().InitRemote(body); - GetComponent().InitRemote(body); + GetComponent().InitRemote(body); + GetComponent().InitRemote(body); - var marker = body.gameObject.AddComponent(); - marker.Init(Player); + var marker = body.gameObject.AddComponent(); + marker.Init(Player); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 7686d4ea0..cf831f4d6 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -5,59 +5,59 @@ namespace QSB.TransformSync { - public class ShipTransformSync : TransformSync - { - public static ShipTransformSync LocalInstance { get; private set; } - - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } - - private Transform GetShipModel() - { - return Locator.GetShipTransform(); - } - - protected override Transform InitLocalTransform() - { - return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); - } - - protected override Transform InitRemoteTransform() - { - var shipModel = GetShipModel(); - - var remoteTransform = new GameObject("RemoteShipTransform").transform; - - Instantiate(shipModel.Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Geometry/Cabin_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Tech/Cabin_Tech_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Supplies/Geo_Supplies/Supplies_Geometry/Supplies_Exterior"), remoteTransform); - Instantiate(shipModel.Find("Module_Engine/Geo_Engine/Engine_Geometry/Engine_Exterior"), remoteTransform); - - var landingGearFront = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Front/Geo_LandingGear_Front"), remoteTransform); - var landingGearLeft = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Left/Geo_LandingGear_Left"), remoteTransform); - var landingGearRight = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Right/Geo_LandingGear_Right"), remoteTransform); - - Destroy(landingGearFront.Find("LandingGear_FrontCollision").gameObject); - Destroy(landingGearLeft.Find("LandingGear_LeftCollision").gameObject); - Destroy(landingGearRight.Find("LandingGear_RightCollision").gameObject); - - landingGearFront.localPosition - = landingGearLeft.localPosition - = landingGearRight.localPosition - += Vector3.up * 3.762f; - - return remoteTransform; - } - - public override bool IsReady => GetShipModel() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public class ShipTransformSync : TransformSync + { + public static ShipTransformSync LocalInstance { get; private set; } + + public override void OnStartLocalPlayer() + { + DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); + LocalInstance = this; + } + + private Transform GetShipModel() + { + return Locator.GetShipTransform(); + } + + protected override Transform InitLocalTransform() + { + return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); + } + + protected override Transform InitRemoteTransform() + { + var shipModel = GetShipModel(); + + var remoteTransform = new GameObject("RemoteShipTransform").transform; + + Instantiate(shipModel.Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Geometry/Cabin_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Cabin/Geo_Cabin/Cabin_Tech/Cabin_Tech_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Supplies/Geo_Supplies/Supplies_Geometry/Supplies_Exterior"), remoteTransform); + Instantiate(shipModel.Find("Module_Engine/Geo_Engine/Engine_Geometry/Engine_Exterior"), remoteTransform); + + var landingGearFront = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Front/Geo_LandingGear_Front"), remoteTransform); + var landingGearLeft = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Left/Geo_LandingGear_Left"), remoteTransform); + var landingGearRight = Instantiate(shipModel.Find("Module_LandingGear/LandingGear_Right/Geo_LandingGear_Right"), remoteTransform); + + Destroy(landingGearFront.Find("LandingGear_FrontCollision").gameObject); + Destroy(landingGearLeft.Find("LandingGear_LeftCollision").gameObject); + Destroy(landingGearRight.Find("LandingGear_RightCollision").gameObject); + + landingGearFront.localPosition + = landingGearLeft.localPosition + = landingGearRight.localPosition + += Vector3.up * 3.762f; + + return remoteTransform; + } + + public override bool IsReady => GetShipModel() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 409a483d4..2a43a0982 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -6,131 +6,131 @@ namespace QSB.TransformSync { - public abstract class TransformSync : PlayerSyncObject - { - public abstract bool IsReady { get; } - protected abstract Transform InitLocalTransform(); - protected abstract Transform InitRemoteTransform(); - - public Transform SyncedTransform { get; private set; } - public QSBSector ReferenceSector { get; set; } - - private const float SmoothTime = 0.1f; - private bool _isInitialized; - private Vector3 _positionSmoothVelocity; - private Quaternion _rotationSmoothVelocity; - private bool _isVisible; - - protected virtual void Awake() - { - DebugLog.DebugWrite($"Awake of {GetType().Name}", MessageType.Info); - QSBPlayerManager.PlayerSyncObjects.Add(this); - DontDestroyOnLoad(gameObject); - QSBSceneManager.OnSceneLoaded += OnSceneLoaded; - } - - protected virtual void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } - - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - _isInitialized = false; - } - - protected void Init() - { - DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); - SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); - _isInitialized = true; - _isVisible = true; - } - - private void Update() - { - if (!_isInitialized && IsReady) - { - Init(); - } - else if (_isInitialized && !IsReady) - { - _isInitialized = false; - return; - } - - if (!_isInitialized) - { - return; - } - - if (SyncedTransform == null) - { - DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); - return; - } - - UpdateTransform(); - } - - protected virtual void UpdateTransform() - { - if (HasAuthority) // If this script is attached to the client's own body on the client's side. - { - if (ReferenceSector == null || ReferenceSector.Sector == null) - { - DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); - return; - } - transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); - transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); - return; - } - - // If this script is attached to any other body, eg the representations of other players - if (SyncedTransform.position == Vector3.zero) - { - Hide(); - } - else - { - Show(); - } - - SyncedTransform.localPosition = Vector3.SmoothDamp(SyncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); - SyncedTransform.localRotation = QuaternionHelper.SmoothDamp(SyncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); - } - - public void SetReferenceSector(QSBSector sector) - { - DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); - _positionSmoothVelocity = Vector3.zero; - ReferenceSector = sector; - if (!HasAuthority) - { - SyncedTransform.SetParent(sector.Transform, true); - transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); - transform.rotation = sector.Transform.InverseTransformRotation(SyncedTransform.rotation); - } - } - - private void Show() - { - if (!_isVisible) - { - SyncedTransform.gameObject.Show(); - _isVisible = true; - } - } - - private void Hide() - { - if (_isVisible) - { - SyncedTransform.gameObject.Hide(); - _isVisible = false; - } - } - - } + public abstract class TransformSync : PlayerSyncObject + { + public abstract bool IsReady { get; } + protected abstract Transform InitLocalTransform(); + protected abstract Transform InitRemoteTransform(); + + public Transform SyncedTransform { get; private set; } + public QSBSector ReferenceSector { get; set; } + + private const float SmoothTime = 0.1f; + private bool _isInitialized; + private Vector3 _positionSmoothVelocity; + private Quaternion _rotationSmoothVelocity; + private bool _isVisible; + + protected virtual void Awake() + { + DebugLog.DebugWrite($"Awake of {GetType().Name}", MessageType.Info); + QSBPlayerManager.PlayerSyncObjects.Add(this); + DontDestroyOnLoad(gameObject); + QSBSceneManager.OnSceneLoaded += OnSceneLoaded; + } + + protected virtual void OnDestroy() + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(OWScene scene, bool isInUniverse) + { + _isInitialized = false; + } + + protected void Init() + { + DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); + SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); + _isInitialized = true; + _isVisible = true; + } + + private void Update() + { + if (!_isInitialized && IsReady) + { + Init(); + } + else if (_isInitialized && !IsReady) + { + _isInitialized = false; + return; + } + + if (!_isInitialized) + { + return; + } + + if (SyncedTransform == null) + { + DebugLog.ToConsole($"Warning - SyncedTransform {Player.PlayerId}.{GetType().Name} is null.", MessageType.Warning); + return; + } + + UpdateTransform(); + } + + protected virtual void UpdateTransform() + { + if (HasAuthority) // If this script is attached to the client's own body on the client's side. + { + if (ReferenceSector == null || ReferenceSector.Sector == null) + { + DebugLog.ToConsole($"Error - ReferenceSector has null value for {Player.PlayerId}.{GetType().Name}", MessageType.Error); + return; + } + transform.position = ReferenceSector.Transform.InverseTransformPoint(SyncedTransform.position); + transform.rotation = ReferenceSector.Transform.InverseTransformRotation(SyncedTransform.rotation); + return; + } + + // If this script is attached to any other body, eg the representations of other players + if (SyncedTransform.position == Vector3.zero) + { + Hide(); + } + else + { + Show(); + } + + SyncedTransform.localPosition = Vector3.SmoothDamp(SyncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); + SyncedTransform.localRotation = QuaternionHelper.SmoothDamp(SyncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); + } + + public void SetReferenceSector(QSBSector sector) + { + DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); + _positionSmoothVelocity = Vector3.zero; + ReferenceSector = sector; + if (!HasAuthority) + { + SyncedTransform.SetParent(sector.Transform, true); + transform.position = sector.Transform.InverseTransformPoint(SyncedTransform.position); + transform.rotation = sector.Transform.InverseTransformRotation(SyncedTransform.rotation); + } + } + + private void Show() + { + if (!_isVisible) + { + SyncedTransform.gameObject.Show(); + _isVisible = true; + } + } + + private void Hide() + { + if (_isVisible) + { + SyncedTransform.gameObject.Hide(); + _isVisible = false; + } + } + + } } \ No newline at end of file diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index 1df170c19..cf012da0e 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -9,75 +9,75 @@ namespace QSB.WorldSync { - public static class WorldRegistry - { - private static readonly List WorldObjects = new List(); - public static List OrbSyncList = new List(); - public static List OldOrbList = new List(); - public static List OldDialogueTrees = new List(); + public static class WorldRegistry + { + private static readonly List WorldObjects = new List(); + public static List OrbSyncList = new List(); + public static List OldOrbList = new List(); + public static List OldDialogueTrees = new List(); - public static void AddObject(WorldObject worldObject) - { - if (WorldObjects.Contains(worldObject)) - { - return; - } - WorldObjects.Add(worldObject); - } + public static void AddObject(WorldObject worldObject) + { + if (WorldObjects.Contains(worldObject)) + { + return; + } + WorldObjects.Add(worldObject); + } - public static IEnumerable GetObjects() - { - return WorldObjects.OfType(); - } + public static IEnumerable GetObjects() + { + return WorldObjects.OfType(); + } - public static T GetObject(int id) where T : WorldObject - { - return GetObjects().FirstOrDefault(x => x.ObjectId == id); - } + public static T GetObject(int id) where T : WorldObject + { + return GetObjects().FirstOrDefault(x => x.ObjectId == id); + } - public static void RemoveObjects() where T : WorldObject - { - WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); - } + public static void RemoveObjects() where T : WorldObject + { + WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); + } - public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) - { - QSBOrbSlot qsbSlot = null; - NomaiOrbTransformSync orbSync = null; - var slotList = GetObjects(); - if (slotList.Count() == 0) - { - return; - } - try - { - qsbSlot = slotList.First(x => x.InterfaceSlot == slot); - orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); - if (orbSync.HasAuthority) - { - qsbSlot.HandleEvent(state); - } - } - catch - { - DebugLog.DebugWrite("Error - Exception when handling slot state change." - + Environment.NewLine + $"Slot name {slot.name} to {state}" - + Environment.NewLine + $"SlotList count : {slotList?.Count()}" - + Environment.NewLine + $"QSBOrbSlot null? : {qsbSlot == null}" - + Environment.NewLine + $"NomaiOrbTransformSync null? : {orbSync == null}", MessageType.Error); - } - } + public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) + { + QSBOrbSlot qsbSlot = null; + NomaiOrbTransformSync orbSync = null; + var slotList = GetObjects(); + if (slotList.Count() == 0) + { + return; + } + try + { + qsbSlot = slotList.First(x => x.InterfaceSlot == slot); + orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); + if (orbSync.HasAuthority) + { + qsbSlot.HandleEvent(state); + } + } + catch + { + DebugLog.DebugWrite("Error - Exception when handling slot state change." + + Environment.NewLine + $"Slot name {slot.name} to {state}" + + Environment.NewLine + $"SlotList count : {slotList?.Count()}" + + Environment.NewLine + $"QSBOrbSlot null? : {qsbSlot == null}" + + Environment.NewLine + $"NomaiOrbTransformSync null? : {orbSync == null}", MessageType.Error); + } + } - public static void RaiseEvent(object instance, string eventName) - { - if (!(instance.GetType() - .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)? - .GetValue(instance) is MulticastDelegate multiDelegate)) - { - return; - } - var delegateList = multiDelegate.GetInvocationList().ToList(); - delegateList.ForEach(x => x.DynamicInvoke(instance)); - } - } + public static void RaiseEvent(object instance, string eventName) + { + if (!(instance.GetType() + .GetField(eventName, BindingFlags.Instance | BindingFlags.NonPublic)? + .GetValue(instance) is MulticastDelegate multiDelegate)) + { + return; + } + var delegateList = multiDelegate.GetInvocationList().ToList(); + delegateList.ForEach(x => x.DynamicInvoke(instance)); + } + } } From 78f1c6e8111e0ae2077ed6daaa8a57c87cb2d849 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 3 Dec 2020 08:28:05 +0000 Subject: [PATCH 109/207] CodeMaid cleanup --- QSB/Animation/AnimationSync.cs | 9 ++++ QSB/Animation/AnimatorMirror.cs | 1 + QSB/Animation/Events/PlayerSuitEvent.cs | 1 + QSB/Animation/Events/QSBAnimationMessage.cs | 2 +- .../Events/QSBAnimationParametersMessage.cs | 2 +- .../Events/QSBAnimationTriggerMessage.cs | 2 +- QSB/Animation/PlayerHeadRotationSync.cs | 2 +- QSB/Animation/QSBNetworkAnimator.cs | 6 ++- QSB/ConversationSync/ConversationManager.cs | 2 +- QSB/ConversationSync/ConversationPatches.cs | 2 +- QSB/ConversationSync/ConversationType.cs | 2 +- .../Events/ConversationEvent.cs | 5 ++- .../Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndEvent.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 2 +- QSB/DeathSync/Necronomicon.cs | 4 +- QSB/DeathSync/PreventShipDestruction.cs | 2 +- QSB/DeathSync/RespawnOnDeath.cs | 2 +- QSB/ElevatorSync/ElevatorManager.cs | 2 +- QSB/ElevatorSync/ElevatorPatches.cs | 2 +- QSB/ElevatorSync/Events/ElevatorEvent.cs | 2 +- QSB/ElevatorSync/QSBElevator.cs | 2 +- QSB/EventsCore/EventNames.cs | 2 +- QSB/EventsCore/EventType.cs | 2 +- QSB/EventsCore/IQSBEvent.cs | 3 +- QSB/EventsCore/QSBEvent.cs | 2 +- QSB/EventsCore/QSBEventManager.cs | 2 +- QSB/GeyserSync/Events/GeyserEvent.cs | 2 +- QSB/GeyserSync/QSBGeyser.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 3 +- QSB/Instruments/QSBCamera/CameraController.cs | 7 +-- QSB/Instruments/QSBCamera/CameraManager.cs | 2 +- QSB/Instruments/QSBCamera/CameraMode.cs | 2 +- QSB/MessagesCore/EnumMessage.cs | 2 +- QSB/MessagesCore/MessageHandler.cs | 4 +- QSB/MessagesCore/PlayerMessage.cs | 2 +- QSB/OrbSync/Events/OrbSlotEvent.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 2 +- QSB/OrbSync/OrbPatches.cs | 2 +- QSB/OrbSync/QSBOrbSlot.cs | 2 +- QSB/Patches/QSBPatch.cs | 2 +- QSB/Patches/QSBPatchManager.cs | 2 +- QSB/Patches/QSBPatchTypes.cs | 2 +- QSB/Player/Events/PlayerJoinEvent.cs | 2 +- QSB/Player/Events/PlayerLeaveEvent.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/Player/Events/PlayerSectorEvent.cs | 3 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- .../Events/ServerSendPlayerStatesEvent.cs | 2 +- QSB/Player/PlayerHUDMarker.cs | 3 +- QSB/Player/PlayerInfo.cs | 4 ++ QSB/Player/PlayerSyncObject.cs | 2 +- QSB/Player/QSBPlayerManager.cs | 4 +- QSB/Properties/AssemblyInfo.cs | 2 +- QSB/QSB.cs | 10 +++-- QSB/QSBInputManager.cs | 7 ++- QSB/QSBNetworkLobby.cs | 2 +- QSB/QSBNetworkManager.cs | 1 + QSB/QSBSceneManager.cs | 3 +- QSB/QuantumUNET/QSBCRCMessage.cs | 4 +- QSB/QuantumUNET/QSBCRCMessageEntry.cs | 4 +- QSB/QuantumUNET/QSBChannelBuffer.cs | 4 +- QSB/QuantumUNET/QSBChannelPacket.cs | 4 +- QSB/QuantumUNET/QSBClientAuthorityMessage.cs | 4 +- QSB/QuantumUNET/QSBLocalClient.cs | 2 +- QSB/QuantumUNET/QSBNetBuffer.cs | 4 +- QSB/QuantumUNET/QSBNetworkBehaviour.cs | 45 +++++++++++++++---- QSB/QuantumUNET/QSBNetworkCRC.cs | 2 +- QSB/QuantumUNET/QSBNetworkClient.cs | 8 +++- QSB/QuantumUNET/QSBNetworkConnection.cs | 2 +- QSB/QuantumUNET/QSBNetworkIdentity.cs | 3 +- QSB/QuantumUNET/QSBNetworkManagerHUD.cs | 2 +- QSB/QuantumUNET/QSBNetworkManagerUNET.cs | 2 +- QSB/QuantumUNET/QSBNetworkMessage.cs | 2 +- QSB/QuantumUNET/QSBNetworkMessageDelegate.cs | 2 +- QSB/QuantumUNET/QSBNetworkMessageHandlers.cs | 4 +- QSB/QuantumUNET/QSBNetworkMigrationManager.cs | 2 +- QSB/QuantumUNET/QSBNetworkScene.cs | 2 +- QSB/QuantumUNET/QSBNetworkServer.cs | 2 +- QSB/QuantumUNET/QSBNetworkServerSimple.cs | 6 ++- QSB/QuantumUNET/QSBObjectDestroyMessage.cs | 4 +- .../QSBObjectSpawnFinishedMessage.cs | 4 +- QSB/QuantumUNET/QSBObjectSpawnMessage.cs | 4 +- QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs | 4 +- QSB/QuantumUNET/QSBOwnerMessage.cs | 4 +- QSB/QuantumUNET/QSBPlayerController.cs | 2 +- QSB/QuantumUNET/QSBRemovePlayerMessage.cs | 2 +- .../QSBULocalConnectionToClient.cs | 4 +- .../QSBULocalConnectionToServer.cs | 4 +- QSB/QuantumUNET/QSBUtility.cs | 2 +- QSB/SectorSync/QSBSector.cs | 2 +- QSB/SectorSync/QSBSectorManager.cs | 3 +- QSB/SectorSync/SectorSync.cs | 2 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 2 +- QSB/TimeSync/PreserveTimeScale.cs | 2 +- QSB/TimeSync/TimeSyncType.cs | 2 +- QSB/TimeSync/TimeSyncUI.cs | 4 +- QSB/TimeSync/WakeUpPatches.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 1 + QSB/Tools/Events/PlayerFlashlightEvent.cs | 3 +- QSB/Tools/Events/PlayerProbeEvent.cs | 3 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 3 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 3 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 3 +- QSB/Tools/ProbePatches.cs | 2 +- QSB/Tools/QSBFlashlight.cs | 2 +- QSB/Tools/QSBProbe.cs | 2 +- QSB/TransformSync/PlayerCameraSync.cs | 2 +- QSB/TransformSync/PlayerProbeSync.cs | 2 +- QSB/TransformSync/PlayerTransformSync.cs | 2 +- QSB/TransformSync/ShipTransformSync.cs | 2 +- QSB/TransformSync/TransformSync.cs | 7 +-- QSB/Utility/DebugLog.cs | 2 +- QSB/Utility/FlagsHelper.cs | 2 +- QSB/Utility/GOExtensions.cs | 2 +- QSB/Utility/ListExtensions.cs | 2 +- QSB/Utility/QuaternionHelper.cs | 2 +- QSB/Utility/UnetExtensions.cs | 2 +- .../Events/BoolWorldObjectMessage.cs | 2 +- QSB/WorldSync/WorldObject.cs | 2 +- QSB/WorldSync/WorldRegistry.cs | 2 +- QSB/default-config.json | 2 +- QSB/manifest.json | 2 +- 125 files changed, 231 insertions(+), 155 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index f92e79965..7ec1df7c0 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -29,6 +29,7 @@ public class AnimationSync : PlayerSyncObject public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType = AnimationType.PlayerUnsuited; + public Animator Animator { get { return _bodyAnim; } @@ -141,7 +142,9 @@ private void InitCrouchSync() } private void OnJump() => _netAnim.SetTrigger("Jump"); + private void OnBecomeGrounded() => _netAnim.SetTrigger("Grounded"); + private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); public void SendCrouch(float value = 0) @@ -199,23 +202,29 @@ public void SetAnimationType(AnimationType type) _unsuitedGraphics?.SetActive(false); _suitedGraphics?.SetActive(true); break; + case AnimationType.PlayerUnsuited: controller = _unsuitedAnimController; _unsuitedGraphics?.SetActive(true); _suitedGraphics?.SetActive(false); break; + case AnimationType.Chert: controller = _chertController; break; + case AnimationType.Esker: controller = _eskerController; break; + case AnimationType.Feldspar: controller = _feldsparController; break; + case AnimationType.Gabbro: controller = _gabbroController; break; + case AnimationType.Riebeck: controller = _riebeckController; break; diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index d57ac95ac..1c20bd101 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -70,6 +70,7 @@ private void SyncParams() } _floatParams[fromParam.name].Target = _from.GetFloat(fromParam.name); break; + case AnimatorControllerParameterType.Bool: _to.SetBool(fromParam.name, _from.GetBool(fromParam.name)); break; diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 57e5de49f..c7b2517f1 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -21,6 +21,7 @@ public override void CloseListener() } private void HandleSuitUp() => SendEvent(CreateMessage(true)); + private void HandleSuitDown() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs index 85557fd9b..c4de82313 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -2,7 +2,7 @@ namespace QSB.Animation.Events { - class QSBAnimationMessage : MessageBase + internal class QSBAnimationMessage : MessageBase { public NetworkInstanceId netId; public int stateHash; diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs index a01082883..93a5694a9 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -2,7 +2,7 @@ namespace QSB.Animation.Events { - class QSBAnimationParametersMessage : MessageBase + internal class QSBAnimationParametersMessage : MessageBase { public NetworkInstanceId netId; public byte[] parameters; diff --git a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs index 414e2f029..ea2ad0585 100644 --- a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs +++ b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs @@ -2,7 +2,7 @@ namespace QSB.Animation.Events { - class QSBAnimationTriggerMessage : MessageBase + internal class QSBAnimationTriggerMessage : MessageBase { public NetworkInstanceId netId; public int hash; diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index 9d29335e8..55a7061db 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -13,7 +13,7 @@ public void Init(Transform lookBase) _lookBase = lookBase; } - void LateUpdate() + private void LateUpdate() { var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); // Get the camera's local rotation with respect to the player body diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index e97ed55ed..b09cb0c30 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -7,7 +7,7 @@ namespace QSB.Animation { // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. - class QSBNetworkAnimator : QSBNetworkBehaviour + internal class QSBNetworkAnimator : QSBNetworkBehaviour { private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); @@ -182,9 +182,11 @@ private void WriteParameters(NetworkWriter writer, bool autoSend) case AnimatorControllerParameterType.Int: writer.WritePackedUInt32((uint)m_Animator.GetInteger(parameter.nameHash)); break; + case AnimatorControllerParameterType.Float: writer.Write(m_Animator.GetFloat(parameter.nameHash)); break; + case AnimatorControllerParameterType.Bool: writer.Write(m_Animator.GetBool(parameter.nameHash)); break; @@ -210,10 +212,12 @@ private void ReadParameters(NetworkReader reader, bool autoSend) var num = (int)reader.ReadPackedUInt32(); m_Animator.SetInteger(parameter.nameHash, num); break; + case AnimatorControllerParameterType.Float: var single = reader.ReadSingle(); m_Animator.SetFloat(parameter.nameHash, single); break; + case AnimatorControllerParameterType.Bool: var flag = reader.ReadBoolean(); m_Animator.SetBool(parameter.nameHash, flag); diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 05e2dafc5..ff67955ce 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -142,4 +142,4 @@ private GameObject CreateBox(Transform parent, float vertOffset, string text) return newBox; } } -} +} \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index a22917f14..0309541e9 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -111,4 +111,4 @@ public override void DoPatches() QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); } } -} +} \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 660c77e59..3e8658f30 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -7,4 +7,4 @@ public enum ConversationType CloseCharacter, ClosePlayer } -} +} \ No newline at end of file diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 502945556..451855c09 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -30,9 +30,11 @@ public override void OnReceiveRemote(ConversationMessage message) var translated = TextTranslation.Translate(message.Message).Trim(); ConversationManager.Instance.DisplayCharacterConversationBox(message.ObjectId, translated); break; + case ConversationType.Player: ConversationManager.Instance.DisplayPlayerConversationBox((uint)message.ObjectId, message.Message); break; + case ConversationType.CloseCharacter: if (message.ObjectId == -1) { @@ -41,10 +43,11 @@ public override void OnReceiveRemote(ConversationMessage message) var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); break; + case ConversationType.ClosePlayer: UnityEngine.Object.Destroy(QSBPlayerManager.GetPlayer((uint)message.ObjectId).CurrentDialogueBox); break; } } } -} +} \ No newline at end of file diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 3064358f5..e1dbcd7b6 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -25,4 +25,4 @@ public override void Serialize(NetworkWriter writer) writer.Write(Message); } } -} +} \ No newline at end of file diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 0c98039c4..0c0f9f241 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -67,4 +67,4 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) } } } -} +} \ No newline at end of file diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 2054ca48e..fe80e9a00 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -25,4 +25,4 @@ public override void Serialize(NetworkWriter writer) writer.Write(State); } } -} +} \ No newline at end of file diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 6aea56ba1..cea9fa9d9 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -30,4 +30,4 @@ public override void OnReceiveRemote(EnumMessage message) public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); } -} +} \ No newline at end of file diff --git a/QSB/DeathSync/Necronomicon.cs b/QSB/DeathSync/Necronomicon.cs index 5aa9407e2..23a081a25 100644 --- a/QSB/DeathSync/Necronomicon.cs +++ b/QSB/DeathSync/Necronomicon.cs @@ -6,7 +6,6 @@ namespace QSB.DeathSync { public static class Necronomicon { - private static readonly Dictionary DeathDictionary = new Dictionary { { DeathType.Default, new[] @@ -100,6 +99,5 @@ public static string GetPhrase(DeathType deathType) { return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); } - } -} +} \ No newline at end of file diff --git a/QSB/DeathSync/PreventShipDestruction.cs b/QSB/DeathSync/PreventShipDestruction.cs index 01d190fcf..1f8c81304 100644 --- a/QSB/DeathSync/PreventShipDestruction.cs +++ b/QSB/DeathSync/PreventShipDestruction.cs @@ -40,4 +40,4 @@ public static IEnumerable ReturnNull(IEnumerable spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); } } -} +} \ No newline at end of file diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index 375a33cfe..5aea5338a 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -35,4 +35,4 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); } -} +} \ No newline at end of file diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 7b1e8c62a..8a02703ba 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -19,4 +19,4 @@ public override void DoPatches() QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); } } -} +} \ No newline at end of file diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 4489ea415..d49680ba2 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -26,4 +26,4 @@ public override void OnReceiveRemote(BoolWorldObjectMessage message) elevator?.RemoteCall(message.State); } } -} +} \ No newline at end of file diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index 8958e4b0f..8b2ade63a 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -54,4 +54,4 @@ private void RemoteStartLift() _interactVolume.DisableInteraction(); } } -} +} \ No newline at end of file diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index a2cd8543e..709888534 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -37,4 +37,4 @@ public static class EventNames public static string QSBChangeAnimType = "QSBPlayInstrument"; public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; } -} +} \ No newline at end of file diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index b082285cd..973c54c83 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -26,4 +26,4 @@ public enum EventType ConversationStartEnd, PlayInstrument } -} +} \ No newline at end of file diff --git a/QSB/EventsCore/IQSBEvent.cs b/QSB/EventsCore/IQSBEvent.cs index 4b8b8dc3d..65c305ed8 100644 --- a/QSB/EventsCore/IQSBEvent.cs +++ b/QSB/EventsCore/IQSBEvent.cs @@ -3,6 +3,7 @@ public interface IQSBEvent { void SetupListener(); + void CloseListener(); } -} +} \ No newline at end of file diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 61b91d958..f49dfeb8a 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -65,4 +65,4 @@ private void OnClientReceive(T message) OnReceiveRemote(message); } } -} +} \ No newline at end of file diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 0dafd0d70..fe670c150 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -64,4 +64,4 @@ public static void Reset() _eventList = new List(); } } -} +} \ No newline at end of file diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 0ac1134be..ee61e0db0 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -33,4 +33,4 @@ public override void OnReceiveRemote(BoolWorldObjectMessage message) geyser?.SetState(message.State); } } -} +} \ No newline at end of file diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index 3427dbc65..0b5e6fcd0 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -37,4 +37,4 @@ public void SetState(bool state) } } } -} +} \ No newline at end of file diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 46f879bdb..04e3feea9 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -118,6 +118,7 @@ public void CheckInstrumentProps(AnimationType type) case AnimationType.Chert: ChertDrum.SetActive(true); break; + case AnimationType.PlayerSuited: case AnimationType.PlayerUnsuited: ChertDrum.SetActive(false); @@ -125,4 +126,4 @@ public void CheckInstrumentProps(AnimationType type) } } } -} +} \ No newline at end of file diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index dccd8e236..a5c3c9c5e 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -2,7 +2,7 @@ namespace QSB.Instruments.QSBCamera { - class CameraController : MonoBehaviour + internal class CameraController : MonoBehaviour { private float _degreesX; private float _degreesY; @@ -11,12 +11,13 @@ class CameraController : MonoBehaviour // How far along the ray to move the camera. Avoids clipping into the walls. private const float PercentToMove = 0.80f; + // Maximum distance for camera clipping private const float RayLength = 5f; public GameObject CameraObject; - void FixedUpdate() + private void FixedUpdate() { if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) { @@ -76,4 +77,4 @@ private void UpdateRotation() transform.localRotation = localRotation; } } -} +} \ No newline at end of file diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index fc7478eab..ff72c4eb3 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -111,4 +111,4 @@ public void SwitchTo1stPerson() Mode = CameraMode.FirstPerson; } } -} +} \ No newline at end of file diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs index 7102ec52b..71cb586d1 100644 --- a/QSB/Instruments/QSBCamera/CameraMode.cs +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -5,4 +5,4 @@ public enum CameraMode FirstPerson, ThirdPerson } -} +} \ No newline at end of file diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index adb8d4bfb..d110adb5e 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -19,4 +19,4 @@ public override void Serialize(NetworkWriter writer) writer.Write((int)(object)Value); } } -} +} \ No newline at end of file diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 89b101ec4..24a2e8644 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -12,6 +12,7 @@ namespace QSB.Messaging public class MessageHandler where T : MessageBase, new() { public event Action OnClientReceiveMessage; + public event Action OnServerReceiveMessage; private readonly EventType _eventType; @@ -70,6 +71,5 @@ private void OnServerReceiveMessageHandler(QSBNetworkMessage netMsg) var message = netMsg.ReadMessage(); OnServerReceiveMessage?.Invoke(message); } - } -} +} \ No newline at end of file diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 2a9f73d84..f39073fb4 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -19,4 +19,4 @@ public override void Serialize(NetworkWriter writer) writer.Write(AboutId); } } -} +} \ No newline at end of file diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index eb28c6cd6..6baba2fb0 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -29,4 +29,4 @@ public override void OnReceiveRemote(BoolWorldObjectMessage message) orbSlot?.SetState(message.State); } } -} +} \ No newline at end of file diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 5952730a5..675cc3a98 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -83,4 +83,4 @@ public override void OnReceiveLocal(WorldObjectMessage message) } } } -} +} \ No newline at end of file diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 8fd21ceba..19df8b996 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -60,4 +60,4 @@ public override void DoPatches() QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); } } -} +} \ No newline at end of file diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index ff3af77a8..2a6e756b4 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -35,4 +35,4 @@ public void SetState(bool state) WorldRegistry.RaiseEvent(InterfaceSlot, ev); } } -} +} \ No newline at end of file diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index 6bdeacd50..fc4f8fab5 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -6,4 +6,4 @@ public abstract class QSBPatch public abstract void DoPatches(); } -} +} \ No newline at end of file diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index c12473b8e..faaa91437 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -46,4 +46,4 @@ public static void DoPatchType(QSBPatchTypes type) } } } -} +} \ No newline at end of file diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 4b2e689ed..161a2fdea 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -6,4 +6,4 @@ public enum QSBPatchTypes OnClientConnect, OnNonServerClientConnect } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index ed1fa4542..d3d9a2e2f 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -36,4 +36,4 @@ public override void OnReceiveLocal(PlayerJoinMessage message) DebugLog.ToAll(text, MessageType.Info); } } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index 3141e6148..4cbe109eb 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -30,4 +30,4 @@ public override void OnReceiveRemote(PlayerLeaveMessage message) message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); } } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 3bc188cff..6f51ce055 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -49,4 +49,4 @@ public override void OnReceiveRemote(ToggleMessage message) } } } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 4afa19103..f5590b5ae 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -48,6 +48,5 @@ public override void OnReceiveRemote(WorldObjectMessage message) QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, () => transformSync?.SetReferenceSector(sector)); } - } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index a1dcef64f..d966f3f67 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -31,4 +31,4 @@ public override void Serialize(NetworkWriter writer) writer.Write(SectorName); } } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 30cddccc6..e0883ca76 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -32,4 +32,4 @@ public override void OnServerReceive(PlayerMessage message) } } } -} +} \ No newline at end of file diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index 53d0f082e..a17a0d80f 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -37,4 +37,4 @@ public override void OnReceiveRemote(PlayerStateMessage message) () => QSBPlayerManager.HandleFullStateMessage(message)); } } -} +} \ No newline at end of file diff --git a/QSB/Player/PlayerHUDMarker.cs b/QSB/Player/PlayerHUDMarker.cs index 61ea6f4f2..cf5105fad 100644 --- a/QSB/Player/PlayerHUDMarker.cs +++ b/QSB/Player/PlayerHUDMarker.cs @@ -54,6 +54,5 @@ public void Remove() Destroy(_markerTarget.gameObject); Destroy(this); } - } -} +} \ No newline at end of file diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index d0cd01088..22947e911 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -16,10 +16,12 @@ public class PlayerInfo // Body Objects public GameObject Camera { get; set; } + public GameObject Body { get; set; } // Tools public GameObject ProbeBody { get; set; } + public QSBProbe Probe { get; set; } public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); @@ -28,10 +30,12 @@ public class PlayerInfo // Conversation public int CurrentDialogueID { get; set; } + public GameObject CurrentDialogueBox { get; set; } // Animation public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); + public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 381705cb0..73fed6465 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -9,4 +9,4 @@ public abstract class PlayerSyncObject : QSBNetworkBehaviour public uint PreviousPlayerId { get; set; } public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); } -} +} \ No newline at end of file diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index e5891331e..c4fc4dc43 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -96,7 +96,7 @@ public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) syncObject.PreviousPlayerId = uint.MaxValue; return uint.MaxValue; } - // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) + // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) // and the highest ID below the syncobject's id is the same as the highest player id. if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) { @@ -146,4 +146,4 @@ public static List GetPlayerNetIds(PlayerInfo player) return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); } } -} +} \ No newline at end of file diff --git a/QSB/Properties/AssemblyInfo.cs b/QSB/Properties/AssemblyInfo.cs index fea6eaaa3..2aead9f80 100644 --- a/QSB/Properties/AssemblyInfo.cs +++ b/QSB/Properties/AssemblyInfo.cs @@ -32,4 +32,4 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 56d6d0eb7..cc812b164 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -48,9 +48,11 @@ private void Application_logMessageReceived(string condition, string stackTrace, case LogType.Assert: DebugLog.DebugWrite($"Assert - {condition}", MessageType.Message); break; + case LogType.Log: DebugLog.DebugWrite($"Log - {condition}", MessageType.Message); break; + case LogType.Warning: DebugLog.DebugWrite($"Warning - {condition}", MessageType.Warning); break; @@ -69,8 +71,8 @@ private void Start() QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); - // Turns out these are very finicky about what order they go. QSBNetworkManager seems to - // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being + // Turns out these are very finicky about what order they go. QSBNetworkManager seems to + // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being // null (even though it isn't...) gameObject.AddComponent(); gameObject.AddComponent(); @@ -87,7 +89,7 @@ private void Start() Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); } - void Update() + private void Update() { QSBNetworkIdentity.UNetStaticUpdate(); } @@ -103,4 +105,4 @@ public override void Configure(IModConfig config) DebugMode = config.GetSettingsValue("debugMode"); } } -} +} \ No newline at end of file diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index c3e8fae63..47b00a496 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -9,10 +9,15 @@ public class QSBInputManager : MonoBehaviour public static QSBInputManager Instance; public static event InputEvent ChertTaunt; + public static event InputEvent EskerTaunt; + public static event InputEvent RiebeckTaunt; + public static event InputEvent GabbroTaunt; + public static event InputEvent FeldsparTaunt; + public static event InputEvent ExitTaunt; public void Awake() => Instance = this; @@ -51,4 +56,4 @@ public void Update() } } } -} +} \ No newline at end of file diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index d7f10c0e6..5f07a90aa 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -67,4 +67,4 @@ private void OnGUI() } } } -} +} \ No newline at end of file diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index f6727d20c..7488db66c 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -30,6 +30,7 @@ public class QSBNetworkManager : QSBNetworkManagerUNET public static QSBNetworkManager Instance { get; private set; } public event Action OnNetworkManagerReady; + public bool IsReady { get; private set; } private QSBNetworkLobby _lobby; diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index dff06700c..75daa438f 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -11,6 +11,7 @@ public static class QSBSceneManager public static bool IsInUniverse => InUniverse(CurrentScene); public static event Action OnSceneLoaded; + public static event Action OnUniverseSceneLoaded; static QSBSceneManager() @@ -33,4 +34,4 @@ private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) private static bool InUniverse(OWScene scene) => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBCRCMessage.cs b/QSB/QuantumUNET/QSBCRCMessage.cs index 229de0ba1..166f6e6ba 100644 --- a/QSB/QuantumUNET/QSBCRCMessage.cs +++ b/QSB/QuantumUNET/QSBCRCMessage.cs @@ -2,7 +2,7 @@ namespace QSB.QuantumUNET { - class QSBCRCMessage : MessageBase + internal class QSBCRCMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -29,4 +29,4 @@ public override void Serialize(NetworkWriter writer) public QSBCRCMessageEntry[] scripts; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBCRCMessageEntry.cs b/QSB/QuantumUNET/QSBCRCMessageEntry.cs index 54cdc56a3..03294a916 100644 --- a/QSB/QuantumUNET/QSBCRCMessageEntry.cs +++ b/QSB/QuantumUNET/QSBCRCMessageEntry.cs @@ -1,9 +1,9 @@ namespace QSB.QuantumUNET { - struct QSBCRCMessageEntry + internal struct QSBCRCMessageEntry { public string name; public byte channel; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBChannelBuffer.cs b/QSB/QuantumUNET/QSBChannelBuffer.cs index 0c6d3d135..f1e9dca81 100644 --- a/QSB/QuantumUNET/QSBChannelBuffer.cs +++ b/QSB/QuantumUNET/QSBChannelBuffer.cs @@ -5,7 +5,7 @@ namespace QSB.QuantumUNET { - class QSBChannelBuffer : IDisposable + internal class QSBChannelBuffer : IDisposable { public QSBChannelBuffer(QSBNetworkConnection conn, int bufferSize, byte cid, bool isReliable, bool isSequenced) { @@ -426,4 +426,4 @@ public bool SendInternalBuffer() private bool readingFragment = false; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBChannelPacket.cs b/QSB/QuantumUNET/QSBChannelPacket.cs index abc9c279f..a5ee07ee8 100644 --- a/QSB/QuantumUNET/QSBChannelPacket.cs +++ b/QSB/QuantumUNET/QSBChannelPacket.cs @@ -4,7 +4,7 @@ namespace QSB.QuantumUNET { - struct QSBChannelPacket + internal struct QSBChannelPacket { public QSBChannelPacket(int packetSize, bool isReliable) { @@ -79,4 +79,4 @@ public bool SendToTransport(QSBNetworkConnection conn, int channelId) private bool m_IsReliable; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs index 50f8dc9cf..96a787ee0 100644 --- a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs +++ b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs @@ -2,7 +2,7 @@ namespace QSB.QuantumUNET { - class QSBClientAuthorityMessage : MessageBase + internal class QSBClientAuthorityMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -20,4 +20,4 @@ public override void Serialize(NetworkWriter writer) public bool authority; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs index cd2fb412f..3e38a581f 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -4,7 +4,7 @@ namespace QSB.QuantumUNET { - class QSBLocalClient : QSBNetworkClient + internal class QSBLocalClient : QSBNetworkClient { public override void Disconnect() { diff --git a/QSB/QuantumUNET/QSBNetBuffer.cs b/QSB/QuantumUNET/QSBNetBuffer.cs index 9b58625b1..9153d8752 100644 --- a/QSB/QuantumUNET/QSBNetBuffer.cs +++ b/QSB/QuantumUNET/QSBNetBuffer.cs @@ -3,7 +3,7 @@ namespace QSB.QuantumUNET { - class QSBNetBuffer + internal class QSBNetBuffer { public QSBNetBuffer() { @@ -195,4 +195,4 @@ public override string ToString() private const int k_BufferSizeWarning = 134217728; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkBehaviour.cs b/QSB/QuantumUNET/QSBNetworkBehaviour.cs index 87b6603e8..2cd056415 100644 --- a/QSB/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QSB/QuantumUNET/QSBNetworkBehaviour.cs @@ -550,17 +550,44 @@ public virtual void OnDeserialize(NetworkReader reader, bool initialState) } } - public virtual void PreStartClient() { } - public virtual void OnNetworkDestroy() { } - public virtual void OnStartServer() { } - public virtual void OnStartClient() { } - public virtual void OnStartLocalPlayer() { } - public virtual void OnStartAuthority() { } - public virtual void OnStopAuthority() { } + public virtual void PreStartClient() + { + } + + public virtual void OnNetworkDestroy() + { + } + + public virtual void OnStartServer() + { + } + + public virtual void OnStartClient() + { + } + + public virtual void OnStartLocalPlayer() + { + } + + public virtual void OnStartAuthority() + { + } + + public virtual void OnStopAuthority() + { + } + public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; - public virtual void OnSetLocalVisibility(bool vis) { } + + public virtual void OnSetLocalVisibility(bool vis) + { + } + public virtual bool OnCheckObserver(QSBNetworkConnection conn) => true; + public virtual int GetNetworkChannel() => 0; + public virtual float GetNetworkSendInterval() => 0.1f; private float m_LastSendTime; @@ -608,4 +635,4 @@ internal static class DotNetCompatibility internal static string GetErrorCode(this SocketException e) => e.ErrorCode.ToString(); } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkCRC.cs b/QSB/QuantumUNET/QSBNetworkCRC.cs index d45f248b3..1c22ce230 100644 --- a/QSB/QuantumUNET/QSBNetworkCRC.cs +++ b/QSB/QuantumUNET/QSBNetworkCRC.cs @@ -164,4 +164,4 @@ private void Dump(QSBCRCMessageEntry[] remoteScripts) private bool m_ScriptCRCCheck; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkClient.cs b/QSB/QuantumUNET/QSBNetworkClient.cs index b9644ec01..68101c392 100644 --- a/QSB/QuantumUNET/QSBNetworkClient.cs +++ b/QSB/QuantumUNET/QSBNetworkClient.cs @@ -802,10 +802,12 @@ internal virtual void Update() case ConnectState.Resolving: case ConnectState.Disconnected: return; + case ConnectState.Resolved: m_AsyncConnect = ConnectState.Connecting; ContinueConnect(); return; + case ConnectState.Failed: GenerateConnectError(11); m_AsyncConnect = ConnectState.Disconnected; @@ -853,6 +855,7 @@ internal virtual void Update() m_MsgReader.SeekZero(); m_Connection.TransportReceive(m_MsgBuffer, numBytes, channelId); break; + case NetworkEventType.ConnectEvent: if (LogFilter.logDebug) { @@ -865,6 +868,7 @@ internal virtual void Update() m_AsyncConnect = ConnectState.Connected; m_Connection.InvokeHandlerNoData(32); break; + case NetworkEventType.DisconnectEvent: if (LogFilter.logDebug) { @@ -884,8 +888,10 @@ internal virtual void Update() m_Connection.InvokeHandlerNoData(33); } break; + case NetworkEventType.Nothing: break; + default: if (LogFilter.logError) { @@ -1190,4 +1196,4 @@ protected enum ConnectState Failed } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkConnection.cs b/QSB/QuantumUNET/QSBNetworkConnection.cs index b3c5969a7..f89c715c7 100644 --- a/QSB/QuantumUNET/QSBNetworkConnection.cs +++ b/QSB/QuantumUNET/QSBNetworkConnection.cs @@ -557,4 +557,4 @@ public override string ToString() public int bytes; } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkIdentity.cs b/QSB/QuantumUNET/QSBNetworkIdentity.cs index a9a1136b4..15e70a1c4 100644 --- a/QSB/QuantumUNET/QSBNetworkIdentity.cs +++ b/QSB/QuantumUNET/QSBNetworkIdentity.cs @@ -86,8 +86,6 @@ internal void ForceAuthority(bool authority) } } - - public ReadOnlyCollection Observers { get @@ -975,6 +973,7 @@ internal static void UNetStaticUpdate() [SerializeField] private bool m_LocalPlayerAuthority; + private bool m_IsServer; private QSBNetworkBehaviour[] m_NetworkBehaviours; diff --git a/QSB/QuantumUNET/QSBNetworkManagerHUD.cs b/QSB/QuantumUNET/QSBNetworkManagerHUD.cs index a8fc64f8f..03efec600 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerHUD.cs @@ -256,4 +256,4 @@ private void OnGUI() private bool m_ShowServer; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs index 14fe264a2..6174a9bfc 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -1710,4 +1710,4 @@ public virtual void OnSetMatchAttributes(bool success, string extendedInfo) private static string s_Address; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMessage.cs b/QSB/QuantumUNET/QSBNetworkMessage.cs index 214fa5e79..15fc3b03c 100644 --- a/QSB/QuantumUNET/QSBNetworkMessage.cs +++ b/QSB/QuantumUNET/QSBNetworkMessage.cs @@ -37,4 +37,4 @@ public void ReadMessage(TMsg msg) where TMsg : MessageBase public int channelId; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs b/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs index c52bcf40a..14ddcf5af 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs @@ -1,4 +1,4 @@ namespace QSB.QuantumUNET { public delegate void QSBNetworkMessageDelegate(QSBNetworkMessage netMsg); -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs index 96aa1c4ef..bb1a41a2b 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -3,7 +3,7 @@ namespace QSB.QuantumUNET { - class QSBNetworkMessageHandlers + internal class QSBNetworkMessageHandlers { internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { @@ -86,4 +86,4 @@ internal void ClearMessageHandlers() private Dictionary m_MsgHandlers = new Dictionary(); } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs index 36e1b941e..cf5cb5223 100644 --- a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs @@ -1064,4 +1064,4 @@ public struct ConnectionPendingPlayers public List players; } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkScene.cs b/QSB/QuantumUNET/QSBNetworkScene.cs index 6dd02f64d..ae1d29132 100644 --- a/QSB/QuantumUNET/QSBNetworkScene.cs +++ b/QSB/QuantumUNET/QSBNetworkScene.cs @@ -5,7 +5,7 @@ namespace QSB.QuantumUNET { - class QSBNetworkScene + internal class QSBNetworkScene { private Dictionary m_LocalObjects = new Dictionary(); diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index d595ee938..5e2a33841 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -2037,4 +2037,4 @@ public override void OnData(QSBNetworkConnection conn, int receivedSize, int cha private QSBNetworkServer m_Server; } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkServerSimple.cs b/QSB/QuantumUNET/QSBNetworkServerSimple.cs index cccd2228c..dc7981625 100644 --- a/QSB/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QSB/QuantumUNET/QSBNetworkServerSimple.cs @@ -320,14 +320,18 @@ public void Update() case NetworkEventType.DataEvent: this.HandleData(connectionId, channelId, receivedSize, b); break; + case NetworkEventType.ConnectEvent: this.HandleConnect(connectionId, b); break; + case NetworkEventType.DisconnectEvent: this.HandleDisconnect(connectionId, b); break; + case NetworkEventType.Nothing: break; + default: if (LogFilter.logError) { @@ -580,4 +584,4 @@ public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int chan private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs index d2cacca66..ff2c29954 100644 --- a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs +++ b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs @@ -2,7 +2,7 @@ namespace QSB.QuantumUNET { - class QSBObjectDestroyMessage : MessageBase + internal class QSBObjectDestroyMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -16,4 +16,4 @@ public override void Serialize(NetworkWriter writer) public NetworkInstanceId netId; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs index 8ee726cbe..c6b7d5c1b 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -2,7 +2,7 @@ namespace QSB.QuantumUNET { - class QSBObjectSpawnFinishedMessage : MessageBase + internal class QSBObjectSpawnFinishedMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -16,4 +16,4 @@ public override void Serialize(NetworkWriter writer) public uint state; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs index 598fac9e5..4f00510b0 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs @@ -3,7 +3,7 @@ namespace QSB.QuantumUNET { - class QSBObjectSpawnMessage : MessageBase + internal class QSBObjectSpawnMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -37,4 +37,4 @@ public override void Serialize(NetworkWriter writer) public Quaternion rotation; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs index 794a7996b..0232fc06a 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs @@ -3,7 +3,7 @@ namespace QSB.QuantumUNET { - class QSBObjectSpawnSceneMessage : MessageBase + internal class QSBObjectSpawnSceneMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -29,4 +29,4 @@ public override void Serialize(NetworkWriter writer) public byte[] payload; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBOwnerMessage.cs b/QSB/QuantumUNET/QSBOwnerMessage.cs index 043ace3fb..d397cc22b 100644 --- a/QSB/QuantumUNET/QSBOwnerMessage.cs +++ b/QSB/QuantumUNET/QSBOwnerMessage.cs @@ -2,7 +2,7 @@ namespace QSB.QuantumUNET { - class QSBOwnerMessage : MessageBase + internal class QSBOwnerMessage : MessageBase { public override void Deserialize(NetworkReader reader) { @@ -20,4 +20,4 @@ public override void Serialize(NetworkWriter writer) public short playerControllerId; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBPlayerController.cs b/QSB/QuantumUNET/QSBPlayerController.cs index 92f8f66e4..322a07ee1 100644 --- a/QSB/QuantumUNET/QSBPlayerController.cs +++ b/QSB/QuantumUNET/QSBPlayerController.cs @@ -37,4 +37,4 @@ public override string ToString() public const int MaxPlayersPerClient = 32; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs index 4f352b215..5f6c695db 100644 --- a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs @@ -16,4 +16,4 @@ public override void Serialize(NetworkWriter writer) public short playerControllerId; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs index 1f018ba13..0595f4208 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs @@ -2,7 +2,7 @@ namespace QSB.QuantumUNET { - class QSBULocalConnectionToClient : QSBNetworkConnection + internal class QSBULocalConnectionToClient : QSBNetworkConnection { public QSBULocalConnectionToClient(QSBLocalClient localClient) { @@ -64,4 +64,4 @@ public override void GetStatsIn(out int numMsgs, out int numBytes) private QSBLocalClient m_LocalClient; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBULocalConnectionToServer.cs b/QSB/QuantumUNET/QSBULocalConnectionToServer.cs index 88d061187..a1c56956c 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToServer.cs @@ -3,7 +3,7 @@ namespace QSB.QuantumUNET { - class QSBULocalConnectionToServer : QSBNetworkConnection + internal class QSBULocalConnectionToServer : QSBNetworkConnection { public QSBULocalConnectionToServer(QSBNetworkServer localServer) { @@ -65,4 +65,4 @@ public override void GetStatsIn(out int numMsgs, out int numBytes) private QSBNetworkServer m_LocalServer; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBUtility.cs b/QSB/QuantumUNET/QSBUtility.cs index 2165abe7f..90f596aea 100644 --- a/QSB/QuantumUNET/QSBUtility.cs +++ b/QSB/QuantumUNET/QSBUtility.cs @@ -60,4 +60,4 @@ public static NetworkAccessToken GetAccessTokenForNetwork(NetworkID netId) private static Dictionary s_dictTokens = new Dictionary(); } -} +} \ No newline at end of file diff --git a/QSB/SectorSync/QSBSector.cs b/QSB/SectorSync/QSBSector.cs index 1b39882e8..232cec203 100644 --- a/QSB/SectorSync/QSBSector.cs +++ b/QSB/SectorSync/QSBSector.cs @@ -17,4 +17,4 @@ public void Init(Sector sector, int id) ObjectId = id; } } -} +} \ No newline at end of file diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 771643b06..cdbc5402f 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -23,6 +23,7 @@ private void Awake() QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } + private void OnDestroy() { QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); @@ -50,4 +51,4 @@ public QSBSector GetClosestSector(Transform trans) .First(); } } -} +} \ No newline at end of file diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 18f468896..0173b5155 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -46,4 +46,4 @@ private void SendSector(uint id, QSBSector sector) GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); } } -} +} \ No newline at end of file diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index 77d9364aa..bc8e5cd00 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -24,4 +24,4 @@ public override void OnReceiveRemote(ServerTimeMessage message) WakeUpSync.LocalInstance.OnClientReceiveMessage(message); } } -} +} \ No newline at end of file diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index bd3ef0e3c..c24cf74cc 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -22,4 +22,4 @@ private void Start() } } } -} +} \ No newline at end of file diff --git a/QSB/TimeSync/TimeSyncType.cs b/QSB/TimeSync/TimeSyncType.cs index 6556cbeca..e1545bc4b 100644 --- a/QSB/TimeSync/TimeSyncType.cs +++ b/QSB/TimeSync/TimeSyncType.cs @@ -6,4 +6,4 @@ public enum TimeSyncType Pausing, Fastforwarding } -} +} \ No newline at end of file diff --git a/QSB/TimeSync/TimeSyncUI.cs b/QSB/TimeSync/TimeSyncUI.cs index 2991784a7..895b671dd 100644 --- a/QSB/TimeSync/TimeSyncUI.cs +++ b/QSB/TimeSync/TimeSyncUI.cs @@ -5,7 +5,7 @@ namespace QSB.TimeSync { - class TimeSyncUI : MonoBehaviour + internal class TimeSyncUI : MonoBehaviour { public static TimeSyncUI Instance; @@ -42,6 +42,7 @@ private void OnDestroy() } public static void Start(TimeSyncType type) => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); + public static void Stop() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); private void StartTimeSync(TimeSyncType type) @@ -78,6 +79,7 @@ private void OnWillRenderCanvases() + Environment.NewLine + "Fast-forwarding to match server time..."; break; + case TimeSyncType.Pausing: text = "Pausing to match server time..."; break; diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index 65364a8e9..0a41a4fa5 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -20,4 +20,4 @@ public override void DoPatches() QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); } } -} +} \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 29f8bf251..5a033b583 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -17,6 +17,7 @@ public class WakeUpSync : QSBNetworkBehaviour private const float MinFastForwardSpeed = 2f; private enum State { NotLoaded, Loaded, FastForwarding, Pausing } + private State _state = State.NotLoaded; private float _sendTimer; diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 3cc770c83..441533b45 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -21,6 +21,7 @@ public override void CloseListener() } private void HandleTurnOn() => SendEvent(CreateMessage(true)); + private void HandleTurnOff() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage @@ -41,4 +42,4 @@ public override void OnReceiveLocal(ToggleMessage message) QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); } } -} +} \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 638223560..8f698cb4b 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -21,6 +21,7 @@ public override void CloseListener() } private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); + private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage @@ -41,4 +42,4 @@ public override void OnReceiveLocal(ToggleMessage message) QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); } } -} +} \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 4973595dc..1fe356af1 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -21,6 +21,7 @@ public override void CloseListener() } private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); + private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage @@ -41,4 +42,4 @@ public override void OnReceiveLocal(ToggleMessage message) QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); } } -} +} \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index f0c4461d7..8f2b9955e 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -21,6 +21,7 @@ public override void CloseListener() } private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage @@ -41,4 +42,4 @@ public override void OnReceiveLocal(ToggleMessage message) QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); } } -} +} \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 741aeda3e..a185daaaa 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -21,6 +21,7 @@ public override void CloseListener() } private void HandleEquip() => SendEvent(CreateMessage(true)); + private void HandleUnequip() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage @@ -41,4 +42,4 @@ public override void OnReceiveLocal(ToggleMessage message) QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); } } -} +} \ No newline at end of file diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs index e26196aac..f68c04ca6 100644 --- a/QSB/Tools/ProbePatches.cs +++ b/QSB/Tools/ProbePatches.cs @@ -26,4 +26,4 @@ public override void DoPatches() QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); } } -} +} \ No newline at end of file diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index 2c1860576..ce07b29af 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -81,4 +81,4 @@ private void FixedUpdate() _wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity; } } -} +} \ No newline at end of file diff --git a/QSB/Tools/QSBProbe.cs b/QSB/Tools/QSBProbe.cs index aa876086b..ad91fab2a 100644 --- a/QSB/Tools/QSBProbe.cs +++ b/QSB/Tools/QSBProbe.cs @@ -28,4 +28,4 @@ private void Deactivate() gameObject.Hide(); } } -} +} \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 156882940..d4c3ec25d 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -48,4 +48,4 @@ protected override Transform InitRemoteTransform() && NetId.Value != uint.MaxValue && NetId.Value != 0U; } -} +} \ No newline at end of file diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 6c71ae2d6..d45203ef4 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -98,4 +98,4 @@ protected override void UpdateTransform() && NetId.Value != uint.MaxValue && NetId.Value != 0U; } -} +} \ No newline at end of file diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index f710b30ca..7f41f7ba0 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -62,4 +62,4 @@ protected override Transform InitRemoteTransform() && NetId.Value != uint.MaxValue && NetId.Value != 0U; } -} +} \ No newline at end of file diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index cf831f4d6..48089beaa 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -60,4 +60,4 @@ protected override Transform InitRemoteTransform() && NetId.Value != uint.MaxValue && NetId.Value != 0U; } -} +} \ No newline at end of file diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 2a43a0982..98b3a0498 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -9,7 +9,9 @@ namespace QSB.TransformSync public abstract class TransformSync : PlayerSyncObject { public abstract bool IsReady { get; } + protected abstract Transform InitLocalTransform(); + protected abstract Transform InitRemoteTransform(); public Transform SyncedTransform { get; private set; } @@ -75,7 +77,7 @@ private void Update() protected virtual void UpdateTransform() { - if (HasAuthority) // If this script is attached to the client's own body on the client's side. + if (HasAuthority) // If this script is attached to the client's own body on the client's side. { if (ReferenceSector == null || ReferenceSector.Sector == null) { @@ -87,7 +89,7 @@ protected virtual void UpdateTransform() return; } - // If this script is attached to any other body, eg the representations of other players + // If this script is attached to any other body, eg the representations of other players if (SyncedTransform.position == Vector3.zero) { Hide(); @@ -131,6 +133,5 @@ private void Hide() _isVisible = false; } } - } } \ No newline at end of file diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index a49870676..f6ab94043 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -49,4 +49,4 @@ private static string GetCallingType(StackTrace frame) return stackFrame.GetMethod().DeclaringType.Name; } } -} +} \ No newline at end of file diff --git a/QSB/Utility/FlagsHelper.cs b/QSB/Utility/FlagsHelper.cs index c68b8e926..55236ed91 100644 --- a/QSB/Utility/FlagsHelper.cs +++ b/QSB/Utility/FlagsHelper.cs @@ -28,4 +28,4 @@ public static void Unset(ref T flags, T flag) where T : struct flags = (T)(object)(flagsValue & ~flagValue); } } -} +} \ No newline at end of file diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index e734ac455..9919cdec0 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -30,4 +30,4 @@ public static Transform InstantiateInactive(this Transform original) return original.gameObject.InstantiateInactive().transform; } } -} +} \ No newline at end of file diff --git a/QSB/Utility/ListExtensions.cs b/QSB/Utility/ListExtensions.cs index b01174049..5513c4d17 100644 --- a/QSB/Utility/ListExtensions.cs +++ b/QSB/Utility/ListExtensions.cs @@ -17,4 +17,4 @@ public static IEnumerable DistinctBy(this IEnumerable x.DynamicInvoke(instance)); } } -} +} \ No newline at end of file diff --git a/QSB/default-config.json b/QSB/default-config.json index 1d394b367..f110ec1d1 100644 --- a/QSB/default-config.json +++ b/QSB/default-config.json @@ -5,4 +5,4 @@ "port": 7777, "debugMode": true } -} +} \ No newline at end of file diff --git a/QSB/manifest.json b/QSB/manifest.json index 3121b217f..ca73a10e1 100644 --- a/QSB/manifest.json +++ b/QSB/manifest.json @@ -6,4 +6,4 @@ "uniqueName": "Raicuparta.QuantumSpaceBuddies", "version": "0.7.0", "owmlVersion": "0.7.3" -} +} \ No newline at end of file From bae74f8ff77d3491479295137ff19591b218d747 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 3 Dec 2020 11:56:32 +0000 Subject: [PATCH 110/207] cleanup --- QSB/QSBNetworkManager.cs | 6 - QSB/QuantumUNET/QSBCRCMessage.cs | 22 +- QSB/QuantumUNET/QSBCRCMessageEntry.cs | 1 - QSB/QuantumUNET/QSBChannelBuffer.cs | 277 ++++++++---------- QSB/QuantumUNET/QSBClientAuthorityMessage.cs | 7 +- QSB/QuantumUNET/QSBClientScene.cs | 128 ++++---- QSB/QuantumUNET/QSBLocalClient.cs | 22 +- QSB/QuantumUNET/QSBNetworkClient.cs | 8 +- QSB/QuantumUNET/QSBNetworkConnection.cs | 46 +-- QSB/QuantumUNET/QSBNetworkIdentity.cs | 3 - QSB/QuantumUNET/QSBNetworkManagerUNET.cs | 51 ++-- QSB/QuantumUNET/QSBNetworkMessage.cs | 28 +- QSB/QuantumUNET/QSBNetworkMessageHandlers.cs | 33 +-- QSB/QuantumUNET/QSBNetworkMigrationManager.cs | 12 +- QSB/QuantumUNET/QSBNetworkScene.cs | 1 - QSB/QuantumUNET/QSBNetworkServer.cs | 83 +++--- QSB/QuantumUNET/QSBObjectDestroyMessage.cs | 8 +- .../QSBObjectSpawnFinishedMessage.cs | 8 +- QSB/QuantumUNET/QSBObjectSpawnMessage.cs | 35 +-- QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs | 29 +- QSB/QuantumUNET/QSBOwnerMessage.cs | 15 +- QSB/QuantumUNET/QSBPlayerController.cs | 31 +- QSB/QuantumUNET/QSBRemovePlayerMessage.cs | 8 +- QSB/QuantumUNET/QSBUtility.cs | 44 +-- QSB/TransformSync/PlayerProbeSync.cs | 1 - QSB/TransformSync/TransformSync.cs | 1 - QSB/Utility/UnetExtensions.cs | 2 +- 27 files changed, 399 insertions(+), 511 deletions(-) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 7488db66c..19dbee338 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -42,13 +42,11 @@ public class QSBNetworkManager : QSBNetworkManagerUNET private void Awake() { - DebugLog.DebugWrite("AWAKE"); Instance = this; _lobby = gameObject.AddComponent(); _assetBundle = QSB.NetworkAssetBundle; - DebugLog.DebugWrite("player"); playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); var ident = playerPrefab.AddComponent(); ident.LocalPlayerAuthority = true; @@ -59,7 +57,6 @@ private void Awake() playerPrefab.AddComponent(); playerPrefab.AddComponent(); - DebugLog.DebugWrite("ship"); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); ident = _shipPrefab.AddComponent(); ident.LocalPlayerAuthority = true; @@ -68,7 +65,6 @@ private void Awake() _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); - DebugLog.DebugWrite("camera"); _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); ident = _cameraPrefab.AddComponent(); ident.LocalPlayerAuthority = true; @@ -77,7 +73,6 @@ private void Awake() _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); - DebugLog.DebugWrite("probe"); _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); ident = _probePrefab.AddComponent(); ident.LocalPlayerAuthority = true; @@ -86,7 +81,6 @@ private void Awake() _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); - DebugLog.DebugWrite("orb"); OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); ident = OrbPrefab.AddComponent(); ident.LocalPlayerAuthority = true; diff --git a/QSB/QuantumUNET/QSBCRCMessage.cs b/QSB/QuantumUNET/QSBCRCMessage.cs index 166f6e6ba..faa8913fb 100644 --- a/QSB/QuantumUNET/QSBCRCMessage.cs +++ b/QSB/QuantumUNET/QSBCRCMessage.cs @@ -4,29 +4,29 @@ namespace QSB.QuantumUNET { internal class QSBCRCMessage : MessageBase { + public QSBCRCMessageEntry[] scripts; + public override void Deserialize(NetworkReader reader) { - int num = (int)reader.ReadUInt16(); - this.scripts = new QSBCRCMessageEntry[num]; - for (int i = 0; i < this.scripts.Length; i++) + var num = (int)reader.ReadUInt16(); + scripts = new QSBCRCMessageEntry[num]; + for (var i = 0; i < scripts.Length; i++) { - QSBCRCMessageEntry crcmessageEntry = default(QSBCRCMessageEntry); + var crcmessageEntry = default(QSBCRCMessageEntry); crcmessageEntry.name = reader.ReadString(); crcmessageEntry.channel = reader.ReadByte(); - this.scripts[i] = crcmessageEntry; + scripts[i] = crcmessageEntry; } } public override void Serialize(NetworkWriter writer) { - writer.Write((ushort)this.scripts.Length); - for (int i = 0; i < this.scripts.Length; i++) + writer.Write((ushort)scripts.Length); + for (var i = 0; i < scripts.Length; i++) { - writer.Write(this.scripts[i].name); - writer.Write(this.scripts[i].channel); + writer.Write(scripts[i].name); + writer.Write(scripts[i].channel); } } - - public QSBCRCMessageEntry[] scripts; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBCRCMessageEntry.cs b/QSB/QuantumUNET/QSBCRCMessageEntry.cs index 03294a916..b3f3ffe3c 100644 --- a/QSB/QuantumUNET/QSBCRCMessageEntry.cs +++ b/QSB/QuantumUNET/QSBCRCMessageEntry.cs @@ -3,7 +3,6 @@ internal struct QSBCRCMessageEntry { public string name; - public byte channel; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBChannelBuffer.cs b/QSB/QuantumUNET/QSBChannelBuffer.cs index f1e9dca81..f85231806 100644 --- a/QSB/QuantumUNET/QSBChannelBuffer.cs +++ b/QSB/QuantumUNET/QSBChannelBuffer.cs @@ -7,39 +7,57 @@ namespace QSB.QuantumUNET { internal class QSBChannelBuffer : IDisposable { + public int NumMsgsOut { get; private set; } + public int NumBufferedMsgsOut { get; private set; } + public int NumBytesOut { get; private set; } + public int NumMsgsIn { get; private set; } + public int NumBytesIn { get; private set; } + public int NumBufferedPerSecond { get; private set; } + public int LastBufferedPerSecond { get; private set; } + public const int MaxPendingPacketCount = 16; + public const int MaxBufferedPackets = 512; + public float MaxDelay = 0.01f; + + private QSBNetworkConnection _connection; + private QSBChannelPacket _currentPacket; + private float _lastFlushTime; + private byte _channelId; + private int _maxPacketSize; + private bool _isReliable; + private bool _allowFragmentation; + private bool _isBroken; + private int _maxPendingPacketCount; + private const int _maxFreePacketCount = 512; + private Queue _pendingPackets; + private static List _freePackets; + internal static int _pendingPacketCount; + private float _lastBufferedMessageCountTimer = Time.realtimeSinceStartup; + private static NetworkWriter _sendWriter = new NetworkWriter(); + private static NetworkWriter _fragmentWriter = new NetworkWriter(); + private const int _packetHeaderReserveSize = 100; + private bool _disposed; + internal QSBNetBuffer _fragmentBuffer = new QSBNetBuffer(); + private bool _readingFragment = false; + public QSBChannelBuffer(QSBNetworkConnection conn, int bufferSize, byte cid, bool isReliable, bool isSequenced) { - m_Connection = conn; - m_MaxPacketSize = bufferSize - 100; - m_CurrentPacket = new QSBChannelPacket(m_MaxPacketSize, isReliable); - m_ChannelId = cid; - m_MaxPendingPacketCount = 16; - m_IsReliable = isReliable; - m_AllowFragmentation = isReliable && isSequenced; + _connection = conn; + _maxPacketSize = bufferSize - 100; + _currentPacket = new QSBChannelPacket(_maxPacketSize, isReliable); + _channelId = cid; + _maxPendingPacketCount = 16; + _isReliable = isReliable; + _allowFragmentation = isReliable && isSequenced; if (isReliable) { - m_PendingPackets = new Queue(); - if (s_FreePackets == null) + _pendingPackets = new Queue(); + if (_freePackets == null) { - s_FreePackets = new List(); + _freePackets = new List(); } } } - public int numMsgsOut { get; private set; } - - public int numBufferedMsgsOut { get; private set; } - - public int numBytesOut { get; private set; } - - public int numMsgsIn { get; private set; } - - public int numBytesIn { get; private set; } - - public int numBufferedPerSecond { get; private set; } - - public int lastBufferedPerSecond { get; private set; } - public void Dispose() { Dispose(true); @@ -48,26 +66,23 @@ public void Dispose() protected virtual void Dispose(bool disposing) { - if (!m_Disposed) + if (!_disposed && disposing) { - if (disposing) + if (_pendingPackets != null) { - if (m_PendingPackets != null) + while (_pendingPackets.Count > 0) { - while (m_PendingPackets.Count > 0) + _pendingPacketCount--; + var item = _pendingPackets.Dequeue(); + if (_freePackets.Count < 512) { - pendingPacketCount--; - var item = m_PendingPackets.Dequeue(); - if (s_FreePackets.Count < 512) - { - s_FreePackets.Add(item); - } + _freePackets.Add(item); } - m_PendingPackets.Clear(); } + _pendingPackets.Clear(); } } - m_Disposed = true; + _disposed = true; } public bool SetOption(ChannelOption option, int value) @@ -81,7 +96,7 @@ public bool SetOption(ChannelOption option, int value) { result = false; } - else if (!m_CurrentPacket.IsEmpty() || m_PendingPackets.Count > 0) + else if (!_currentPacket.IsEmpty() || _pendingPackets.Count > 0) { if (LogFilter.logError) { @@ -97,28 +112,28 @@ public bool SetOption(ChannelOption option, int value) } result = false; } - else if (value > m_MaxPacketSize) + else if (value > _maxPacketSize) { if (LogFilter.logError) { - Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + m_MaxPacketSize + ")."); + Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); } result = false; } else { - m_CurrentPacket = new QSBChannelPacket(value, m_IsReliable); - m_MaxPacketSize = value; + _currentPacket = new QSBChannelPacket(value, _isReliable); + _maxPacketSize = value; result = true; } } else { - m_AllowFragmentation = value != 0; + _allowFragmentation = value != 0; result = true; } } - else if (!m_IsReliable) + else if (!_isReliable) { result = false; } @@ -129,7 +144,7 @@ public bool SetOption(ChannelOption option, int value) Debug.LogError(string.Concat(new object[] { "Invalid MaxPendingBuffers for channel ", - m_ChannelId, + _channelId, ". Must be greater than zero and less than ", 512 })); @@ -138,7 +153,7 @@ public bool SetOption(ChannelOption option, int value) } else { - m_MaxPendingPacketCount = value; + _maxPendingPacketCount = value; result = true; } return result; @@ -146,16 +161,16 @@ public bool SetOption(ChannelOption option, int value) public void CheckInternalBuffer() { - if (Time.realtimeSinceStartup - m_LastFlushTime > maxDelay && !m_CurrentPacket.IsEmpty()) + if (Time.realtimeSinceStartup - _lastFlushTime > MaxDelay && !_currentPacket.IsEmpty()) { SendInternalBuffer(); - m_LastFlushTime = Time.realtimeSinceStartup; + _lastFlushTime = Time.realtimeSinceStartup; } - if (Time.realtimeSinceStartup - m_LastBufferedMessageCountTimer > 1f) + if (Time.realtimeSinceStartup - _lastBufferedMessageCountTimer > 1f) { - lastBufferedPerSecond = numBufferedPerSecond; - numBufferedPerSecond = 0; - m_LastBufferedMessageCountTimer = Time.realtimeSinceStartup; + LastBufferedPerSecond = NumBufferedPerSecond; + NumBufferedPerSecond = 0; + _lastBufferedMessageCountTimer = Time.realtimeSinceStartup; } } @@ -167,11 +182,11 @@ public bool SendWriter(NetworkWriter writer) public bool Send(short msgType, MessageBase msg) { - s_SendWriter.StartMessage(msgType); - msg.Serialize(s_SendWriter); - s_SendWriter.FinishMessage(); - numMsgsOut++; - return SendWriter(s_SendWriter); + _sendWriter.StartMessage(msgType); + msg.Serialize(_sendWriter); + _sendWriter.FinishMessage(); + NumMsgsOut++; + return SendWriter(_sendWriter); } internal bool HandleFragment(NetworkReader reader) @@ -179,18 +194,18 @@ internal bool HandleFragment(NetworkReader reader) bool result; if (reader.ReadByte() == 0) { - if (!readingFragment) + if (!_readingFragment) { - fragmentBuffer.SeekZero(); - readingFragment = true; + _fragmentBuffer.SeekZero(); + _readingFragment = true; } var array = reader.ReadBytesAndSize(); - fragmentBuffer.WriteBytes(array, (ushort)array.Length); + _fragmentBuffer.WriteBytes(array, (ushort)array.Length); result = false; } else { - readingFragment = false; + _readingFragment = false; result = true; } return result; @@ -201,21 +216,21 @@ internal bool SendFragmentBytes(byte[] bytes, int bytesToSend) var num = 0; while (bytesToSend > 0) { - var num2 = Math.Min(bytesToSend, m_MaxPacketSize - 32); + var num2 = Math.Min(bytesToSend, _maxPacketSize - 32); var array = new byte[num2]; Array.Copy(bytes, num, array, 0, num2); - s_FragmentWriter.StartMessage(17); - s_FragmentWriter.Write(0); - s_FragmentWriter.WriteBytesFull(array); - s_FragmentWriter.FinishMessage(); - SendWriter(s_FragmentWriter); + _fragmentWriter.StartMessage(17); + _fragmentWriter.Write(0); + _fragmentWriter.WriteBytesFull(array); + _fragmentWriter.FinishMessage(); + SendWriter(_fragmentWriter); num += num2; bytesToSend -= num2; } - s_FragmentWriter.StartMessage(17); - s_FragmentWriter.Write(1); - s_FragmentWriter.FinishMessage(); - SendWriter(s_FragmentWriter); + _fragmentWriter.StartMessage(17); + _fragmentWriter.Write(1); + _fragmentWriter.FinishMessage(); + SendWriter(_fragmentWriter); return true; } @@ -238,9 +253,9 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } result = false; } - else if (bytesToSend > m_MaxPacketSize) + else if (bytesToSend > _maxPacketSize) { - if (m_AllowFragmentation) + if (_allowFragmentation) { result = SendFragmentBytes(bytes, bytesToSend); } @@ -253,86 +268,86 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) "Failed to send big message of ", bytesToSend, " bytes. The maximum is ", - m_MaxPacketSize, + _maxPacketSize, " bytes on channel:", - m_ChannelId + _channelId })); } result = false; } } - else if (!m_CurrentPacket.HasSpace(bytesToSend)) + else if (!_currentPacket.HasSpace(bytesToSend)) { - if (m_IsReliable) + if (_isReliable) { - if (m_PendingPackets.Count == 0) + if (_pendingPackets.Count == 0) { - if (!m_CurrentPacket.SendToTransport(m_Connection, m_ChannelId)) + if (!_currentPacket.SendToTransport(_connection, _channelId)) { QueuePacket(); } - m_CurrentPacket.Write(bytes, bytesToSend); + _currentPacket.Write(bytes, bytesToSend); result = true; } - else if (m_PendingPackets.Count >= m_MaxPendingPacketCount) + else if (_pendingPackets.Count >= _maxPendingPacketCount) { - if (!m_IsBroken) + if (!_isBroken) { if (LogFilter.logError) { - Debug.LogError("ChannelBuffer buffer limit of " + m_PendingPackets.Count + " packets reached."); + Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); } } - m_IsBroken = true; + _isBroken = true; result = false; } else { QueuePacket(); - m_CurrentPacket.Write(bytes, bytesToSend); + _currentPacket.Write(bytes, bytesToSend); result = true; } } - else if (!m_CurrentPacket.SendToTransport(m_Connection, m_ChannelId)) + else if (!_currentPacket.SendToTransport(_connection, _channelId)) { if (LogFilter.logError) { - Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + m_ChannelId); + Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); } result = false; } else { - m_CurrentPacket.Write(bytes, bytesToSend); + _currentPacket.Write(bytes, bytesToSend); result = true; } } else { - m_CurrentPacket.Write(bytes, bytesToSend); - result = maxDelay != 0f || SendInternalBuffer(); + _currentPacket.Write(bytes, bytesToSend); + result = MaxDelay != 0f || SendInternalBuffer(); } return result; } private void QueuePacket() { - pendingPacketCount++; - m_PendingPackets.Enqueue(m_CurrentPacket); - m_CurrentPacket = AllocPacket(); + _pendingPacketCount++; + _pendingPackets.Enqueue(_currentPacket); + _currentPacket = AllocPacket(); } private QSBChannelPacket AllocPacket() { QSBChannelPacket result; - if (s_FreePackets.Count == 0) + if (_freePackets.Count == 0) { - result = new QSBChannelPacket(m_MaxPacketSize, m_IsReliable); + result = new QSBChannelPacket(_maxPacketSize, _isReliable); } else { - var channelPacket = s_FreePackets[s_FreePackets.Count - 1]; - s_FreePackets.RemoveAt(s_FreePackets.Count - 1); + var channelPacket = _freePackets[_freePackets.Count - 1]; + _freePackets.RemoveAt(_freePackets.Count - 1); channelPacket.Reset(); result = channelPacket; } @@ -341,89 +356,43 @@ private QSBChannelPacket AllocPacket() private static void FreePacket(QSBChannelPacket packet) { - if (s_FreePackets.Count < 512) + if (_freePackets.Count < 512) { - s_FreePackets.Add(packet); + _freePackets.Add(packet); } } public bool SendInternalBuffer() { bool result; - if (m_IsReliable && m_PendingPackets.Count > 0) + if (_isReliable && _pendingPackets.Count > 0) { - while (m_PendingPackets.Count > 0) + while (_pendingPackets.Count > 0) { - var channelPacket = m_PendingPackets.Dequeue(); - if (!channelPacket.SendToTransport(m_Connection, m_ChannelId)) + var channelPacket = _pendingPackets.Dequeue(); + if (!channelPacket.SendToTransport(_connection, _channelId)) { - m_PendingPackets.Enqueue(channelPacket); + _pendingPackets.Enqueue(channelPacket); break; } - pendingPacketCount--; + _pendingPacketCount--; FreePacket(channelPacket); - if (m_IsBroken && m_PendingPackets.Count < m_MaxPendingPacketCount / 2) + if (_isBroken && _pendingPackets.Count < _maxPendingPacketCount / 2) { if (LogFilter.logWarn) { Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); } - m_IsBroken = false; + _isBroken = false; } } result = true; } else { - result = m_CurrentPacket.SendToTransport(m_Connection, m_ChannelId); + result = _currentPacket.SendToTransport(_connection, _channelId); } return result; } - - private QSBNetworkConnection m_Connection; - - private QSBChannelPacket m_CurrentPacket; - - private float m_LastFlushTime; - - private byte m_ChannelId; - - private int m_MaxPacketSize; - - private bool m_IsReliable; - - private bool m_AllowFragmentation; - - private bool m_IsBroken; - - private int m_MaxPendingPacketCount; - - private const int k_MaxFreePacketCount = 512; - - public const int MaxPendingPacketCount = 16; - - public const int MaxBufferedPackets = 512; - - private Queue m_PendingPackets; - - private static List s_FreePackets; - - internal static int pendingPacketCount; - - public float maxDelay = 0.01f; - - private float m_LastBufferedMessageCountTimer = Time.realtimeSinceStartup; - - private static NetworkWriter s_SendWriter = new NetworkWriter(); - - private static NetworkWriter s_FragmentWriter = new NetworkWriter(); - - private const int k_PacketHeaderReserveSize = 100; - - private bool m_Disposed; - - internal QSBNetBuffer fragmentBuffer = new QSBNetBuffer(); - - private bool readingFragment = false; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs index 96a787ee0..f22187bec 100644 --- a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs +++ b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs @@ -4,6 +4,9 @@ namespace QSB.QuantumUNET { internal class QSBClientAuthorityMessage : MessageBase { + public NetworkInstanceId netId; + public bool authority; + public override void Deserialize(NetworkReader reader) { netId = reader.ReadNetworkId(); @@ -15,9 +18,5 @@ public override void Serialize(NetworkWriter writer) writer.Write(netId); writer.Write(authority); } - - public NetworkInstanceId netId; - - public bool authority; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBClientScene.cs b/QSB/QuantumUNET/QSBClientScene.cs index 10c0a033f..a7a24c671 100644 --- a/QSB/QuantumUNET/QSBClientScene.cs +++ b/QSB/QuantumUNET/QSBClientScene.cs @@ -74,7 +74,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer else { player = localPlayers[(int)playerControllerId]; - result = (player.gameObject != null); + result = (player.Gameobject != null); } return result; } @@ -98,9 +98,9 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont } var playerController = new QSBPlayerController { - gameObject = view.gameObject, - playerControllerId = playerControllerId, - unetView = view + Gameobject = view.gameObject, + PlayerControllerId = playerControllerId, + UnetView = view }; localPlayers[(int)playerControllerId] = playerController; readyConnection.SetPlayerController(playerController); @@ -166,7 +166,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl } if (readyConnection.GetPlayerController(playerControllerId, out var playerController)) { - if (playerController.IsValid && playerController.gameObject != null) + if (playerController.IsValid && playerController.Gameobject != null) { if (LogFilter.logError) { @@ -291,7 +291,7 @@ public static bool RemovePlayer(short playerControllerId) readyConnection.Send(38, removePlayerMessage); readyConnection.RemovePlayerController(playerControllerId); localPlayers[(int)playerControllerId] = new QSBPlayerController(); - UnityEngine.Object.Destroy(playerController.gameObject); + UnityEngine.Object.Destroy(playerController.Gameobject); result = true; } else @@ -505,39 +505,39 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_ObjectSpawnMessage); if (!s_ObjectSpawnMessage.assetId.IsValid()) { - Debug.LogError($"OnObjSpawn netId: {s_ObjectSpawnMessage.netId} has invalid asset Id. {s_ObjectSpawnMessage.assetId}"); + Debug.LogError($"OnObjSpawn netId: {s_ObjectSpawnMessage.NetId} has invalid asset Id. {s_ObjectSpawnMessage.assetId}"); } else { DebugLog.DebugWrite(string.Concat(new object[] { "Client spawn handler instantiating [netId:", - s_ObjectSpawnMessage.netId, + s_ObjectSpawnMessage.NetId, " asset ID:", s_ObjectSpawnMessage.assetId, " pos:", - s_ObjectSpawnMessage.position, + s_ObjectSpawnMessage.Position, "]" })); - if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.netId, out var component)) + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.NetId, out var component)) { - ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, null); + ApplySpawnPayload(component, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Payload, s_ObjectSpawnMessage.NetId, null); } else if (QSBNetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out var original)) { - GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.rotation); + GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); if (LogFilter.logDebug) { DebugLog.DebugWrite(string.Concat(new object[] { "Client spawn handler instantiating [netId:", - s_ObjectSpawnMessage.netId, + s_ObjectSpawnMessage.NetId, " asset ID:", s_ObjectSpawnMessage.assetId, " pos:", - s_ObjectSpawnMessage.position, + s_ObjectSpawnMessage.Position, " rotation: ", - s_ObjectSpawnMessage.rotation, + s_ObjectSpawnMessage.Rotation, "]" })); } @@ -549,12 +549,12 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) else { component.Reset(); - ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, gameObject); + ApplySpawnPayload(component, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Payload, s_ObjectSpawnMessage.NetId, gameObject); } } else if (QSBNetworkScene.GetSpawnHandler(s_ObjectSpawnMessage.assetId, out var spawnDelegate)) { - var gameObject2 = spawnDelegate(s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.assetId); + var gameObject2 = spawnDelegate(s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.assetId); if (gameObject2 == null) { Debug.LogWarning("Client spawn handler for " + s_ObjectSpawnMessage.assetId + " returned null"); @@ -570,7 +570,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) { component.Reset(); component.SetDynamicAssetId(s_ObjectSpawnMessage.assetId); - ApplySpawnPayload(component, s_ObjectSpawnMessage.position, s_ObjectSpawnMessage.payload, s_ObjectSpawnMessage.netId, gameObject2); + ApplySpawnPayload(component, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Payload, s_ObjectSpawnMessage.NetId, gameObject2); } } } @@ -581,7 +581,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) "Failed to spawn server object, did you forget to add it to the QSBNetworkManager? assetId=", s_ObjectSpawnMessage.assetId, " netId=", - s_ObjectSpawnMessage.netId + s_ObjectSpawnMessage.NetId })); } } @@ -595,25 +595,25 @@ private static void OnObjectSpawnScene(QSBNetworkMessage netMsg) Debug.Log(string.Concat(new object[] { "Client spawn scene handler instantiating [netId:", - s_ObjectSpawnSceneMessage.netId, + s_ObjectSpawnSceneMessage.NetId, " sceneId:", - s_ObjectSpawnSceneMessage.sceneId, + s_ObjectSpawnSceneMessage.SceneId, " pos:", - s_ObjectSpawnSceneMessage.position + s_ObjectSpawnSceneMessage.Position })); } - if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.netId, out var networkIdentity)) + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.NetId, out var networkIdentity)) { - ApplySpawnPayload(networkIdentity, s_ObjectSpawnSceneMessage.position, s_ObjectSpawnSceneMessage.payload, s_ObjectSpawnSceneMessage.netId, networkIdentity.gameObject); + ApplySpawnPayload(networkIdentity, s_ObjectSpawnSceneMessage.Position, s_ObjectSpawnSceneMessage.Payload, s_ObjectSpawnSceneMessage.NetId, networkIdentity.gameObject); } else { - var networkIdentity2 = SpawnSceneObject(s_ObjectSpawnSceneMessage.sceneId); + var networkIdentity2 = SpawnSceneObject(s_ObjectSpawnSceneMessage.SceneId); if (networkIdentity2 == null) { if (LogFilter.logError) { - Debug.LogError("Spawn scene object not found for " + s_ObjectSpawnSceneMessage.sceneId); + Debug.LogError("Spawn scene object not found for " + s_ObjectSpawnSceneMessage.SceneId); } } else @@ -623,14 +623,14 @@ private static void OnObjectSpawnScene(QSBNetworkMessage netMsg) Debug.Log(string.Concat(new object[] { "Client spawn for [netId:", - s_ObjectSpawnSceneMessage.netId, + s_ObjectSpawnSceneMessage.NetId, "] [sceneId:", - s_ObjectSpawnSceneMessage.sceneId, + s_ObjectSpawnSceneMessage.SceneId, "] obj:", networkIdentity2.gameObject.name })); } - ApplySpawnPayload(networkIdentity2, s_ObjectSpawnSceneMessage.position, s_ObjectSpawnSceneMessage.payload, s_ObjectSpawnSceneMessage.netId, networkIdentity2.gameObject); + ApplySpawnPayload(networkIdentity2, s_ObjectSpawnSceneMessage.Position, s_ObjectSpawnSceneMessage.Payload, s_ObjectSpawnSceneMessage.NetId, networkIdentity2.gameObject); } } } @@ -640,9 +640,9 @@ private static void OnObjectSpawnFinished(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_ObjectSpawnFinishedMessage); if (LogFilter.logDebug) { - Debug.Log("SpawnFinished:" + s_ObjectSpawnFinishedMessage.state); + Debug.Log("SpawnFinished:" + s_ObjectSpawnFinishedMessage.State); } - if (s_ObjectSpawnFinishedMessage.state == 0U) + if (s_ObjectSpawnFinishedMessage.State == 0U) { PrepareToSpawnSceneObjects(); s_IsSpawnFinished = false; @@ -666,9 +666,9 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_ObjectDestroyMessage); if (LogFilter.logDebug) { - Debug.Log("ClientScene::OnObjDestroy netId:" + s_ObjectDestroyMessage.netId); + Debug.Log("ClientScene::OnObjDestroy netId:" + s_ObjectDestroyMessage.NetId); } - if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.netId, out var networkIdentity)) + if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.NetId, out var networkIdentity)) { networkIdentity.OnNetworkDestroy(); if (!QSBNetworkScene.InvokeUnSpawnHandler(networkIdentity.AssetId, networkIdentity.gameObject)) @@ -683,12 +683,12 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) SpawnableObjects[networkIdentity.SceneId] = networkIdentity; } } - s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.netId); + s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.NetId); networkIdentity.MarkForReset(); } else if (LogFilter.logDebug) { - Debug.LogWarning("Did not find target for destroy message for " + s_ObjectDestroyMessage.netId); + Debug.LogWarning("Did not find target for destroy message for " + s_ObjectDestroyMessage.NetId); } } @@ -697,9 +697,9 @@ private static void OnLocalClientObjectDestroy(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_ObjectDestroyMessage); if (LogFilter.logDebug) { - Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + s_ObjectDestroyMessage.netId); + Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + s_ObjectDestroyMessage.NetId); } - s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.netId); + s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.NetId); } private static void OnLocalClientObjectHide(QSBNetworkMessage netMsg) @@ -707,9 +707,9 @@ private static void OnLocalClientObjectHide(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_ObjectDestroyMessage); if (LogFilter.logDebug) { - Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + s_ObjectDestroyMessage.netId); + Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + s_ObjectDestroyMessage.NetId); } - if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.netId, out var networkIdentity)) + if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.NetId, out var networkIdentity)) { networkIdentity.OnSetLocalVisibility(false); } @@ -718,7 +718,7 @@ private static void OnLocalClientObjectHide(QSBNetworkMessage netMsg) private static void OnLocalClientObjectSpawn(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectSpawnMessage); - if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.netId, out var networkIdentity)) + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.NetId, out var networkIdentity)) { networkIdentity.OnSetLocalVisibility(true); } @@ -727,7 +727,7 @@ private static void OnLocalClientObjectSpawn(QSBNetworkMessage netMsg) private static void OnLocalClientObjectSpawnScene(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectSpawnSceneMessage); - if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.netId, out var networkIdentity)) + if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.NetId, out var networkIdentity)) { networkIdentity.OnSetLocalVisibility(true); } @@ -735,17 +735,17 @@ private static void OnLocalClientObjectSpawnScene(QSBNetworkMessage netMsg) private static void OnUpdateVarsMessage(QSBNetworkMessage netMsg) { - var networkInstanceId = netMsg.reader.ReadNetworkId(); + var networkInstanceId = netMsg.Reader.ReadNetworkId(); Debug.Log(string.Concat(new object[] { "ClientScene::OnUpdateVarsMessage ", networkInstanceId, " channel:", - netMsg.channelId + netMsg.ChannelId })); if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { - networkIdentity.OnUpdateVars(netMsg.reader, false); + networkIdentity.OnUpdateVars(netMsg.Reader, false); } else if (LogFilter.logWarn) { @@ -755,8 +755,8 @@ private static void OnUpdateVarsMessage(QSBNetworkMessage netMsg) private static void OnRPCMessage(QSBNetworkMessage netMsg) { - var num = (int)netMsg.reader.ReadPackedUInt32(); - var networkInstanceId = netMsg.reader.ReadNetworkId(); + var num = (int)netMsg.Reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.Reader.ReadNetworkId(); if (LogFilter.logDebug) { Debug.Log(string.Concat(new object[] @@ -769,7 +769,7 @@ private static void OnRPCMessage(QSBNetworkMessage netMsg) } if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { - networkIdentity.HandleRPC(num, netMsg.reader); + networkIdentity.HandleRPC(num, netMsg.Reader); } else if (LogFilter.logWarn) { @@ -784,15 +784,15 @@ private static void OnRPCMessage(QSBNetworkMessage netMsg) private static void OnSyncEventMessage(QSBNetworkMessage netMsg) { - var cmdHash = (int)netMsg.reader.ReadPackedUInt32(); - var networkInstanceId = netMsg.reader.ReadNetworkId(); + var cmdHash = (int)netMsg.Reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.Reader.ReadNetworkId(); if (LogFilter.logDebug) { Debug.Log("ClientScene::OnSyncEventMessage " + networkInstanceId); } if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { - networkIdentity.HandleSyncEvent(cmdHash, netMsg.reader); + networkIdentity.HandleSyncEvent(cmdHash, netMsg.Reader); } else if (LogFilter.logWarn) { @@ -802,15 +802,15 @@ private static void OnSyncEventMessage(QSBNetworkMessage netMsg) private static void OnSyncListMessage(QSBNetworkMessage netMsg) { - var networkInstanceId = netMsg.reader.ReadNetworkId(); - var cmdHash = (int)netMsg.reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.Reader.ReadNetworkId(); + var cmdHash = (int)netMsg.Reader.ReadPackedUInt32(); if (LogFilter.logDebug) { Debug.Log("ClientScene::OnSyncListMessage " + networkInstanceId); } if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { - networkIdentity.HandleSyncList(cmdHash, netMsg.reader); + networkIdentity.HandleSyncList(cmdHash, netMsg.Reader); } else if (LogFilter.logWarn) { @@ -826,7 +826,7 @@ private static void OnClientAuthority(QSBNetworkMessage netMsg) Debug.Log(string.Concat(new object[] { "ClientScene::OnClientAuthority for connectionId=", - netMsg.conn.connectionId, + netMsg.Connection.connectionId, " netId: ", s_ClientAuthorityMessage.netId })); @@ -845,27 +845,27 @@ private static void OnOwnerMessage(QSBNetworkMessage netMsg) Debug.Log(string.Concat(new object[] { "ClientScene::OnOwnerMessage - connectionId=", - netMsg.conn.connectionId, + netMsg.Connection.connectionId, " netId: ", - s_OwnerMessage.netId + s_OwnerMessage.NetId })); } - if (netMsg.conn.GetPlayerController(s_OwnerMessage.playerControllerId, out var playerController)) + if (netMsg.Connection.GetPlayerController(s_OwnerMessage.PlayerControllerId, out var playerController)) { - playerController.unetView.SetNotLocalPlayer(); + playerController.UnetView.SetNotLocalPlayer(); } - if (s_NetworkScene.GetNetworkIdentity(s_OwnerMessage.netId, out var networkIdentity)) + if (s_NetworkScene.GetNetworkIdentity(s_OwnerMessage.NetId, out var networkIdentity)) { - networkIdentity.SetConnectionToServer(netMsg.conn); - networkIdentity.SetLocalPlayer(s_OwnerMessage.playerControllerId); - InternalAddPlayer(networkIdentity, s_OwnerMessage.playerControllerId); + networkIdentity.SetConnectionToServer(netMsg.Connection); + networkIdentity.SetLocalPlayer(s_OwnerMessage.PlayerControllerId); + InternalAddPlayer(networkIdentity, s_OwnerMessage.PlayerControllerId); } else { var item = new PendingOwner { - netId = s_OwnerMessage.netId, - playerControllerId = s_OwnerMessage.playerControllerId + netId = s_OwnerMessage.NetId, + playerControllerId = s_OwnerMessage.PlayerControllerId }; s_PendingOwnerIds.Add(item); } diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs index 3e38a581f..6be7a2abf 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -50,19 +50,19 @@ internal void AddLocalPlayer(QSBPlayerController localPlayer) Debug.Log(string.Concat(new object[] { "Local client AddLocalPlayer ", - localPlayer.gameObject.name, + localPlayer.Gameobject.name, " conn=", m_Connection.connectionId })); m_Connection.isReady = true; m_Connection.SetPlayerController(localPlayer); - var unetView = localPlayer.unetView; + var unetView = localPlayer.UnetView; if (unetView != null) { - QSBClientScene.SetLocalObject(unetView.NetId, localPlayer.gameObject); + QSBClientScene.SetLocalObject(unetView.NetId, localPlayer.Gameobject); unetView.SetConnectionToServer(m_Connection); } - QSBClientScene.InternalAddPlayer(unetView, localPlayer.playerControllerId); + QSBClientScene.InternalAddPlayer(unetView, localPlayer.PlayerControllerId); } private void PostInternalMessage(byte[] buffer, int channelId) @@ -98,18 +98,18 @@ private void ProcessInternalMessages() for (var i = 0; i < internalMsgs.Count; i++) { var t = internalMsgs[i]; - if (s_InternalMessage.reader == null) + if (s_InternalMessage.Reader == null) { - s_InternalMessage.reader = new NetworkReader(t.buffer); + s_InternalMessage.Reader = new NetworkReader(t.buffer); } else { - s_InternalMessage.reader.GetType().GetMethod("Replace", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public).Invoke(s_InternalMessage.reader, new object[] { t.buffer }); + s_InternalMessage.Reader.GetType().GetMethod("Replace", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public).Invoke(s_InternalMessage.Reader, new object[] { t.buffer }); } - s_InternalMessage.reader.ReadInt16(); - s_InternalMessage.channelId = t.channelId; - s_InternalMessage.conn = base.connection; - s_InternalMessage.msgType = s_InternalMessage.reader.ReadInt16(); + s_InternalMessage.Reader.ReadInt16(); + s_InternalMessage.ChannelId = t.channelId; + s_InternalMessage.Connection = base.connection; + s_InternalMessage.MsgType = s_InternalMessage.Reader.ReadInt16(); m_Connection.InvokeHandler(s_InternalMessage); m_FreeMessages.Push(t); base.connection.lastMessageTime = Time.time; diff --git a/QSB/QuantumUNET/QSBNetworkClient.cs b/QSB/QuantumUNET/QSBNetworkClient.cs index 68101c392..c364f244a 100644 --- a/QSB/QuantumUNET/QSBNetworkClient.cs +++ b/QSB/QuantumUNET/QSBNetworkClient.cs @@ -976,10 +976,10 @@ private void GenerateError(int error) NetworkReader reader = new NetworkReader(buffer); handler(new QSBNetworkMessage { - msgType = 34, - reader = reader, - conn = m_Connection, - channelId = 0 + MsgType = 34, + Reader = reader, + Connection = m_Connection, + ChannelId = 0 }); } } diff --git a/QSB/QuantumUNET/QSBNetworkConnection.cs b/QSB/QuantumUNET/QSBNetworkConnection.cs index f89c715c7..6eef5a4a4 100644 --- a/QSB/QuantumUNET/QSBNetworkConnection.cs +++ b/QSB/QuantumUNET/QSBNetworkConnection.cs @@ -120,10 +120,10 @@ public bool InvokeHandler(short msgType, NetworkReader reader, int channelId) bool result; if (m_MessageHandlersDict.ContainsKey(msgType)) { - m_MessageInfo.msgType = msgType; - m_MessageInfo.conn = this; - m_MessageInfo.reader = reader; - m_MessageInfo.channelId = channelId; + m_MessageInfo.MsgType = msgType; + m_MessageInfo.Connection = this; + m_MessageInfo.Reader = reader; + m_MessageInfo.ChannelId = channelId; var networkMessageDelegate = m_MessageHandlersDict[msgType]; if (networkMessageDelegate == null) { @@ -149,9 +149,9 @@ public bool InvokeHandler(short msgType, NetworkReader reader, int channelId) public bool InvokeHandler(QSBNetworkMessage netMsg) { bool result; - if (m_MessageHandlersDict.ContainsKey(netMsg.msgType)) + if (m_MessageHandlersDict.ContainsKey(netMsg.MsgType)) { - var networkMessageDelegate = m_MessageHandlersDict[netMsg.msgType]; + var networkMessageDelegate = m_MessageHandlersDict[netMsg.MsgType]; networkMessageDelegate(netMsg); result = true; } @@ -169,7 +169,7 @@ internal void HandleFragment(NetworkReader reader, int channelId) var channelBuffer = m_Channels[channelId]; if (channelBuffer.HandleFragment(reader)) { - var networkReader = new NetworkReader(channelBuffer.fragmentBuffer.AsArraySegment().Array); + var networkReader = new NetworkReader(channelBuffer._fragmentBuffer.AsArraySegment().Array); networkReader.ReadInt16(); var msgType = networkReader.ReadInt16(); InvokeHandler(msgType, networkReader, channelId); @@ -183,18 +183,18 @@ internal void HandleFragment(NetworkReader reader, int channelId) internal void SetPlayerController(QSBPlayerController player) { - while ((int)player.playerControllerId >= PlayerControllers.Count) + while ((int)player.PlayerControllerId >= PlayerControllers.Count) { PlayerControllers.Add(new QSBPlayerController()); } - PlayerControllers[(int)player.playerControllerId] = player; + PlayerControllers[(int)player.PlayerControllerId] = player; } internal void RemovePlayerController(short playerControllerId) { for (var i = PlayerControllers.Count; i >= 0; i--) { - if ((int)playerControllerId == i && playerControllerId == PlayerControllers[i].playerControllerId) + if ((int)playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) { PlayerControllers[i] = new QSBPlayerController(); return; @@ -215,7 +215,7 @@ internal bool GetPlayerController(short playerControllerId, out QSBPlayerControl { for (var i = 0; i < PlayerControllers.Count; i++) { - if (PlayerControllers[i].IsValid && PlayerControllers[i].playerControllerId == playerControllerId) + if (PlayerControllers[i].IsValid && PlayerControllers[i].PlayerControllerId == playerControllerId) { playerController = PlayerControllers[i]; return true; @@ -247,7 +247,7 @@ public void SetMaxDelay(float seconds) { for (var i = 0; i < m_Channels.Length; i++) { - m_Channels[i].maxDelay = seconds; + m_Channels[i].MaxDelay = seconds; } } } @@ -401,10 +401,10 @@ protected void HandleReader(NetworkReader reader, int receivedSize, int channelI } break; } - m_NetMsg.msgType = num2; - m_NetMsg.reader = reader2; - m_NetMsg.conn = this; - m_NetMsg.channelId = channelId; + m_NetMsg.MsgType = num2; + m_NetMsg.Reader = reader2; + m_NetMsg.Connection = this; + m_NetMsg.ChannelId = channelId; networkMessageDelegate(m_NetMsg); lastMessageTime = Time.time; } @@ -419,10 +419,10 @@ public virtual void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out in for (var i = 0; i < m_Channels.Length; i++) { var channelBuffer = m_Channels[i]; - numMsgs += channelBuffer.numMsgsOut; - numBufferedMsgs += channelBuffer.numBufferedMsgsOut; - numBytes += channelBuffer.numBytesOut; - lastBufferedPerSecond += channelBuffer.lastBufferedPerSecond; + numMsgs += channelBuffer.NumMsgsOut; + numBufferedMsgs += channelBuffer.NumBufferedMsgsOut; + numBytes += channelBuffer.NumBytesOut; + lastBufferedPerSecond += channelBuffer.LastBufferedPerSecond; } } @@ -433,8 +433,8 @@ public virtual void GetStatsIn(out int numMsgs, out int numBytes) for (var i = 0; i < m_Channels.Length; i++) { var channelBuffer = m_Channels[i]; - numMsgs += channelBuffer.numMsgsIn; - numBytes += channelBuffer.numBytesIn; + numMsgs += channelBuffer.NumMsgsIn; + numBytes += channelBuffer.NumBytesIn; } } @@ -497,7 +497,7 @@ internal void RemoveOwnedObject(QSBNetworkIdentity obj) } } - internal static void OnFragment(QSBNetworkMessage netMsg) => netMsg.conn.HandleFragment(netMsg.reader, netMsg.channelId); + internal static void OnFragment(QSBNetworkMessage netMsg) => netMsg.Connection.HandleFragment(netMsg.Reader, netMsg.ChannelId); private QSBChannelBuffer[] m_Channels; private readonly QSBNetworkMessage m_NetMsg = new QSBNetworkMessage(); diff --git a/QSB/QuantumUNET/QSBNetworkIdentity.cs b/QSB/QuantumUNET/QSBNetworkIdentity.cs index 15e70a1c4..a9e5998be 100644 --- a/QSB/QuantumUNET/QSBNetworkIdentity.cs +++ b/QSB/QuantumUNET/QSBNetworkIdentity.cs @@ -47,7 +47,6 @@ public bool LocalPlayerAuthority internal void SetDynamicAssetId(NetworkHash128 newAssetId) { - DebugLog.DebugWrite($"Setting asset of {NetId} to {newAssetId}"); if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) { m_AssetId = newAssetId; @@ -173,7 +172,6 @@ internal void OnStartServer(bool allowNonZeroNetId) { if (!m_IsServer) { - DebugLog.DebugWrite("is server"); m_IsServer = true; if (m_LocalPlayerAuthority) { @@ -189,7 +187,6 @@ internal void OnStartServer(bool allowNonZeroNetId) if (NetId.IsEmpty()) { NetId = GetNextNetworkId(); - DebugLog.DebugWrite($"was empty - netid is {NetId}"); } else if (!allowNonZeroNetId) { diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs index 6174a9bfc..6c6fec0e0 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -143,7 +143,6 @@ public GameObject playerPrefab } set { - DebugLog.DebugWrite("setting player prefab"); m_PlayerPrefab = value; } } @@ -1053,31 +1052,31 @@ internal void OnServerConnectInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerConnectInternal"); } - netMsg.conn.SetMaxDelay(m_MaxDelay); + netMsg.Connection.SetMaxDelay(m_MaxDelay); if (m_MaxBufferedPackets != 512) { for (int i = 0; i < QSBNetworkServer.numChannels; i++) { - netMsg.conn.SetChannelOption(i, ChannelOption.MaxPendingBuffers, m_MaxBufferedPackets); + netMsg.Connection.SetChannelOption(i, ChannelOption.MaxPendingBuffers, m_MaxBufferedPackets); } } if (!m_AllowFragmentation) { for (int j = 0; j < QSBNetworkServer.numChannels; j++) { - netMsg.conn.SetChannelOption(j, ChannelOption.AllowFragmentation, 0); + netMsg.Connection.SetChannelOption(j, ChannelOption.AllowFragmentation, 0); } } if (networkSceneName != "" && networkSceneName != m_OfflineScene) { StringMessage msg = new StringMessage(networkSceneName); - netMsg.conn.Send(39, msg); + netMsg.Connection.Send(39, msg); } if (m_MigrationManager != null) { m_MigrationManager.SendPeerInfo(); } - OnServerConnect(netMsg.conn); + OnServerConnect(netMsg.Connection); } internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) @@ -1090,7 +1089,7 @@ internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) { m_MigrationManager.SendPeerInfo(); } - OnServerDisconnect(netMsg.conn); + OnServerDisconnect(netMsg.Connection); } internal void OnServerReadyMessageInternal(QSBNetworkMessage netMsg) @@ -1099,7 +1098,7 @@ internal void OnServerReadyMessageInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerReadyMessageInternal"); } - OnServerReady(netMsg.conn); + OnServerReady(netMsg.Connection); } internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) @@ -1112,11 +1111,11 @@ internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) if (s_AddPlayerMessage.msgSize != 0) { NetworkReader extraMessageReader = new NetworkReader(s_AddPlayerMessage.msgData); - this.OnServerAddPlayer(netMsg.conn, s_AddPlayerMessage.playerControllerId, extraMessageReader); + this.OnServerAddPlayer(netMsg.Connection, s_AddPlayerMessage.playerControllerId, extraMessageReader); } else { - this.OnServerAddPlayer(netMsg.conn, s_AddPlayerMessage.playerControllerId); + this.OnServerAddPlayer(netMsg.Connection, s_AddPlayerMessage.playerControllerId); } if (m_MigrationManager != null) { @@ -1132,9 +1131,9 @@ internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) } netMsg.ReadMessage(s_RemovePlayerMessage); QSBPlayerController player; - netMsg.conn.GetPlayerController(s_RemovePlayerMessage.playerControllerId, out player); - OnServerRemovePlayer(netMsg.conn, player); - netMsg.conn.RemovePlayerController(s_RemovePlayerMessage.playerControllerId); + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.playerControllerId, out player); + OnServerRemovePlayer(netMsg.Connection, player); + netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.playerControllerId); if (m_MigrationManager != null) { m_MigrationManager.SendPeerInfo(); @@ -1148,7 +1147,7 @@ internal void OnServerErrorInternal(QSBNetworkMessage netMsg) Debug.Log("NetworkManager:OnServerErrorInternal"); } netMsg.ReadMessage(s_ErrorMessage); - this.OnServerError(netMsg.conn, s_ErrorMessage.errorCode); + this.OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientConnectInternal(QSBNetworkMessage netMsg) @@ -1157,16 +1156,16 @@ internal void OnClientConnectInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnClientConnectInternal"); } - netMsg.conn.SetMaxDelay(m_MaxDelay); + netMsg.Connection.SetMaxDelay(m_MaxDelay); string name = SceneManager.GetSceneAt(0).name; if (string.IsNullOrEmpty(m_OnlineScene) || m_OnlineScene == m_OfflineScene || name == m_OnlineScene) { m_ClientLoadedScene = false; - OnClientConnect(netMsg.conn); + OnClientConnect(netMsg.Connection); } else { - s_ClientReadyConnection = netMsg.conn; + s_ClientReadyConnection = netMsg.Connection; } } @@ -1178,7 +1177,7 @@ internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) } if (m_MigrationManager != null) { - if (m_MigrationManager.LostHostOnClient(netMsg.conn)) + if (m_MigrationManager.LostHostOnClient(netMsg.Connection)) { return; } @@ -1191,7 +1190,7 @@ internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) { matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, matchInfo.domain, new NetworkMatch.BasicResponseDelegate(OnDropConnection)); } - OnClientDisconnect(netMsg.conn); + OnClientDisconnect(netMsg.Connection); } internal void OnClientNotReadyMessageInternal(QSBNetworkMessage netMsg) @@ -1201,7 +1200,7 @@ internal void OnClientNotReadyMessageInternal(QSBNetworkMessage netMsg) Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); } QSBClientScene.SetNotReady(); - OnClientNotReady(netMsg.conn); + OnClientNotReady(netMsg.Connection); } internal void OnClientErrorInternal(QSBNetworkMessage netMsg) @@ -1211,7 +1210,7 @@ internal void OnClientErrorInternal(QSBNetworkMessage netMsg) Debug.Log("NetworkManager:OnClientErrorInternal"); } netMsg.ReadMessage(s_ErrorMessage); - this.OnClientError(netMsg.conn, s_ErrorMessage.errorCode); + this.OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientSceneInternal(QSBNetworkMessage netMsg) @@ -1220,7 +1219,7 @@ internal void OnClientSceneInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnClientSceneInternal"); } - string newSceneName = netMsg.reader.ReadString(); + string newSceneName = netMsg.Reader.ReadString(); if (IsClientConnected() && !QSBNetworkServer.active) { ClientChangeScene(newSceneName, true); @@ -1281,7 +1280,7 @@ private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerCo DebugLog.ToConsole("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab.", MessageType.Error); } } - else if ((int)playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[(int)playerControllerId].IsValid && conn.PlayerControllers[(int)playerControllerId].gameObject != null) + else if ((int)playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[(int)playerControllerId].IsValid && conn.PlayerControllers[(int)playerControllerId].Gameobject != null) { if (LogFilter.logError) { @@ -1341,9 +1340,9 @@ public Transform GetStartPosition() public virtual void OnServerRemovePlayer(QSBNetworkConnection conn, QSBPlayerController player) { - if (player.gameObject != null) + if (player.Gameobject != null) { - QSBNetworkServer.Destroy(player.gameObject); + QSBNetworkServer.Destroy(player.Gameobject); } } @@ -1396,7 +1395,7 @@ public virtual void OnClientSceneChanged(QSBNetworkConnection conn) bool flag2 = false; for (int i = 0; i < QSBClientScene.localPlayers.Count; i++) { - if (QSBClientScene.localPlayers[i].gameObject != null) + if (QSBClientScene.localPlayers[i].Gameobject != null) { flag2 = true; break; diff --git a/QSB/QuantumUNET/QSBNetworkMessage.cs b/QSB/QuantumUNET/QSBNetworkMessage.cs index 15fc3b03c..93311b2cd 100644 --- a/QSB/QuantumUNET/QSBNetworkMessage.cs +++ b/QSB/QuantumUNET/QSBNetworkMessage.cs @@ -5,36 +5,22 @@ namespace QSB.QuantumUNET { public class QSBNetworkMessage { - public static string Dump(byte[] payload, int sz) - { - var text = "["; - for (var i = 0; i < sz; i++) - { - text = text + payload[i] + " "; - } - return text + "]"; - } + public const int MaxMessageSize = 65535; + public short MsgType; + public QSBNetworkConnection Connection; + public NetworkReader Reader; + public int ChannelId; public TMsg ReadMessage() where TMsg : MessageBase, new() { var result = Activator.CreateInstance(); - result.Deserialize(reader); + result.Deserialize(Reader); return result; } public void ReadMessage(TMsg msg) where TMsg : MessageBase { - msg.Deserialize(reader); + msg.Deserialize(Reader); } - - public const int MaxMessageSize = 65535; - - public short msgType; - - public QSBNetworkConnection conn; - - public NetworkReader reader; - - public int channelId; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs index bb1a41a2b..092b82ce6 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs +++ b/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -5,6 +5,8 @@ namespace QSB.QuantumUNET { internal class QSBNetworkMessageHandlers { + private Dictionary _msgHandlers = new Dictionary(); + internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { if (handler == null) @@ -20,9 +22,9 @@ internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handl " handler:", handler.GetMethodName() })); - if (!this.m_MsgHandlers.ContainsKey(msgType)) + if (!_msgHandlers.ContainsKey(msgType)) { - this.m_MsgHandlers.Add(msgType, handler); + _msgHandlers.Add(msgType, handler); } } } @@ -39,10 +41,10 @@ public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) } else { - if (this.m_MsgHandlers.ContainsKey(msgType)) + if (_msgHandlers.ContainsKey(msgType)) { Debug.Log("RegisterHandler replacing " + msgType); - this.m_MsgHandlers.Remove(msgType); + _msgHandlers.Remove(msgType); } Debug.Log(string.Concat(new object[] { @@ -51,21 +53,18 @@ public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) " handler:", handler.GetMethodName() })); - this.m_MsgHandlers.Add(msgType, handler); + _msgHandlers.Add(msgType, handler); } } - public void UnregisterHandler(short msgType) - { - this.m_MsgHandlers.Remove(msgType); - } + public void UnregisterHandler(short msgType) => _msgHandlers.Remove(msgType); internal QSBNetworkMessageDelegate GetHandler(short msgType) { QSBNetworkMessageDelegate result; - if (this.m_MsgHandlers.ContainsKey(msgType)) + if (_msgHandlers.ContainsKey(msgType)) { - result = this.m_MsgHandlers[msgType]; + result = _msgHandlers[msgType]; } else { @@ -74,16 +73,8 @@ internal QSBNetworkMessageDelegate GetHandler(short msgType) return result; } - internal Dictionary GetHandlers() - { - return this.m_MsgHandlers; - } - - internal void ClearMessageHandlers() - { - this.m_MsgHandlers.Clear(); - } + internal Dictionary GetHandlers() => _msgHandlers; - private Dictionary m_MsgHandlers = new Dictionary(); + internal void ClearMessageHandlers() => _msgHandlers.Clear(); } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs index cf5cb5223..eed887c47 100644 --- a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs @@ -313,11 +313,11 @@ public void SendPeerInfo() for (int j = 0; j < networkConnection.PlayerControllers.Count; j++) { QSBPlayerController playerController = networkConnection.PlayerControllers[j]; - if (playerController != null && playerController.unetView != null) + if (playerController != null && playerController.UnetView != null) { PeerInfoPlayer item; - item.netId = playerController.unetView.NetId; - item.playerControllerId = playerController.unetView.PlayerControllerId; + item.netId = playerController.UnetView.NetId; + item.playerControllerId = playerController.UnetView.PlayerControllerId; list2.Add(item); } } @@ -494,16 +494,16 @@ private void OnServerReconnectPlayerMessage(QSBNetworkMessage netMsg) { if (networkReader == null) { - this.OnServerReconnectPlayer(netMsg.conn, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId); + this.OnServerReconnectPlayer(netMsg.Connection, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId); } else { - this.OnServerReconnectPlayer(netMsg.conn, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId, networkReader); + this.OnServerReconnectPlayer(netMsg.Connection, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId, networkReader); } } else { - this.OnServerReconnectObject(netMsg.conn, gameObject, reconnectMessage.oldConnectionId); + this.OnServerReconnectObject(netMsg.Connection, gameObject, reconnectMessage.oldConnectionId); } } } diff --git a/QSB/QuantumUNET/QSBNetworkScene.cs b/QSB/QuantumUNET/QSBNetworkScene.cs index ae1d29132..328cf12f9 100644 --- a/QSB/QuantumUNET/QSBNetworkScene.cs +++ b/QSB/QuantumUNET/QSBNetworkScene.cs @@ -44,7 +44,6 @@ internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isCli } if (networkIdentity == null) { - DebugLog.DebugWrite($"Adding {netId} to local objects."); networkIdentity = obj.GetComponent(); this.localObjects[netId] = networkIdentity; } diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index 5e2a33841..56eaaa939 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -16,7 +16,6 @@ public class QSBNetworkServer { private QSBNetworkServer() { - DebugLog.DebugWrite("ctor"); NetworkTransport.Init(); m_RemoveList = new HashSet(); m_ExternalConnections = new HashSet(); @@ -601,7 +600,7 @@ public static void SendBytesToPlayer(GameObject player, byte[] buffer, int numBy { for (var j = 0; j < networkConnection.PlayerControllers.Count; j++) { - if (networkConnection.PlayerControllers[j].IsValid && networkConnection.PlayerControllers[j].gameObject == player) + if (networkConnection.PlayerControllers[j].IsValid && networkConnection.PlayerControllers[j].Gameobject == player) { networkConnection.SendBytes(buffer, numBytes, channelId); break; @@ -798,7 +797,7 @@ private void OnDisconnected(QSBNetworkConnection conn) conn.InvokeHandlerNoData(33); for (var i = 0; i < conn.PlayerControllers.Count; i++) { - if (conn.PlayerControllers[i].gameObject != null) + if (conn.PlayerControllers[i].Gameobject != null) { if (LogFilter.logWarn) { @@ -938,7 +937,7 @@ public static void SendToClientOfPlayer(GameObject player, short msgType, Messag { for (var j = 0; j < networkConnection.PlayerControllers.Count; j++) { - if (networkConnection.PlayerControllers[j].IsValid && networkConnection.PlayerControllers[j].gameObject == player) + if (networkConnection.PlayerControllers[j].IsValid && networkConnection.PlayerControllers[j].Gameobject == player) { networkConnection.Send(msgType, msg); return; @@ -1025,7 +1024,7 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje GameObject x = null; if (conn.GetPlayerController(playerControllerId, out playerController)) { - x = playerController.gameObject; + x = playerController.Gameobject; } if (x != null) { @@ -1039,7 +1038,7 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje { var playerController2 = new QSBPlayerController(playerGameObject, playerControllerId); conn.SetPlayerController(playerController2); - networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId); + networkIdentity.SetConnectionToClient(conn, playerController2.PlayerControllerId); SetClientReady(conn); if (SetupLocalPlayerForConnection(conn, networkIdentity, playerController2)) { @@ -1126,7 +1125,7 @@ private bool SetupLocalPlayerForConnection(QSBNetworkConnection conn, QSBNetwork ulocalConnectionToClient.localClient.AddLocalPlayer(newPlayerController); uv.SetClientOwner(conn); uv.ForceAuthority(true); - uv.SetLocalPlayer(newPlayerController.playerControllerId); + uv.SetLocalPlayer(newPlayerController.PlayerControllerId); result = true; } else @@ -1144,8 +1143,8 @@ private static void FinishPlayerForConnection(QSBNetworkConnection conn, QSBNetw } conn.Send(4, new QSBOwnerMessage { - netId = uv.NetId, - playerControllerId = uv.PlayerControllerId + NetId = uv.NetId, + PlayerControllerId = uv.PlayerControllerId }); } @@ -1171,12 +1170,12 @@ internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, Game QSBPlayerController playerController; if (conn.GetPlayerController(playerControllerId, out playerController)) { - playerController.unetView.SetNotLocalPlayer(); - playerController.unetView.ClearClientOwner(); + playerController.UnetView.SetNotLocalPlayer(); + playerController.UnetView.ClearClientOwner(); } var playerController2 = new QSBPlayerController(playerGameObject, playerControllerId); conn.SetPlayerController(playerController2); - networkIdentity.SetConnectionToClient(conn, playerController2.playerControllerId); + networkIdentity.SetConnectionToClient(conn, playerController2.PlayerControllerId); Debug.Log("NetworkServer ReplacePlayer setup local"); if (SetupLocalPlayerForConnection(conn, networkIdentity, playerController2)) { @@ -1283,7 +1282,7 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) })); } var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); - objectSpawnFinishedMessage.state = 0U; + objectSpawnFinishedMessage.State = 0U; conn.Send(12, objectSpawnFinishedMessage); foreach (var networkIdentity2 in objects.Values) { @@ -1313,7 +1312,7 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) } } } - objectSpawnFinishedMessage.state = 1U; + objectSpawnFinishedMessage.State = 1U; conn.Send(12, objectSpawnFinishedMessage); } } @@ -1331,7 +1330,7 @@ internal static void HideForConnection(QSBNetworkIdentity uv, QSBNetworkConnecti { conn.Send(13, new QSBObjectDestroyMessage { - netId = uv.NetId + NetId = uv.NetId }); } @@ -1371,31 +1370,31 @@ private static void OnClientReadyMessage(QSBNetworkMessage netMsg) { if (LogFilter.logDebug) { - Debug.Log("Default handler for ready message from " + netMsg.conn); + Debug.Log("Default handler for ready message from " + netMsg.Connection); } - SetClientReady(netMsg.conn); + SetClientReady(netMsg.Connection); } private static void OnRemovePlayerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_RemovePlayerMessage); QSBPlayerController playerController = null; - netMsg.conn.GetPlayerController(s_RemovePlayerMessage.playerControllerId, out playerController); + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out playerController); if (playerController != null) { - netMsg.conn.RemovePlayerController(s_RemovePlayerMessage.playerControllerId); - Destroy(playerController.gameObject); + netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); + Destroy(playerController.Gameobject); } else if (LogFilter.logError) { - Debug.LogError("Received remove player message but could not find the player ID: " + s_RemovePlayerMessage.playerControllerId); + Debug.LogError("Received remove player message but could not find the player ID: " + s_RemovePlayerMessage.PlayerControllerId); } } private static void OnCommandMessage(QSBNetworkMessage netMsg) { - var cmdHash = (int)netMsg.reader.ReadPackedUInt32(); - var networkInstanceId = netMsg.reader.ReadNetworkId(); + var cmdHash = (int)netMsg.Reader.ReadPackedUInt32(); + var networkInstanceId = netMsg.Reader.ReadNetworkId(); var gameObject = FindLocalObject(networkInstanceId); if (gameObject == null) { @@ -1417,10 +1416,10 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) else { var flag = false; - for (var i = 0; i < netMsg.conn.PlayerControllers.Count; i++) + for (var i = 0; i < netMsg.Connection.PlayerControllers.Count; i++) { - var playerController = netMsg.conn.PlayerControllers[i]; - if (playerController.gameObject != null && playerController.gameObject.GetComponent().NetId == component.NetId) + var playerController = netMsg.Connection.PlayerControllers[i]; + if (playerController.Gameobject != null && playerController.Gameobject.GetComponent().NetId == component.NetId) { flag = true; break; @@ -1428,7 +1427,7 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) } if (!flag) { - if (component.ClientAuthorityOwner != netMsg.conn) + if (component.ClientAuthorityOwner != netMsg.Connection) { if (LogFilter.logWarn) { @@ -1442,9 +1441,9 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) "OnCommandMessage for netId=", networkInstanceId, " conn=", - netMsg.conn + netMsg.Connection })); - component.HandleCommand(cmdHash, netMsg.reader); + component.HandleCommand(cmdHash, netMsg.Reader); } } } @@ -1488,15 +1487,15 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) if (uv.SceneId.IsEmpty()) { var objectSpawnMessage = new QSBObjectSpawnMessage(); - objectSpawnMessage.netId = uv.NetId; + objectSpawnMessage.NetId = uv.NetId; objectSpawnMessage.assetId = uv.AssetId; - objectSpawnMessage.position = uv.transform.position; - objectSpawnMessage.rotation = uv.transform.rotation; + objectSpawnMessage.Position = uv.transform.position; + objectSpawnMessage.Rotation = uv.transform.rotation; var networkWriter = new NetworkWriter(); uv.UNetSerializeAllVars(networkWriter); if (networkWriter.Position > 0) { - objectSpawnMessage.payload = networkWriter.ToArray(); + objectSpawnMessage.Payload = networkWriter.ToArray(); } if (conn != null) { @@ -1510,14 +1509,14 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) else { var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); - objectSpawnSceneMessage.netId = uv.NetId; - objectSpawnSceneMessage.sceneId = uv.SceneId; - objectSpawnSceneMessage.position = uv.transform.position; + objectSpawnSceneMessage.NetId = uv.NetId; + objectSpawnSceneMessage.SceneId = uv.SceneId; + objectSpawnSceneMessage.Position = uv.transform.position; var networkWriter2 = new NetworkWriter(); uv.UNetSerializeAllVars(networkWriter2); if (networkWriter2.Position > 0) { - objectSpawnSceneMessage.payload = networkWriter2.ToArray(); + objectSpawnSceneMessage.Payload = networkWriter2.ToArray(); } if (conn != null) { @@ -1559,11 +1558,11 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) var playerController = conn.PlayerControllers[i]; if (playerController.IsValid) { - if (!(playerController.unetView == null)) + if (!(playerController.UnetView == null)) { - DestroyObject(playerController.unetView, true); + DestroyObject(playerController.UnetView, true); } - playerController.gameObject = null; + playerController.Gameobject = null; } } conn.PlayerControllers.Clear(); @@ -1616,13 +1615,13 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec uv.ClientAuthorityOwner.RemoveOwnedObject(uv); } var objectDestroyMessage = new QSBObjectDestroyMessage(); - objectDestroyMessage.netId = uv.NetId; + objectDestroyMessage.NetId = uv.NetId; SendToObservers(uv.gameObject, 1, objectDestroyMessage); uv.ClearObservers(); if (QSBNetworkClient.active && instance.m_LocalClientActive) { uv.OnNetworkDestroy(); - QSBClientScene.SetLocalObject(objectDestroyMessage.netId, null); + QSBClientScene.SetLocalObject(objectDestroyMessage.NetId, null); } if (destroyServerObject) { diff --git a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs index ff2c29954..d873d1cac 100644 --- a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs +++ b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs @@ -4,16 +4,16 @@ namespace QSB.QuantumUNET { internal class QSBObjectDestroyMessage : MessageBase { + public NetworkInstanceId NetId; + public override void Deserialize(NetworkReader reader) { - netId = reader.ReadNetworkId(); + NetId = reader.ReadNetworkId(); } public override void Serialize(NetworkWriter writer) { - writer.Write(netId); + writer.Write(NetId); } - - public NetworkInstanceId netId; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs index c6b7d5c1b..adc1789fa 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -4,16 +4,16 @@ namespace QSB.QuantumUNET { internal class QSBObjectSpawnFinishedMessage : MessageBase { + public uint State; + public override void Deserialize(NetworkReader reader) { - state = reader.ReadPackedUInt32(); + State = reader.ReadPackedUInt32(); } public override void Serialize(NetworkWriter writer) { - writer.WritePackedUInt32(state); + writer.WritePackedUInt32(State); } - - public uint state; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs index 4f00510b0..18bed6cb2 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs @@ -5,36 +5,31 @@ namespace QSB.QuantumUNET { internal class QSBObjectSpawnMessage : MessageBase { + public NetworkInstanceId NetId; + public NetworkHash128 assetId; + public Vector3 Position; + public byte[] Payload; + public Quaternion Rotation; + public override void Deserialize(NetworkReader reader) { - netId = reader.ReadNetworkId(); + NetId = reader.ReadNetworkId(); assetId = reader.ReadNetworkHash128(); - position = reader.ReadVector3(); - payload = reader.ReadBytesAndSize(); - uint num = 16U; - if ((long)reader.Length - (long)((ulong)reader.Position) >= (long)((ulong)num)) + Position = reader.ReadVector3(); + Payload = reader.ReadBytesAndSize(); + if (reader.Length - reader.Position >= 16U) { - rotation = reader.ReadQuaternion(); + Rotation = reader.ReadQuaternion(); } } public override void Serialize(NetworkWriter writer) { - writer.Write(netId); + writer.Write(NetId); writer.Write(assetId); - writer.Write(position); - writer.WriteBytesFull(payload); - writer.Write(rotation); + writer.Write(Position); + writer.WriteBytesFull(Payload); + writer.Write(Rotation); } - - public NetworkInstanceId netId; - - public NetworkHash128 assetId; - - public Vector3 position; - - public byte[] payload; - - public Quaternion rotation; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs index 0232fc06a..582e75fe3 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs @@ -5,28 +5,25 @@ namespace QSB.QuantumUNET { internal class QSBObjectSpawnSceneMessage : MessageBase { + public NetworkInstanceId NetId; + public NetworkSceneId SceneId; + public Vector3 Position; + public byte[] Payload; + public override void Deserialize(NetworkReader reader) { - this.netId = reader.ReadNetworkId(); - this.sceneId = reader.ReadSceneId(); - this.position = reader.ReadVector3(); - this.payload = reader.ReadBytesAndSize(); + NetId = reader.ReadNetworkId(); + SceneId = reader.ReadSceneId(); + Position = reader.ReadVector3(); + Payload = reader.ReadBytesAndSize(); } public override void Serialize(NetworkWriter writer) { - writer.Write(this.netId); - writer.Write(this.sceneId); - writer.Write(this.position); - writer.WriteBytesFull(this.payload); + writer.Write(NetId); + writer.Write(SceneId); + writer.Write(Position); + writer.WriteBytesFull(Payload); } - - public NetworkInstanceId netId; - - public NetworkSceneId sceneId; - - public Vector3 position; - - public byte[] payload; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBOwnerMessage.cs b/QSB/QuantumUNET/QSBOwnerMessage.cs index d397cc22b..8b5053713 100644 --- a/QSB/QuantumUNET/QSBOwnerMessage.cs +++ b/QSB/QuantumUNET/QSBOwnerMessage.cs @@ -4,20 +4,19 @@ namespace QSB.QuantumUNET { internal class QSBOwnerMessage : MessageBase { + public NetworkInstanceId NetId; + public short PlayerControllerId; + public override void Deserialize(NetworkReader reader) { - netId = reader.ReadNetworkId(); - playerControllerId = (short)reader.ReadPackedUInt32(); + NetId = reader.ReadNetworkId(); + PlayerControllerId = (short)reader.ReadPackedUInt32(); } public override void Serialize(NetworkWriter writer) { - writer.Write(netId); - writer.WritePackedUInt32((uint)playerControllerId); + writer.Write(NetId); + writer.WritePackedUInt32((uint)PlayerControllerId); } - - public NetworkInstanceId netId; - - public short playerControllerId; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBPlayerController.cs b/QSB/QuantumUNET/QSBPlayerController.cs index 322a07ee1..617a0667d 100644 --- a/QSB/QuantumUNET/QSBPlayerController.cs +++ b/QSB/QuantumUNET/QSBPlayerController.cs @@ -4,37 +4,34 @@ namespace QSB.QuantumUNET { public class QSBPlayerController { + public short PlayerControllerId = -1; + public QSBNetworkIdentity UnetView; + public GameObject Gameobject; + public const int MaxPlayersPerClient = 32; + + internal const short kMaxLocalPlayers = 8; + public QSBPlayerController() { } internal QSBPlayerController(GameObject go, short playerControllerId) { - gameObject = go; - unetView = go.GetComponent(); - this.playerControllerId = playerControllerId; + Gameobject = go; + UnetView = go.GetComponent(); + PlayerControllerId = playerControllerId; } - public bool IsValid => playerControllerId != -1; + public bool IsValid => PlayerControllerId != -1; public override string ToString() { return string.Format("ID={0} NetworkIdentity NetID={1} Player={2}", new object[] { - playerControllerId, - (!(unetView != null)) ? "null" : unetView.NetId.ToString(), - (!(gameObject != null)) ? "null" : gameObject.name + PlayerControllerId, + (UnetView == null) ? "null" : UnetView.NetId.ToString(), + (Gameobject == null) ? "null" : Gameobject.name }); } - - internal const short kMaxLocalPlayers = 8; - - public short playerControllerId = -1; - - public QSBNetworkIdentity unetView; - - public GameObject gameObject; - - public const int MaxPlayersPerClient = 32; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs index 5f6c695db..46b74f65b 100644 --- a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs @@ -4,16 +4,16 @@ namespace QSB.QuantumUNET { public class QSBRemovePlayerMessage : MessageBase { + public short PlayerControllerId; + public override void Deserialize(NetworkReader reader) { - this.playerControllerId = (short)reader.ReadUInt16(); + PlayerControllerId = (short)reader.ReadUInt16(); } public override void Serialize(NetworkWriter writer) { - writer.Write((ushort)this.playerControllerId); + writer.Write((ushort)PlayerControllerId); } - - public short playerControllerId; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBUtility.cs b/QSB/QuantumUNET/QSBUtility.cs index 90f596aea..d50c3fb6f 100644 --- a/QSB/QuantumUNET/QSBUtility.cs +++ b/QSB/QuantumUNET/QSBUtility.cs @@ -7,57 +7,27 @@ namespace QSB.QuantumUNET { public class QSBUtility { - private QSBUtility() - { - } - - [Obsolete("This property is unused and should not be referenced in code.", true)] - public static bool useRandomSourceID - { - get - { - return false; - } - set - { - } - } + private static readonly Dictionary _dictTokens = new Dictionary(); - public static SourceID GetSourceID() - { - return (SourceID)((long)SystemInfo.deviceUniqueIdentifier.GetHashCode()); - } - - [Obsolete("This function is unused and should not be referenced in code. Please sign in and setup your project in the editor instead.", true)] - public static void SetAppID(AppID newAppID) - { - } - - [Obsolete("This function is unused and should not be referenced in code. Please sign in and setup your project in the editor instead.", true)] - public static AppID GetAppID() - { - return AppID.Invalid; - } + public static SourceID GetSourceID() + => (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) { - if (s_dictTokens.ContainsKey(netId)) + if (_dictTokens.ContainsKey(netId)) { - s_dictTokens.Remove(netId); + _dictTokens.Remove(netId); } - s_dictTokens.Add(netId, accessToken); + _dictTokens.Add(netId, accessToken); } public static NetworkAccessToken GetAccessTokenForNetwork(NetworkID netId) { - NetworkAccessToken result; - if (!s_dictTokens.TryGetValue(netId, out result)) + if (!_dictTokens.TryGetValue(netId, out var result)) { result = new NetworkAccessToken(); } return result; } - - private static Dictionary s_dictTokens = new Dictionary(); } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index d45203ef4..16c600906 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -58,7 +58,6 @@ protected override Transform InitRemoteTransform() private void SetSocket(Transform socket) { - DebugLog.DebugWrite($"Setting DisabledSocket for {AttachedNetId} to {socket.name}"); _disabledSocket = socket; } diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 98b3a0498..1d6f4600b 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -105,7 +105,6 @@ protected virtual void UpdateTransform() public void SetReferenceSector(QSBSector sector) { - DebugLog.DebugWrite($"Setting {Player.PlayerId}.{GetType().Name} to {sector.Name}", MessageType.Info); _positionSmoothVelocity = Vector3.zero; ReferenceSector = sector; if (!HasAuthority) diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs index 64b07a560..921ab957e 100644 --- a/QSB/Utility/UnetExtensions.cs +++ b/QSB/Utility/UnetExtensions.cs @@ -8,7 +8,7 @@ public static class UnetExtensions { public static PlayerInfo GetPlayer(this QSBNetworkConnection connection) { - var go = connection.PlayerControllers[0].gameObject; + var go = connection.PlayerControllers[0].Gameobject; var controller = go.GetComponent(); return QSBPlayerManager.GetPlayer(controller.NetId.Value); } From 33bc69fd0c10691fe02be14eed70afdffe2ff05b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 3 Dec 2020 13:18:45 +0000 Subject: [PATCH 111/207] add qsbnetworktransform --- QSB/QSB.csproj | 1 + QSB/QuantumUNET/QSBNetworkServer.cs | 2 +- QSB/QuantumUNET/QSBNetworkTransform.cs | 1230 ++++++++++++++++++++++++ 3 files changed, 1232 insertions(+), 1 deletion(-) create mode 100644 QSB/QuantumUNET/QSBNetworkTransform.cs diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 9f61a292f..f4bc7be4b 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -188,6 +188,7 @@ + diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index 56eaaa939..add029539 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -235,7 +235,7 @@ internal void RegisterMessageHandlers() { m_SimpleServerSimple.RegisterHandlerSafe((short)35, new QSBNetworkMessageDelegate(OnClientReadyMessage)); m_SimpleServerSimple.RegisterHandlerSafe((short)5, new QSBNetworkMessageDelegate(OnCommandMessage)); - //m_SimpleServerSimple.RegisterHandlerSafe((short)6, new QSBNetworkMessageDelegate(NetworkTransform.HandleTransform)); + m_SimpleServerSimple.RegisterHandlerSafe((short)6, new QSBNetworkMessageDelegate(QSBNetworkTransform.HandleTransform)); //m_SimpleServerSimple.RegisterHandlerSafe((short)16, new QSBNetworkMessageDelegate(NetworkTransformChild.HandleChildTransform)); m_SimpleServerSimple.RegisterHandlerSafe((short)38, new QSBNetworkMessageDelegate(OnRemovePlayerMessage)); m_SimpleServerSimple.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); diff --git a/QSB/QuantumUNET/QSBNetworkTransform.cs b/QSB/QuantumUNET/QSBNetworkTransform.cs new file mode 100644 index 000000000..1c2dac6e7 --- /dev/null +++ b/QSB/QuantumUNET/QSBNetworkTransform.cs @@ -0,0 +1,1230 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBNetworkTransform : QSBNetworkBehaviour + { + public TransformSyncMode transformSyncMode + { + get + { + return this.m_TransformSyncMode; + } + set + { + this.m_TransformSyncMode = value; + } + } + + public float sendInterval + { + get + { + return this.m_SendInterval; + } + set + { + this.m_SendInterval = value; + } + } + + public AxisSyncMode syncRotationAxis + { + get + { + return this.m_SyncRotationAxis; + } + set + { + this.m_SyncRotationAxis = value; + } + } + + public CompressionSyncMode rotationSyncCompression + { + get + { + return this.m_RotationSyncCompression; + } + set + { + this.m_RotationSyncCompression = value; + } + } + + public bool syncSpin + { + get + { + return this.m_SyncSpin; + } + set + { + this.m_SyncSpin = value; + } + } + + public float movementTheshold + { + get + { + return this.m_MovementTheshold; + } + set + { + this.m_MovementTheshold = value; + } + } + + public float velocityThreshold + { + get + { + return this.m_VelocityThreshold; + } + set + { + this.m_VelocityThreshold = value; + } + } + + public float snapThreshold + { + get + { + return this.m_SnapThreshold; + } + set + { + this.m_SnapThreshold = value; + } + } + + public float interpolateRotation + { + get + { + return this.m_InterpolateRotation; + } + set + { + this.m_InterpolateRotation = value; + } + } + + public float interpolateMovement + { + get + { + return this.m_InterpolateMovement; + } + set + { + this.m_InterpolateMovement = value; + } + } + + public ClientMoveCallback3D clientMoveCallback3D + { + get + { + return this.m_ClientMoveCallback3D; + } + set + { + this.m_ClientMoveCallback3D = value; + } + } + + public ClientMoveCallback2D clientMoveCallback2D + { + get + { + return this.m_ClientMoveCallback2D; + } + set + { + this.m_ClientMoveCallback2D = value; + } + } + + public CharacterController characterContoller + { + get + { + return this.m_CharacterController; + } + } + + public Rigidbody rigidbody3D + { + get + { + return this.m_RigidBody3D; + } + } + + public float lastSyncTime + { + get + { + return this.m_LastClientSyncTime; + } + } + + public Vector3 targetSyncPosition + { + get + { + return this.m_TargetSyncPosition; + } + } + + public Vector3 targetSyncVelocity + { + get + { + return this.m_TargetSyncVelocity; + } + } + + public Quaternion targetSyncRotation3D + { + get + { + return this.m_TargetSyncRotation3D; + } + } + + public bool grounded + { + get + { + return this.m_Grounded; + } + set + { + this.m_Grounded = value; + } + } + + private void OnValidate() + { + if (this.m_TransformSyncMode < TransformSyncMode.SyncNone || this.m_TransformSyncMode > TransformSyncMode.SyncCharacterController) + { + this.m_TransformSyncMode = TransformSyncMode.SyncTransform; + } + if (this.m_SendInterval < 0f) + { + this.m_SendInterval = 0f; + } + if (this.m_SyncRotationAxis < AxisSyncMode.None || this.m_SyncRotationAxis > AxisSyncMode.AxisXYZ) + { + this.m_SyncRotationAxis = AxisSyncMode.None; + } + if (this.m_MovementTheshold < 0f) + { + this.m_MovementTheshold = 0f; + } + if (this.m_VelocityThreshold < 0f) + { + this.m_VelocityThreshold = 0f; + } + if (this.m_SnapThreshold < 0f) + { + this.m_SnapThreshold = 0.01f; + } + if (this.m_InterpolateRotation < 0f) + { + this.m_InterpolateRotation = 0.01f; + } + if (this.m_InterpolateMovement < 0f) + { + this.m_InterpolateMovement = 0.01f; + } + } + + private void Awake() + { + this.m_RigidBody3D = base.GetComponent(); + this.m_CharacterController = base.GetComponent(); + this.m_PrevPosition = base.transform.position; + this.m_PrevRotation = base.transform.rotation; + this.m_PrevVelocity = 0f; + if (base.LocalPlayerAuthority) + { + this.m_LocalTransformWriter = new NetworkWriter(); + } + } + + public override void OnStartServer() + { + this.m_LastClientSyncTime = 0f; + } + + public override bool OnSerialize(NetworkWriter writer, bool initialState) + { + if (!initialState) + { + if (base.SyncVarDirtyBits == 0U) + { + writer.WritePackedUInt32(0U); + return false; + } + writer.WritePackedUInt32(1U); + } + switch (this.transformSyncMode) + { + case TransformSyncMode.SyncNone: + return false; + case TransformSyncMode.SyncTransform: + this.SerializeModeTransform(writer); + break; + case TransformSyncMode.SyncRigidbody3D: + this.SerializeMode3D(writer); + break; + case TransformSyncMode.SyncCharacterController: + this.SerializeModeCharacterController(writer); + break; + } + return true; + } + + private void SerializeModeTransform(NetworkWriter writer) + { + writer.Write(base.transform.position); + if (this.m_SyncRotationAxis != AxisSyncMode.None) + { + SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression); + } + this.m_PrevPosition = base.transform.position; + this.m_PrevRotation = base.transform.rotation; + this.m_PrevVelocity = 0f; + } + + private void VerifySerializeComponentExists() + { + bool flag = false; + Type type = null; + TransformSyncMode transformSyncMode = this.transformSyncMode; + if (transformSyncMode != TransformSyncMode.SyncCharacterController) + { + if (transformSyncMode == TransformSyncMode.SyncRigidbody3D) + { + if (!this.m_RigidBody3D && !(this.m_RigidBody3D = base.GetComponent())) + { + flag = true; + type = typeof(Rigidbody); + } + } + } + else if (!this.m_CharacterController && !(this.m_CharacterController = base.GetComponent())) + { + flag = true; + type = typeof(CharacterController); + } + if (flag && type != null) + { + throw new InvalidOperationException(string.Format("transformSyncMode set to {0} but no {1} component was found, did you call QSBNetworkServer.Spawn on a prefab?", this.transformSyncMode, type.Name)); + } + } + + private void SerializeMode3D(NetworkWriter writer) + { + this.VerifySerializeComponentExists(); + if (base.IsServer && this.m_LastClientSyncTime != 0f) + { + writer.Write(this.m_TargetSyncPosition); + SerializeVelocity3D(writer, this.m_TargetSyncVelocity, NetworkTransform.CompressionSyncMode.None); + if (this.syncRotationAxis != AxisSyncMode.None) + { + SerializeRotation3D(writer, this.m_TargetSyncRotation3D, this.syncRotationAxis, this.rotationSyncCompression); + } + } + else + { + writer.Write(this.m_RigidBody3D.position); + NetworkTransform.SerializeVelocity3D(writer, this.m_RigidBody3D.velocity, NetworkTransform.CompressionSyncMode.None); + if (this.syncRotationAxis != AxisSyncMode.None) + { + SerializeRotation3D(writer, this.m_RigidBody3D.rotation, this.syncRotationAxis, this.rotationSyncCompression); + } + } + if (this.m_SyncSpin) + { + SerializeSpin3D(writer, this.m_RigidBody3D.angularVelocity, this.syncRotationAxis, this.rotationSyncCompression); + } + this.m_PrevPosition = this.m_RigidBody3D.position; + this.m_PrevRotation = base.transform.rotation; + this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude; + } + + private void SerializeModeCharacterController(NetworkWriter writer) + { + this.VerifySerializeComponentExists(); + if (base.IsServer && this.m_LastClientSyncTime != 0f) + { + writer.Write(this.m_TargetSyncPosition); + if (this.syncRotationAxis != AxisSyncMode.None) + { + SerializeRotation3D(writer, this.m_TargetSyncRotation3D, this.syncRotationAxis, this.rotationSyncCompression); + } + } + else + { + writer.Write(base.transform.position); + if (this.syncRotationAxis != AxisSyncMode.None) + { + SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression); + } + } + this.m_PrevPosition = base.transform.position; + this.m_PrevRotation = base.transform.rotation; + this.m_PrevVelocity = 0f; + } + + public override void OnDeserialize(NetworkReader reader, bool initialState) + { + if (!base.IsServer || !QSBNetworkServer.localClientActive) + { + if (!initialState) + { + if (reader.ReadPackedUInt32() == 0U) + { + return; + } + } + switch (this.transformSyncMode) + { + case TransformSyncMode.SyncNone: + return; + case TransformSyncMode.SyncTransform: + this.UnserializeModeTransform(reader, initialState); + break; + case TransformSyncMode.SyncRigidbody3D: + this.UnserializeMode3D(reader, initialState); + break; + case TransformSyncMode.SyncCharacterController: + this.UnserializeModeCharacterController(reader, initialState); + break; + } + this.m_LastClientSyncTime = Time.time; + } + } + + private void UnserializeModeTransform(NetworkReader reader, bool initialState) + { + if (base.HasAuthority) + { + reader.ReadVector3(); + if (this.syncRotationAxis != AxisSyncMode.None) + { + UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + } + else if (base.IsServer && this.m_ClientMoveCallback3D != null) + { + Vector3 position = reader.ReadVector3(); + Vector3 zero = Vector3.zero; + Quaternion rotation = Quaternion.identity; + if (this.syncRotationAxis != AxisSyncMode.None) + { + rotation = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + if (this.m_ClientMoveCallback3D(ref position, ref zero, ref rotation)) + { + base.transform.position = position; + if (this.syncRotationAxis != AxisSyncMode.None) + { + base.transform.rotation = rotation; + } + } + } + else + { + base.transform.position = reader.ReadVector3(); + if (this.syncRotationAxis != AxisSyncMode.None) + { + base.transform.rotation = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + } + } + + private void UnserializeMode3D(NetworkReader reader, bool initialState) + { + if (base.HasAuthority) + { + reader.ReadVector3(); + reader.ReadVector3(); + if (this.syncRotationAxis != AxisSyncMode.None) + { + UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + if (this.syncSpin) + { + UnserializeSpin3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + } + else + { + if (base.IsServer && this.m_ClientMoveCallback3D != null) + { + Vector3 targetSyncPosition = reader.ReadVector3(); + Vector3 targetSyncVelocity = reader.ReadVector3(); + Quaternion targetSyncRotation3D = Quaternion.identity; + if (this.syncRotationAxis != AxisSyncMode.None) + { + targetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + if (!this.m_ClientMoveCallback3D(ref targetSyncPosition, ref targetSyncVelocity, ref targetSyncRotation3D)) + { + return; + } + this.m_TargetSyncPosition = targetSyncPosition; + this.m_TargetSyncVelocity = targetSyncVelocity; + if (this.syncRotationAxis != AxisSyncMode.None) + { + this.m_TargetSyncRotation3D = targetSyncRotation3D; + } + } + else + { + this.m_TargetSyncPosition = reader.ReadVector3(); + this.m_TargetSyncVelocity = reader.ReadVector3(); + if (this.syncRotationAxis != AxisSyncMode.None) + { + this.m_TargetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + } + if (this.syncSpin) + { + this.m_TargetSyncAngularVelocity3D = UnserializeSpin3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + if (!(this.m_RigidBody3D == null)) + { + if (base.IsServer && !base.IsClient) + { + this.m_RigidBody3D.MovePosition(this.m_TargetSyncPosition); + this.m_RigidBody3D.MoveRotation(this.m_TargetSyncRotation3D); + this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity; + } + else if (this.GetNetworkSendInterval() == 0f) + { + this.m_RigidBody3D.MovePosition(this.m_TargetSyncPosition); + this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity; + if (this.syncRotationAxis != AxisSyncMode.None) + { + this.m_RigidBody3D.MoveRotation(this.m_TargetSyncRotation3D); + } + if (this.syncSpin) + { + this.m_RigidBody3D.angularVelocity = this.m_TargetSyncAngularVelocity3D; + } + } + else + { + float magnitude = (this.m_RigidBody3D.position - this.m_TargetSyncPosition).magnitude; + if (magnitude > this.snapThreshold) + { + this.m_RigidBody3D.position = this.m_TargetSyncPosition; + this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity; + } + if (this.interpolateRotation == 0f && this.syncRotationAxis != AxisSyncMode.None) + { + this.m_RigidBody3D.rotation = this.m_TargetSyncRotation3D; + if (this.syncSpin) + { + this.m_RigidBody3D.angularVelocity = this.m_TargetSyncAngularVelocity3D; + } + } + if (this.m_InterpolateMovement == 0f) + { + this.m_RigidBody3D.position = this.m_TargetSyncPosition; + } + if (initialState && this.syncRotationAxis != AxisSyncMode.None) + { + this.m_RigidBody3D.rotation = this.m_TargetSyncRotation3D; + } + } + } + } + } + + private void UnserializeModeCharacterController(NetworkReader reader, bool initialState) + { + if (base.HasAuthority) + { + reader.ReadVector3(); + if (this.syncRotationAxis != AxisSyncMode.None) + { + UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + } + else + { + if (base.IsServer && this.m_ClientMoveCallback3D != null) + { + Vector3 targetSyncPosition = reader.ReadVector3(); + Quaternion targetSyncRotation3D = Quaternion.identity; + if (this.syncRotationAxis != AxisSyncMode.None) + { + targetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + if (this.m_CharacterController == null) + { + return; + } + Vector3 velocity = this.m_CharacterController.velocity; + if (!this.m_ClientMoveCallback3D(ref targetSyncPosition, ref velocity, ref targetSyncRotation3D)) + { + return; + } + this.m_TargetSyncPosition = targetSyncPosition; + this.m_TargetSyncVelocity = velocity; + if (this.syncRotationAxis != AxisSyncMode.None) + { + this.m_TargetSyncRotation3D = targetSyncRotation3D; + } + } + else + { + this.m_TargetSyncPosition = reader.ReadVector3(); + if (this.syncRotationAxis != AxisSyncMode.None) + { + this.m_TargetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + } + } + if (!(this.m_CharacterController == null)) + { + Vector3 a = this.m_TargetSyncPosition - base.transform.position; + Vector3 a2 = a / this.GetNetworkSendInterval(); + this.m_FixedPosDiff = a2 * Time.fixedDeltaTime; + if (base.IsServer && !base.IsClient) + { + base.transform.position = this.m_TargetSyncPosition; + base.transform.rotation = this.m_TargetSyncRotation3D; + } + else if (this.GetNetworkSendInterval() == 0f) + { + base.transform.position = this.m_TargetSyncPosition; + if (this.syncRotationAxis != AxisSyncMode.None) + { + base.transform.rotation = this.m_TargetSyncRotation3D; + } + } + else + { + float magnitude = (base.transform.position - this.m_TargetSyncPosition).magnitude; + if (magnitude > this.snapThreshold) + { + base.transform.position = this.m_TargetSyncPosition; + } + if (this.interpolateRotation == 0f && this.syncRotationAxis != AxisSyncMode.None) + { + base.transform.rotation = this.m_TargetSyncRotation3D; + } + if (this.m_InterpolateMovement == 0f) + { + base.transform.position = this.m_TargetSyncPosition; + } + if (initialState && this.syncRotationAxis != AxisSyncMode.None) + { + base.transform.rotation = this.m_TargetSyncRotation3D; + } + } + } + } + } + + private void FixedUpdate() + { + if (base.IsServer) + { + this.FixedUpdateServer(); + } + if (base.IsClient) + { + this.FixedUpdateClient(); + } + } + + private void FixedUpdateServer() + { + if (base.SyncVarDirtyBits == 0U) + { + if (QSBNetworkServer.active) + { + if (base.IsServer) + { + if (this.GetNetworkSendInterval() != 0f) + { + float num = (base.transform.position - this.m_PrevPosition).magnitude; + if (num < this.movementTheshold) + { + num = Quaternion.Angle(this.m_PrevRotation, base.transform.rotation); + if (num < this.movementTheshold) + { + if (!this.CheckVelocityChanged()) + { + return; + } + } + } + base.SetDirtyBit(1U); + } + } + } + } + } + + private bool CheckVelocityChanged() + { + TransformSyncMode transformSyncMode = this.transformSyncMode; + bool result = (transformSyncMode == TransformSyncMode.SyncRigidbody3D && (this.m_RigidBody3D && this.m_VelocityThreshold > 0f) && Mathf.Abs(this.m_RigidBody3D.velocity.sqrMagnitude - this.m_PrevVelocity) >= this.m_VelocityThreshold); + return result; + } + + private void FixedUpdateClient() + { + if (this.m_LastClientSyncTime != 0f) + { + if (QSBNetworkServer.active || QSBNetworkClient.active) + { + if (base.IsServer || base.IsClient) + { + if (this.GetNetworkSendInterval() != 0f) + { + if (!base.HasAuthority) + { + switch (this.transformSyncMode) + { + case TransformSyncMode.SyncRigidbody3D: + this.InterpolateTransformMode3D(); + break; + case TransformSyncMode.SyncCharacterController: + this.InterpolateTransformModeCharacterController(); + break; + } + } + } + } + } + } + } + + private void InterpolateTransformMode3D() + { + if (this.m_InterpolateMovement != 0f) + { + Vector3 velocity = (this.m_TargetSyncPosition - this.m_RigidBody3D.position) * this.m_InterpolateMovement / this.GetNetworkSendInterval(); + this.m_RigidBody3D.velocity = velocity; + } + if (this.interpolateRotation != 0f) + { + this.m_RigidBody3D.MoveRotation(Quaternion.Slerp(this.m_RigidBody3D.rotation, this.m_TargetSyncRotation3D, Time.fixedDeltaTime * this.interpolateRotation)); + } + this.m_TargetSyncPosition += this.m_TargetSyncVelocity * Time.fixedDeltaTime * 0.1f; + } + + private void InterpolateTransformModeCharacterController() + { + if (!(this.m_FixedPosDiff == Vector3.zero) || !(this.m_TargetSyncRotation3D == base.transform.rotation)) + { + if (this.m_InterpolateMovement != 0f) + { + this.m_CharacterController.Move(this.m_FixedPosDiff * this.m_InterpolateMovement); + } + if (this.interpolateRotation != 0f) + { + base.transform.rotation = Quaternion.Slerp(base.transform.rotation, this.m_TargetSyncRotation3D, Time.fixedDeltaTime * this.interpolateRotation * 10f); + } + if (Time.time - this.m_LastClientSyncTime > this.GetNetworkSendInterval()) + { + this.m_FixedPosDiff = Vector3.zero; + Vector3 motion = this.m_TargetSyncPosition - base.transform.position; + this.m_CharacterController.Move(motion); + } + } + } + + private void Update() + { + if (base.HasAuthority) + { + if (base.LocalPlayerAuthority) + { + if (!QSBNetworkServer.active) + { + if (Time.time - this.m_LastClientSendTime > this.GetNetworkSendInterval()) + { + this.SendTransform(); + this.m_LastClientSendTime = Time.time; + } + } + } + } + } + + private bool HasMoved() + { + float num; + if (this.m_RigidBody3D != null) + { + num = (this.m_RigidBody3D.position - this.m_PrevPosition).magnitude; + } + else + { + num = (base.transform.position - this.m_PrevPosition).magnitude; + } + bool result; + if (num > 1E-05f) + { + result = true; + } + else + { + if (this.m_RigidBody3D != null) + { + num = Quaternion.Angle(this.m_RigidBody3D.rotation, this.m_PrevRotation); + } + else + { + num = Quaternion.Angle(base.transform.rotation, this.m_PrevRotation); + } + if (num > 1E-05f) + { + result = true; + } + else + { + if (this.m_RigidBody3D != null) + { + num = Mathf.Abs(this.m_RigidBody3D.velocity.sqrMagnitude - this.m_PrevVelocity); + } + result = (num > 1E-05f); + } + } + return result; + } + + [Client] + private void SendTransform() + { + if (this.HasMoved() && QSBClientScene.readyConnection != null) + { + this.m_LocalTransformWriter.StartMessage(6); + this.m_LocalTransformWriter.Write(base.NetId); + switch (this.transformSyncMode) + { + case TransformSyncMode.SyncNone: + return; + case TransformSyncMode.SyncTransform: + this.SerializeModeTransform(this.m_LocalTransformWriter); + break; + case TransformSyncMode.SyncRigidbody3D: + this.SerializeMode3D(this.m_LocalTransformWriter); + break; + case TransformSyncMode.SyncCharacterController: + this.SerializeModeCharacterController(this.m_LocalTransformWriter); + break; + } + if (this.m_RigidBody3D != null) + { + this.m_PrevPosition = this.m_RigidBody3D.position; + this.m_PrevRotation = this.m_RigidBody3D.rotation; + this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude; + } + else + { + this.m_PrevPosition = base.transform.position; + this.m_PrevRotation = base.transform.rotation; + } + this.m_LocalTransformWriter.FinishMessage(); + QSBClientScene.readyConnection.SendWriter(this.m_LocalTransformWriter, this.GetNetworkChannel()); + } + } + + public static void HandleTransform(QSBNetworkMessage netMsg) + { + NetworkInstanceId networkInstanceId = netMsg.Reader.ReadNetworkId(); + GameObject gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); + if (gameObject == null) + { + if (LogFilter.logError) + { + Debug.LogError("Received NetworkTransform data for GameObject that doesn't exist"); + } + } + else + { + QSBNetworkTransform component = gameObject.GetComponent(); + if (component == null) + { + if (LogFilter.logError) + { + Debug.LogError("HandleTransform null target"); + } + } + else if (!component.LocalPlayerAuthority) + { + if (LogFilter.logError) + { + Debug.LogError("HandleTransform no localPlayerAuthority"); + } + } + else if (netMsg.Connection.ClientOwnedObjects == null) + { + if (LogFilter.logError) + { + Debug.LogError("HandleTransform object not owned by connection"); + } + } + else if (netMsg.Connection.ClientOwnedObjects.Contains(networkInstanceId)) + { + switch (component.transformSyncMode) + { + case TransformSyncMode.SyncNone: + return; + case TransformSyncMode.SyncTransform: + component.UnserializeModeTransform(netMsg.Reader, false); + break; + case TransformSyncMode.SyncRigidbody3D: + component.UnserializeMode3D(netMsg.Reader, false); + break; + case TransformSyncMode.SyncCharacterController: + component.UnserializeModeCharacterController(netMsg.Reader, false); + break; + } + component.m_LastClientSyncTime = Time.time; + } + else if (LogFilter.logWarn) + { + Debug.LogWarning("HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + } + } + } + + private static void WriteAngle(NetworkWriter writer, float angle, CompressionSyncMode compression) + { + if (compression != CompressionSyncMode.None) + { + if (compression != CompressionSyncMode.Low) + { + if (compression == CompressionSyncMode.High) + { + writer.Write((short)angle); + } + } + else + { + writer.Write((short)angle); + } + } + else + { + writer.Write(angle); + } + } + + private static float ReadAngle(NetworkReader reader, CompressionSyncMode compression) + { + float result; + if (compression != CompressionSyncMode.None) + { + if (compression != CompressionSyncMode.Low) + { + if (compression != CompressionSyncMode.High) + { + result = 0f; + } + else + { + result = (float)reader.ReadInt16(); + } + } + else + { + result = (float)reader.ReadInt16(); + } + } + else + { + result = reader.ReadSingle(); + } + return result; + } + + public static void SerializeVelocity3D(NetworkWriter writer, Vector3 velocity, NetworkTransform.CompressionSyncMode compression) + { + writer.Write(velocity); + } + + public static void SerializeRotation3D(NetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) + { + switch (mode) + { + case AxisSyncMode.AxisX: + WriteAngle(writer, rot.eulerAngles.x, compression); + break; + case AxisSyncMode.AxisY: + WriteAngle(writer, rot.eulerAngles.y, compression); + break; + case AxisSyncMode.AxisZ: + WriteAngle(writer, rot.eulerAngles.z, compression); + break; + case AxisSyncMode.AxisXY: + WriteAngle(writer, rot.eulerAngles.x, compression); + WriteAngle(writer, rot.eulerAngles.y, compression); + break; + case AxisSyncMode.AxisXZ: + WriteAngle(writer, rot.eulerAngles.x, compression); + WriteAngle(writer, rot.eulerAngles.z, compression); + break; + case AxisSyncMode.AxisYZ: + WriteAngle(writer, rot.eulerAngles.y, compression); + WriteAngle(writer, rot.eulerAngles.z, compression); + break; + case AxisSyncMode.AxisXYZ: + WriteAngle(writer, rot.eulerAngles.x, compression); + WriteAngle(writer, rot.eulerAngles.y, compression); + WriteAngle(writer, rot.eulerAngles.z, compression); + break; + } + } + + public static void SerializeSpin3D(NetworkWriter writer, Vector3 angularVelocity, AxisSyncMode mode, CompressionSyncMode compression) + { + switch (mode) + { + case AxisSyncMode.AxisX: + WriteAngle(writer, angularVelocity.x, compression); + break; + case AxisSyncMode.AxisY: + WriteAngle(writer, angularVelocity.y, compression); + break; + case AxisSyncMode.AxisZ: + WriteAngle(writer, angularVelocity.z, compression); + break; + case AxisSyncMode.AxisXY: + WriteAngle(writer, angularVelocity.x, compression); + WriteAngle(writer, angularVelocity.y, compression); + break; + case AxisSyncMode.AxisXZ: + WriteAngle(writer, angularVelocity.x, compression); + WriteAngle(writer, angularVelocity.z, compression); + break; + case AxisSyncMode.AxisYZ: + WriteAngle(writer, angularVelocity.y, compression); + WriteAngle(writer, angularVelocity.z, compression); + break; + case AxisSyncMode.AxisXYZ: + WriteAngle(writer, angularVelocity.x, compression); + WriteAngle(writer, angularVelocity.y, compression); + WriteAngle(writer, angularVelocity.z, compression); + break; + } + } + + public static Vector3 UnserializeVelocity3D(NetworkReader reader, NetworkTransform.CompressionSyncMode compression) + { + return reader.ReadVector3(); + } + + public static Quaternion UnserializeRotation3D(NetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) + { + Quaternion identity = Quaternion.identity; + Vector3 zero = Vector3.zero; + switch (mode) + { + case AxisSyncMode.AxisX: + zero.Set(ReadAngle(reader, compression), 0f, 0f); + identity.eulerAngles = zero; + break; + case AxisSyncMode.AxisY: + zero.Set(0f, ReadAngle(reader, compression), 0f); + identity.eulerAngles = zero; + break; + case AxisSyncMode.AxisZ: + zero.Set(0f, 0f, ReadAngle(reader, compression)); + identity.eulerAngles = zero; + break; + case AxisSyncMode.AxisXY: + zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), 0f); + identity.eulerAngles = zero; + break; + case AxisSyncMode.AxisXZ: + zero.Set(ReadAngle(reader, compression), 0f, ReadAngle(reader, compression)); + identity.eulerAngles = zero; + break; + case AxisSyncMode.AxisYZ: + zero.Set(0f, ReadAngle(reader, compression), ReadAngle(reader, compression)); + identity.eulerAngles = zero; + break; + case AxisSyncMode.AxisXYZ: + zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), ReadAngle(reader, compression)); + identity.eulerAngles = zero; + break; + } + return identity; + } + + public static Vector3 UnserializeSpin3D(NetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) + { + Vector3 zero = Vector3.zero; + switch (mode) + { + case AxisSyncMode.AxisX: + zero.Set(ReadAngle(reader, compression), 0f, 0f); + break; + case AxisSyncMode.AxisY: + zero.Set(0f, ReadAngle(reader, compression), 0f); + break; + case AxisSyncMode.AxisZ: + zero.Set(0f, 0f, ReadAngle(reader, compression)); + break; + case AxisSyncMode.AxisXY: + zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), 0f); + break; + case AxisSyncMode.AxisXZ: + zero.Set(ReadAngle(reader, compression), 0f, ReadAngle(reader, compression)); + break; + case AxisSyncMode.AxisYZ: + zero.Set(0f, ReadAngle(reader, compression), ReadAngle(reader, compression)); + break; + case AxisSyncMode.AxisXYZ: + zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), ReadAngle(reader, compression)); + break; + } + return zero; + } + + public override int GetNetworkChannel() + { + return 1; + } + + public override float GetNetworkSendInterval() + { + return this.m_SendInterval; + } + + public override void OnStartAuthority() + { + this.m_LastClientSyncTime = 0f; + } + + [SerializeField] + private TransformSyncMode m_TransformSyncMode = TransformSyncMode.SyncNone; + + [SerializeField] + private float m_SendInterval = 0.1f; + + [SerializeField] + private AxisSyncMode m_SyncRotationAxis = AxisSyncMode.AxisXYZ; + + [SerializeField] + private CompressionSyncMode m_RotationSyncCompression = CompressionSyncMode.None; + + [SerializeField] + private bool m_SyncSpin; + + [SerializeField] + private float m_MovementTheshold = 0.001f; + + [SerializeField] + private float m_VelocityThreshold = 0.0001f; + + [SerializeField] + private float m_SnapThreshold = 5f; + + [SerializeField] + private float m_InterpolateRotation = 1f; + + [SerializeField] + private float m_InterpolateMovement = 1f; + + [SerializeField] + private ClientMoveCallback3D m_ClientMoveCallback3D; + + [SerializeField] + private ClientMoveCallback2D m_ClientMoveCallback2D; + + private Rigidbody m_RigidBody3D; + + private CharacterController m_CharacterController; + + private bool m_Grounded = true; + + private Vector3 m_TargetSyncPosition; + + private Vector3 m_TargetSyncVelocity; + + private Vector3 m_FixedPosDiff; + + private Quaternion m_TargetSyncRotation3D; + + private Vector3 m_TargetSyncAngularVelocity3D; + + private float m_TargetSyncRotation2D; + + private float m_TargetSyncAngularVelocity2D; + + private float m_LastClientSyncTime; + + private float m_LastClientSendTime; + + private Vector3 m_PrevPosition; + + private Quaternion m_PrevRotation; + + private float m_PrevRotation2D; + + private float m_PrevVelocity; + + private const float k_LocalMovementThreshold = 1E-05f; + + private const float k_LocalRotationThreshold = 1E-05f; + + private const float k_LocalVelocityThreshold = 1E-05f; + + private const float k_MoveAheadRatio = 0.1f; + + private NetworkWriter m_LocalTransformWriter; + + public enum TransformSyncMode + { + SyncNone, + SyncTransform, + SyncRigidbody3D, + SyncCharacterController + } + + public enum AxisSyncMode + { + None, + AxisX, + AxisY, + AxisZ, + AxisXY, + AxisXZ, + AxisYZ, + AxisXYZ + } + + public enum CompressionSyncMode + { + None, + Low, + High + } + + public delegate bool ClientMoveCallback3D(ref Vector3 position, ref Vector3 velocity, ref Quaternion rotation); + + public delegate bool ClientMoveCallback2D(ref Vector2 position, ref Vector2 velocity, ref float rotation); + } +} From b5ba81d7277f010dad1bdb8f1d6ce3960b2b700a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 09:23:27 +0000 Subject: [PATCH 112/207] add more stuff --- QSB/Animation/Events/QSBAnimationMessage.cs | 9 +- .../Events/QSBAnimationParametersMessage.cs | 9 +- .../Events/QSBAnimationTriggerMessage.cs | 9 +- QSB/Animation/QSBNetworkAnimator.cs | 24 +- .../Events/ConversationMessage.cs | 5 +- .../Events/ConversationStartEndMessage.cs | 5 +- QSB/MessagesCore/EnumMessage.cs | 5 +- QSB/MessagesCore/FloatMessage.cs | 5 +- QSB/MessagesCore/MessageHandler.cs | 3 +- QSB/MessagesCore/PlayerMessage.cs | 9 +- QSB/MessagesCore/ToggleMessage.cs | 7 +- QSB/Player/Events/PlayerJoinMessage.cs | 5 +- QSB/Player/Events/PlayerLeaveMessage.cs | 5 +- QSB/Player/Events/PlayerStateMessage.cs | 5 +- QSB/QSB.csproj | 17 + QSB/QSBNetworkManager.cs | 29 + QSB/QuantumUNET/QSBAddPlayerMessage.cs | 37 + QSB/QuantumUNET/QSBCRCMessage.cs | 6 +- QSB/QuantumUNET/QSBChannelBuffer.cs | 10 +- QSB/QuantumUNET/QSBClientAuthorityMessage.cs | 6 +- QSB/QuantumUNET/QSBClientScene.cs | 28 +- QSB/QuantumUNET/QSBEmptyMessage.cs | 19 + QSB/QuantumUNET/QSBErrorMessage.cs | 23 + QSB/QuantumUNET/QSBFloatConversion.cs | 32 + QSB/QuantumUNET/QSBLocalClient.cs | 8 +- QSB/QuantumUNET/QSBMessageBase.cs | 19 + QSB/QuantumUNET/QSBNetworkBehaviour.cs | 135 +-- QSB/QuantumUNET/QSBNetworkClient.cs | 18 +- QSB/QuantumUNET/QSBNetworkConnection.cs | 79 +- QSB/QuantumUNET/QSBNetworkIdentity.cs | 90 +- QSB/QuantumUNET/QSBNetworkManagerUNET.cs | 22 +- QSB/QuantumUNET/QSBNetworkMessage.cs | 6 +- QSB/QuantumUNET/QSBNetworkMigrationManager.cs | 50 +- QSB/QuantumUNET/QSBNetworkReader.cs | 568 +++++++++++ QSB/QuantumUNET/QSBNetworkServer.cs | 74 +- QSB/QuantumUNET/QSBNetworkServerSimple.cs | 8 +- QSB/QuantumUNET/QSBNetworkTransform.cs | 897 +++--------------- QSB/QuantumUNET/QSBNetworkWriter.cs | 541 +++++++++++ QSB/QuantumUNET/QSBNotReadyMessage.cs | 11 + QSB/QuantumUNET/QSBObjectDestroyMessage.cs | 6 +- .../QSBObjectSpawnFinishedMessage.cs | 6 +- QSB/QuantumUNET/QSBObjectSpawnMessage.cs | 6 +- QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs | 6 +- QSB/QuantumUNET/QSBOwnerMessage.cs | 6 +- QSB/QuantumUNET/QSBPeerAuthorityMessage.cs | 31 + QSB/QuantumUNET/QSBPeerInfoMessage.cs | 84 ++ QSB/QuantumUNET/QSBPeerInfoPlayer.cs | 15 + QSB/QuantumUNET/QSBPeerListMessage.cs | 38 + QSB/QuantumUNET/QSBReadyMessage.cs | 11 + QSB/QuantumUNET/QSBReconnectMessage.cs | 38 + QSB/QuantumUNET/QSBRemovePlayerMessage.cs | 6 +- QSB/QuantumUNET/QSBStringMessage.cs | 32 + QSB/QuantumUNET/QSBUIntDecimal.cs | 16 + QSB/QuantumUNET/QSBUIntFloat.cs | 18 + .../QSBULocalConnectionToClient.cs | 8 +- .../QSBULocalConnectionToServer.cs | 8 +- QSB/TimeSync/Events/ServerTimeMessage.cs | 5 +- .../Events/BoolWorldObjectMessage.cs | 7 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 5 +- 59 files changed, 2032 insertions(+), 1158 deletions(-) create mode 100644 QSB/QuantumUNET/QSBAddPlayerMessage.cs create mode 100644 QSB/QuantumUNET/QSBEmptyMessage.cs create mode 100644 QSB/QuantumUNET/QSBErrorMessage.cs create mode 100644 QSB/QuantumUNET/QSBFloatConversion.cs create mode 100644 QSB/QuantumUNET/QSBMessageBase.cs create mode 100644 QSB/QuantumUNET/QSBNetworkReader.cs create mode 100644 QSB/QuantumUNET/QSBNetworkWriter.cs create mode 100644 QSB/QuantumUNET/QSBNotReadyMessage.cs create mode 100644 QSB/QuantumUNET/QSBPeerAuthorityMessage.cs create mode 100644 QSB/QuantumUNET/QSBPeerInfoMessage.cs create mode 100644 QSB/QuantumUNET/QSBPeerInfoPlayer.cs create mode 100644 QSB/QuantumUNET/QSBPeerListMessage.cs create mode 100644 QSB/QuantumUNET/QSBReadyMessage.cs create mode 100644 QSB/QuantumUNET/QSBReconnectMessage.cs create mode 100644 QSB/QuantumUNET/QSBStringMessage.cs create mode 100644 QSB/QuantumUNET/QSBUIntDecimal.cs create mode 100644 QSB/QuantumUNET/QSBUIntFloat.cs diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QSB/Animation/Events/QSBAnimationMessage.cs index c4de82313..1f292673c 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QSB/Animation/Events/QSBAnimationMessage.cs @@ -1,15 +1,16 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.Animation.Events { - internal class QSBAnimationMessage : MessageBase + internal class QSBAnimationMessage : QSBMessageBase { public NetworkInstanceId netId; public int stateHash; public float normalizedTime; public byte[] parameters; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { netId = reader.ReadNetworkId(); stateHash = (int)reader.ReadPackedUInt32(); @@ -17,7 +18,7 @@ public override void Deserialize(NetworkReader reader) parameters = reader.ReadBytesAndSize(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); writer.WritePackedUInt32((uint)stateHash); diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QSB/Animation/Events/QSBAnimationParametersMessage.cs index 93a5694a9..08adf4ce7 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QSB/Animation/Events/QSBAnimationParametersMessage.cs @@ -1,19 +1,20 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.Animation.Events { - internal class QSBAnimationParametersMessage : MessageBase + internal class QSBAnimationParametersMessage : QSBMessageBase { public NetworkInstanceId netId; public byte[] parameters; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { netId = reader.ReadNetworkId(); parameters = reader.ReadBytesAndSize(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); if (parameters == null) diff --git a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs index ea2ad0585..8890207cb 100644 --- a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs +++ b/QSB/Animation/Events/QSBAnimationTriggerMessage.cs @@ -1,19 +1,20 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.Animation.Events { - internal class QSBAnimationTriggerMessage : MessageBase + internal class QSBAnimationTriggerMessage : QSBMessageBase { public NetworkInstanceId netId; public int hash; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { netId = reader.ReadNetworkId(); hash = (int)reader.ReadPackedUInt32(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); writer.WritePackedUInt32((uint)hash); diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index b09cb0c30..a6806160f 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -17,7 +17,7 @@ internal class QSBNetworkAnimator : QSBNetworkBehaviour private uint m_ParameterSendBits; private int m_AnimationHash; private int m_TransitionHash; - private NetworkWriter m_ParameterWriter; + private QSBNetworkWriter m_ParameterWriter; private float m_SendTimer; public Animator animator @@ -48,7 +48,7 @@ public bool GetParameterAutoSend(int index) public override void OnStartAuthority() { - m_ParameterWriter = new NetworkWriter(); + m_ParameterWriter = new QSBNetworkWriter(); } private void FixedUpdate() @@ -143,7 +143,7 @@ private void CheckSendRate() } } - internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) + internal void HandleAnimMsg(QSBAnimationMessage msg, QSBNetworkReader reader) { if (HasAuthority) { @@ -156,7 +156,7 @@ internal void HandleAnimMsg(QSBAnimationMessage msg, NetworkReader reader) ReadParameters(reader, false); } - internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, NetworkReader reader) + internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, QSBNetworkReader reader) { if (HasAuthority) { @@ -170,7 +170,7 @@ internal void HandleAnimTriggerMsg(int hash) m_Animator.SetTrigger(hash); } - private void WriteParameters(NetworkWriter writer, bool autoSend) + private void WriteParameters(QSBNetworkWriter writer, bool autoSend) { for (int index = 0; index < m_Animator.parameters.Length; ++index) { @@ -195,7 +195,7 @@ private void WriteParameters(NetworkWriter writer, bool autoSend) } } - private void ReadParameters(NetworkReader reader, bool autoSend) + private void ReadParameters(QSBNetworkReader reader, bool autoSend) { for (int index = 0; index < m_Animator.parameters.Length; ++index) { @@ -227,7 +227,7 @@ private void ReadParameters(NetworkReader reader, bool autoSend) } } - public override bool OnSerialize(NetworkWriter writer, bool forceAll) + public override bool OnSerialize(QSBNetworkWriter writer, bool forceAll) { if (!forceAll) { @@ -249,7 +249,7 @@ public override bool OnSerialize(NetworkWriter writer, bool forceAll) return true; } - public override void OnDeserialize(NetworkReader reader, bool initialState) + public override void OnDeserialize(QSBNetworkReader reader, bool initialState) { if (!initialState) { @@ -305,7 +305,7 @@ internal static void OnAnimationServerMessage(QSBNetworkMessage netMsg) return; } var component = localObject.GetComponent(); - var reader = new NetworkReader(AnimationMessage.parameters); + var reader = new QSBNetworkReader(AnimationMessage.parameters); component?.HandleAnimMsg(AnimationMessage, reader); QSBNetworkServer.SendToReady(localObject, 40, AnimationMessage); } @@ -319,7 +319,7 @@ internal static void OnAnimationParametersServerMessage(QSBNetworkMessage netMsg return; } var component = localObject.GetComponent(); - var reader = new NetworkReader(ParametersMessage.parameters); + var reader = new QSBNetworkReader(ParametersMessage.parameters); component?.HandleAnimParamsMsg(ParametersMessage, reader); QSBNetworkServer.SendToReady(localObject, 41, ParametersMessage); } @@ -346,7 +346,7 @@ internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) var component = localObject.GetComponent(); if (component == null) return; - var reader = new NetworkReader(AnimationMessage.parameters); + var reader = new QSBNetworkReader(AnimationMessage.parameters); component.HandleAnimMsg(AnimationMessage, reader); } @@ -359,7 +359,7 @@ internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg var component = localObject.GetComponent(); if (component == null) return; - var reader = new NetworkReader(ParametersMessage.parameters); + var reader = new QSBNetworkReader(ParametersMessage.parameters); component.HandleAnimParamsMsg(ParametersMessage, reader); } diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index e1dbcd7b6..87716606c 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.ConversationSync.Events @@ -9,7 +10,7 @@ public class ConversationMessage : PlayerMessage public int ObjectId { get; set; } public string Message { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); ObjectId = reader.ReadInt32(); @@ -17,7 +18,7 @@ public override void Deserialize(NetworkReader reader) Message = reader.ReadString(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(ObjectId); diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index fe80e9a00..b0b1d823c 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.ConversationSync.Events @@ -9,7 +10,7 @@ public class ConversationStartEndMessage : PlayerMessage public uint PlayerId { get; set; } public bool State { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); CharacterId = reader.ReadInt32(); @@ -17,7 +18,7 @@ public override void Deserialize(NetworkReader reader) State = reader.ReadBoolean(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(CharacterId); diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index d110adb5e..bcc7d9b35 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.MessagesCore @@ -7,13 +8,13 @@ public class EnumMessage : PlayerMessage { public T Value; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); Value = (T)(object)reader.ReadInt32(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write((int)(object)Value); diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/MessagesCore/FloatMessage.cs index 9cc74f21f..70b353344 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.MessagesCore @@ -7,13 +8,13 @@ public class FloatMessage : PlayerMessage { public float Value; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); Value = reader.ReadSingle(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(Value); diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 24a2e8644..c8726ccc9 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -9,7 +9,7 @@ namespace QSB.Messaging { // Extend this to create new message handlers. - public class MessageHandler where T : MessageBase, new() + public class MessageHandler where T : QSBMessageBase, new() { public event Action OnClientReceiveMessage; @@ -63,6 +63,7 @@ public void SendToServer(T message) private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) { var message = netMsg.ReadMessage(); + DebugLog.DebugWrite($"receive message {message.GetType()}"); OnClientReceiveMessage?.Invoke(message); } diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index f39073fb4..858ddc331 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -1,19 +1,20 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.Messaging { - public class PlayerMessage : MessageBase + public class PlayerMessage : QSBMessageBase { public uint FromId { get; set; } public uint AboutId { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { FromId = reader.ReadUInt32(); AboutId = reader.ReadUInt32(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(FromId); writer.Write(AboutId); diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs index 8e2f02926..895df45a2 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/MessagesCore/ToggleMessage.cs @@ -1,4 +1,5 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.Messaging { @@ -6,13 +7,13 @@ public class ToggleMessage : PlayerMessage { public bool ToggleValue { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); ToggleValue = reader.ReadBoolean(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(ToggleValue); diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index d313e050e..82257f9e2 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.Player.Events @@ -7,13 +8,13 @@ public class PlayerJoinMessage : PlayerMessage { public string PlayerName { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); PlayerName = reader.ReadString(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(PlayerName); diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs index d4c559aba..89e571a49 100644 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using System; using System.Linq; using UnityEngine.Networking; @@ -9,13 +10,13 @@ public class PlayerLeaveMessage : PlayerMessage { public uint[] NetIds { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index d966f3f67..7f784da0a 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.Player.Events @@ -11,7 +12,7 @@ public class PlayerStateMessage : PlayerMessage public Sector.Name SectorID { get; set; } public string SectorName { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); PlayerName = reader.ReadString(); @@ -21,7 +22,7 @@ public override void Deserialize(NetworkReader reader) SectorName = reader.ReadString(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(PlayerName); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index f4bc7be4b..8031489f3 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -132,9 +132,14 @@ + + + + + @@ -185,18 +190,30 @@ + + + + + + + + + + + + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 19dbee338..511e2a8ca 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -52,6 +52,12 @@ private void Awake() ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); + Destroy(playerPrefab.GetComponent()); + Destroy(playerPrefab.GetComponent()); + DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); + var transform = playerPrefab.AddComponent(); + transform.SendInterval = 0.1f; + transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); @@ -62,6 +68,12 @@ private void Awake() ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", _shipPrefab.GetComponent().assetId); ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); + Destroy(_shipPrefab.GetComponent()); + Destroy(_shipPrefab.GetComponent()); + DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); + transform = _shipPrefab.AddComponent(); + transform.SendInterval = 0.1f; + transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); @@ -70,6 +82,12 @@ private void Awake() ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", _cameraPrefab.GetComponent().assetId); ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); + Destroy(_cameraPrefab.GetComponent()); + Destroy(_cameraPrefab.GetComponent()); + DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); + transform = _cameraPrefab.AddComponent(); + transform.SendInterval = 0.1f; + transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); @@ -78,6 +96,12 @@ private void Awake() ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", _probePrefab.GetComponent().assetId); ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); + Destroy(_probePrefab.GetComponent()); + Destroy(_probePrefab.GetComponent()); + DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); + transform = _probePrefab.AddComponent(); + transform.SendInterval = 0.1f; + transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); @@ -86,6 +110,11 @@ private void Awake() ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", OrbPrefab.GetComponent().assetId); ident.SetValue("m_SceneId", OrbPrefab.GetComponent().sceneId); + Destroy(OrbPrefab.GetComponent()); + Destroy(OrbPrefab.GetComponent()); + transform = OrbPrefab.AddComponent(); + transform.SendInterval = 0.1f; + transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); diff --git a/QSB/QuantumUNET/QSBAddPlayerMessage.cs b/QSB/QuantumUNET/QSBAddPlayerMessage.cs new file mode 100644 index 000000000..a6b919b3f --- /dev/null +++ b/QSB/QuantumUNET/QSBAddPlayerMessage.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + class QSBAddPlayerMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.playerControllerId = (short)reader.ReadUInt16(); + this.msgData = reader.ReadBytesAndSize(); + if (this.msgData == null) + { + this.msgSize = 0; + } + else + { + this.msgSize = this.msgData.Length; + } + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write((ushort)this.playerControllerId); + writer.WriteBytesAndSize(this.msgData, this.msgSize); + } + + public short playerControllerId; + + public int msgSize; + + public byte[] msgData; + } +} diff --git a/QSB/QuantumUNET/QSBCRCMessage.cs b/QSB/QuantumUNET/QSBCRCMessage.cs index faa8913fb..02277a16b 100644 --- a/QSB/QuantumUNET/QSBCRCMessage.cs +++ b/QSB/QuantumUNET/QSBCRCMessage.cs @@ -2,11 +2,11 @@ namespace QSB.QuantumUNET { - internal class QSBCRCMessage : MessageBase + internal class QSBCRCMessage : QSBMessageBase { public QSBCRCMessageEntry[] scripts; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { var num = (int)reader.ReadUInt16(); scripts = new QSBCRCMessageEntry[num]; @@ -19,7 +19,7 @@ public override void Deserialize(NetworkReader reader) } } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write((ushort)scripts.Length); for (var i = 0; i < scripts.Length; i++) diff --git a/QSB/QuantumUNET/QSBChannelBuffer.cs b/QSB/QuantumUNET/QSBChannelBuffer.cs index f85231806..75221474a 100644 --- a/QSB/QuantumUNET/QSBChannelBuffer.cs +++ b/QSB/QuantumUNET/QSBChannelBuffer.cs @@ -32,8 +32,8 @@ internal class QSBChannelBuffer : IDisposable private static List _freePackets; internal static int _pendingPacketCount; private float _lastBufferedMessageCountTimer = Time.realtimeSinceStartup; - private static NetworkWriter _sendWriter = new NetworkWriter(); - private static NetworkWriter _fragmentWriter = new NetworkWriter(); + private static QSBNetworkWriter _sendWriter = new QSBNetworkWriter(); + private static QSBNetworkWriter _fragmentWriter = new QSBNetworkWriter(); private const int _packetHeaderReserveSize = 100; private bool _disposed; internal QSBNetBuffer _fragmentBuffer = new QSBNetBuffer(); @@ -174,13 +174,13 @@ public void CheckInternalBuffer() } } - public bool SendWriter(NetworkWriter writer) + public bool SendWriter(QSBNetworkWriter writer) { var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(writer, null); return SendBytes(arraySegment.Array, arraySegment.Count); } - public bool Send(short msgType, MessageBase msg) + public bool Send(short msgType, QSBMessageBase msg) { _sendWriter.StartMessage(msgType); msg.Serialize(_sendWriter); @@ -189,7 +189,7 @@ public bool Send(short msgType, MessageBase msg) return SendWriter(_sendWriter); } - internal bool HandleFragment(NetworkReader reader) + internal bool HandleFragment(QSBNetworkReader reader) { bool result; if (reader.ReadByte() == 0) diff --git a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs index f22187bec..779f19098 100644 --- a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs +++ b/QSB/QuantumUNET/QSBClientAuthorityMessage.cs @@ -2,18 +2,18 @@ namespace QSB.QuantumUNET { - internal class QSBClientAuthorityMessage : MessageBase + internal class QSBClientAuthorityMessage : QSBMessageBase { public NetworkInstanceId netId; public bool authority; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { netId = reader.ReadNetworkId(); authority = reader.ReadBoolean(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); writer.Write(authority); diff --git a/QSB/QuantumUNET/QSBClientScene.cs b/QSB/QuantumUNET/QSBClientScene.cs index a7a24c671..4eed6e954 100644 --- a/QSB/QuantumUNET/QSBClientScene.cs +++ b/QSB/QuantumUNET/QSBClientScene.cs @@ -11,7 +11,7 @@ public class QSBClientScene { private static bool HasMigrationPending() => reconnectId != -1; - public static void SetReconnectId(int newReconnectId, PeerInfoMessage[] peers) + public static void SetReconnectId(int newReconnectId, QSBPeerInfoMessage[] peers) { reconnectId = newReconnectId; s_Peers = peers; @@ -110,7 +110,7 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControllerId) => AddPlayer(readyConn, playerControllerId, null); - public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControllerId, MessageBase extraMessage) + public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControllerId, QSBMessageBase extraMessage) { bool result; if (playerControllerId < 0) @@ -188,13 +188,13 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl } if (!HasMigrationPending()) { - var addPlayerMessage = new AddPlayerMessage + var addPlayerMessage = new QSBAddPlayerMessage { playerControllerId = playerControllerId }; if (extraMessage != null) { - var networkWriter = new NetworkWriter(); + var networkWriter = new QSBNetworkWriter(); extraMessage.Serialize(networkWriter); addPlayerMessage.msgData = networkWriter.ToArray(); addPlayerMessage.msgSize = (int)networkWriter.Position; @@ -210,7 +210,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl return result; } - public static bool SendReconnectMessage(MessageBase extraMessage) + public static bool SendReconnectMessage(QSBMessageBase extraMessage) { bool result; if (!HasMigrationPending()) @@ -243,7 +243,7 @@ public static bool SendReconnectMessage(MessageBase extraMessage) { for (var j = 0; j < peerInfoMessage.playerIds.Length; j++) { - var reconnectMessage = new ReconnectMessage + var reconnectMessage = new QSBReconnectMessage { oldConnectionId = reconnectId, netId = peerInfoMessage.playerIds[j].netId, @@ -251,7 +251,7 @@ public static bool SendReconnectMessage(MessageBase extraMessage) }; if (extraMessage != null) { - var networkWriter = new NetworkWriter(); + var networkWriter = new QSBNetworkWriter(); extraMessage.Serialize(networkWriter); reconnectMessage.msgData = networkWriter.ToArray(); reconnectMessage.msgSize = (int)networkWriter.Position; @@ -284,9 +284,9 @@ public static bool RemovePlayer(short playerControllerId) bool result; if (readyConnection.GetPlayerController(playerControllerId, out var playerController)) { - var removePlayerMessage = new RemovePlayerMessage + var removePlayerMessage = new QSBRemovePlayerMessage { - playerControllerId = playerControllerId + PlayerControllerId = playerControllerId }; readyConnection.Send(38, removePlayerMessage); readyConnection.RemovePlayerController(playerControllerId); @@ -324,8 +324,9 @@ public static bool Ready(QSBNetworkConnection conn) } if (conn != null) { - var msg = new ReadyMessage(); + var msg = new QSBReadyMessage(); conn.Send(35, msg); + DebugLog.DebugWrite("SENDING READY"); ready = true; readyConnection = conn; readyConnection.isReady = true; @@ -484,7 +485,7 @@ private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, b uv.transform.position = position; if (payload != null && payload.Length > 0) { - var reader = new NetworkReader(payload); + var reader = new QSBNetworkReader(payload); uv.OnUpdateVars(reader, true); } if (!(newGameObject == null)) @@ -502,6 +503,7 @@ private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, b private static void OnObjectSpawn(QSBNetworkMessage netMsg) { + DebugLog.DebugWrite("OnObjectSpawn"); netMsg.ReadMessage(s_ObjectSpawnMessage); if (!s_ObjectSpawnMessage.assetId.IsValid()) { @@ -736,7 +738,7 @@ private static void OnLocalClientObjectSpawnScene(QSBNetworkMessage netMsg) private static void OnUpdateVarsMessage(QSBNetworkMessage netMsg) { var networkInstanceId = netMsg.Reader.ReadNetworkId(); - Debug.Log(string.Concat(new object[] + DebugLog.DebugWrite(string.Concat(new object[] { "ClientScene::OnUpdateVarsMessage ", networkInstanceId, @@ -921,7 +923,7 @@ private static void CheckForOwner(QSBNetworkIdentity uv) public const int ReconnectIdHost = 0; - private static PeerInfoMessage[] s_Peers; + private static QSBPeerInfoMessage[] s_Peers; private static List s_PendingOwnerIds = new List(); diff --git a/QSB/QuantumUNET/QSBEmptyMessage.cs b/QSB/QuantumUNET/QSBEmptyMessage.cs new file mode 100644 index 000000000..646f07ba1 --- /dev/null +++ b/QSB/QuantumUNET/QSBEmptyMessage.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBEmptyMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + } + + public override void Serialize(QSBNetworkWriter writer) + { + } + } +} diff --git a/QSB/QuantumUNET/QSBErrorMessage.cs b/QSB/QuantumUNET/QSBErrorMessage.cs new file mode 100644 index 000000000..387987adc --- /dev/null +++ b/QSB/QuantumUNET/QSBErrorMessage.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBErrorMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.errorCode = (int)reader.ReadUInt16(); + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write((ushort)this.errorCode); + } + + public int errorCode; + } +} diff --git a/QSB/QuantumUNET/QSBFloatConversion.cs b/QSB/QuantumUNET/QSBFloatConversion.cs new file mode 100644 index 000000000..81a8e02d0 --- /dev/null +++ b/QSB/QuantumUNET/QSBFloatConversion.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.QuantumUNET +{ + internal class QSBFloatConversion + { + public static float ToSingle(uint value) + { + QSBUIntFloat uintFloat = default(QSBUIntFloat); + uintFloat.intValue = value; + return uintFloat.floatValue; + } + + public static double ToDouble(ulong value) + { + QSBUIntFloat uintFloat = default(QSBUIntFloat); + uintFloat.longValue = value; + return uintFloat.doubleValue; + } + + public static decimal ToDecimal(ulong value1, ulong value2) + { + QSBUIntDecimal uintDecimal = default(QSBUIntDecimal); + uintDecimal.longValue1 = value1; + uintDecimal.longValue2 = value2; + return uintDecimal.decimalValue; + } + } +} diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs index 6be7a2abf..d0f56e751 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -83,7 +83,7 @@ private void PostInternalMessage(byte[] buffer, int channelId) private void PostInternalMessage(short msgType) { - var networkWriter = new NetworkWriter(); + var networkWriter = new QSBNetworkWriter(); networkWriter.StartMessage(msgType); networkWriter.FinishMessage(); PostInternalMessage(networkWriter.AsArray(), 0); @@ -100,7 +100,7 @@ private void ProcessInternalMessages() var t = internalMsgs[i]; if (s_InternalMessage.Reader == null) { - s_InternalMessage.Reader = new NetworkReader(t.buffer); + s_InternalMessage.Reader = new QSBNetworkReader(t.buffer); } else { @@ -124,9 +124,9 @@ private void ProcessInternalMessages() } } - internal void InvokeHandlerOnClient(short msgType, MessageBase msg, int channelId) + internal void InvokeHandlerOnClient(short msgType, QSBMessageBase msg, int channelId) { - var networkWriter = new NetworkWriter(); + var networkWriter = new QSBNetworkWriter(); networkWriter.StartMessage(msgType); msg.Serialize(networkWriter); networkWriter.FinishMessage(); diff --git a/QSB/QuantumUNET/QSBMessageBase.cs b/QSB/QuantumUNET/QSBMessageBase.cs new file mode 100644 index 000000000..5e52ed5f0 --- /dev/null +++ b/QSB/QuantumUNET/QSBMessageBase.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public abstract class QSBMessageBase + { + public virtual void Deserialize(QSBNetworkReader reader) + { + } + + public virtual void Serialize(QSBNetworkWriter writer) + { + } + } +} diff --git a/QSB/QuantumUNET/QSBNetworkBehaviour.cs b/QSB/QuantumUNET/QSBNetworkBehaviour.cs index 2cd056415..f650af6b8 100644 --- a/QSB/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QSB/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,4 +1,6 @@ -using System; +using OWML.Common; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Net.Sockets; using UnityEngine; @@ -45,7 +47,7 @@ private QSBNetworkIdentity MyView } } - protected void SendCommandInternal(NetworkWriter writer, int channelId, string cmdName) + protected void SendCommandInternal(QSBNetworkWriter writer, int channelId, string cmdName) { if (!IsLocalPlayer && !HasAuthority) { @@ -62,55 +64,49 @@ protected void SendCommandInternal(NetworkWriter writer, int channelId, string c } } - public virtual bool InvokeCommand(int cmdHash, NetworkReader reader) => InvokeCommandDelegate(cmdHash, reader); + public virtual bool InvokeCommand(int cmdHash, QSBNetworkReader reader) => InvokeCommandDelegate(cmdHash, reader); - protected void SendRPCInternal(NetworkWriter writer, int channelId, string rpcName) + protected void SendRPCInternal(QSBNetworkWriter writer, int channelId, string rpcName) { if (!IsServer) { if (LogFilter.logWarn) { Debug.LogWarning("ClientRpc call on un-spawned object"); + return; } } - else - { - writer.FinishMessage(); - QSBNetworkServer.SendWriterToReady(base.gameObject, writer, channelId); - } + writer.FinishMessage(); + QSBNetworkServer.SendWriterToReady(base.gameObject, writer, channelId); } - protected void SendTargetRPCInternal(NetworkConnection conn, NetworkWriter writer, int channelId, string rpcName) + protected void SendTargetRPCInternal(QSBNetworkConnection conn, QSBNetworkWriter writer, int channelId, string rpcName) { if (!IsServer) { Debug.LogWarning("TargetRpc call on un-spawned object"); + return; } - else - { - writer.FinishMessage(); - conn.SendWriter(writer, channelId); - } + writer.FinishMessage(); + conn.SendWriter(writer, channelId); } - public virtual bool InvokeRPC(int cmdHash, NetworkReader reader) => InvokeRpcDelegate(cmdHash, reader); + public virtual bool InvokeRPC(int cmdHash, QSBNetworkReader reader) => InvokeRpcDelegate(cmdHash, reader); - protected void SendEventInternal(NetworkWriter writer, int channelId, string eventName) + protected void SendEventInternal(QSBNetworkWriter writer, int channelId, string eventName) { if (!QSBNetworkServer.active) { - Debug.LogWarning("SendEvent no server?"); - } - else - { - writer.FinishMessage(); - QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); + DebugLog.ToConsole($"Error - Tried to send event {eventName} on channel {channelId} but QSBNetworkServer isn't active.", MessageType.Error); + return; } + writer.FinishMessage(); + QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); } - public virtual bool InvokeSyncEvent(int cmdHash, NetworkReader reader) => InvokeSyncEventDelegate(cmdHash, reader); + public virtual bool InvokeSyncEvent(int cmdHash, QSBNetworkReader reader) => InvokeSyncEventDelegate(cmdHash, reader); - public virtual bool InvokeSyncList(int cmdHash, NetworkReader reader) => InvokeSyncListDelegate(cmdHash, reader); + public virtual bool InvokeSyncList(int cmdHash, QSBNetworkReader reader) => InvokeSyncListDelegate(cmdHash, reader); protected static void RegisterCommandDelegate(Type invokeClass, int cmdHash, CmdDelegate func) { @@ -123,13 +119,6 @@ protected static void RegisterCommandDelegate(Type invokeClass, int cmdHash, Cmd invokeFunction = func }; s_CmdHandlerDelegates[cmdHash] = invoker; - Debug.Log(string.Concat(new object[] - { - "RegisterCommandDelegate hash:", - cmdHash, - " ", - func.GetMethodName() - })); } } @@ -144,13 +133,6 @@ protected static void RegisterRpcDelegate(Type invokeClass, int cmdHash, CmdDele invokeFunction = func }; s_CmdHandlerDelegates[cmdHash] = invoker; - Debug.Log(string.Concat(new object[] - { - "RegisterRpcDelegate hash:", - cmdHash, - " ", - func.GetMethodName() - })); } } @@ -165,13 +147,6 @@ protected static void RegisterEventDelegate(Type invokeClass, int cmdHash, CmdDe invokeFunction = func }; s_CmdHandlerDelegates[cmdHash] = invoker; - Debug.Log(string.Concat(new object[] - { - "RegisterEventDelegate hash:", - cmdHash, - " ", - func.GetMethodName() - })); } } @@ -186,13 +161,6 @@ protected static void RegisterSyncListDelegate(Type invokeClass, int cmdHash, Cm invokeFunction = func }; s_CmdHandlerDelegates[cmdHash] = invoker; - Debug.Log(string.Concat(new object[] - { - "RegisterSyncListDelegate hash:", - cmdHash, - " ", - func.GetMethodName() - })); } } @@ -278,7 +246,7 @@ internal static void DumpInvokers() internal bool ContainsCommandDelegate(int cmdHash) => s_CmdHandlerDelegates.ContainsKey(cmdHash); - internal bool InvokeCommandDelegate(int cmdHash, NetworkReader reader) + internal bool InvokeCommandDelegate(int cmdHash, QSBNetworkReader reader) { bool result; if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) @@ -308,7 +276,7 @@ internal bool InvokeCommandDelegate(int cmdHash, NetworkReader reader) return result; } - internal bool InvokeRpcDelegate(int cmdHash, NetworkReader reader) + internal bool InvokeRpcDelegate(int cmdHash, QSBNetworkReader reader) { bool result; if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) @@ -338,7 +306,7 @@ internal bool InvokeRpcDelegate(int cmdHash, NetworkReader reader) return result; } - internal bool InvokeSyncEventDelegate(int cmdHash, NetworkReader reader) + internal bool InvokeSyncEventDelegate(int cmdHash, QSBNetworkReader reader) { bool result; if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) @@ -361,7 +329,7 @@ internal bool InvokeSyncEventDelegate(int cmdHash, NetworkReader reader) return result; } - internal bool InvokeSyncListDelegate(int cmdHash, NetworkReader reader) + internal bool InvokeSyncListDelegate(int cmdHash, QSBNetworkReader reader) { bool result; if (!s_CmdHandlerDelegates.ContainsKey(cmdHash)) @@ -495,6 +463,7 @@ protected void SetSyncVar(T value, ref T fieldValue, uint dirtyBit) { flag = !value.Equals(fieldValue); } + if (flag) { Debug.Log(string.Concat(new object[] @@ -508,6 +477,7 @@ protected void SetSyncVar(T value, ref T fieldValue, uint dirtyBit) "->", value })); + SetDirtyBit(dirtyBit); fieldValue = value; } @@ -533,7 +503,7 @@ internal int GetDirtyChannel() return -1; } - public virtual bool OnSerialize(NetworkWriter writer, bool initialState) + public virtual bool OnSerialize(QSBNetworkWriter writer, bool initialState) { if (!initialState) { @@ -542,7 +512,7 @@ public virtual bool OnSerialize(NetworkWriter writer, bool initialState) return false; } - public virtual void OnDeserialize(NetworkReader reader, bool initialState) + public virtual void OnDeserialize(QSBNetworkReader reader, bool initialState) { if (!initialState) { @@ -550,44 +520,17 @@ public virtual void OnDeserialize(NetworkReader reader, bool initialState) } } - public virtual void PreStartClient() - { - } - - public virtual void OnNetworkDestroy() - { - } - - public virtual void OnStartServer() - { - } - - public virtual void OnStartClient() - { - } - - public virtual void OnStartLocalPlayer() - { - } - - public virtual void OnStartAuthority() - { - } - - public virtual void OnStopAuthority() - { - } - + public virtual void PreStartClient() { } + public virtual void OnNetworkDestroy() { } + public virtual void OnStartServer() { } + public virtual void OnStartClient() { } + public virtual void OnStartLocalPlayer() { } + public virtual void OnStartAuthority() { } + public virtual void OnStopAuthority() { } public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; - - public virtual void OnSetLocalVisibility(bool vis) - { - } - + public virtual void OnSetLocalVisibility(bool vis) { } public virtual bool OnCheckObserver(QSBNetworkConnection conn) => true; - public virtual int GetNetworkChannel() => 0; - public virtual float GetNetworkSendInterval() => 0.1f; private float m_LastSendTime; @@ -595,9 +538,9 @@ public virtual void OnSetLocalVisibility(bool vis) private static readonly Dictionary s_CmdHandlerDelegates = new Dictionary(); - public delegate void CmdDelegate(QSBNetworkBehaviour obj, NetworkReader reader); + public delegate void CmdDelegate(QSBNetworkBehaviour obj, QSBNetworkReader reader); - protected delegate void EventDelegate(List targets, NetworkReader reader); + protected delegate void EventDelegate(List targets, QSBNetworkReader reader); protected enum UNetInvokeType { diff --git a/QSB/QuantumUNET/QSBNetworkClient.cs b/QSB/QuantumUNET/QSBNetworkClient.cs index c364f244a..53699b44b 100644 --- a/QSB/QuantumUNET/QSBNetworkClient.cs +++ b/QSB/QuantumUNET/QSBNetworkClient.cs @@ -614,7 +614,7 @@ public virtual void Disconnect() } } - public bool Send(short msgType, MessageBase msg) + public bool Send(short msgType, QSBMessageBase msg) { bool result; if (m_Connection != null) @@ -643,7 +643,7 @@ public bool Send(short msgType, MessageBase msg) return result; } - public bool SendWriter(NetworkWriter writer, int channelId) + public bool SendWriter(QSBNetworkWriter writer, int channelId) { bool result; if (m_Connection != null) @@ -701,7 +701,7 @@ public bool SendBytes(byte[] data, int numBytes, int channelId) return result; } - public bool SendUnreliable(short msgType, MessageBase msg) + public bool SendUnreliable(short msgType, QSBMessageBase msg) { bool result; if (m_Connection != null) @@ -730,7 +730,7 @@ public bool SendUnreliable(short msgType, MessageBase msg) return result; } - public bool SendByChannel(short msgType, MessageBase msg, int channelId) + public bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) { bool result; if (m_Connection != null) @@ -835,7 +835,7 @@ internal virtual void Update() } if (networkEventType != NetworkEventType.Nothing) { - Debug.Log(string.Concat(new object[] + DebugLog.DebugWrite(string.Concat(new object[] { "Client event: host=", m_ClientId, @@ -968,12 +968,12 @@ private void GenerateError(int error) } if (handler != null) { - ErrorMessage errorMessage = new ErrorMessage(); + QSBErrorMessage errorMessage = new QSBErrorMessage(); errorMessage.errorCode = error; byte[] buffer = new byte[200]; - NetworkWriter writer = new NetworkWriter(buffer); + QSBNetworkWriter writer = new QSBNetworkWriter(buffer); errorMessage.Serialize(writer); - NetworkReader reader = new NetworkReader(buffer); + QSBNetworkReader reader = new QSBNetworkReader(buffer); handler(new QSBNetworkMessage { MsgType = 34, @@ -1057,11 +1057,13 @@ private void OnCRC(QSBNetworkMessage netMsg) public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) { + DebugLog.DebugWrite($"Register event id {msgType}"); m_MessageHandlers.RegisterHandler(msgType, handler); } public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { + DebugLog.DebugWrite($"Safe register event id {msgType}"); m_MessageHandlers.RegisterHandlerSafe(msgType, handler); } diff --git a/QSB/QuantumUNET/QSBNetworkConnection.cs b/QSB/QuantumUNET/QSBNetworkConnection.cs index 6eef5a4a4..eba1864d4 100644 --- a/QSB/QuantumUNET/QSBNetworkConnection.cs +++ b/QSB/QuantumUNET/QSBNetworkConnection.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Text; using UnityEngine; @@ -10,7 +11,7 @@ public class QSBNetworkConnection : IDisposable { public QSBNetworkConnection() { - m_Writer = new NetworkWriter(); + m_Writer = new QSBNetworkWriter(); } internal HashSet VisList { get; } = new HashSet(); @@ -27,7 +28,7 @@ public QSBNetworkConnection() public virtual void Initialize(string networkAddress, int networkHostId, int networkConnectionId, HostTopology hostTopology) { - m_Writer = new NetworkWriter(); + m_Writer = new QSBNetworkWriter(); address = networkAddress; hostId = networkHostId; connectionId = networkConnectionId; @@ -115,7 +116,7 @@ internal void SetHandlers(QSBNetworkMessageHandlers handlers) public bool InvokeHandlerNoData(short msgType) => InvokeHandler(msgType, null, 0); - public bool InvokeHandler(short msgType, NetworkReader reader, int channelId) + public bool InvokeHandler(short msgType, QSBNetworkReader reader, int channelId) { bool result; if (m_MessageHandlersDict.ContainsKey(msgType)) @@ -162,14 +163,14 @@ public bool InvokeHandler(QSBNetworkMessage netMsg) return result; } - internal void HandleFragment(NetworkReader reader, int channelId) + internal void HandleFragment(QSBNetworkReader reader, int channelId) { if (channelId >= 0 && channelId < m_Channels.Length) { var channelBuffer = m_Channels[channelId]; if (channelBuffer.HandleFragment(reader)) { - var networkReader = new NetworkReader(channelBuffer._fragmentBuffer.AsArraySegment().Array); + var networkReader = new QSBNetworkReader(channelBuffer._fragmentBuffer.AsArraySegment().Array); networkReader.ReadInt16(); var msgType = networkReader.ReadInt16(); InvokeHandler(msgType, networkReader, channelId); @@ -252,11 +253,11 @@ public void SetMaxDelay(float seconds) } } - public virtual bool Send(short msgType, MessageBase msg) => SendByChannel(msgType, msg, 0); + public virtual bool Send(short msgType, QSBMessageBase msg) => SendByChannel(msgType, msg, 0); - public virtual bool SendUnreliable(short msgType, MessageBase msg) => SendByChannel(msgType, msg, 1); + public virtual bool SendUnreliable(short msgType, QSBMessageBase msg) => SendByChannel(msgType, msg, 1); - public virtual bool SendByChannel(short msgType, MessageBase msg, int channelId) + public virtual bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) { m_Writer.StartMessage(msgType); msg.Serialize(m_Writer); @@ -273,7 +274,7 @@ public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) return CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); } - public virtual bool SendWriter(NetworkWriter writer, int channelId) + public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) { if (logNetworkMessages) { @@ -353,52 +354,48 @@ protected void HandleBytes(byte[] buffer, int receivedSize, int channelId) protected void HandleReader(NetworkReader reader, int receivedSize, int channelId) { - while ((ulong)reader.Position < (ulong)((long)receivedSize)) + DebugLog.DebugWrite($"handle reader size:{receivedSize}"); + while (reader.Position < receivedSize) { var num = reader.ReadUInt16(); var num2 = reader.ReadInt16(); var array = reader.ReadBytes((int)num); - var reader2 = new NetworkReader(array); - if (logNetworkMessages) + var reader2 = new QSBNetworkReader(array); + var stringBuilder = new StringBuilder(); + for (var i = 0; i < (int)num; i++) { - var stringBuilder = new StringBuilder(); - for (var i = 0; i < (int)num; i++) + stringBuilder.AppendFormat("{0:X2}", array[i]); + if (i > 150) { - stringBuilder.AppendFormat("{0:X2}", array[i]); - if (i > 150) - { - break; - } + break; } - Debug.Log(string.Concat(new object[] - { - "ConnectionRecv con:", - connectionId, - " bytes:", - num, - " msgId:", - num2, - " ", - stringBuilder - })); } + DebugLog.DebugWrite(string.Concat(new object[] + { + "ConnectionRecv con:", + connectionId, + " bytes:", + num, + " msgId:", + num2, + " ", + stringBuilder + })); QSBNetworkMessageDelegate networkMessageDelegate = null; if (m_MessageHandlersDict.ContainsKey(num2)) { networkMessageDelegate = m_MessageHandlersDict[num2]; + DebugLog.DebugWrite(networkMessageDelegate.GetMethodName()); } if (networkMessageDelegate == null) { - if (LogFilter.logError) + DebugLog.ToConsole(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { - "Unknown message ID ", - num2, - " connId:", - connectionId - })); - } + "Unknown message ID ", + num2, + " connId:", + connectionId + })); break; } m_NetMsg.MsgType = num2; @@ -501,7 +498,7 @@ internal void RemoveOwnedObject(QSBNetworkIdentity obj) private QSBChannelBuffer[] m_Channels; private readonly QSBNetworkMessage m_NetMsg = new QSBNetworkMessage(); - private NetworkWriter m_Writer; + private QSBNetworkWriter m_Writer; private Dictionary m_MessageHandlersDict; diff --git a/QSB/QuantumUNET/QSBNetworkIdentity.cs b/QSB/QuantumUNET/QSBNetworkIdentity.cs index a9e5998be..d4a3b7e37 100644 --- a/QSB/QuantumUNET/QSBNetworkIdentity.cs +++ b/QSB/QuantumUNET/QSBNetworkIdentity.cs @@ -1,4 +1,5 @@ -using QSB.Utility; +using OWML.Common; +using QSB.Utility; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -325,8 +326,9 @@ internal bool OnCheckObserver(QSBNetworkConnection conn) return true; } - internal void UNetSerializeAllVars(NetworkWriter writer) + internal void UNetSerializeAllVars(QSBNetworkWriter writer) { + DebugLog.DebugWrite($"Sync all vars (NetId:{NetId}, Gameobject:{gameObject.name})"); for (var i = 0; i < m_NetworkBehaviours.Length; i++) { var networkBehaviour = m_NetworkBehaviours[i]; @@ -383,7 +385,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh return result; } - internal void HandleSyncEvent(int cmdHash, NetworkReader reader) + internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) { if (base.gameObject == null) { @@ -429,7 +431,7 @@ internal void HandleSyncEvent(int cmdHash, NetworkReader reader) } } - internal void HandleSyncList(int cmdHash, NetworkReader reader) + internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) { if (base.gameObject == null) { @@ -475,7 +477,7 @@ internal void HandleSyncList(int cmdHash, NetworkReader reader) } } - internal void HandleCommand(int cmdHash, NetworkReader reader) + internal void HandleCommand(int cmdHash, QSBNetworkReader reader) { if (base.gameObject == null) { @@ -521,7 +523,7 @@ internal void HandleCommand(int cmdHash, NetworkReader reader) } } - internal void HandleRPC(int cmdHash, NetworkReader reader) + internal void HandleRPC(int cmdHash, QSBNetworkReader reader) { if (base.gameObject == null) { @@ -586,6 +588,7 @@ internal void UNetUpdate() { if ((num & (1U << j)) != 0U) { + DebugLog.DebugWrite("sending update vars message"); s_UpdateWriter.StartMessage(8); s_UpdateWriter.Write(NetId); var flag = false; @@ -621,6 +624,7 @@ internal void UNetUpdate() } if (flag) { + DebugLog.DebugWrite("FINISH MESSAGE"); s_UpdateWriter.FinishMessage(); QSBNetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); } @@ -633,7 +637,7 @@ internal void UNetUpdate() } } - internal void OnUpdateVars(NetworkReader reader, bool initialState) + internal void OnUpdateVars(QSBNetworkReader reader, bool initialState) { if (initialState && m_NetworkBehaviours == null) { @@ -854,81 +858,71 @@ public void RebuildObservers(bool initialize) public bool RemoveClientAuthority(QSBNetworkConnection conn) { - bool result; if (!IsServer) { - Debug.LogError("RemoveClientAuthority can only be call on the server for spawned objects."); - result = false; + DebugLog.ToConsole($"Warning - Cannot remove authority on client-side. (NetId:{NetId}, Gameobject:{gameObject.name})", MessageType.Warning); + return false; } else if (ConnectionToClient != null) { Debug.LogError("RemoveClientAuthority cannot remove authority for a player object"); - result = false; + return false; } else if (ClientAuthorityOwner == null) { Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has no clientAuthority owner."); - result = false; + return false; } else if (ClientAuthorityOwner != conn) { Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has different owner."); - result = false; + return false; } - else + ClientAuthorityOwner.RemoveOwnedObject(this); + ClientAuthorityOwner = null; + ForceAuthority(true); + conn.Send(15, new QSBClientAuthorityMessage { - ClientAuthorityOwner.RemoveOwnedObject(this); - ClientAuthorityOwner = null; - ForceAuthority(true); - conn.Send(15, new QSBClientAuthorityMessage - { - netId = NetId, - authority = false - }); - clientAuthorityCallback?.Invoke(conn, this, false); - result = true; - } - return result; + netId = NetId, + authority = false + }); + clientAuthorityCallback?.Invoke(conn, this, false); + return true; } public bool AssignClientAuthority(QSBNetworkConnection conn) { - bool result; if (!IsServer) { - Debug.LogError("AssignClientAuthority can only be call on the server for spawned objects."); - result = false; + DebugLog.ToConsole($"Warning - Cannot assign authority on client-side. (NetId:{NetId}, Gameobject:{gameObject.name})", MessageType.Warning); + return false; } else if (!LocalPlayerAuthority) { - Debug.LogError("AssignClientAuthority can only be used for NetworkIdentity component with LocalPlayerAuthority set."); - result = false; + DebugLog.ToConsole($"Warning - Cannot assign authority on object without LocalPlayerAuthority. (NetId:{NetId}, Gameobject:{gameObject.name})", MessageType.Warning); + return false; } else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) { Debug.LogError("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); - result = false; + return false; } else if (conn == null) { Debug.LogError("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); - result = false; + return false; } - else - { - ClientAuthorityOwner = conn; - ClientAuthorityOwner.AddOwnedObject(this); + ClientAuthorityOwner = conn; + ClientAuthorityOwner.AddOwnedObject(this); - ForceAuthority(false); - conn.Send(15, new QSBClientAuthorityMessage - { - netId = NetId, - authority = true - }); - clientAuthorityCallback?.Invoke(conn, this, true); - result = true; - } - return result; + ForceAuthority(false); + conn.Send(15, new QSBClientAuthorityMessage + { + netId = NetId, + authority = true + }); + clientAuthorityCallback?.Invoke(conn, this, true); + return true; } internal void MarkForReset() => m_Reset = true; @@ -981,7 +975,7 @@ internal static void UNetStaticUpdate() private static uint s_NextNetworkId = 1U; - private static readonly NetworkWriter s_UpdateWriter = new NetworkWriter(); + private static readonly QSBNetworkWriter s_UpdateWriter = new QSBNetworkWriter(); public static ClientAuthorityCallback clientAuthorityCallback; diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs index 6c6fec0e0..4d7831d54 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -902,7 +902,7 @@ public virtual void ServerChangeScene(string newSceneName) QSBNetworkServer.SetAllClientsNotReady(); networkSceneName = newSceneName; s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); - StringMessage msg = new StringMessage(networkSceneName); + QSBStringMessage msg = new QSBStringMessage(networkSceneName); QSBNetworkServer.SendToAll(39, msg); s_StartPositionIndex = 0; s_StartPositions.Clear(); @@ -1069,7 +1069,7 @@ internal void OnServerConnectInternal(QSBNetworkMessage netMsg) } if (networkSceneName != "" && networkSceneName != m_OfflineScene) { - StringMessage msg = new StringMessage(networkSceneName); + QSBStringMessage msg = new QSBStringMessage(networkSceneName); netMsg.Connection.Send(39, msg); } if (m_MigrationManager != null) @@ -1107,7 +1107,7 @@ internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); } - netMsg.ReadMessage(s_AddPlayerMessage); + netMsg.ReadMessage(s_AddPlayerMessage); if (s_AddPlayerMessage.msgSize != 0) { NetworkReader extraMessageReader = new NetworkReader(s_AddPlayerMessage.msgData); @@ -1129,11 +1129,11 @@ internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); } - netMsg.ReadMessage(s_RemovePlayerMessage); + netMsg.ReadMessage(s_RemovePlayerMessage); QSBPlayerController player; - netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.playerControllerId, out player); + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out player); OnServerRemovePlayer(netMsg.Connection, player); - netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.playerControllerId); + netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); if (m_MigrationManager != null) { m_MigrationManager.SendPeerInfo(); @@ -1146,7 +1146,7 @@ internal void OnServerErrorInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerErrorInternal"); } - netMsg.ReadMessage(s_ErrorMessage); + netMsg.ReadMessage(s_ErrorMessage); this.OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); } @@ -1209,7 +1209,7 @@ internal void OnClientErrorInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnClientErrorInternal"); } - netMsg.ReadMessage(s_ErrorMessage); + netMsg.ReadMessage(s_ErrorMessage); this.OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); } @@ -1697,11 +1697,11 @@ public virtual void OnSetMatchAttributes(bool success, string extendedInfo) public static QSBNetworkManagerUNET singleton; - private static AddPlayerMessage s_AddPlayerMessage = new AddPlayerMessage(); + private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); - private static RemovePlayerMessage s_RemovePlayerMessage = new RemovePlayerMessage(); + private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); - private static ErrorMessage s_ErrorMessage = new ErrorMessage(); + private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); private static AsyncOperation s_LoadingSceneAsync; diff --git a/QSB/QuantumUNET/QSBNetworkMessage.cs b/QSB/QuantumUNET/QSBNetworkMessage.cs index 93311b2cd..e4bf47d7f 100644 --- a/QSB/QuantumUNET/QSBNetworkMessage.cs +++ b/QSB/QuantumUNET/QSBNetworkMessage.cs @@ -8,17 +8,17 @@ public class QSBNetworkMessage public const int MaxMessageSize = 65535; public short MsgType; public QSBNetworkConnection Connection; - public NetworkReader Reader; + public QSBNetworkReader Reader; public int ChannelId; - public TMsg ReadMessage() where TMsg : MessageBase, new() + public TMsg ReadMessage() where TMsg : QSBMessageBase, new() { var result = Activator.CreateInstance(); result.Deserialize(Reader); return result; } - public void ReadMessage(TMsg msg) where TMsg : MessageBase + public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase { msg.Deserialize(Reader); } diff --git a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs index eed887c47..614e5672f 100644 --- a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs @@ -169,7 +169,7 @@ public string newHostAddress } } - public PeerInfoMessage[] peers + public QSBPeerInfoMessage[] peers { get { @@ -206,7 +206,7 @@ public void Reset(int reconnectId) internal void AssignAuthorityCallback(QSBNetworkConnection conn, QSBNetworkIdentity uv, bool authorityState) { - PeerAuthorityMessage peerAuthorityMessage = new PeerAuthorityMessage(); + QSBPeerAuthorityMessage peerAuthorityMessage = new QSBPeerAuthorityMessage(); peerAuthorityMessage.connectionId = conn.connectionId; peerAuthorityMessage.netId = uv.NetId; peerAuthorityMessage.authorityState = authorityState; @@ -241,12 +241,12 @@ public void DisablePlayerObjects() { for (int i = 0; i < this.m_Peers.Length; i++) { - PeerInfoMessage peerInfoMessage = this.m_Peers[i]; + QSBPeerInfoMessage peerInfoMessage = this.m_Peers[i]; if (peerInfoMessage.playerIds != null) { for (int j = 0; j < peerInfoMessage.playerIds.Length; j++) { - PeerInfoPlayer peerInfoPlayer = peerInfoMessage.playerIds[j]; + QSBPeerInfoPlayer peerInfoPlayer = peerInfoMessage.playerIds[j]; Debug.Log(string.Concat(new object[] { "DisablePlayerObjects disable player for ", @@ -282,14 +282,14 @@ public void SendPeerInfo() { if (this.m_HostMigration) { - PeerListMessage peerListMessage = new PeerListMessage(); - List list = new List(); + QSBPeerListMessage peerListMessage = new QSBPeerListMessage(); + List list = new List(); for (int i = 0; i < QSBNetworkServer.connections.Count; i++) { QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; if (networkConnection != null) { - PeerInfoMessage peerInfoMessage = new PeerInfoMessage(); + QSBPeerInfoMessage peerInfoMessage = new QSBPeerInfoMessage(); string address; int port; NetworkID networkID; @@ -309,13 +309,13 @@ public void SendPeerInfo() peerInfoMessage.address = address; peerInfoMessage.isHost = false; } - List list2 = new List(); + List list2 = new List(); for (int j = 0; j < networkConnection.PlayerControllers.Count; j++) { QSBPlayerController playerController = networkConnection.PlayerControllers[j]; if (playerController != null && playerController.UnetView != null) { - PeerInfoPlayer item; + QSBPeerInfoPlayer item; item.netId = playerController.UnetView.NetId; item.playerControllerId = playerController.UnetView.PlayerControllerId; list2.Add(item); @@ -331,7 +331,7 @@ public void SendPeerInfo() QSBNetworkIdentity component = gameObject.GetComponent(); if (component.PlayerControllerId == -1) { - PeerInfoPlayer item2; + QSBPeerInfoPlayer item2; item2.netId = netId; item2.playerControllerId = -1; list2.Add(item2); @@ -361,7 +361,7 @@ public void SendPeerInfo() private void OnPeerClientAuthority(QSBNetworkMessage netMsg) { - PeerAuthorityMessage peerAuthorityMessage = netMsg.ReadMessage(); + QSBPeerAuthorityMessage peerAuthorityMessage = netMsg.ReadMessage(); if (LogFilter.logDebug) { Debug.Log("OnPeerClientAuthority for netId:" + peerAuthorityMessage.netId); @@ -370,12 +370,12 @@ private void OnPeerClientAuthority(QSBNetworkMessage netMsg) { for (int i = 0; i < this.m_Peers.Length; i++) { - PeerInfoMessage peerInfoMessage = this.m_Peers[i]; + QSBPeerInfoMessage peerInfoMessage = this.m_Peers[i]; if (peerInfoMessage.connectionId == peerAuthorityMessage.connectionId) { if (peerInfoMessage.playerIds == null) { - peerInfoMessage.playerIds = new PeerInfoPlayer[0]; + peerInfoMessage.playerIds = new QSBPeerInfoPlayer[0]; } if (peerAuthorityMessage.authorityState) { @@ -386,10 +386,10 @@ private void OnPeerClientAuthority(QSBNetworkMessage netMsg) return; } } - PeerInfoPlayer item = default(PeerInfoPlayer); + QSBPeerInfoPlayer item = default(QSBPeerInfoPlayer); item.netId = peerAuthorityMessage.netId; item.playerControllerId = -1; - peerInfoMessage.playerIds = new List(peerInfoMessage.playerIds) + peerInfoMessage.playerIds = new List(peerInfoMessage.playerIds) { item }.ToArray(); @@ -400,7 +400,7 @@ private void OnPeerClientAuthority(QSBNetworkMessage netMsg) { if (peerInfoMessage.playerIds[k].netId == peerAuthorityMessage.netId) { - List list = new List(peerInfoMessage.playerIds); + List list = new List(peerInfoMessage.playerIds); list.RemoveAt(k); peerInfoMessage.playerIds = list.ToArray(); break; @@ -420,7 +420,7 @@ private void OnPeerInfo(QSBNetworkMessage netMsg) { Debug.Log("OnPeerInfo"); } - netMsg.ReadMessage(this.m_PeerListMessage); + netMsg.ReadMessage(this.m_PeerListMessage); this.m_Peers = this.m_PeerListMessage.peers; this.m_OldServerConnectionId = this.m_PeerListMessage.oldServerConnectionId; for (int i = 0; i < this.m_Peers.Length; i++) @@ -446,7 +446,7 @@ private void OnPeerInfo(QSBNetworkMessage netMsg) private void OnServerReconnectPlayerMessage(QSBNetworkMessage netMsg) { - ReconnectMessage reconnectMessage = netMsg.ReadMessage(); + QSBReconnectMessage reconnectMessage = netMsg.ReadMessage(); Debug.Log(string.Concat(new object[] { "OnReconnectMessage: connId=", @@ -762,7 +762,7 @@ protected virtual void OnServerReconnectObject(QSBNetworkConnection newConnectio this.ReconnectObjectForConnection(newConnection, oldObject, oldConnectionId); } - protected virtual void OnPeersUpdated(PeerListMessage peers) + protected virtual void OnPeersUpdated(QSBPeerListMessage peers) { Debug.Log("NetworkMigrationManager NumPeers " + peers.peers.Length); } @@ -780,7 +780,7 @@ protected virtual void OnAuthorityUpdated(GameObject go, int connectionId, bool })); } - public virtual bool FindNewHost(out PeerInfoMessage newHostInfo, out bool youAreNewHost) + public virtual bool FindNewHost(out QSBPeerInfoMessage newHostInfo, out bool youAreNewHost) { bool result; if (this.m_Peers == null) @@ -796,7 +796,7 @@ public virtual bool FindNewHost(out PeerInfoMessage newHostInfo, out bool youAre else { Debug.Log("NetworkMigrationManager FindLowestHost"); - newHostInfo = new PeerInfoMessage(); + newHostInfo = new QSBPeerInfoMessage(); newHostInfo.connectionId = 50000; newHostInfo.address = ""; newHostInfo.port = 0; @@ -810,7 +810,7 @@ public virtual bool FindNewHost(out PeerInfoMessage newHostInfo, out bool youAre { for (int i = 0; i < this.m_Peers.Length; i++) { - PeerInfoMessage peerInfoMessage = this.m_Peers[i]; + QSBPeerInfoMessage peerInfoMessage = this.m_Peers[i]; if (peerInfoMessage.connectionId != 0) { if (!peerInfoMessage.isHost) @@ -1036,11 +1036,11 @@ private void OnGUI() private string m_NewHostAddress; - private PeerInfoMessage m_NewHostInfo = new PeerInfoMessage(); + private QSBPeerInfoMessage m_NewHostInfo = new QSBPeerInfoMessage(); - private PeerListMessage m_PeerListMessage = new PeerListMessage(); + private QSBPeerListMessage m_PeerListMessage = new QSBPeerListMessage(); - private PeerInfoMessage[] m_Peers; + private QSBPeerInfoMessage[] m_Peers; private Dictionary m_PendingPlayers = new Dictionary(); diff --git a/QSB/QuantumUNET/QSBNetworkReader.cs b/QSB/QuantumUNET/QSBNetworkReader.cs new file mode 100644 index 000000000..a519c99ad --- /dev/null +++ b/QSB/QuantumUNET/QSBNetworkReader.cs @@ -0,0 +1,568 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBNetworkReader + { + public QSBNetworkReader() + { + this.m_buf = new QSBNetBuffer(); + QSBNetworkReader.Initialize(); + } + + public QSBNetworkReader(QSBNetworkWriter writer) + { + this.m_buf = new QSBNetBuffer(writer.AsArray()); + QSBNetworkReader.Initialize(); + } + + public QSBNetworkReader(byte[] buffer) + { + this.m_buf = new QSBNetBuffer(buffer); + QSBNetworkReader.Initialize(); + } + + private static void Initialize() + { + if (QSBNetworkReader.s_Encoding == null) + { + QSBNetworkReader.s_StringReaderBuffer = new byte[1024]; + QSBNetworkReader.s_Encoding = new UTF8Encoding(); + } + } + + public uint Position + { + get + { + return this.m_buf.Position; + } + } + + public int Length + { + get + { + return this.m_buf.Length; + } + } + + public void SeekZero() + { + this.m_buf.SeekZero(); + } + + internal void Replace(byte[] buffer) + { + this.m_buf.Replace(buffer); + } + + public uint ReadPackedUInt32() + { + byte b = this.ReadByte(); + uint result; + if (b < 241) + { + result = (uint)b; + } + else + { + byte b2 = this.ReadByte(); + if (b >= 241 && b <= 248) + { + result = 240U + 256U * (uint)(b - 241) + (uint)b2; + } + else + { + byte b3 = this.ReadByte(); + if (b == 249) + { + result = 2288U + 256U * (uint)b2 + (uint)b3; + } + else + { + byte b4 = this.ReadByte(); + if (b == 250) + { + result = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16)); + } + else + { + byte b5 = this.ReadByte(); + if (b < 251) + { + throw new IndexOutOfRangeException("ReadPackedUInt32() failure: " + b); + } + result = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16) + ((int)b5 << 24)); + } + } + } + } + return result; + } + + public ulong ReadPackedUInt64() + { + byte b = this.ReadByte(); + ulong result; + if (b < 241) + { + result = (ulong)b; + } + else + { + byte b2 = this.ReadByte(); + if (b >= 241 && b <= 248) + { + result = 240UL + 256UL * ((ulong)b - 241UL) + (ulong)b2; + } + else + { + byte b3 = this.ReadByte(); + if (b == 249) + { + result = 2288UL + 256UL * (ulong)b2 + (ulong)b3; + } + else + { + byte b4 = this.ReadByte(); + if (b == 250) + { + result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16); + } + else + { + byte b5 = this.ReadByte(); + if (b == 251) + { + result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24); + } + else + { + byte b6 = this.ReadByte(); + if (b == 252) + { + result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32); + } + else + { + byte b7 = this.ReadByte(); + if (b == 253) + { + result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40); + } + else + { + byte b8 = this.ReadByte(); + if (b == 254) + { + result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48); + } + else + { + byte b9 = this.ReadByte(); + if (b != 255) + { + throw new IndexOutOfRangeException("ReadPackedUInt64() failure: " + b); + } + result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48) + ((ulong)b9 << 56); + } + } + } + } + } + } + } + } + return result; + } + + public NetworkInstanceId ReadNetworkId() + { + return new NetworkInstanceId(this.ReadPackedUInt32()); + } + + public NetworkSceneId ReadSceneId() + { + return new NetworkSceneId(this.ReadPackedUInt32()); + } + + public byte ReadByte() + { + return this.m_buf.ReadByte(); + } + + public sbyte ReadSByte() + { + return (sbyte)this.m_buf.ReadByte(); + } + + public short ReadInt16() + { + ushort num = 0; + num |= (ushort)this.m_buf.ReadByte(); + num |= (ushort)(this.m_buf.ReadByte() << 8); + return (short)num; + } + + public ushort ReadUInt16() + { + return (ushort)((uint)(ushort)(0U | (uint)this.m_buf.ReadByte()) | (uint)(ushort)((uint)this.m_buf.ReadByte() << 8)); + } + + public int ReadInt32() + { + uint num = 0U; + num |= (uint)this.m_buf.ReadByte(); + num |= (uint)((uint)this.m_buf.ReadByte() << 8); + num |= (uint)((uint)this.m_buf.ReadByte() << 16); + return (int)(num | (uint)((uint)this.m_buf.ReadByte() << 24)); + } + + public uint ReadUInt32() + { + uint num = 0U; + num |= (uint)this.m_buf.ReadByte(); + num |= (uint)((uint)this.m_buf.ReadByte() << 8); + num |= (uint)((uint)this.m_buf.ReadByte() << 16); + return num | (uint)((uint)this.m_buf.ReadByte() << 24); + } + + public long ReadInt64() + { + ulong num = 0UL; + ulong num2 = (ulong)this.m_buf.ReadByte(); + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 8; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 16; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 24; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 32; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 40; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 48; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 56; + return (long)(num | num2); + } + + public ulong ReadUInt64() + { + ulong num = 0UL; + ulong num2 = (ulong)this.m_buf.ReadByte(); + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 8; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 16; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 24; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 32; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 40; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 48; + num |= num2; + num2 = (ulong)this.m_buf.ReadByte() << 56; + return num | num2; + } + + public decimal ReadDecimal() + { + return new decimal(new int[] + { + this.ReadInt32(), + this.ReadInt32(), + this.ReadInt32(), + this.ReadInt32() + }); + } + + public float ReadSingle() + { + uint value = this.ReadUInt32(); + return QSBFloatConversion.ToSingle(value); + } + + public double ReadDouble() + { + ulong value = this.ReadUInt64(); + return QSBFloatConversion.ToDouble(value); + } + + public string ReadString() + { + ushort num = this.ReadUInt16(); + string result; + if (num == 0) + { + result = ""; + } + else + { + if (num >= 32768) + { + throw new IndexOutOfRangeException("ReadString() too long: " + num); + } + while ((int)num > QSBNetworkReader.s_StringReaderBuffer.Length) + { + QSBNetworkReader.s_StringReaderBuffer = new byte[QSBNetworkReader.s_StringReaderBuffer.Length * 2]; + } + this.m_buf.ReadBytes(QSBNetworkReader.s_StringReaderBuffer, (uint)num); + char[] chars = QSBNetworkReader.s_Encoding.GetChars(QSBNetworkReader.s_StringReaderBuffer, 0, (int)num); + result = new string(chars); + } + return result; + } + + public char ReadChar() + { + return (char)this.m_buf.ReadByte(); + } + + public bool ReadBoolean() + { + int num = (int)this.m_buf.ReadByte(); + return num == 1; + } + + public byte[] ReadBytes(int count) + { + if (count < 0) + { + throw new IndexOutOfRangeException("NetworkReader ReadBytes " + count); + } + byte[] array = new byte[count]; + this.m_buf.ReadBytes(array, (uint)count); + return array; + } + + public byte[] ReadBytesAndSize() + { + ushort num = this.ReadUInt16(); + byte[] result; + if (num == 0) + { + result = new byte[0]; + } + else + { + result = this.ReadBytes((int)num); + } + return result; + } + + public Vector2 ReadVector2() + { + return new Vector2(this.ReadSingle(), this.ReadSingle()); + } + + public Vector3 ReadVector3() + { + return new Vector3(this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + } + + public Vector4 ReadVector4() + { + return new Vector4(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + } + + public Color ReadColor() + { + return new Color(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + } + + public Color32 ReadColor32() + { + return new Color32(this.ReadByte(), this.ReadByte(), this.ReadByte(), this.ReadByte()); + } + + public Quaternion ReadQuaternion() + { + return new Quaternion(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + } + + public Rect ReadRect() + { + return new Rect(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + } + + public Plane ReadPlane() + { + return new Plane(this.ReadVector3(), this.ReadSingle()); + } + + public Ray ReadRay() + { + return new Ray(this.ReadVector3(), this.ReadVector3()); + } + + public Matrix4x4 ReadMatrix4x4() + { + return new Matrix4x4 + { + m00 = this.ReadSingle(), + m01 = this.ReadSingle(), + m02 = this.ReadSingle(), + m03 = this.ReadSingle(), + m10 = this.ReadSingle(), + m11 = this.ReadSingle(), + m12 = this.ReadSingle(), + m13 = this.ReadSingle(), + m20 = this.ReadSingle(), + m21 = this.ReadSingle(), + m22 = this.ReadSingle(), + m23 = this.ReadSingle(), + m30 = this.ReadSingle(), + m31 = this.ReadSingle(), + m32 = this.ReadSingle(), + m33 = this.ReadSingle() + }; + } + + public NetworkHash128 ReadNetworkHash128() + { + NetworkHash128 result; + result.i0 = this.ReadByte(); + result.i1 = this.ReadByte(); + result.i2 = this.ReadByte(); + result.i3 = this.ReadByte(); + result.i4 = this.ReadByte(); + result.i5 = this.ReadByte(); + result.i6 = this.ReadByte(); + result.i7 = this.ReadByte(); + result.i8 = this.ReadByte(); + result.i9 = this.ReadByte(); + result.i10 = this.ReadByte(); + result.i11 = this.ReadByte(); + result.i12 = this.ReadByte(); + result.i13 = this.ReadByte(); + result.i14 = this.ReadByte(); + result.i15 = this.ReadByte(); + return result; + } + + public Transform ReadTransform() + { + NetworkInstanceId networkInstanceId = this.ReadNetworkId(); + Transform result; + if (networkInstanceId.IsEmpty()) + { + result = null; + } + else + { + GameObject gameObject = ClientScene.FindLocalObject(networkInstanceId); + if (gameObject == null) + { + if (LogFilter.logDebug) + { + Debug.Log("ReadTransform netId:" + networkInstanceId); + } + result = null; + } + else + { + result = gameObject.transform; + } + } + return result; + } + + public GameObject ReadGameObject() + { + NetworkInstanceId networkInstanceId = this.ReadNetworkId(); + GameObject result; + if (networkInstanceId.IsEmpty()) + { + result = null; + } + else + { + GameObject gameObject; + if (QSBNetworkServer.active) + { + gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); + } + else + { + gameObject = QSBClientScene.FindLocalObject(networkInstanceId); + } + if (gameObject == null) + { + if (LogFilter.logDebug) + { + Debug.Log("ReadGameObject netId:" + networkInstanceId + "go: null"); + } + } + result = gameObject; + } + return result; + } + + public QSBNetworkIdentity ReadNetworkIdentity() + { + NetworkInstanceId networkInstanceId = this.ReadNetworkId(); + QSBNetworkIdentity result; + if (networkInstanceId.IsEmpty()) + { + result = null; + } + else + { + GameObject gameObject; + if (QSBNetworkServer.active) + { + gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); + } + else + { + gameObject = QSBClientScene.FindLocalObject(networkInstanceId); + } + if (gameObject == null) + { + if (LogFilter.logDebug) + { + Debug.Log("ReadNetworkIdentity netId:" + networkInstanceId + "go: null"); + } + result = null; + } + else + { + result = gameObject.GetComponent(); + } + } + return result; + } + + public override string ToString() + { + return this.m_buf.ToString(); + } + + public TMsg ReadMessage() where TMsg : QSBMessageBase, new() + { + TMsg result = Activator.CreateInstance(); + result.Deserialize(this); + return result; + } + + private QSBNetBuffer m_buf; + + private const int k_MaxStringLength = 32768; + + private const int k_InitialStringBufferSize = 1024; + + private static byte[] s_StringReaderBuffer; + + private static Encoding s_Encoding; + } +} diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index add029539..6b960dcfd 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -235,7 +235,7 @@ internal void RegisterMessageHandlers() { m_SimpleServerSimple.RegisterHandlerSafe((short)35, new QSBNetworkMessageDelegate(OnClientReadyMessage)); m_SimpleServerSimple.RegisterHandlerSafe((short)5, new QSBNetworkMessageDelegate(OnCommandMessage)); - m_SimpleServerSimple.RegisterHandlerSafe((short)6, new QSBNetworkMessageDelegate(QSBNetworkTransform.HandleTransform)); + m_SimpleServerSimple.RegisterHandlerSafe(6, new QSBNetworkMessageDelegate(QSBNetworkTransform.HandleTransform)); //m_SimpleServerSimple.RegisterHandlerSafe((short)16, new QSBNetworkMessageDelegate(NetworkTransformChild.HandleChildTransform)); m_SimpleServerSimple.RegisterHandlerSafe((short)38, new QSBNetworkMessageDelegate(OnRemovePlayerMessage)); m_SimpleServerSimple.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); @@ -282,12 +282,12 @@ internal bool InternalListen(string ipAddress, int serverPort) return true; } - public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers) + public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, QSBPeerInfoMessage[] peers) { return instance.BecomeHostInternal(oldClient, port, matchInfo, oldConnectionId, peers); } - internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, PeerInfoMessage[] peers) + internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, QSBPeerInfoMessage[] peers) { QSBNetworkClient result; if (s_Active) @@ -442,7 +442,7 @@ internal void ActivateLocalClientScene() } } - public static bool SendToAll(short msgType, MessageBase msg) + public static bool SendToAll(short msgType, QSBMessageBase msg) { Debug.Log("Server.SendToAll msgType:" + msgType); var flag = true; @@ -457,7 +457,7 @@ public static bool SendToAll(short msgType, MessageBase msg) return flag; } - private static bool SendToObservers(GameObject contextObj, short msgType, MessageBase msg) + private static bool SendToObservers(GameObject contextObj, short msgType, QSBMessageBase msg) { Debug.Log("Server.SendToObservers id:" + msgType); var flag = true; @@ -480,7 +480,7 @@ private static bool SendToObservers(GameObject contextObj, short msgType, Messag return result; } - public static bool SendToReady(GameObject contextObj, short msgType, MessageBase msg) + public static bool SendToReady(GameObject contextObj, short msgType, QSBMessageBase msg) { Debug.Log("Server.SendToReady id:" + msgType); bool result; @@ -521,18 +521,21 @@ public static bool SendToReady(GameObject contextObj, short msgType, MessageBase return result; } - public static void SendWriterToReady(GameObject contextObj, NetworkWriter writer, int channelId) + public static void SendWriterToReady(GameObject contextObj, QSBNetworkWriter writer, int channelId) { + DebugLog.DebugWrite("send writer to ready"); var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment").Invoke(writer, null); if (arraySegment.Count > 32767) { throw new UnityException("NetworkWriter used buffer is too big!"); } + DebugLog.DebugWrite("pre send bytes"); SendBytesToReady(contextObj, arraySegment.Array, arraySegment.Count, channelId); } public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int numBytes, int channelId) { + DebugLog.DebugWrite("send bytes to ready"); if (contextObj == null) { var flag = true; @@ -541,18 +544,20 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu var networkConnection = connections[i]; if (networkConnection != null && networkConnection.isReady) { + DebugLog.DebugWrite($"sending bytes to connection {networkConnection.connectionId}"); if (!networkConnection.SendBytes(buffer, numBytes, channelId)) { flag = false; } } + else + { + DebugLog.DebugWrite($"- Connection {networkConnection.connectionId} is not ready!"); + } } if (!flag) { - if (LogFilter.logWarn) - { - Debug.LogWarning("SendBytesToReady failed"); - } + DebugLog.DebugWrite("SendBytesToReady failed"); } } else @@ -567,26 +572,25 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu var networkConnection2 = component.Observers[j]; if (networkConnection2.isReady) { + DebugLog.DebugWrite($"sending bytes to connection {networkConnection2.connectionId}"); if (!networkConnection2.SendBytes(buffer, numBytes, channelId)) { flag2 = false; } } + else + { + DebugLog.DebugWrite($"- Connection {networkConnection2.connectionId} is not ready!"); + } } if (!flag2) { - if (LogFilter.logWarn) - { - Debug.LogWarning("SendBytesToReady failed for " + contextObj); - } + DebugLog.DebugWrite("SendBytesToReady failed for " + contextObj); } } catch (NullReferenceException) { - if (LogFilter.logWarn) - { - Debug.LogWarning("SendBytesToReady object " + contextObj + " has not been spawned"); - } + DebugLog.DebugWrite("SendBytesToReady object " + contextObj + " has not been spawned"); } } } @@ -610,7 +614,7 @@ public static void SendBytesToPlayer(GameObject player, byte[] buffer, int numBy } } - public static bool SendUnreliableToAll(short msgType, MessageBase msg) + public static bool SendUnreliableToAll(short msgType, QSBMessageBase msg) { Debug.Log("Server.SendUnreliableToAll msgType:" + msgType); var flag = true; @@ -625,7 +629,7 @@ public static bool SendUnreliableToAll(short msgType, MessageBase msg) return flag; } - public static bool SendUnreliableToReady(GameObject contextObj, short msgType, MessageBase msg) + public static bool SendUnreliableToReady(GameObject contextObj, short msgType, QSBMessageBase msg) { Debug.Log("Server.SendUnreliableToReady id:" + msgType); bool result; @@ -659,7 +663,7 @@ public static bool SendUnreliableToReady(GameObject contextObj, short msgType, M return result; } - public static bool SendByChannelToAll(short msgType, MessageBase msg, int channelId) + public static bool SendByChannelToAll(short msgType, QSBMessageBase msg, int channelId) { Debug.Log("Server.SendByChannelToAll id:" + msgType); var flag = true; @@ -674,7 +678,7 @@ public static bool SendByChannelToAll(short msgType, MessageBase msg, int channe return flag; } - public static bool SendByChannelToReady(GameObject contextObj, short msgType, MessageBase msg, int channelId) + public static bool SendByChannelToReady(GameObject contextObj, short msgType, QSBMessageBase msg, int channelId) { Debug.Log("Server.SendByChannelToReady msgType:" + msgType); bool result; @@ -857,11 +861,11 @@ private void GenerateError(QSBNetworkConnection conn, int error) { if (handlers.ContainsKey(34)) { - var errorMessage = new ErrorMessage(); + var errorMessage = new QSBErrorMessage(); errorMessage.errorCode = error; - var writer = new NetworkWriter(); + var writer = new QSBNetworkWriter(); errorMessage.Serialize(writer); - var reader = new NetworkReader(writer); + var reader = new QSBNetworkReader(writer); conn.InvokeHandler(34, reader, 0); } } @@ -928,7 +932,7 @@ public static void GetStatsIn(out int numMsgs, out int numBytes) } } - public static void SendToClientOfPlayer(GameObject player, short msgType, MessageBase msg) + public static void SendToClientOfPlayer(GameObject player, short msgType, QSBMessageBase msg) { for (var i = 0; i < connections.Count; i++) { @@ -952,7 +956,7 @@ public static void SendToClientOfPlayer(GameObject player, short msgType, Messag } } - public static void SendToClient(int connectionId, short msgType, MessageBase msg) + public static void SendToClient(int connectionId, short msgType, QSBMessageBase msg) { if (connectionId < connections.Count) { @@ -1361,7 +1365,7 @@ internal void InternalSetClientNotReady(QSBNetworkConnection conn) } conn.isReady = false; conn.RemoveObservers(); - var msg = new NotReadyMessage(); + var msg = new QSBNotReadyMessage(); conn.Send(36, msg); } } @@ -1491,7 +1495,7 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) objectSpawnMessage.assetId = uv.AssetId; objectSpawnMessage.Position = uv.transform.position; objectSpawnMessage.Rotation = uv.transform.rotation; - var networkWriter = new NetworkWriter(); + var networkWriter = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter); if (networkWriter.Position > 0) { @@ -1512,7 +1516,7 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) objectSpawnSceneMessage.NetId = uv.NetId; objectSpawnSceneMessage.SceneId = uv.SceneId; objectSpawnSceneMessage.Position = uv.transform.position; - var networkWriter2 = new NetworkWriter(); + var networkWriter2 = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter2); if (networkWriter2.Position > 0) { @@ -1736,7 +1740,7 @@ public static void UnSpawn(GameObject obj) internal bool InvokeBytes(QSBULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { - var networkReader = new NetworkReader(buffer); + var networkReader = new QSBNetworkReader(buffer); networkReader.ReadInt16(); var num = networkReader.ReadInt16(); bool result; @@ -1752,14 +1756,14 @@ internal bool InvokeBytes(QSBULocalConnectionToServer conn, byte[] buffer, int n return result; } - internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgType, MessageBase msg, int channelId) + internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgType, QSBMessageBase msg, int channelId) { bool result; if (handlers.ContainsKey(msgType) && m_LocalConnection != null) { - var writer = new NetworkWriter(); + var writer = new QSBNetworkWriter(); msg.Serialize(writer); - var reader = new NetworkReader(writer); + var reader = new QSBNetworkReader(writer); m_LocalConnection.InvokeHandler(msgType, reader, channelId); result = true; } diff --git a/QSB/QuantumUNET/QSBNetworkServerSimple.cs b/QSB/QuantumUNET/QSBNetworkServerSimple.cs index dc7981625..af00b21f9 100644 --- a/QSB/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QSB/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; @@ -235,7 +236,8 @@ public void Stop() internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { - this.m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + DebugLog.DebugWrite($"Registering message {msgType}."); + m_MessageHandlers.RegisterHandlerSafe(msgType, handler); } public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) @@ -498,7 +500,7 @@ public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channe } } - public void SendWriterTo(int connectionId, NetworkWriter writer, int channelId) + public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelId) { QSBNetworkConnection networkConnection = this.FindConnection(connectionId); if (networkConnection != null) diff --git a/QSB/QuantumUNET/QSBNetworkTransform.cs b/QSB/QuantumUNET/QSBNetworkTransform.cs index 1c2dac6e7..efbf316c4 100644 --- a/QSB/QuantumUNET/QSBNetworkTransform.cs +++ b/QSB/QuantumUNET/QSBNetworkTransform.cs @@ -1,4 +1,5 @@ -using System; +using QSB.Utility; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,179 +10,33 @@ namespace QSB.QuantumUNET { public class QSBNetworkTransform : QSBNetworkBehaviour { - public TransformSyncMode transformSyncMode - { - get - { - return this.m_TransformSyncMode; - } - set - { - this.m_TransformSyncMode = value; - } - } - - public float sendInterval - { - get - { - return this.m_SendInterval; - } - set - { - this.m_SendInterval = value; - } - } - - public AxisSyncMode syncRotationAxis - { - get - { - return this.m_SyncRotationAxis; - } - set - { - this.m_SyncRotationAxis = value; - } - } - - public CompressionSyncMode rotationSyncCompression - { - get - { - return this.m_RotationSyncCompression; - } - set - { - this.m_RotationSyncCompression = value; - } - } - - public bool syncSpin - { - get - { - return this.m_SyncSpin; - } - set - { - this.m_SyncSpin = value; - } - } + public float SendInterval { get; set; } = 0.1f; - public float movementTheshold - { - get - { - return this.m_MovementTheshold; - } - set - { - this.m_MovementTheshold = value; - } - } + public AxisSyncMode SyncRotationAxis { get; set; } = AxisSyncMode.AxisXYZ; - public float velocityThreshold - { - get - { - return this.m_VelocityThreshold; - } - set - { - this.m_VelocityThreshold = value; - } - } + public CompressionSyncMode RotationSyncCompression { get; set; } = CompressionSyncMode.None; - public float snapThreshold - { - get - { - return this.m_SnapThreshold; - } - set - { - this.m_SnapThreshold = value; - } - } + public bool SyncSpin { get; set; } - public float interpolateRotation - { - get - { - return this.m_InterpolateRotation; - } - set - { - this.m_InterpolateRotation = value; - } - } + public float MovementTheshold { get; set; } = 0.001f; - public float interpolateMovement - { - get - { - return this.m_InterpolateMovement; - } - set - { - this.m_InterpolateMovement = value; - } - } + public float velocityThreshold { get; set; } = 0.0001f; - public ClientMoveCallback3D clientMoveCallback3D - { - get - { - return this.m_ClientMoveCallback3D; - } - set - { - this.m_ClientMoveCallback3D = value; - } - } + public float SnapThreshold { get; set; } = 5f; - public ClientMoveCallback2D clientMoveCallback2D - { - get - { - return this.m_ClientMoveCallback2D; - } - set - { - this.m_ClientMoveCallback2D = value; - } - } + public float InterpolateRotation { get; set; } = 1f; - public CharacterController characterContoller - { - get - { - return this.m_CharacterController; - } - } + public float InterpolateMovement { get; set; } = 1f; - public Rigidbody rigidbody3D - { - get - { - return this.m_RigidBody3D; - } - } + public ClientMoveCallback3D clientMoveCallback3D { get; set; } - public float lastSyncTime - { - get - { - return this.m_LastClientSyncTime; - } - } + public float LastSyncTime { get; private set; } - public Vector3 targetSyncPosition + public Vector3 TargetSyncPosition { get { - return this.m_TargetSyncPosition; + return m_TargetSyncPosition; } } @@ -189,7 +44,7 @@ public Vector3 targetSyncVelocity { get { - return this.m_TargetSyncVelocity; + return m_TargetSyncVelocity; } } @@ -197,200 +52,90 @@ public Quaternion targetSyncRotation3D { get { - return this.m_TargetSyncRotation3D; + return m_TargetSyncRotation3D; } } - public bool grounded - { - get - { - return this.m_Grounded; - } - set - { - this.m_Grounded = value; - } - } + public bool Grounded { get; set; } = true; private void OnValidate() { - if (this.m_TransformSyncMode < TransformSyncMode.SyncNone || this.m_TransformSyncMode > TransformSyncMode.SyncCharacterController) + if (SendInterval < 0f) { - this.m_TransformSyncMode = TransformSyncMode.SyncTransform; + SendInterval = 0f; } - if (this.m_SendInterval < 0f) + if (SyncRotationAxis < AxisSyncMode.None || SyncRotationAxis > AxisSyncMode.AxisXYZ) { - this.m_SendInterval = 0f; + SyncRotationAxis = AxisSyncMode.None; } - if (this.m_SyncRotationAxis < AxisSyncMode.None || this.m_SyncRotationAxis > AxisSyncMode.AxisXYZ) + if (MovementTheshold < 0f) { - this.m_SyncRotationAxis = AxisSyncMode.None; + MovementTheshold = 0f; } - if (this.m_MovementTheshold < 0f) + if (velocityThreshold < 0f) { - this.m_MovementTheshold = 0f; + velocityThreshold = 0f; } - if (this.m_VelocityThreshold < 0f) + if (SnapThreshold < 0f) { - this.m_VelocityThreshold = 0f; + SnapThreshold = 0.01f; } - if (this.m_SnapThreshold < 0f) + if (InterpolateRotation < 0f) { - this.m_SnapThreshold = 0.01f; + InterpolateRotation = 0.01f; } - if (this.m_InterpolateRotation < 0f) + if (InterpolateMovement < 0f) { - this.m_InterpolateRotation = 0.01f; - } - if (this.m_InterpolateMovement < 0f) - { - this.m_InterpolateMovement = 0.01f; + InterpolateMovement = 0.01f; } } private void Awake() { - this.m_RigidBody3D = base.GetComponent(); - this.m_CharacterController = base.GetComponent(); - this.m_PrevPosition = base.transform.position; - this.m_PrevRotation = base.transform.rotation; - this.m_PrevVelocity = 0f; - if (base.LocalPlayerAuthority) + m_PrevPosition = transform.position; + m_PrevRotation = transform.rotation; + if (LocalPlayerAuthority) { - this.m_LocalTransformWriter = new NetworkWriter(); + m_LocalTransformWriter = new QSBNetworkWriter(); } } public override void OnStartServer() { - this.m_LastClientSyncTime = 0f; + LastSyncTime = 0f; } - public override bool OnSerialize(NetworkWriter writer, bool initialState) + public override bool OnSerialize(QSBNetworkWriter writer, bool initialState) { if (!initialState) { - if (base.SyncVarDirtyBits == 0U) + if (SyncVarDirtyBits == 0U) { + DebugLog.DebugWrite("dirty bits = 0, abort"); writer.WritePackedUInt32(0U); return false; } writer.WritePackedUInt32(1U); } - switch (this.transformSyncMode) - { - case TransformSyncMode.SyncNone: - return false; - case TransformSyncMode.SyncTransform: - this.SerializeModeTransform(writer); - break; - case TransformSyncMode.SyncRigidbody3D: - this.SerializeMode3D(writer); - break; - case TransformSyncMode.SyncCharacterController: - this.SerializeModeCharacterController(writer); - break; - } + SerializeModeTransform(writer); return true; } - private void SerializeModeTransform(NetworkWriter writer) - { - writer.Write(base.transform.position); - if (this.m_SyncRotationAxis != AxisSyncMode.None) - { - SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression); - } - this.m_PrevPosition = base.transform.position; - this.m_PrevRotation = base.transform.rotation; - this.m_PrevVelocity = 0f; - } - - private void VerifySerializeComponentExists() - { - bool flag = false; - Type type = null; - TransformSyncMode transformSyncMode = this.transformSyncMode; - if (transformSyncMode != TransformSyncMode.SyncCharacterController) - { - if (transformSyncMode == TransformSyncMode.SyncRigidbody3D) - { - if (!this.m_RigidBody3D && !(this.m_RigidBody3D = base.GetComponent())) - { - flag = true; - type = typeof(Rigidbody); - } - } - } - else if (!this.m_CharacterController && !(this.m_CharacterController = base.GetComponent())) - { - flag = true; - type = typeof(CharacterController); - } - if (flag && type != null) - { - throw new InvalidOperationException(string.Format("transformSyncMode set to {0} but no {1} component was found, did you call QSBNetworkServer.Spawn on a prefab?", this.transformSyncMode, type.Name)); - } - } - - private void SerializeMode3D(NetworkWriter writer) - { - this.VerifySerializeComponentExists(); - if (base.IsServer && this.m_LastClientSyncTime != 0f) - { - writer.Write(this.m_TargetSyncPosition); - SerializeVelocity3D(writer, this.m_TargetSyncVelocity, NetworkTransform.CompressionSyncMode.None); - if (this.syncRotationAxis != AxisSyncMode.None) - { - SerializeRotation3D(writer, this.m_TargetSyncRotation3D, this.syncRotationAxis, this.rotationSyncCompression); - } - } - else - { - writer.Write(this.m_RigidBody3D.position); - NetworkTransform.SerializeVelocity3D(writer, this.m_RigidBody3D.velocity, NetworkTransform.CompressionSyncMode.None); - if (this.syncRotationAxis != AxisSyncMode.None) - { - SerializeRotation3D(writer, this.m_RigidBody3D.rotation, this.syncRotationAxis, this.rotationSyncCompression); - } - } - if (this.m_SyncSpin) - { - SerializeSpin3D(writer, this.m_RigidBody3D.angularVelocity, this.syncRotationAxis, this.rotationSyncCompression); - } - this.m_PrevPosition = this.m_RigidBody3D.position; - this.m_PrevRotation = base.transform.rotation; - this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude; - } - - private void SerializeModeCharacterController(NetworkWriter writer) + private void SerializeModeTransform(QSBNetworkWriter writer) { - this.VerifySerializeComponentExists(); - if (base.IsServer && this.m_LastClientSyncTime != 0f) - { - writer.Write(this.m_TargetSyncPosition); - if (this.syncRotationAxis != AxisSyncMode.None) - { - SerializeRotation3D(writer, this.m_TargetSyncRotation3D, this.syncRotationAxis, this.rotationSyncCompression); - } - } - else + DebugLog.DebugWrite("serialize"); + writer.Write(transform.position); + if (SyncRotationAxis != AxisSyncMode.None) { - writer.Write(base.transform.position); - if (this.syncRotationAxis != AxisSyncMode.None) - { - SerializeRotation3D(writer, base.transform.rotation, this.syncRotationAxis, this.rotationSyncCompression); - } + SerializeRotation3D(writer, transform.rotation, SyncRotationAxis, RotationSyncCompression); } - this.m_PrevPosition = base.transform.position; - this.m_PrevRotation = base.transform.rotation; - this.m_PrevVelocity = 0f; + m_PrevPosition = transform.position; + m_PrevRotation = transform.rotation; } - public override void OnDeserialize(NetworkReader reader, bool initialState) + public override void OnDeserialize(QSBNetworkReader reader, bool initialState) { - if (!base.IsServer || !QSBNetworkServer.localClientActive) + if (!IsServer || !QSBNetworkServer.localClientActive) { if (!initialState) { @@ -399,317 +144,70 @@ public override void OnDeserialize(NetworkReader reader, bool initialState) return; } } - switch (this.transformSyncMode) - { - case TransformSyncMode.SyncNone: - return; - case TransformSyncMode.SyncTransform: - this.UnserializeModeTransform(reader, initialState); - break; - case TransformSyncMode.SyncRigidbody3D: - this.UnserializeMode3D(reader, initialState); - break; - case TransformSyncMode.SyncCharacterController: - this.UnserializeModeCharacterController(reader, initialState); - break; - } - this.m_LastClientSyncTime = Time.time; - } - } - - private void UnserializeModeTransform(NetworkReader reader, bool initialState) - { - if (base.HasAuthority) - { - reader.ReadVector3(); - if (this.syncRotationAxis != AxisSyncMode.None) - { - UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - } - else if (base.IsServer && this.m_ClientMoveCallback3D != null) - { - Vector3 position = reader.ReadVector3(); - Vector3 zero = Vector3.zero; - Quaternion rotation = Quaternion.identity; - if (this.syncRotationAxis != AxisSyncMode.None) - { - rotation = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - if (this.m_ClientMoveCallback3D(ref position, ref zero, ref rotation)) - { - base.transform.position = position; - if (this.syncRotationAxis != AxisSyncMode.None) - { - base.transform.rotation = rotation; - } - } - } - else - { - base.transform.position = reader.ReadVector3(); - if (this.syncRotationAxis != AxisSyncMode.None) - { - base.transform.rotation = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } + UnserializeModeTransform(reader, initialState); + LastSyncTime = Time.time; } } - private void UnserializeMode3D(NetworkReader reader, bool initialState) + private void UnserializeModeTransform(QSBNetworkReader reader, bool initialState) { - if (base.HasAuthority) + if (HasAuthority) { reader.ReadVector3(); - reader.ReadVector3(); - if (this.syncRotationAxis != AxisSyncMode.None) + if (SyncRotationAxis != AxisSyncMode.None) { - UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - if (this.syncSpin) - { - UnserializeSpin3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + UnserializeRotation3D(reader, SyncRotationAxis, RotationSyncCompression); } } - else + else if (IsServer && clientMoveCallback3D != null) { - if (base.IsServer && this.m_ClientMoveCallback3D != null) - { - Vector3 targetSyncPosition = reader.ReadVector3(); - Vector3 targetSyncVelocity = reader.ReadVector3(); - Quaternion targetSyncRotation3D = Quaternion.identity; - if (this.syncRotationAxis != AxisSyncMode.None) - { - targetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - if (!this.m_ClientMoveCallback3D(ref targetSyncPosition, ref targetSyncVelocity, ref targetSyncRotation3D)) - { - return; - } - this.m_TargetSyncPosition = targetSyncPosition; - this.m_TargetSyncVelocity = targetSyncVelocity; - if (this.syncRotationAxis != AxisSyncMode.None) - { - this.m_TargetSyncRotation3D = targetSyncRotation3D; - } - } - else - { - this.m_TargetSyncPosition = reader.ReadVector3(); - this.m_TargetSyncVelocity = reader.ReadVector3(); - if (this.syncRotationAxis != AxisSyncMode.None) - { - this.m_TargetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - } - if (this.syncSpin) + var position = reader.ReadVector3(); + var zero = Vector3.zero; + var rotation = Quaternion.identity; + if (SyncRotationAxis != AxisSyncMode.None) { - this.m_TargetSyncAngularVelocity3D = UnserializeSpin3D(reader, this.syncRotationAxis, this.rotationSyncCompression); + rotation = UnserializeRotation3D(reader, SyncRotationAxis, RotationSyncCompression); } - if (!(this.m_RigidBody3D == null)) + if (clientMoveCallback3D(ref position, ref zero, ref rotation)) { - if (base.IsServer && !base.IsClient) - { - this.m_RigidBody3D.MovePosition(this.m_TargetSyncPosition); - this.m_RigidBody3D.MoveRotation(this.m_TargetSyncRotation3D); - this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity; - } - else if (this.GetNetworkSendInterval() == 0f) + transform.position = position; + if (SyncRotationAxis != AxisSyncMode.None) { - this.m_RigidBody3D.MovePosition(this.m_TargetSyncPosition); - this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity; - if (this.syncRotationAxis != AxisSyncMode.None) - { - this.m_RigidBody3D.MoveRotation(this.m_TargetSyncRotation3D); - } - if (this.syncSpin) - { - this.m_RigidBody3D.angularVelocity = this.m_TargetSyncAngularVelocity3D; - } - } - else - { - float magnitude = (this.m_RigidBody3D.position - this.m_TargetSyncPosition).magnitude; - if (magnitude > this.snapThreshold) - { - this.m_RigidBody3D.position = this.m_TargetSyncPosition; - this.m_RigidBody3D.velocity = this.m_TargetSyncVelocity; - } - if (this.interpolateRotation == 0f && this.syncRotationAxis != AxisSyncMode.None) - { - this.m_RigidBody3D.rotation = this.m_TargetSyncRotation3D; - if (this.syncSpin) - { - this.m_RigidBody3D.angularVelocity = this.m_TargetSyncAngularVelocity3D; - } - } - if (this.m_InterpolateMovement == 0f) - { - this.m_RigidBody3D.position = this.m_TargetSyncPosition; - } - if (initialState && this.syncRotationAxis != AxisSyncMode.None) - { - this.m_RigidBody3D.rotation = this.m_TargetSyncRotation3D; - } + transform.rotation = rotation; } } } - } - - private void UnserializeModeCharacterController(NetworkReader reader, bool initialState) - { - if (base.HasAuthority) - { - reader.ReadVector3(); - if (this.syncRotationAxis != AxisSyncMode.None) - { - UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - } else { - if (base.IsServer && this.m_ClientMoveCallback3D != null) - { - Vector3 targetSyncPosition = reader.ReadVector3(); - Quaternion targetSyncRotation3D = Quaternion.identity; - if (this.syncRotationAxis != AxisSyncMode.None) - { - targetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - if (this.m_CharacterController == null) - { - return; - } - Vector3 velocity = this.m_CharacterController.velocity; - if (!this.m_ClientMoveCallback3D(ref targetSyncPosition, ref velocity, ref targetSyncRotation3D)) - { - return; - } - this.m_TargetSyncPosition = targetSyncPosition; - this.m_TargetSyncVelocity = velocity; - if (this.syncRotationAxis != AxisSyncMode.None) - { - this.m_TargetSyncRotation3D = targetSyncRotation3D; - } - } - else - { - this.m_TargetSyncPosition = reader.ReadVector3(); - if (this.syncRotationAxis != AxisSyncMode.None) - { - this.m_TargetSyncRotation3D = UnserializeRotation3D(reader, this.syncRotationAxis, this.rotationSyncCompression); - } - } - if (!(this.m_CharacterController == null)) + transform.position = reader.ReadVector3(); + if (SyncRotationAxis != AxisSyncMode.None) { - Vector3 a = this.m_TargetSyncPosition - base.transform.position; - Vector3 a2 = a / this.GetNetworkSendInterval(); - this.m_FixedPosDiff = a2 * Time.fixedDeltaTime; - if (base.IsServer && !base.IsClient) - { - base.transform.position = this.m_TargetSyncPosition; - base.transform.rotation = this.m_TargetSyncRotation3D; - } - else if (this.GetNetworkSendInterval() == 0f) - { - base.transform.position = this.m_TargetSyncPosition; - if (this.syncRotationAxis != AxisSyncMode.None) - { - base.transform.rotation = this.m_TargetSyncRotation3D; - } - } - else - { - float magnitude = (base.transform.position - this.m_TargetSyncPosition).magnitude; - if (magnitude > this.snapThreshold) - { - base.transform.position = this.m_TargetSyncPosition; - } - if (this.interpolateRotation == 0f && this.syncRotationAxis != AxisSyncMode.None) - { - base.transform.rotation = this.m_TargetSyncRotation3D; - } - if (this.m_InterpolateMovement == 0f) - { - base.transform.position = this.m_TargetSyncPosition; - } - if (initialState && this.syncRotationAxis != AxisSyncMode.None) - { - base.transform.rotation = this.m_TargetSyncRotation3D; - } - } + transform.rotation = UnserializeRotation3D(reader, SyncRotationAxis, RotationSyncCompression); } } } private void FixedUpdate() { - if (base.IsServer) - { - this.FixedUpdateServer(); - } - if (base.IsClient) + if (IsServer) { - this.FixedUpdateClient(); + FixedUpdateServer(); } } private void FixedUpdateServer() { - if (base.SyncVarDirtyBits == 0U) + if (SyncVarDirtyBits == 0U) { if (QSBNetworkServer.active) { - if (base.IsServer) - { - if (this.GetNetworkSendInterval() != 0f) - { - float num = (base.transform.position - this.m_PrevPosition).magnitude; - if (num < this.movementTheshold) - { - num = Quaternion.Angle(this.m_PrevRotation, base.transform.rotation); - if (num < this.movementTheshold) - { - if (!this.CheckVelocityChanged()) - { - return; - } - } - } - base.SetDirtyBit(1U); - } - } - } - } - } - - private bool CheckVelocityChanged() - { - TransformSyncMode transformSyncMode = this.transformSyncMode; - bool result = (transformSyncMode == TransformSyncMode.SyncRigidbody3D && (this.m_RigidBody3D && this.m_VelocityThreshold > 0f) && Mathf.Abs(this.m_RigidBody3D.velocity.sqrMagnitude - this.m_PrevVelocity) >= this.m_VelocityThreshold); - return result; - } - - private void FixedUpdateClient() - { - if (this.m_LastClientSyncTime != 0f) - { - if (QSBNetworkServer.active || QSBNetworkClient.active) - { - if (base.IsServer || base.IsClient) + if (IsServer) { - if (this.GetNetworkSendInterval() != 0f) + if (GetNetworkSendInterval() != 0f) { - if (!base.HasAuthority) + if (HasMoved()) { - switch (this.transformSyncMode) - { - case TransformSyncMode.SyncRigidbody3D: - this.InterpolateTransformMode3D(); - break; - case TransformSyncMode.SyncCharacterController: - this.InterpolateTransformModeCharacterController(); - break; - } + SetDirtyBit(1U); } } } @@ -717,53 +215,18 @@ private void FixedUpdateClient() } } - private void InterpolateTransformMode3D() - { - if (this.m_InterpolateMovement != 0f) - { - Vector3 velocity = (this.m_TargetSyncPosition - this.m_RigidBody3D.position) * this.m_InterpolateMovement / this.GetNetworkSendInterval(); - this.m_RigidBody3D.velocity = velocity; - } - if (this.interpolateRotation != 0f) - { - this.m_RigidBody3D.MoveRotation(Quaternion.Slerp(this.m_RigidBody3D.rotation, this.m_TargetSyncRotation3D, Time.fixedDeltaTime * this.interpolateRotation)); - } - this.m_TargetSyncPosition += this.m_TargetSyncVelocity * Time.fixedDeltaTime * 0.1f; - } - - private void InterpolateTransformModeCharacterController() - { - if (!(this.m_FixedPosDiff == Vector3.zero) || !(this.m_TargetSyncRotation3D == base.transform.rotation)) - { - if (this.m_InterpolateMovement != 0f) - { - this.m_CharacterController.Move(this.m_FixedPosDiff * this.m_InterpolateMovement); - } - if (this.interpolateRotation != 0f) - { - base.transform.rotation = Quaternion.Slerp(base.transform.rotation, this.m_TargetSyncRotation3D, Time.fixedDeltaTime * this.interpolateRotation * 10f); - } - if (Time.time - this.m_LastClientSyncTime > this.GetNetworkSendInterval()) - { - this.m_FixedPosDiff = Vector3.zero; - Vector3 motion = this.m_TargetSyncPosition - base.transform.position; - this.m_CharacterController.Move(motion); - } - } - } - private void Update() { - if (base.HasAuthority) + if (HasAuthority) { - if (base.LocalPlayerAuthority) + if (LocalPlayerAuthority) { if (!QSBNetworkServer.active) { - if (Time.time - this.m_LastClientSendTime > this.GetNetworkSendInterval()) + if (Time.time - m_LastClientSendTime > GetNetworkSendInterval()) { - this.SendTransform(); - this.m_LastClientSendTime = Time.time; + SendTransform(); + m_LastClientSendTime = Time.time; } } } @@ -772,15 +235,7 @@ private void Update() private bool HasMoved() { - float num; - if (this.m_RigidBody3D != null) - { - num = (this.m_RigidBody3D.position - this.m_PrevPosition).magnitude; - } - else - { - num = (base.transform.position - this.m_PrevPosition).magnitude; - } + var num = (transform.position - m_PrevPosition).magnitude; bool result; if (num > 1E-05f) { @@ -788,24 +243,13 @@ private bool HasMoved() } else { - if (this.m_RigidBody3D != null) - { - num = Quaternion.Angle(this.m_RigidBody3D.rotation, this.m_PrevRotation); - } - else - { - num = Quaternion.Angle(base.transform.rotation, this.m_PrevRotation); - } + num = Quaternion.Angle(transform.rotation, m_PrevRotation); if (num > 1E-05f) { result = true; } else { - if (this.m_RigidBody3D != null) - { - num = Mathf.Abs(this.m_RigidBody3D.velocity.sqrMagnitude - this.m_PrevVelocity); - } result = (num > 1E-05f); } } @@ -815,101 +259,55 @@ private bool HasMoved() [Client] private void SendTransform() { - if (this.HasMoved() && QSBClientScene.readyConnection != null) + if (HasMoved() && QSBClientScene.readyConnection != null) { - this.m_LocalTransformWriter.StartMessage(6); - this.m_LocalTransformWriter.Write(base.NetId); - switch (this.transformSyncMode) - { - case TransformSyncMode.SyncNone: - return; - case TransformSyncMode.SyncTransform: - this.SerializeModeTransform(this.m_LocalTransformWriter); - break; - case TransformSyncMode.SyncRigidbody3D: - this.SerializeMode3D(this.m_LocalTransformWriter); - break; - case TransformSyncMode.SyncCharacterController: - this.SerializeModeCharacterController(this.m_LocalTransformWriter); - break; - } - if (this.m_RigidBody3D != null) - { - this.m_PrevPosition = this.m_RigidBody3D.position; - this.m_PrevRotation = this.m_RigidBody3D.rotation; - this.m_PrevVelocity = this.m_RigidBody3D.velocity.sqrMagnitude; - } - else - { - this.m_PrevPosition = base.transform.position; - this.m_PrevRotation = base.transform.rotation; - } - this.m_LocalTransformWriter.FinishMessage(); - QSBClientScene.readyConnection.SendWriter(this.m_LocalTransformWriter, this.GetNetworkChannel()); + m_LocalTransformWriter.StartMessage(6); + m_LocalTransformWriter.Write(NetId); + SerializeModeTransform(m_LocalTransformWriter); + m_PrevPosition = transform.position; + m_PrevRotation = transform.rotation; + m_LocalTransformWriter.FinishMessage(); + QSBClientScene.readyConnection.SendWriter(m_LocalTransformWriter, GetNetworkChannel()); } } public static void HandleTransform(QSBNetworkMessage netMsg) { - NetworkInstanceId networkInstanceId = netMsg.Reader.ReadNetworkId(); - GameObject gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); + DebugLog.DebugWrite("handle transform"); + var networkInstanceId = netMsg.Reader.ReadNetworkId(); + var gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); if (gameObject == null) { - if (LogFilter.logError) - { - Debug.LogError("Received NetworkTransform data for GameObject that doesn't exist"); - } + DebugLog.DebugWrite("Received NetworkTransform data for GameObject that doesn't exist"); } else { - QSBNetworkTransform component = gameObject.GetComponent(); + var component = gameObject.GetComponent(); if (component == null) { - if (LogFilter.logError) - { - Debug.LogError("HandleTransform null target"); - } + DebugLog.DebugWrite("HandleTransform null target"); } else if (!component.LocalPlayerAuthority) { - if (LogFilter.logError) - { - Debug.LogError("HandleTransform no localPlayerAuthority"); - } + DebugLog.DebugWrite("HandleTransform no localPlayerAuthority"); } else if (netMsg.Connection.ClientOwnedObjects == null) { - if (LogFilter.logError) - { - Debug.LogError("HandleTransform object not owned by connection"); - } + DebugLog.DebugWrite("HandleTransform object not owned by connection"); } else if (netMsg.Connection.ClientOwnedObjects.Contains(networkInstanceId)) { - switch (component.transformSyncMode) - { - case TransformSyncMode.SyncNone: - return; - case TransformSyncMode.SyncTransform: - component.UnserializeModeTransform(netMsg.Reader, false); - break; - case TransformSyncMode.SyncRigidbody3D: - component.UnserializeMode3D(netMsg.Reader, false); - break; - case TransformSyncMode.SyncCharacterController: - component.UnserializeModeCharacterController(netMsg.Reader, false); - break; - } - component.m_LastClientSyncTime = Time.time; + component.UnserializeModeTransform(netMsg.Reader, false); + component.LastSyncTime = Time.time; } else if (LogFilter.logWarn) { - Debug.LogWarning("HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + DebugLog.DebugWrite("HandleTransform netId:" + networkInstanceId + " is not for a valid player"); } } } - private static void WriteAngle(NetworkWriter writer, float angle, CompressionSyncMode compression) + private static void WriteAngle(QSBNetworkWriter writer, float angle, CompressionSyncMode compression) { if (compression != CompressionSyncMode.None) { @@ -931,7 +329,7 @@ private static void WriteAngle(NetworkWriter writer, float angle, CompressionSyn } } - private static float ReadAngle(NetworkReader reader, CompressionSyncMode compression) + private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode compression) { float result; if (compression != CompressionSyncMode.None) @@ -959,12 +357,12 @@ private static float ReadAngle(NetworkReader reader, CompressionSyncMode compres return result; } - public static void SerializeVelocity3D(NetworkWriter writer, Vector3 velocity, NetworkTransform.CompressionSyncMode compression) + public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) { writer.Write(velocity); } - public static void SerializeRotation3D(NetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) + public static void SerializeRotation3D(QSBNetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) { switch (mode) { @@ -997,7 +395,7 @@ public static void SerializeRotation3D(NetworkWriter writer, Quaternion rot, Axi } } - public static void SerializeSpin3D(NetworkWriter writer, Vector3 angularVelocity, AxisSyncMode mode, CompressionSyncMode compression) + public static void SerializeSpin3D(QSBNetworkWriter writer, Vector3 angularVelocity, AxisSyncMode mode, CompressionSyncMode compression) { switch (mode) { @@ -1030,15 +428,15 @@ public static void SerializeSpin3D(NetworkWriter writer, Vector3 angularVelocity } } - public static Vector3 UnserializeVelocity3D(NetworkReader reader, NetworkTransform.CompressionSyncMode compression) + public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) { return reader.ReadVector3(); } - public static Quaternion UnserializeRotation3D(NetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) + public static Quaternion UnserializeRotation3D(QSBNetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) { - Quaternion identity = Quaternion.identity; - Vector3 zero = Vector3.zero; + var identity = Quaternion.identity; + var zero = Vector3.zero; switch (mode) { case AxisSyncMode.AxisX: @@ -1073,9 +471,9 @@ public static Quaternion UnserializeRotation3D(NetworkReader reader, AxisSyncMod return identity; } - public static Vector3 UnserializeSpin3D(NetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) + public static Vector3 UnserializeSpin3D(QSBNetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) { - Vector3 zero = Vector3.zero; + var zero = Vector3.zero; switch (mode) { case AxisSyncMode.AxisX: @@ -1110,56 +508,14 @@ public override int GetNetworkChannel() public override float GetNetworkSendInterval() { - return this.m_SendInterval; + return SendInterval; } public override void OnStartAuthority() { - this.m_LastClientSyncTime = 0f; + LastSyncTime = 0f; } - [SerializeField] - private TransformSyncMode m_TransformSyncMode = TransformSyncMode.SyncNone; - - [SerializeField] - private float m_SendInterval = 0.1f; - - [SerializeField] - private AxisSyncMode m_SyncRotationAxis = AxisSyncMode.AxisXYZ; - - [SerializeField] - private CompressionSyncMode m_RotationSyncCompression = CompressionSyncMode.None; - - [SerializeField] - private bool m_SyncSpin; - - [SerializeField] - private float m_MovementTheshold = 0.001f; - - [SerializeField] - private float m_VelocityThreshold = 0.0001f; - - [SerializeField] - private float m_SnapThreshold = 5f; - - [SerializeField] - private float m_InterpolateRotation = 1f; - - [SerializeField] - private float m_InterpolateMovement = 1f; - - [SerializeField] - private ClientMoveCallback3D m_ClientMoveCallback3D; - - [SerializeField] - private ClientMoveCallback2D m_ClientMoveCallback2D; - - private Rigidbody m_RigidBody3D; - - private CharacterController m_CharacterController; - - private bool m_Grounded = true; - private Vector3 m_TargetSyncPosition; private Vector3 m_TargetSyncVelocity; @@ -1169,23 +525,12 @@ public override void OnStartAuthority() private Quaternion m_TargetSyncRotation3D; private Vector3 m_TargetSyncAngularVelocity3D; - - private float m_TargetSyncRotation2D; - - private float m_TargetSyncAngularVelocity2D; - - private float m_LastClientSyncTime; - private float m_LastClientSendTime; private Vector3 m_PrevPosition; private Quaternion m_PrevRotation; - private float m_PrevRotation2D; - - private float m_PrevVelocity; - private const float k_LocalMovementThreshold = 1E-05f; private const float k_LocalRotationThreshold = 1E-05f; @@ -1194,15 +539,7 @@ public override void OnStartAuthority() private const float k_MoveAheadRatio = 0.1f; - private NetworkWriter m_LocalTransformWriter; - - public enum TransformSyncMode - { - SyncNone, - SyncTransform, - SyncRigidbody3D, - SyncCharacterController - } + private QSBNetworkWriter m_LocalTransformWriter; public enum AxisSyncMode { @@ -1224,7 +561,5 @@ public enum CompressionSyncMode } public delegate bool ClientMoveCallback3D(ref Vector3 position, ref Vector3 velocity, ref Quaternion rotation); - - public delegate bool ClientMoveCallback2D(ref Vector2 position, ref Vector2 velocity, ref float rotation); } } diff --git a/QSB/QuantumUNET/QSBNetworkWriter.cs b/QSB/QuantumUNET/QSBNetworkWriter.cs new file mode 100644 index 000000000..2ac7b115f --- /dev/null +++ b/QSB/QuantumUNET/QSBNetworkWriter.cs @@ -0,0 +1,541 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBNetworkWriter + { + public QSBNetworkWriter() + { + this.m_Buffer = new QSBNetBuffer(); + if (s_Encoding == null) + { + s_Encoding = new UTF8Encoding(); + s_StringWriteBuffer = new byte[32768]; + } + } + + public QSBNetworkWriter(byte[] buffer) + { + this.m_Buffer = new QSBNetBuffer(buffer); + if (s_Encoding == null) + { + s_Encoding = new UTF8Encoding(); + s_StringWriteBuffer = new byte[32768]; + } + } + + public short Position + { + get + { + return (short)this.m_Buffer.Position; + } + } + + public byte[] ToArray() + { + byte[] array = new byte[this.m_Buffer.AsArraySegment().Count]; + Array.Copy(this.m_Buffer.AsArraySegment().Array, array, this.m_Buffer.AsArraySegment().Count); + return array; + } + + public byte[] AsArray() + { + return this.AsArraySegment().Array; + } + + internal ArraySegment AsArraySegment() + { + return this.m_Buffer.AsArraySegment(); + } + + public void WritePackedUInt32(uint value) + { + if (value <= 240U) + { + this.Write((byte)value); + } + else if (value <= 2287U) + { + this.Write((byte)((value - 240U) / 256U + 241U)); + this.Write((byte)((value - 240U) % 256U)); + } + else if (value <= 67823U) + { + this.Write(249); + this.Write((byte)((value - 2288U) / 256U)); + this.Write((byte)((value - 2288U) % 256U)); + } + else if (value <= 16777215U) + { + this.Write(250); + this.Write((byte)(value & 255U)); + this.Write((byte)(value >> 8 & 255U)); + this.Write((byte)(value >> 16 & 255U)); + } + else + { + this.Write(251); + this.Write((byte)(value & 255U)); + this.Write((byte)(value >> 8 & 255U)); + this.Write((byte)(value >> 16 & 255U)); + this.Write((byte)(value >> 24 & 255U)); + } + } + + public void WritePackedUInt64(ulong value) + { + if (value <= 240UL) + { + this.Write((byte)value); + } + else if (value <= 2287UL) + { + this.Write((byte)((value - 240UL) / 256UL + 241UL)); + this.Write((byte)((value - 240UL) % 256UL)); + } + else if (value <= 67823UL) + { + this.Write(249); + this.Write((byte)((value - 2288UL) / 256UL)); + this.Write((byte)((value - 2288UL) % 256UL)); + } + else if (value <= 16777215UL) + { + this.Write(250); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + } + else if (value <= uint.MaxValue) + { + this.Write(251); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + } + else if (value <= 1099511627775UL) + { + this.Write(252); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + } + else if (value <= 281474976710655UL) + { + this.Write(253); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + this.Write((byte)(value >> 40 & 255UL)); + } + else if (value <= 72057594037927935UL) + { + this.Write(254); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + this.Write((byte)(value >> 40 & 255UL)); + this.Write((byte)(value >> 48 & 255UL)); + } + else + { + this.Write(byte.MaxValue); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + this.Write((byte)(value >> 40 & 255UL)); + this.Write((byte)(value >> 48 & 255UL)); + this.Write((byte)(value >> 56 & 255UL)); + } + } + + public void Write(NetworkInstanceId value) + { + this.WritePackedUInt32(value.Value); + } + + public void Write(NetworkSceneId value) + { + this.WritePackedUInt32(value.Value); + } + + public void Write(char value) + { + this.m_Buffer.WriteByte((byte)value); + } + + public void Write(byte value) + { + this.m_Buffer.WriteByte(value); + } + + public void Write(sbyte value) + { + this.m_Buffer.WriteByte((byte)value); + } + + public void Write(short value) + { + this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); + } + + public void Write(ushort value) + { + this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); + } + + public void Write(int value) + { + this.m_Buffer.WriteByte4((byte)(value & 255), (byte)(value >> 8 & 255), (byte)(value >> 16 & 255), (byte)(value >> 24 & 255)); + } + + public void Write(uint value) + { + this.m_Buffer.WriteByte4((byte)(value & 255U), (byte)(value >> 8 & 255U), (byte)(value >> 16 & 255U), (byte)(value >> 24 & 255U)); + } + + public void Write(long value) + { + this.m_Buffer.WriteByte8((byte)(value & 255L), (byte)(value >> 8 & 255L), (byte)(value >> 16 & 255L), (byte)(value >> 24 & 255L), (byte)(value >> 32 & 255L), (byte)(value >> 40 & 255L), (byte)(value >> 48 & 255L), (byte)(value >> 56 & 255L)); + } + + public void Write(ulong value) + { + this.m_Buffer.WriteByte8((byte)(value & 255UL), (byte)(value >> 8 & 255UL), (byte)(value >> 16 & 255UL), (byte)(value >> 24 & 255UL), (byte)(value >> 32 & 255UL), (byte)(value >> 40 & 255UL), (byte)(value >> 48 & 255UL), (byte)(value >> 56 & 255UL)); + } + + public void Write(float value) + { + s_FloatConverter.floatValue = value; + this.Write(s_FloatConverter.intValue); + } + + public void Write(double value) + { + s_FloatConverter.doubleValue = value; + this.Write(s_FloatConverter.longValue); + } + + public void Write(decimal value) + { + int[] bits = decimal.GetBits(value); + this.Write(bits[0]); + this.Write(bits[1]); + this.Write(bits[2]); + this.Write(bits[3]); + } + + public void Write(string value) + { + if (value == null) + { + this.m_Buffer.WriteByte2(0, 0); + } + else + { + int byteCount = s_Encoding.GetByteCount(value); + if (byteCount >= 32768) + { + throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length); + } + this.Write((ushort)byteCount); + int bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); + this.m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); + } + } + + public void Write(bool value) + { + if (value) + { + this.m_Buffer.WriteByte(1); + } + else + { + this.m_Buffer.WriteByte(0); + } + } + + public void Write(byte[] buffer, int count) + { + if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.m_Buffer.WriteBytes(buffer, (ushort)count); + } + } + + public void Write(byte[] buffer, int offset, int count) + { + if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); + } + } + + public void WriteBytesAndSize(byte[] buffer, int count) + { + if (buffer == null || count == 0) + { + this.Write(0); + } + else if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.Write((ushort)count); + this.m_Buffer.WriteBytes(buffer, (ushort)count); + } + } + + public void WriteBytesFull(byte[] buffer) + { + if (buffer == null) + { + this.Write(0); + } + else if (buffer.Length > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.Write((ushort)buffer.Length); + this.m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); + } + } + + public void Write(Vector2 value) + { + this.Write(value.x); + this.Write(value.y); + } + + public void Write(Vector3 value) + { + this.Write(value.x); + this.Write(value.y); + this.Write(value.z); + } + + public void Write(Vector4 value) + { + this.Write(value.x); + this.Write(value.y); + this.Write(value.z); + this.Write(value.w); + } + + public void Write(Color value) + { + this.Write(value.r); + this.Write(value.g); + this.Write(value.b); + this.Write(value.a); + } + + public void Write(Color32 value) + { + this.Write(value.r); + this.Write(value.g); + this.Write(value.b); + this.Write(value.a); + } + + public void Write(Quaternion value) + { + this.Write(value.x); + this.Write(value.y); + this.Write(value.z); + this.Write(value.w); + } + + public void Write(Rect value) + { + this.Write(value.xMin); + this.Write(value.yMin); + this.Write(value.width); + this.Write(value.height); + } + + public void Write(Plane value) + { + this.Write(value.normal); + this.Write(value.distance); + } + + public void Write(Ray value) + { + this.Write(value.direction); + this.Write(value.origin); + } + + public void Write(Matrix4x4 value) + { + this.Write(value.m00); + this.Write(value.m01); + this.Write(value.m02); + this.Write(value.m03); + this.Write(value.m10); + this.Write(value.m11); + this.Write(value.m12); + this.Write(value.m13); + this.Write(value.m20); + this.Write(value.m21); + this.Write(value.m22); + this.Write(value.m23); + this.Write(value.m30); + this.Write(value.m31); + this.Write(value.m32); + this.Write(value.m33); + } + + public void Write(NetworkHash128 value) + { + this.Write(value.i0); + this.Write(value.i1); + this.Write(value.i2); + this.Write(value.i3); + this.Write(value.i4); + this.Write(value.i5); + this.Write(value.i6); + this.Write(value.i7); + this.Write(value.i8); + this.Write(value.i9); + this.Write(value.i10); + this.Write(value.i11); + this.Write(value.i12); + this.Write(value.i13); + this.Write(value.i14); + this.Write(value.i15); + } + + public void Write(NetworkIdentity value) + { + if (value == null) + { + this.WritePackedUInt32(0U); + } + else + { + this.Write(value.netId); + } + } + + public void Write(Transform value) + { + if (value == null || value.gameObject == null) + { + this.WritePackedUInt32(0U); + } + else + { + NetworkIdentity component = value.gameObject.GetComponent(); + if (component != null) + { + this.Write(component.netId); + } + else + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + } + this.WritePackedUInt32(0U); + } + } + } + + public void Write(GameObject value) + { + if (value == null) + { + this.WritePackedUInt32(0U); + } + else + { + QSBNetworkIdentity component = value.GetComponent(); + if (component != null) + { + this.Write(component.NetId); + } + else + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + } + this.WritePackedUInt32(0U); + } + } + } + + public void Write(QSBMessageBase msg) + { + msg.Serialize(this); + } + + public void SeekZero() + { + this.m_Buffer.SeekZero(); + } + + public void StartMessage(short msgType) + { + this.SeekZero(); + this.m_Buffer.WriteByte2(0, 0); + this.Write(msgType); + } + + public void FinishMessage() + { + this.m_Buffer.FinishMessage(); + } + + private const int k_MaxStringLength = 32768; + + private QSBNetBuffer m_Buffer; + + private static Encoding s_Encoding; + + private static byte[] s_StringWriteBuffer; + + private static QSBUIntFloat s_FloatConverter; + } +} diff --git a/QSB/QuantumUNET/QSBNotReadyMessage.cs b/QSB/QuantumUNET/QSBNotReadyMessage.cs new file mode 100644 index 000000000..093ca57ab --- /dev/null +++ b/QSB/QuantumUNET/QSBNotReadyMessage.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.QuantumUNET +{ + public class QSBNotReadyMessage : QSBEmptyMessage + { + } +} diff --git a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs index d873d1cac..f4aefd3f6 100644 --- a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs +++ b/QSB/QuantumUNET/QSBObjectDestroyMessage.cs @@ -2,16 +2,16 @@ namespace QSB.QuantumUNET { - internal class QSBObjectDestroyMessage : MessageBase + internal class QSBObjectDestroyMessage : QSBMessageBase { public NetworkInstanceId NetId; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); } diff --git a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs index adc1789fa..e893ffd69 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -2,16 +2,16 @@ namespace QSB.QuantumUNET { - internal class QSBObjectSpawnFinishedMessage : MessageBase + internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { public uint State; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { State = reader.ReadPackedUInt32(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.WritePackedUInt32(State); } diff --git a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs index 18bed6cb2..fa077d43c 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnMessage.cs @@ -3,7 +3,7 @@ namespace QSB.QuantumUNET { - internal class QSBObjectSpawnMessage : MessageBase + internal class QSBObjectSpawnMessage : QSBMessageBase { public NetworkInstanceId NetId; public NetworkHash128 assetId; @@ -11,7 +11,7 @@ internal class QSBObjectSpawnMessage : MessageBase public byte[] Payload; public Quaternion Rotation; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); assetId = reader.ReadNetworkHash128(); @@ -23,7 +23,7 @@ public override void Deserialize(NetworkReader reader) } } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); writer.Write(assetId); diff --git a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs index 582e75fe3..99b4a6cad 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs @@ -3,14 +3,14 @@ namespace QSB.QuantumUNET { - internal class QSBObjectSpawnSceneMessage : MessageBase + internal class QSBObjectSpawnSceneMessage : QSBMessageBase { public NetworkInstanceId NetId; public NetworkSceneId SceneId; public Vector3 Position; public byte[] Payload; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); SceneId = reader.ReadSceneId(); @@ -18,7 +18,7 @@ public override void Deserialize(NetworkReader reader) Payload = reader.ReadBytesAndSize(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); writer.Write(SceneId); diff --git a/QSB/QuantumUNET/QSBOwnerMessage.cs b/QSB/QuantumUNET/QSBOwnerMessage.cs index 8b5053713..4a0810308 100644 --- a/QSB/QuantumUNET/QSBOwnerMessage.cs +++ b/QSB/QuantumUNET/QSBOwnerMessage.cs @@ -2,18 +2,18 @@ namespace QSB.QuantumUNET { - internal class QSBOwnerMessage : MessageBase + internal class QSBOwnerMessage : QSBMessageBase { public NetworkInstanceId NetId; public short PlayerControllerId; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); PlayerControllerId = (short)reader.ReadPackedUInt32(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); writer.WritePackedUInt32((uint)PlayerControllerId); diff --git a/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs b/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs new file mode 100644 index 000000000..8836bd1d1 --- /dev/null +++ b/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBPeerAuthorityMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.connectionId = (int)reader.ReadPackedUInt32(); + this.netId = reader.ReadNetworkId(); + this.authorityState = reader.ReadBoolean(); + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32((uint)this.connectionId); + writer.Write(this.netId); + writer.Write(this.authorityState); + } + + public int connectionId; + + public NetworkInstanceId netId; + + public bool authorityState; + } +} diff --git a/QSB/QuantumUNET/QSBPeerInfoMessage.cs b/QSB/QuantumUNET/QSBPeerInfoMessage.cs new file mode 100644 index 000000000..45a3ba387 --- /dev/null +++ b/QSB/QuantumUNET/QSBPeerInfoMessage.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBPeerInfoMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.connectionId = (int)reader.ReadPackedUInt32(); + this.address = reader.ReadString(); + this.port = (int)reader.ReadPackedUInt32(); + this.isHost = reader.ReadBoolean(); + this.isYou = reader.ReadBoolean(); + uint num = reader.ReadPackedUInt32(); + if (num > 0U) + { + List list = new List(); + for (uint num2 = 0U; num2 < num; num2 += 1U) + { + QSBPeerInfoPlayer item; + item.netId = reader.ReadNetworkId(); + item.playerControllerId = (short)reader.ReadPackedUInt32(); + list.Add(item); + } + this.playerIds = list.ToArray(); + } + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32((uint)this.connectionId); + writer.Write(this.address); + writer.WritePackedUInt32((uint)this.port); + writer.Write(this.isHost); + writer.Write(this.isYou); + if (this.playerIds == null) + { + writer.WritePackedUInt32(0U); + } + else + { + writer.WritePackedUInt32((uint)this.playerIds.Length); + for (int i = 0; i < this.playerIds.Length; i++) + { + writer.Write(this.playerIds[i].netId); + writer.WritePackedUInt32((uint)this.playerIds[i].playerControllerId); + } + } + } + + public override string ToString() + { + return string.Concat(new object[] + { + "PeerInfo conn:", + this.connectionId, + " addr:", + this.address, + ":", + this.port, + " host:", + this.isHost, + " isYou:", + this.isYou + }); + } + + public int connectionId; + + public string address; + + public int port; + + public bool isHost; + + public bool isYou; + + public QSBPeerInfoPlayer[] playerIds; + } +} diff --git a/QSB/QuantumUNET/QSBPeerInfoPlayer.cs b/QSB/QuantumUNET/QSBPeerInfoPlayer.cs new file mode 100644 index 000000000..3fe1256cb --- /dev/null +++ b/QSB/QuantumUNET/QSBPeerInfoPlayer.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public struct QSBPeerInfoPlayer + { + public NetworkInstanceId netId; + + public short playerControllerId; + } +} diff --git a/QSB/QuantumUNET/QSBPeerListMessage.cs b/QSB/QuantumUNET/QSBPeerListMessage.cs new file mode 100644 index 000000000..86f20a8f0 --- /dev/null +++ b/QSB/QuantumUNET/QSBPeerListMessage.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBPeerListMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.oldServerConnectionId = (int)reader.ReadPackedUInt32(); + int num = (int)reader.ReadUInt16(); + this.peers = new QSBPeerInfoMessage[num]; + for (int i = 0; i < this.peers.Length; i++) + { + QSBPeerInfoMessage peerInfoMessage = new QSBPeerInfoMessage(); + peerInfoMessage.Deserialize(reader); + this.peers[i] = peerInfoMessage; + } + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32((uint)this.oldServerConnectionId); + writer.Write((ushort)this.peers.Length); + for (int i = 0; i < this.peers.Length; i++) + { + this.peers[i].Serialize(writer); + } + } + + public QSBPeerInfoMessage[] peers; + + public int oldServerConnectionId; + } +} diff --git a/QSB/QuantumUNET/QSBReadyMessage.cs b/QSB/QuantumUNET/QSBReadyMessage.cs new file mode 100644 index 000000000..03440c05d --- /dev/null +++ b/QSB/QuantumUNET/QSBReadyMessage.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.QuantumUNET +{ + public class QSBReadyMessage : QSBEmptyMessage + { + } +} diff --git a/QSB/QuantumUNET/QSBReconnectMessage.cs b/QSB/QuantumUNET/QSBReconnectMessage.cs new file mode 100644 index 000000000..6afe4d7e4 --- /dev/null +++ b/QSB/QuantumUNET/QSBReconnectMessage.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBReconnectMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.oldConnectionId = (int)reader.ReadPackedUInt32(); + this.playerControllerId = (short)reader.ReadPackedUInt32(); + this.netId = reader.ReadNetworkId(); + this.msgData = reader.ReadBytesAndSize(); + this.msgSize = this.msgData.Length; + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32((uint)this.oldConnectionId); + writer.WritePackedUInt32((uint)this.playerControllerId); + writer.Write(this.netId); + writer.WriteBytesAndSize(this.msgData, this.msgSize); + } + + public int oldConnectionId; + + public short playerControllerId; + + public NetworkInstanceId netId; + + public int msgSize; + + public byte[] msgData; + } +} diff --git a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs index 46b74f65b..f988f0bec 100644 --- a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs @@ -2,16 +2,16 @@ namespace QSB.QuantumUNET { - public class QSBRemovePlayerMessage : MessageBase + public class QSBRemovePlayerMessage : QSBMessageBase { public short PlayerControllerId; - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { PlayerControllerId = (short)reader.ReadUInt16(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { writer.Write((ushort)PlayerControllerId); } diff --git a/QSB/QuantumUNET/QSBStringMessage.cs b/QSB/QuantumUNET/QSBStringMessage.cs new file mode 100644 index 000000000..a8d37e85b --- /dev/null +++ b/QSB/QuantumUNET/QSBStringMessage.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.Networking; + +namespace QSB.QuantumUNET +{ + public class QSBStringMessage : QSBMessageBase + { + public QSBStringMessage() + { + } + + public QSBStringMessage(string v) + { + this.value = v; + } + + public override void Deserialize(QSBNetworkReader reader) + { + this.value = reader.ReadString(); + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(this.value); + } + + public string value; + } +} diff --git a/QSB/QuantumUNET/QSBUIntDecimal.cs b/QSB/QuantumUNET/QSBUIntDecimal.cs new file mode 100644 index 000000000..4ae451545 --- /dev/null +++ b/QSB/QuantumUNET/QSBUIntDecimal.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.QuantumUNET +{ + internal struct QSBUIntDecimal + { + public ulong longValue1; + + public ulong longValue2; + + public decimal decimalValue; + } +} diff --git a/QSB/QuantumUNET/QSBUIntFloat.cs b/QSB/QuantumUNET/QSBUIntFloat.cs new file mode 100644 index 000000000..b0d9e295b --- /dev/null +++ b/QSB/QuantumUNET/QSBUIntFloat.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.QuantumUNET +{ + internal struct QSBUIntFloat + { + public float floatValue; + + public uint intValue; + + public double doubleValue; + + public ulong longValue; + } +} diff --git a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs index 0595f4208..40afb84eb 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs @@ -18,19 +18,19 @@ public QSBLocalClient localClient } } - public override bool Send(short msgType, MessageBase msg) + public override bool Send(short msgType, QSBMessageBase msg) { m_LocalClient.InvokeHandlerOnClient(msgType, msg, 0); return true; } - public override bool SendUnreliable(short msgType, MessageBase msg) + public override bool SendUnreliable(short msgType, QSBMessageBase msg) { m_LocalClient.InvokeHandlerOnClient(msgType, msg, 1); return true; } - public override bool SendByChannel(short msgType, MessageBase msg, int channelId) + public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) { m_LocalClient.InvokeHandlerOnClient(msgType, msg, channelId); return true; @@ -42,7 +42,7 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) return true; } - public override bool SendWriter(NetworkWriter writer, int channelId) + public override bool SendWriter(QSBNetworkWriter writer, int channelId) { m_LocalClient.InvokeBytesOnClient(writer.AsArray(), channelId); return true; diff --git a/QSB/QuantumUNET/QSBULocalConnectionToServer.cs b/QSB/QuantumUNET/QSBULocalConnectionToServer.cs index a1c56956c..9bf4bedb0 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToServer.cs @@ -11,17 +11,17 @@ public QSBULocalConnectionToServer(QSBNetworkServer localServer) m_LocalServer = localServer; } - public override bool Send(short msgType, MessageBase msg) + public override bool Send(short msgType, QSBMessageBase msg) { return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); } - public override bool SendUnreliable(short msgType, MessageBase msg) + public override bool SendUnreliable(short msgType, QSBMessageBase msg) { return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); } - public override bool SendByChannel(short msgType, MessageBase msg, int channelId) + public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) { return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); } @@ -44,7 +44,7 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) return result; } - public override bool SendWriter(NetworkWriter writer, int channelId) + public override bool SendWriter(QSBNetworkWriter writer, int channelId) { return m_LocalServer.InvokeBytes(this, writer.AsArray(), (int)((short)writer.AsArray().Length), channelId); } diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 8f31071a4..f7d36dd24 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.TimeSync.Events @@ -8,14 +9,14 @@ public class ServerTimeMessage : PlayerMessage public float ServerTime { get; set; } public int LoopCount { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); ServerTime = reader.ReadSingle(); LoopCount = reader.ReadInt16(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(ServerTime); diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index c3fba654f..8c04a187d 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,4 +1,5 @@ -using UnityEngine.Networking; +using QSB.QuantumUNET; +using UnityEngine.Networking; namespace QSB.WorldSync.Events { @@ -6,13 +7,13 @@ public class BoolWorldObjectMessage : WorldObjectMessage { public bool State { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); State = reader.ReadBoolean(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(State); diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index e86442178..384509008 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,4 +1,5 @@ using QSB.Messaging; +using QSB.QuantumUNET; using UnityEngine.Networking; namespace QSB.WorldSync.Events @@ -7,13 +8,13 @@ public class WorldObjectMessage : PlayerMessage { public int ObjectId { get; set; } - public override void Deserialize(NetworkReader reader) + public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); ObjectId = reader.ReadInt32(); } - public override void Serialize(NetworkWriter writer) + public override void Serialize(QSBNetworkWriter writer) { base.Serialize(writer); writer.Write(ObjectId); From b9281e05d3fc21e6f2a7cbcd5fcd9b682da6e70c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 09:29:23 +0000 Subject: [PATCH 113/207] codemaid cleanup --- QSB/Animation/QSBNetworkAnimator.cs | 1 - .../Events/ConversationMessage.cs | 1 - .../Events/ConversationStartEndMessage.cs | 1 - QSB/MessagesCore/EnumMessage.cs | 1 - QSB/MessagesCore/FloatMessage.cs | 1 - QSB/MessagesCore/PlayerMessage.cs | 1 - QSB/MessagesCore/ToggleMessage.cs | 1 - QSB/Player/Events/PlayerJoinMessage.cs | 1 - QSB/Player/Events/PlayerLeaveMessage.cs | 1 - QSB/Player/Events/PlayerStateMessage.cs | 1 - QSB/QuantumUNET/QSBAddPlayerMessage.cs | 12 ++---- QSB/QuantumUNET/QSBCRCMessage.cs | 4 +- QSB/QuantumUNET/QSBClientScene.cs | 1 - QSB/QuantumUNET/QSBEmptyMessage.cs | 10 +---- QSB/QuantumUNET/QSBErrorMessage.cs | 10 +---- QSB/QuantumUNET/QSBFloatConversion.cs | 9 +--- QSB/QuantumUNET/QSBLocalClient.cs | 1 - QSB/QuantumUNET/QSBMessageBase.cs | 10 +---- QSB/QuantumUNET/QSBNetworkBehaviour.cs | 43 +++++++++++++++---- QSB/QuantumUNET/QSBNetworkManagerUNET.cs | 1 - QSB/QuantumUNET/QSBNetworkMessage.cs | 1 - QSB/QuantumUNET/QSBNetworkMigrationManager.cs | 1 - QSB/QuantumUNET/QSBNetworkReader.cs | 4 +- QSB/QuantumUNET/QSBNetworkScene.cs | 3 +- QSB/QuantumUNET/QSBNetworkServer.cs | 1 - QSB/QuantumUNET/QSBNetworkTransform.cs | 30 ++++++++++--- QSB/QuantumUNET/QSBNetworkWriter.cs | 4 +- QSB/QuantumUNET/QSBNotReadyMessage.cs | 9 +--- .../QSBObjectSpawnFinishedMessage.cs | 4 +- QSB/QuantumUNET/QSBPeerAuthorityMessage.cs | 8 +--- QSB/QuantumUNET/QSBPeerInfoMessage.cs | 8 +--- QSB/QuantumUNET/QSBPeerInfoPlayer.cs | 8 +--- QSB/QuantumUNET/QSBPeerListMessage.cs | 10 +---- QSB/QuantumUNET/QSBReadyMessage.cs | 9 +--- QSB/QuantumUNET/QSBReconnectMessage.cs | 8 +--- QSB/QuantumUNET/QSBRemovePlayerMessage.cs | 4 +- QSB/QuantumUNET/QSBStringMessage.cs | 10 +---- QSB/QuantumUNET/QSBUIntDecimal.cs | 9 +--- QSB/QuantumUNET/QSBUIntFloat.cs | 9 +--- .../QSBULocalConnectionToClient.cs | 4 +- QSB/QuantumUNET/QSBUtility.cs | 5 +-- QSB/TimeSync/Events/ServerTimeMessage.cs | 1 - .../Events/BoolWorldObjectMessage.cs | 1 - QSB/WorldSync/Events/WorldObjectMessage.cs | 1 - 44 files changed, 100 insertions(+), 163 deletions(-) diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QSB/Animation/QSBNetworkAnimator.cs index a6806160f..868452723 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QSB/Animation/QSBNetworkAnimator.cs @@ -1,7 +1,6 @@ using QSB.Animation.Events; using QSB.QuantumUNET; using UnityEngine; -using UnityEngine.Networking; namespace QSB.Animation { diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 87716606c..c41c0c8aa 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.ConversationSync.Events { diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index b0b1d823c..8b1175694 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.ConversationSync.Events { diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index bcc7d9b35..1a009f745 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.MessagesCore { diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/MessagesCore/FloatMessage.cs index 70b353344..46bab71c7 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.MessagesCore { diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 858ddc331..83e611cd0 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -1,5 +1,4 @@ using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.Messaging { diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs index 895df45a2..538c73e79 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/MessagesCore/ToggleMessage.cs @@ -1,5 +1,4 @@ using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.Messaging { diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 82257f9e2..21b79d0cb 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.Player.Events { diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs index 89e571a49..b05b6cb20 100644 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -2,7 +2,6 @@ using QSB.QuantumUNET; using System; using System.Linq; -using UnityEngine.Networking; namespace QSB.Player.Events { diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 7f784da0a..719f4ca7e 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.Player.Events { diff --git a/QSB/QuantumUNET/QSBAddPlayerMessage.cs b/QSB/QuantumUNET/QSBAddPlayerMessage.cs index a6b919b3f..adf7bbead 100644 --- a/QSB/QuantumUNET/QSBAddPlayerMessage.cs +++ b/QSB/QuantumUNET/QSBAddPlayerMessage.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { - class QSBAddPlayerMessage : QSBMessageBase + internal class QSBAddPlayerMessage : QSBMessageBase { public override void Deserialize(QSBNetworkReader reader) { @@ -34,4 +28,4 @@ public override void Serialize(QSBNetworkWriter writer) public byte[] msgData; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBCRCMessage.cs b/QSB/QuantumUNET/QSBCRCMessage.cs index 02277a16b..d551a15ec 100644 --- a/QSB/QuantumUNET/QSBCRCMessage.cs +++ b/QSB/QuantumUNET/QSBCRCMessage.cs @@ -1,6 +1,4 @@ -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { internal class QSBCRCMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBClientScene.cs b/QSB/QuantumUNET/QSBClientScene.cs index 4eed6e954..8457f117e 100644 --- a/QSB/QuantumUNET/QSBClientScene.cs +++ b/QSB/QuantumUNET/QSBClientScene.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; -using UnityEngine.Networking.NetworkSystem; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBEmptyMessage.cs b/QSB/QuantumUNET/QSBEmptyMessage.cs index 646f07ba1..6a1c0bc82 100644 --- a/QSB/QuantumUNET/QSBEmptyMessage.cs +++ b/QSB/QuantumUNET/QSBEmptyMessage.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBEmptyMessage : QSBMessageBase { @@ -16,4 +10,4 @@ public override void Serialize(QSBNetworkWriter writer) { } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBErrorMessage.cs b/QSB/QuantumUNET/QSBErrorMessage.cs index 387987adc..9169152f7 100644 --- a/QSB/QuantumUNET/QSBErrorMessage.cs +++ b/QSB/QuantumUNET/QSBErrorMessage.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBErrorMessage : QSBMessageBase { @@ -20,4 +14,4 @@ public override void Serialize(QSBNetworkWriter writer) public int errorCode; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBFloatConversion.cs b/QSB/QuantumUNET/QSBFloatConversion.cs index 81a8e02d0..e4019b089 100644 --- a/QSB/QuantumUNET/QSBFloatConversion.cs +++ b/QSB/QuantumUNET/QSBFloatConversion.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { internal class QSBFloatConversion { @@ -29,4 +24,4 @@ public static decimal ToDecimal(ulong value1, ulong value2) return uintDecimal.decimalValue; } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs index d0f56e751..5f51b796e 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using UnityEngine; -using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBMessageBase.cs b/QSB/QuantumUNET/QSBMessageBase.cs index 5e52ed5f0..7ec1a3e3d 100644 --- a/QSB/QuantumUNET/QSBMessageBase.cs +++ b/QSB/QuantumUNET/QSBMessageBase.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public abstract class QSBMessageBase { @@ -16,4 +10,4 @@ public virtual void Serialize(QSBNetworkWriter writer) { } } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkBehaviour.cs b/QSB/QuantumUNET/QSBNetworkBehaviour.cs index f650af6b8..9b5c6db0f 100644 --- a/QSB/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QSB/QuantumUNET/QSBNetworkBehaviour.cs @@ -520,17 +520,44 @@ public virtual void OnDeserialize(QSBNetworkReader reader, bool initialState) } } - public virtual void PreStartClient() { } - public virtual void OnNetworkDestroy() { } - public virtual void OnStartServer() { } - public virtual void OnStartClient() { } - public virtual void OnStartLocalPlayer() { } - public virtual void OnStartAuthority() { } - public virtual void OnStopAuthority() { } + public virtual void PreStartClient() + { + } + + public virtual void OnNetworkDestroy() + { + } + + public virtual void OnStartServer() + { + } + + public virtual void OnStartClient() + { + } + + public virtual void OnStartLocalPlayer() + { + } + + public virtual void OnStartAuthority() + { + } + + public virtual void OnStopAuthority() + { + } + public virtual bool OnRebuildObservers(HashSet observers, bool initialize) => false; - public virtual void OnSetLocalVisibility(bool vis) { } + + public virtual void OnSetLocalVisibility(bool vis) + { + } + public virtual bool OnCheckObserver(QSBNetworkConnection conn) => true; + public virtual int GetNetworkChannel() => 0; + public virtual float GetNetworkSendInterval() => 0.1f; private float m_LastSendTime; diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs index 4d7831d54..d64287f66 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -6,7 +6,6 @@ using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; -using UnityEngine.Networking.NetworkSystem; using UnityEngine.Networking.Types; using UnityEngine.SceneManagement; diff --git a/QSB/QuantumUNET/QSBNetworkMessage.cs b/QSB/QuantumUNET/QSBNetworkMessage.cs index e4bf47d7f..db5d7a4cd 100644 --- a/QSB/QuantumUNET/QSBNetworkMessage.cs +++ b/QSB/QuantumUNET/QSBNetworkMessage.cs @@ -1,5 +1,4 @@ using System; -using UnityEngine.Networking; namespace QSB.QuantumUNET { diff --git a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs index 614e5672f..8988f73d4 100644 --- a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QSB/QuantumUNET/QSBNetworkMigrationManager.cs @@ -2,7 +2,6 @@ using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; -using UnityEngine.Networking.NetworkSystem; using UnityEngine.Networking.Types; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBNetworkReader.cs b/QSB/QuantumUNET/QSBNetworkReader.cs index a519c99ad..533712b9a 100644 --- a/QSB/QuantumUNET/QSBNetworkReader.cs +++ b/QSB/QuantumUNET/QSBNetworkReader.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Text; using UnityEngine; using UnityEngine.Networking; @@ -565,4 +563,4 @@ public override string ToString() private static Encoding s_Encoding; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkScene.cs b/QSB/QuantumUNET/QSBNetworkScene.cs index 328cf12f9..457e1cf86 100644 --- a/QSB/QuantumUNET/QSBNetworkScene.cs +++ b/QSB/QuantumUNET/QSBNetworkScene.cs @@ -1,5 +1,4 @@ -using QSB.Utility; -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index 6b960dcfd..375990bc3 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -7,7 +7,6 @@ using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; -using UnityEngine.Networking.NetworkSystem; using UnityEngine.Networking.Types; namespace QSB.QuantumUNET diff --git a/QSB/QuantumUNET/QSBNetworkTransform.cs b/QSB/QuantumUNET/QSBNetworkTransform.cs index efbf316c4..00b1b8493 100644 --- a/QSB/QuantumUNET/QSBNetworkTransform.cs +++ b/QSB/QuantumUNET/QSBNetworkTransform.cs @@ -1,8 +1,4 @@ using QSB.Utility; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using UnityEngine; using UnityEngine.Networking; @@ -369,24 +365,30 @@ public static void SerializeRotation3D(QSBNetworkWriter writer, Quaternion rot, case AxisSyncMode.AxisX: WriteAngle(writer, rot.eulerAngles.x, compression); break; + case AxisSyncMode.AxisY: WriteAngle(writer, rot.eulerAngles.y, compression); break; + case AxisSyncMode.AxisZ: WriteAngle(writer, rot.eulerAngles.z, compression); break; + case AxisSyncMode.AxisXY: WriteAngle(writer, rot.eulerAngles.x, compression); WriteAngle(writer, rot.eulerAngles.y, compression); break; + case AxisSyncMode.AxisXZ: WriteAngle(writer, rot.eulerAngles.x, compression); WriteAngle(writer, rot.eulerAngles.z, compression); break; + case AxisSyncMode.AxisYZ: WriteAngle(writer, rot.eulerAngles.y, compression); WriteAngle(writer, rot.eulerAngles.z, compression); break; + case AxisSyncMode.AxisXYZ: WriteAngle(writer, rot.eulerAngles.x, compression); WriteAngle(writer, rot.eulerAngles.y, compression); @@ -402,24 +404,30 @@ public static void SerializeSpin3D(QSBNetworkWriter writer, Vector3 angularVeloc case AxisSyncMode.AxisX: WriteAngle(writer, angularVelocity.x, compression); break; + case AxisSyncMode.AxisY: WriteAngle(writer, angularVelocity.y, compression); break; + case AxisSyncMode.AxisZ: WriteAngle(writer, angularVelocity.z, compression); break; + case AxisSyncMode.AxisXY: WriteAngle(writer, angularVelocity.x, compression); WriteAngle(writer, angularVelocity.y, compression); break; + case AxisSyncMode.AxisXZ: WriteAngle(writer, angularVelocity.x, compression); WriteAngle(writer, angularVelocity.z, compression); break; + case AxisSyncMode.AxisYZ: WriteAngle(writer, angularVelocity.y, compression); WriteAngle(writer, angularVelocity.z, compression); break; + case AxisSyncMode.AxisXYZ: WriteAngle(writer, angularVelocity.x, compression); WriteAngle(writer, angularVelocity.y, compression); @@ -443,26 +451,32 @@ public static Quaternion UnserializeRotation3D(QSBNetworkReader reader, AxisSync zero.Set(ReadAngle(reader, compression), 0f, 0f); identity.eulerAngles = zero; break; + case AxisSyncMode.AxisY: zero.Set(0f, ReadAngle(reader, compression), 0f); identity.eulerAngles = zero; break; + case AxisSyncMode.AxisZ: zero.Set(0f, 0f, ReadAngle(reader, compression)); identity.eulerAngles = zero; break; + case AxisSyncMode.AxisXY: zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), 0f); identity.eulerAngles = zero; break; + case AxisSyncMode.AxisXZ: zero.Set(ReadAngle(reader, compression), 0f, ReadAngle(reader, compression)); identity.eulerAngles = zero; break; + case AxisSyncMode.AxisYZ: zero.Set(0f, ReadAngle(reader, compression), ReadAngle(reader, compression)); identity.eulerAngles = zero; break; + case AxisSyncMode.AxisXYZ: zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), ReadAngle(reader, compression)); identity.eulerAngles = zero; @@ -479,21 +493,27 @@ public static Vector3 UnserializeSpin3D(QSBNetworkReader reader, AxisSyncMode mo case AxisSyncMode.AxisX: zero.Set(ReadAngle(reader, compression), 0f, 0f); break; + case AxisSyncMode.AxisY: zero.Set(0f, ReadAngle(reader, compression), 0f); break; + case AxisSyncMode.AxisZ: zero.Set(0f, 0f, ReadAngle(reader, compression)); break; + case AxisSyncMode.AxisXY: zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), 0f); break; + case AxisSyncMode.AxisXZ: zero.Set(ReadAngle(reader, compression), 0f, ReadAngle(reader, compression)); break; + case AxisSyncMode.AxisYZ: zero.Set(0f, ReadAngle(reader, compression), ReadAngle(reader, compression)); break; + case AxisSyncMode.AxisXYZ: zero.Set(ReadAngle(reader, compression), ReadAngle(reader, compression), ReadAngle(reader, compression)); break; @@ -562,4 +582,4 @@ public enum CompressionSyncMode public delegate bool ClientMoveCallback3D(ref Vector3 position, ref Vector3 velocity, ref Quaternion rotation); } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkWriter.cs b/QSB/QuantumUNET/QSBNetworkWriter.cs index 2ac7b115f..3b5f11b31 100644 --- a/QSB/QuantumUNET/QSBNetworkWriter.cs +++ b/QSB/QuantumUNET/QSBNetworkWriter.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Text; using UnityEngine; using UnityEngine.Networking; @@ -538,4 +536,4 @@ public void FinishMessage() private static QSBUIntFloat s_FloatConverter; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNotReadyMessage.cs b/QSB/QuantumUNET/QSBNotReadyMessage.cs index 093ca57ab..e135dbda7 100644 --- a/QSB/QuantumUNET/QSBNotReadyMessage.cs +++ b/QSB/QuantumUNET/QSBNotReadyMessage.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBNotReadyMessage : QSBEmptyMessage { } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs index e893ffd69..d20827cc3 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -1,6 +1,4 @@ -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs b/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs index 8836bd1d1..0cdd08ffe 100644 --- a/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs +++ b/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { @@ -28,4 +24,4 @@ public override void Serialize(QSBNetworkWriter writer) public bool authorityState; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBPeerInfoMessage.cs b/QSB/QuantumUNET/QSBPeerInfoMessage.cs index 45a3ba387..b98942715 100644 --- a/QSB/QuantumUNET/QSBPeerInfoMessage.cs +++ b/QSB/QuantumUNET/QSBPeerInfoMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using System.Collections.Generic; namespace QSB.QuantumUNET { @@ -81,4 +77,4 @@ public override string ToString() public QSBPeerInfoPlayer[] playerIds; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBPeerInfoPlayer.cs b/QSB/QuantumUNET/QSBPeerInfoPlayer.cs index 3fe1256cb..19a5f81d4 100644 --- a/QSB/QuantumUNET/QSBPeerInfoPlayer.cs +++ b/QSB/QuantumUNET/QSBPeerInfoPlayer.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { @@ -12,4 +8,4 @@ public struct QSBPeerInfoPlayer public short playerControllerId; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBPeerListMessage.cs b/QSB/QuantumUNET/QSBPeerListMessage.cs index 86f20a8f0..8482446d9 100644 --- a/QSB/QuantumUNET/QSBPeerListMessage.cs +++ b/QSB/QuantumUNET/QSBPeerListMessage.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBPeerListMessage : QSBMessageBase { @@ -35,4 +29,4 @@ public override void Serialize(QSBNetworkWriter writer) public int oldServerConnectionId; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBReadyMessage.cs b/QSB/QuantumUNET/QSBReadyMessage.cs index 03440c05d..11adb735b 100644 --- a/QSB/QuantumUNET/QSBReadyMessage.cs +++ b/QSB/QuantumUNET/QSBReadyMessage.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBReadyMessage : QSBEmptyMessage { } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBReconnectMessage.cs b/QSB/QuantumUNET/QSBReconnectMessage.cs index 6afe4d7e4..b98a5a21a 100644 --- a/QSB/QuantumUNET/QSBReconnectMessage.cs +++ b/QSB/QuantumUNET/QSBReconnectMessage.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; +using UnityEngine.Networking; namespace QSB.QuantumUNET { @@ -35,4 +31,4 @@ public override void Serialize(QSBNetworkWriter writer) public byte[] msgData; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs index f988f0bec..eb4d1a96a 100644 --- a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QSB/QuantumUNET/QSBRemovePlayerMessage.cs @@ -1,6 +1,4 @@ -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBRemovePlayerMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBStringMessage.cs b/QSB/QuantumUNET/QSBStringMessage.cs index a8d37e85b..a13fb42e0 100644 --- a/QSB/QuantumUNET/QSBStringMessage.cs +++ b/QSB/QuantumUNET/QSBStringMessage.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { public class QSBStringMessage : QSBMessageBase { @@ -29,4 +23,4 @@ public override void Serialize(QSBNetworkWriter writer) public string value; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBUIntDecimal.cs b/QSB/QuantumUNET/QSBUIntDecimal.cs index 4ae451545..ca56865a8 100644 --- a/QSB/QuantumUNET/QSBUIntDecimal.cs +++ b/QSB/QuantumUNET/QSBUIntDecimal.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { internal struct QSBUIntDecimal { @@ -13,4 +8,4 @@ internal struct QSBUIntDecimal public decimal decimalValue; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBUIntFloat.cs b/QSB/QuantumUNET/QSBUIntFloat.cs index b0d9e295b..d086ad03d 100644 --- a/QSB/QuantumUNET/QSBUIntFloat.cs +++ b/QSB/QuantumUNET/QSBUIntFloat.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { internal struct QSBUIntFloat { @@ -15,4 +10,4 @@ internal struct QSBUIntFloat public ulong longValue; } -} +} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs index 40afb84eb..ec41ead9a 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QSB/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,6 +1,4 @@ -using UnityEngine.Networking; - -namespace QSB.QuantumUNET +namespace QSB.QuantumUNET { internal class QSBULocalConnectionToClient : QSBNetworkConnection { diff --git a/QSB/QuantumUNET/QSBUtility.cs b/QSB/QuantumUNET/QSBUtility.cs index d50c3fb6f..86fc1b149 100644 --- a/QSB/QuantumUNET/QSBUtility.cs +++ b/QSB/QuantumUNET/QSBUtility.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking.Types; @@ -9,7 +8,7 @@ public class QSBUtility { private static readonly Dictionary _dictTokens = new Dictionary(); - public static SourceID GetSourceID() + public static SourceID GetSourceID() => (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index f7d36dd24..9054e6fe9 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.TimeSync.Events { diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 8c04a187d..0987fb783 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,5 +1,4 @@ using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.WorldSync.Events { diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 384509008..1dc3c58a0 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,6 +1,5 @@ using QSB.Messaging; using QSB.QuantumUNET; -using UnityEngine.Networking; namespace QSB.WorldSync.Events { From c51fc206277f0dfd794278af9aecd2f20b12010b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 18:18:17 +0000 Subject: [PATCH 114/207] remove debug logs --- QSB/QSB.cs | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index cc812b164..bc56b8e71 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -37,26 +37,6 @@ private void Awake() ModBehaviour = this; LogFilter.currentLogLevel = LogFilter.Debug; - - // Application.logMessageReceived += Application_logMessageReceived; - } - - private void Application_logMessageReceived(string condition, string stackTrace, LogType type) - { - switch (type) - { - case LogType.Assert: - DebugLog.DebugWrite($"Assert - {condition}", MessageType.Message); - break; - - case LogType.Log: - DebugLog.DebugWrite($"Log - {condition}", MessageType.Message); - break; - - case LogType.Warning: - DebugLog.DebugWrite($"Warning - {condition}", MessageType.Warning); - break; - } } private void Start() From 43f60348001de928aa96f94412272e50537eb61e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 21:04:18 +0000 Subject: [PATCH 115/207] cleanup --- QSB/MessagesCore/MessageHandler.cs | 1 - QSB/QSB.csproj | 3 - QSB/QSB.csproj.user | 2 +- QSB/QSBNetworkManager.cs | 4 - QSB/QuantumUNET/QSBChannelBuffer.cs | 2 +- QSB/QuantumUNET/QSBClientScene.cs | 46 ---- QSB/QuantumUNET/QSBFloatConversion.cs | 27 --- QSB/QuantumUNET/QSBLocalClient.cs | 2 +- QSB/QuantumUNET/QSBNetworkClient.cs | 16 -- QSB/QuantumUNET/QSBNetworkConnection.cs | 22 -- QSB/QuantumUNET/QSBNetworkIdentity.cs | 4 - QSB/QuantumUNET/QSBNetworkManagerUNET.cs | 2 - QSB/QuantumUNET/QSBNetworkReader.cs | 242 +++++++++++----------- QSB/QuantumUNET/QSBNetworkServer.cs | 22 +- QSB/QuantumUNET/QSBNetworkServerSimple.cs | 1 - QSB/QuantumUNET/QSBNetworkTransform.cs | 1 - QSB/QuantumUNET/QSBNetworkWriter.cs | 8 +- QSB/QuantumUNET/QSBUIntDecimal.cs | 11 - QSB/QuantumUNET/QSBUIntFloat.cs | 13 -- QSB/TimeSync/WakeUpSync.cs | 2 + 20 files changed, 129 insertions(+), 302 deletions(-) delete mode 100644 QSB/QuantumUNET/QSBFloatConversion.cs delete mode 100644 QSB/QuantumUNET/QSBUIntDecimal.cs delete mode 100644 QSB/QuantumUNET/QSBUIntFloat.cs diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index c8726ccc9..ed8dd5f5d 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -63,7 +63,6 @@ public void SendToServer(T message) private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) { var message = netMsg.ReadMessage(); - DebugLog.DebugWrite($"receive message {message.GetType()}"); OnClientReceiveMessage?.Invoke(message); } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 8031489f3..033077b88 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -138,7 +138,6 @@ - @@ -212,8 +211,6 @@ - - diff --git a/QSB/QSB.csproj.user b/QSB/QSB.csproj.user index ec6d119b6..c8a11e84d 100644 --- a/QSB/QSB.csproj.user +++ b/QSB/QSB.csproj.user @@ -1,7 +1,7 @@  - E:\Epic\Epic Games\OuterWilds + D:\EpicGames\OuterWilds C:\Users\Henry\AppData\Roaming\OuterWildsModManager\OWML ShowAllFiles diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 511e2a8ca..33d94e1fe 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -54,7 +54,6 @@ private void Awake() ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); Destroy(playerPrefab.GetComponent()); Destroy(playerPrefab.GetComponent()); - DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); var transform = playerPrefab.AddComponent(); transform.SendInterval = 0.1f; transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; @@ -70,7 +69,6 @@ private void Awake() ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); Destroy(_shipPrefab.GetComponent()); Destroy(_shipPrefab.GetComponent()); - DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); transform = _shipPrefab.AddComponent(); transform.SendInterval = 0.1f; transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; @@ -84,7 +82,6 @@ private void Awake() ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); Destroy(_cameraPrefab.GetComponent()); Destroy(_cameraPrefab.GetComponent()); - DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); transform = _cameraPrefab.AddComponent(); transform.SendInterval = 0.1f; transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; @@ -98,7 +95,6 @@ private void Awake() ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); Destroy(_probePrefab.GetComponent()); Destroy(_probePrefab.GetComponent()); - DebugLog.DebugWrite(ident.LocalPlayerAuthority.ToString()); transform = _probePrefab.AddComponent(); transform.SendInterval = 0.1f; transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; diff --git a/QSB/QuantumUNET/QSBChannelBuffer.cs b/QSB/QuantumUNET/QSBChannelBuffer.cs index 75221474a..cfde98e2d 100644 --- a/QSB/QuantumUNET/QSBChannelBuffer.cs +++ b/QSB/QuantumUNET/QSBChannelBuffer.cs @@ -176,7 +176,7 @@ public void CheckInternalBuffer() public bool SendWriter(QSBNetworkWriter writer) { - var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic).Invoke(writer, null); + var arraySegment = writer.AsArraySegment(); return SendBytes(arraySegment.Array, arraySegment.Count); } diff --git a/QSB/QuantumUNET/QSBClientScene.cs b/QSB/QuantumUNET/QSBClientScene.cs index 8457f117e..f7e562ab9 100644 --- a/QSB/QuantumUNET/QSBClientScene.cs +++ b/QSB/QuantumUNET/QSBClientScene.cs @@ -325,7 +325,6 @@ public static bool Ready(QSBNetworkConnection conn) { var msg = new QSBReadyMessage(); conn.Send(35, msg); - DebugLog.DebugWrite("SENDING READY"); ready = true; readyConnection = conn; readyConnection.isReady = true; @@ -502,7 +501,6 @@ private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, b private static void OnObjectSpawn(QSBNetworkMessage netMsg) { - DebugLog.DebugWrite("OnObjectSpawn"); netMsg.ReadMessage(s_ObjectSpawnMessage); if (!s_ObjectSpawnMessage.assetId.IsValid()) { @@ -510,16 +508,6 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) } else { - DebugLog.DebugWrite(string.Concat(new object[] - { - "Client spawn handler instantiating [netId:", - s_ObjectSpawnMessage.NetId, - " asset ID:", - s_ObjectSpawnMessage.assetId, - " pos:", - s_ObjectSpawnMessage.Position, - "]" - })); if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnMessage.NetId, out var component)) { ApplySpawnPayload(component, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Payload, s_ObjectSpawnMessage.NetId, null); @@ -527,21 +515,6 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) else if (QSBNetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out var original)) { GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); - if (LogFilter.logDebug) - { - DebugLog.DebugWrite(string.Concat(new object[] - { - "Client spawn handler instantiating [netId:", - s_ObjectSpawnMessage.NetId, - " asset ID:", - s_ObjectSpawnMessage.assetId, - " pos:", - s_ObjectSpawnMessage.Position, - " rotation: ", - s_ObjectSpawnMessage.Rotation, - "]" - })); - } component = gameObject.GetComponent(); if (component == null) { @@ -591,18 +564,6 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) private static void OnObjectSpawnScene(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectSpawnSceneMessage); - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "Client spawn scene handler instantiating [netId:", - s_ObjectSpawnSceneMessage.NetId, - " sceneId:", - s_ObjectSpawnSceneMessage.SceneId, - " pos:", - s_ObjectSpawnSceneMessage.Position - })); - } if (s_NetworkScene.GetNetworkIdentity(s_ObjectSpawnSceneMessage.NetId, out var networkIdentity)) { ApplySpawnPayload(networkIdentity, s_ObjectSpawnSceneMessage.Position, s_ObjectSpawnSceneMessage.Payload, s_ObjectSpawnSceneMessage.NetId, networkIdentity.gameObject); @@ -737,13 +698,6 @@ private static void OnLocalClientObjectSpawnScene(QSBNetworkMessage netMsg) private static void OnUpdateVarsMessage(QSBNetworkMessage netMsg) { var networkInstanceId = netMsg.Reader.ReadNetworkId(); - DebugLog.DebugWrite(string.Concat(new object[] - { - "ClientScene::OnUpdateVarsMessage ", - networkInstanceId, - " channel:", - netMsg.ChannelId - })); if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { networkIdentity.OnUpdateVars(netMsg.Reader, false); diff --git a/QSB/QuantumUNET/QSBFloatConversion.cs b/QSB/QuantumUNET/QSBFloatConversion.cs deleted file mode 100644 index e4019b089..000000000 --- a/QSB/QuantumUNET/QSBFloatConversion.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace QSB.QuantumUNET -{ - internal class QSBFloatConversion - { - public static float ToSingle(uint value) - { - QSBUIntFloat uintFloat = default(QSBUIntFloat); - uintFloat.intValue = value; - return uintFloat.floatValue; - } - - public static double ToDouble(ulong value) - { - QSBUIntFloat uintFloat = default(QSBUIntFloat); - uintFloat.longValue = value; - return uintFloat.doubleValue; - } - - public static decimal ToDecimal(ulong value1, ulong value2) - { - QSBUIntDecimal uintDecimal = default(QSBUIntDecimal); - uintDecimal.longValue1 = value1; - uintDecimal.longValue2 = value2; - return uintDecimal.decimalValue; - } - } -} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QSB/QuantumUNET/QSBLocalClient.cs index 5f51b796e..736676d1c 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QSB/QuantumUNET/QSBLocalClient.cs @@ -103,7 +103,7 @@ private void ProcessInternalMessages() } else { - s_InternalMessage.Reader.GetType().GetMethod("Replace", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public).Invoke(s_InternalMessage.Reader, new object[] { t.buffer }); + s_InternalMessage.Reader.Replace(t.buffer); } s_InternalMessage.Reader.ReadInt16(); s_InternalMessage.ChannelId = t.channelId; diff --git a/QSB/QuantumUNET/QSBNetworkClient.cs b/QSB/QuantumUNET/QSBNetworkClient.cs index 53699b44b..ba5dd6b29 100644 --- a/QSB/QuantumUNET/QSBNetworkClient.cs +++ b/QSB/QuantumUNET/QSBNetworkClient.cs @@ -553,7 +553,6 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) internal void ContinueConnect() { - DebugLog.DebugWrite("continue connect"); if (m_UseSimulator) { int num = m_SimulatedLatency / 3; @@ -833,18 +832,6 @@ internal virtual void Update() { m_Connection.LastError = (NetworkError)b; } - if (networkEventType != NetworkEventType.Nothing) - { - DebugLog.DebugWrite(string.Concat(new object[] - { - "Client event: host=", - m_ClientId, - " event=", - networkEventType, - " error=", - b - })); - } switch (networkEventType) { case NetworkEventType.DataEvent: @@ -1057,13 +1044,11 @@ private void OnCRC(QSBNetworkMessage netMsg) public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) { - DebugLog.DebugWrite($"Register event id {msgType}"); m_MessageHandlers.RegisterHandler(msgType, handler); } public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { - DebugLog.DebugWrite($"Safe register event id {msgType}"); m_MessageHandlers.RegisterHandlerSafe(msgType, handler); } @@ -1135,7 +1120,6 @@ public static void ShutdownAll() internal static void SetActive(bool state) { - DebugLog.DebugWrite("set active"); if (!s_IsActive && state) { NetworkTransport.Init(); diff --git a/QSB/QuantumUNET/QSBNetworkConnection.cs b/QSB/QuantumUNET/QSBNetworkConnection.cs index eba1864d4..80553f42f 100644 --- a/QSB/QuantumUNET/QSBNetworkConnection.cs +++ b/QSB/QuantumUNET/QSBNetworkConnection.cs @@ -354,38 +354,16 @@ protected void HandleBytes(byte[] buffer, int receivedSize, int channelId) protected void HandleReader(NetworkReader reader, int receivedSize, int channelId) { - DebugLog.DebugWrite($"handle reader size:{receivedSize}"); while (reader.Position < receivedSize) { var num = reader.ReadUInt16(); var num2 = reader.ReadInt16(); var array = reader.ReadBytes((int)num); var reader2 = new QSBNetworkReader(array); - var stringBuilder = new StringBuilder(); - for (var i = 0; i < (int)num; i++) - { - stringBuilder.AppendFormat("{0:X2}", array[i]); - if (i > 150) - { - break; - } - } - DebugLog.DebugWrite(string.Concat(new object[] - { - "ConnectionRecv con:", - connectionId, - " bytes:", - num, - " msgId:", - num2, - " ", - stringBuilder - })); QSBNetworkMessageDelegate networkMessageDelegate = null; if (m_MessageHandlersDict.ContainsKey(num2)) { networkMessageDelegate = m_MessageHandlersDict[num2]; - DebugLog.DebugWrite(networkMessageDelegate.GetMethodName()); } if (networkMessageDelegate == null) { diff --git a/QSB/QuantumUNET/QSBNetworkIdentity.cs b/QSB/QuantumUNET/QSBNetworkIdentity.cs index d4a3b7e37..ab522f682 100644 --- a/QSB/QuantumUNET/QSBNetworkIdentity.cs +++ b/QSB/QuantumUNET/QSBNetworkIdentity.cs @@ -201,7 +201,6 @@ internal void OnStartServer(bool allowNonZeroNetId) })); return; } - DebugLog.DebugWrite($"OnStartServer {gameObject} GUID:{NetId}"); QSBNetworkServer.instance.SetLocalObjectOnServer(NetId, gameObject); for (var i = 0; i < m_NetworkBehaviours.Length; i++) { @@ -328,7 +327,6 @@ internal bool OnCheckObserver(QSBNetworkConnection conn) internal void UNetSerializeAllVars(QSBNetworkWriter writer) { - DebugLog.DebugWrite($"Sync all vars (NetId:{NetId}, Gameobject:{gameObject.name})"); for (var i = 0; i < m_NetworkBehaviours.Length; i++) { var networkBehaviour = m_NetworkBehaviours[i]; @@ -588,7 +586,6 @@ internal void UNetUpdate() { if ((num & (1U << j)) != 0U) { - DebugLog.DebugWrite("sending update vars message"); s_UpdateWriter.StartMessage(8); s_UpdateWriter.Write(NetId); var flag = false; @@ -624,7 +621,6 @@ internal void UNetUpdate() } if (flag) { - DebugLog.DebugWrite("FINISH MESSAGE"); s_UpdateWriter.FinishMessage(); QSBNetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); } diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs index d64287f66..cb6d7ed23 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QSB/QuantumUNET/QSBNetworkManagerUNET.cs @@ -660,7 +660,6 @@ public void UseExternalClient(QSBNetworkClient externalClient) public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int hostPort) { - DebugLog.DebugWrite("start client proper"); InitializeSingleton(); matchInfo = info; if (m_RunInBackground) @@ -747,7 +746,6 @@ public QSBNetworkClient StartClient(MatchInfo matchInfo) public QSBNetworkClient StartClient() { - DebugLog.DebugWrite("start client"); return StartClient(null, null); } diff --git a/QSB/QuantumUNET/QSBNetworkReader.cs b/QSB/QuantumUNET/QSBNetworkReader.cs index 533712b9a..32d9d6251 100644 --- a/QSB/QuantumUNET/QSBNetworkReader.cs +++ b/QSB/QuantumUNET/QSBNetworkReader.cs @@ -9,28 +9,28 @@ public class QSBNetworkReader { public QSBNetworkReader() { - this.m_buf = new QSBNetBuffer(); - QSBNetworkReader.Initialize(); + m_buf = new QSBNetBuffer(); + Initialize(); } public QSBNetworkReader(QSBNetworkWriter writer) { - this.m_buf = new QSBNetBuffer(writer.AsArray()); - QSBNetworkReader.Initialize(); + m_buf = new QSBNetBuffer(writer.AsArray()); + Initialize(); } public QSBNetworkReader(byte[] buffer) { - this.m_buf = new QSBNetBuffer(buffer); - QSBNetworkReader.Initialize(); + m_buf = new QSBNetBuffer(buffer); + Initialize(); } private static void Initialize() { - if (QSBNetworkReader.s_Encoding == null) + if (s_Encoding == null) { - QSBNetworkReader.s_StringReaderBuffer = new byte[1024]; - QSBNetworkReader.s_Encoding = new UTF8Encoding(); + s_StringReaderBuffer = new byte[1024]; + s_Encoding = new UTF8Encoding(); } } @@ -38,7 +38,7 @@ public uint Position { get { - return this.m_buf.Position; + return m_buf.Position; } } @@ -46,23 +46,23 @@ public int Length { get { - return this.m_buf.Length; + return m_buf.Length; } } public void SeekZero() { - this.m_buf.SeekZero(); + m_buf.SeekZero(); } internal void Replace(byte[] buffer) { - this.m_buf.Replace(buffer); + m_buf.Replace(buffer); } public uint ReadPackedUInt32() { - byte b = this.ReadByte(); + byte b = ReadByte(); uint result; if (b < 241) { @@ -70,28 +70,28 @@ public uint ReadPackedUInt32() } else { - byte b2 = this.ReadByte(); + byte b2 = ReadByte(); if (b >= 241 && b <= 248) { result = 240U + 256U * (uint)(b - 241) + (uint)b2; } else { - byte b3 = this.ReadByte(); + byte b3 = ReadByte(); if (b == 249) { result = 2288U + 256U * (uint)b2 + (uint)b3; } else { - byte b4 = this.ReadByte(); + byte b4 = ReadByte(); if (b == 250) { result = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16)); } else { - byte b5 = this.ReadByte(); + byte b5 = ReadByte(); if (b < 251) { throw new IndexOutOfRangeException("ReadPackedUInt32() failure: " + b); @@ -106,7 +106,7 @@ public uint ReadPackedUInt32() public ulong ReadPackedUInt64() { - byte b = this.ReadByte(); + byte b = ReadByte(); ulong result; if (b < 241) { @@ -114,56 +114,56 @@ public ulong ReadPackedUInt64() } else { - byte b2 = this.ReadByte(); + byte b2 = ReadByte(); if (b >= 241 && b <= 248) { result = 240UL + 256UL * ((ulong)b - 241UL) + (ulong)b2; } else { - byte b3 = this.ReadByte(); + byte b3 = ReadByte(); if (b == 249) { result = 2288UL + 256UL * (ulong)b2 + (ulong)b3; } else { - byte b4 = this.ReadByte(); + byte b4 = ReadByte(); if (b == 250) { result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16); } else { - byte b5 = this.ReadByte(); + byte b5 = ReadByte(); if (b == 251) { result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24); } else { - byte b6 = this.ReadByte(); + byte b6 = ReadByte(); if (b == 252) { result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32); } else { - byte b7 = this.ReadByte(); + byte b7 = ReadByte(); if (b == 253) { result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40); } else { - byte b8 = this.ReadByte(); + byte b8 = ReadByte(); if (b == 254) { result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48); } else { - byte b9 = this.ReadByte(); + byte b9 = ReadByte(); if (b != 255) { throw new IndexOutOfRangeException("ReadPackedUInt64() failure: " + b); @@ -182,94 +182,94 @@ public ulong ReadPackedUInt64() public NetworkInstanceId ReadNetworkId() { - return new NetworkInstanceId(this.ReadPackedUInt32()); + return new NetworkInstanceId(ReadPackedUInt32()); } public NetworkSceneId ReadSceneId() { - return new NetworkSceneId(this.ReadPackedUInt32()); + return new NetworkSceneId(ReadPackedUInt32()); } public byte ReadByte() { - return this.m_buf.ReadByte(); + return m_buf.ReadByte(); } public sbyte ReadSByte() { - return (sbyte)this.m_buf.ReadByte(); + return (sbyte)m_buf.ReadByte(); } public short ReadInt16() { ushort num = 0; - num |= (ushort)this.m_buf.ReadByte(); - num |= (ushort)(this.m_buf.ReadByte() << 8); + num |= (ushort)m_buf.ReadByte(); + num |= (ushort)(m_buf.ReadByte() << 8); return (short)num; } public ushort ReadUInt16() { - return (ushort)((uint)(ushort)(0U | (uint)this.m_buf.ReadByte()) | (uint)(ushort)((uint)this.m_buf.ReadByte() << 8)); + return (ushort)((uint)(ushort)(0U | (uint)m_buf.ReadByte()) | (uint)(ushort)((uint)m_buf.ReadByte() << 8)); } public int ReadInt32() { uint num = 0U; - num |= (uint)this.m_buf.ReadByte(); - num |= (uint)((uint)this.m_buf.ReadByte() << 8); - num |= (uint)((uint)this.m_buf.ReadByte() << 16); - return (int)(num | (uint)((uint)this.m_buf.ReadByte() << 24)); + num |= (uint)m_buf.ReadByte(); + num |= (uint)((uint)m_buf.ReadByte() << 8); + num |= (uint)((uint)m_buf.ReadByte() << 16); + return (int)(num | (uint)((uint)m_buf.ReadByte() << 24)); } public uint ReadUInt32() { uint num = 0U; - num |= (uint)this.m_buf.ReadByte(); - num |= (uint)((uint)this.m_buf.ReadByte() << 8); - num |= (uint)((uint)this.m_buf.ReadByte() << 16); - return num | (uint)((uint)this.m_buf.ReadByte() << 24); + num |= (uint)m_buf.ReadByte(); + num |= (uint)((uint)m_buf.ReadByte() << 8); + num |= (uint)((uint)m_buf.ReadByte() << 16); + return num | (uint)((uint)m_buf.ReadByte() << 24); } public long ReadInt64() { ulong num = 0UL; - ulong num2 = (ulong)this.m_buf.ReadByte(); + ulong num2 = (ulong)m_buf.ReadByte(); num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 8; + num2 = (ulong)m_buf.ReadByte() << 8; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 16; + num2 = (ulong)m_buf.ReadByte() << 16; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 24; + num2 = (ulong)m_buf.ReadByte() << 24; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 32; + num2 = (ulong)m_buf.ReadByte() << 32; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 40; + num2 = (ulong)m_buf.ReadByte() << 40; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 48; + num2 = (ulong)m_buf.ReadByte() << 48; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 56; + num2 = (ulong)m_buf.ReadByte() << 56; return (long)(num | num2); } public ulong ReadUInt64() { ulong num = 0UL; - ulong num2 = (ulong)this.m_buf.ReadByte(); + ulong num2 = (ulong)m_buf.ReadByte(); num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 8; + num2 = (ulong)m_buf.ReadByte() << 8; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 16; + num2 = (ulong)m_buf.ReadByte() << 16; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 24; + num2 = (ulong)m_buf.ReadByte() << 24; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 32; + num2 = (ulong)m_buf.ReadByte() << 32; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 40; + num2 = (ulong)m_buf.ReadByte() << 40; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 48; + num2 = (ulong)m_buf.ReadByte() << 48; num |= num2; - num2 = (ulong)this.m_buf.ReadByte() << 56; + num2 = (ulong)m_buf.ReadByte() << 56; return num | num2; } @@ -277,28 +277,28 @@ public decimal ReadDecimal() { return new decimal(new int[] { - this.ReadInt32(), - this.ReadInt32(), - this.ReadInt32(), - this.ReadInt32() + ReadInt32(), + ReadInt32(), + ReadInt32(), + ReadInt32() }); } public float ReadSingle() { - uint value = this.ReadUInt32(); - return QSBFloatConversion.ToSingle(value); + var bytes = ReadBytes(4); + return BitConverter.ToSingle(bytes, 0); } public double ReadDouble() { - ulong value = this.ReadUInt64(); - return QSBFloatConversion.ToDouble(value); + var bytes = ReadBytes(8); + return BitConverter.ToSingle(bytes, 0); } public string ReadString() { - ushort num = this.ReadUInt16(); + ushort num = ReadUInt16(); string result; if (num == 0) { @@ -310,12 +310,12 @@ public string ReadString() { throw new IndexOutOfRangeException("ReadString() too long: " + num); } - while ((int)num > QSBNetworkReader.s_StringReaderBuffer.Length) + while ((int)num > s_StringReaderBuffer.Length) { - QSBNetworkReader.s_StringReaderBuffer = new byte[QSBNetworkReader.s_StringReaderBuffer.Length * 2]; + s_StringReaderBuffer = new byte[s_StringReaderBuffer.Length * 2]; } - this.m_buf.ReadBytes(QSBNetworkReader.s_StringReaderBuffer, (uint)num); - char[] chars = QSBNetworkReader.s_Encoding.GetChars(QSBNetworkReader.s_StringReaderBuffer, 0, (int)num); + m_buf.ReadBytes(s_StringReaderBuffer, (uint)num); + char[] chars = s_Encoding.GetChars(s_StringReaderBuffer, 0, (int)num); result = new string(chars); } return result; @@ -323,12 +323,12 @@ public string ReadString() public char ReadChar() { - return (char)this.m_buf.ReadByte(); + return (char)m_buf.ReadByte(); } public bool ReadBoolean() { - int num = (int)this.m_buf.ReadByte(); + int num = (int)m_buf.ReadByte(); return num == 1; } @@ -339,13 +339,13 @@ public byte[] ReadBytes(int count) throw new IndexOutOfRangeException("NetworkReader ReadBytes " + count); } byte[] array = new byte[count]; - this.m_buf.ReadBytes(array, (uint)count); + m_buf.ReadBytes(array, (uint)count); return array; } public byte[] ReadBytesAndSize() { - ushort num = this.ReadUInt16(); + ushort num = ReadUInt16(); byte[] result; if (num == 0) { @@ -353,104 +353,104 @@ public byte[] ReadBytesAndSize() } else { - result = this.ReadBytes((int)num); + result = ReadBytes((int)num); } return result; } public Vector2 ReadVector2() { - return new Vector2(this.ReadSingle(), this.ReadSingle()); + return new Vector2(ReadSingle(), ReadSingle()); } public Vector3 ReadVector3() { - return new Vector3(this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + return new Vector3(ReadSingle(), ReadSingle(), ReadSingle()); } public Vector4 ReadVector4() { - return new Vector4(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + return new Vector4(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); } public Color ReadColor() { - return new Color(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + return new Color(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); } public Color32 ReadColor32() { - return new Color32(this.ReadByte(), this.ReadByte(), this.ReadByte(), this.ReadByte()); + return new Color32(ReadByte(), ReadByte(), ReadByte(), ReadByte()); } public Quaternion ReadQuaternion() { - return new Quaternion(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + return new Quaternion(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); } public Rect ReadRect() { - return new Rect(this.ReadSingle(), this.ReadSingle(), this.ReadSingle(), this.ReadSingle()); + return new Rect(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); } public Plane ReadPlane() { - return new Plane(this.ReadVector3(), this.ReadSingle()); + return new Plane(ReadVector3(), ReadSingle()); } public Ray ReadRay() { - return new Ray(this.ReadVector3(), this.ReadVector3()); + return new Ray(ReadVector3(), ReadVector3()); } public Matrix4x4 ReadMatrix4x4() { return new Matrix4x4 { - m00 = this.ReadSingle(), - m01 = this.ReadSingle(), - m02 = this.ReadSingle(), - m03 = this.ReadSingle(), - m10 = this.ReadSingle(), - m11 = this.ReadSingle(), - m12 = this.ReadSingle(), - m13 = this.ReadSingle(), - m20 = this.ReadSingle(), - m21 = this.ReadSingle(), - m22 = this.ReadSingle(), - m23 = this.ReadSingle(), - m30 = this.ReadSingle(), - m31 = this.ReadSingle(), - m32 = this.ReadSingle(), - m33 = this.ReadSingle() + m00 = ReadSingle(), + m01 = ReadSingle(), + m02 = ReadSingle(), + m03 = ReadSingle(), + m10 = ReadSingle(), + m11 = ReadSingle(), + m12 = ReadSingle(), + m13 = ReadSingle(), + m20 = ReadSingle(), + m21 = ReadSingle(), + m22 = ReadSingle(), + m23 = ReadSingle(), + m30 = ReadSingle(), + m31 = ReadSingle(), + m32 = ReadSingle(), + m33 = ReadSingle() }; } public NetworkHash128 ReadNetworkHash128() { NetworkHash128 result; - result.i0 = this.ReadByte(); - result.i1 = this.ReadByte(); - result.i2 = this.ReadByte(); - result.i3 = this.ReadByte(); - result.i4 = this.ReadByte(); - result.i5 = this.ReadByte(); - result.i6 = this.ReadByte(); - result.i7 = this.ReadByte(); - result.i8 = this.ReadByte(); - result.i9 = this.ReadByte(); - result.i10 = this.ReadByte(); - result.i11 = this.ReadByte(); - result.i12 = this.ReadByte(); - result.i13 = this.ReadByte(); - result.i14 = this.ReadByte(); - result.i15 = this.ReadByte(); + result.i0 = ReadByte(); + result.i1 = ReadByte(); + result.i2 = ReadByte(); + result.i3 = ReadByte(); + result.i4 = ReadByte(); + result.i5 = ReadByte(); + result.i6 = ReadByte(); + result.i7 = ReadByte(); + result.i8 = ReadByte(); + result.i9 = ReadByte(); + result.i10 = ReadByte(); + result.i11 = ReadByte(); + result.i12 = ReadByte(); + result.i13 = ReadByte(); + result.i14 = ReadByte(); + result.i15 = ReadByte(); return result; } public Transform ReadTransform() { - NetworkInstanceId networkInstanceId = this.ReadNetworkId(); + NetworkInstanceId networkInstanceId = ReadNetworkId(); Transform result; if (networkInstanceId.IsEmpty()) { @@ -477,7 +477,7 @@ public Transform ReadTransform() public GameObject ReadGameObject() { - NetworkInstanceId networkInstanceId = this.ReadNetworkId(); + NetworkInstanceId networkInstanceId = ReadNetworkId(); GameObject result; if (networkInstanceId.IsEmpty()) { @@ -508,7 +508,7 @@ public GameObject ReadGameObject() public QSBNetworkIdentity ReadNetworkIdentity() { - NetworkInstanceId networkInstanceId = this.ReadNetworkId(); + NetworkInstanceId networkInstanceId = ReadNetworkId(); QSBNetworkIdentity result; if (networkInstanceId.IsEmpty()) { @@ -543,7 +543,7 @@ public QSBNetworkIdentity ReadNetworkIdentity() public override string ToString() { - return this.m_buf.ToString(); + return m_buf.ToString(); } public TMsg ReadMessage() where TMsg : QSBMessageBase, new() diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QSB/QuantumUNET/QSBNetworkServer.cs index 375990bc3..62350cdde 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QSB/QuantumUNET/QSBNetworkServer.cs @@ -522,19 +522,16 @@ public static bool SendToReady(GameObject contextObj, short msgType, QSBMessageB public static void SendWriterToReady(GameObject contextObj, QSBNetworkWriter writer, int channelId) { - DebugLog.DebugWrite("send writer to ready"); - var arraySegment = (ArraySegment)writer.GetType().GetMethod("AsArraySegment").Invoke(writer, null); + var arraySegment = writer.AsArraySegment(); if (arraySegment.Count > 32767) { throw new UnityException("NetworkWriter used buffer is too big!"); } - DebugLog.DebugWrite("pre send bytes"); SendBytesToReady(contextObj, arraySegment.Array, arraySegment.Count, channelId); } public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int numBytes, int channelId) { - DebugLog.DebugWrite("send bytes to ready"); if (contextObj == null) { var flag = true; @@ -543,16 +540,11 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu var networkConnection = connections[i]; if (networkConnection != null && networkConnection.isReady) { - DebugLog.DebugWrite($"sending bytes to connection {networkConnection.connectionId}"); if (!networkConnection.SendBytes(buffer, numBytes, channelId)) { flag = false; } } - else - { - DebugLog.DebugWrite($"- Connection {networkConnection.connectionId} is not ready!"); - } } if (!flag) { @@ -571,16 +563,11 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu var networkConnection2 = component.Observers[j]; if (networkConnection2.isReady) { - DebugLog.DebugWrite($"sending bytes to connection {networkConnection2.connectionId}"); if (!networkConnection2.SendBytes(buffer, numBytes, channelId)) { flag2 = false; } } - else - { - DebugLog.DebugWrite($"- Connection {networkConnection2.connectionId} is not ready!"); - } } if (!flag2) { @@ -1472,13 +1459,6 @@ internal void SpawnObject(GameObject obj) { networkIdentity.Reset(); networkIdentity.OnStartServer(false); - DebugLog.DebugWrite(string.Concat(new object[] - { - "SpawnObject instance ID ", - networkIdentity.NetId, - " asset ID ", - networkIdentity.AssetId - })); networkIdentity.RebuildObservers(true); } } diff --git a/QSB/QuantumUNET/QSBNetworkServerSimple.cs b/QSB/QuantumUNET/QSBNetworkServerSimple.cs index af00b21f9..bf8bd61e1 100644 --- a/QSB/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QSB/QuantumUNET/QSBNetworkServerSimple.cs @@ -236,7 +236,6 @@ public void Stop() internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { - DebugLog.DebugWrite($"Registering message {msgType}."); m_MessageHandlers.RegisterHandlerSafe(msgType, handler); } diff --git a/QSB/QuantumUNET/QSBNetworkTransform.cs b/QSB/QuantumUNET/QSBNetworkTransform.cs index 00b1b8493..1ebf6db2f 100644 --- a/QSB/QuantumUNET/QSBNetworkTransform.cs +++ b/QSB/QuantumUNET/QSBNetworkTransform.cs @@ -119,7 +119,6 @@ public override bool OnSerialize(QSBNetworkWriter writer, bool initialState) private void SerializeModeTransform(QSBNetworkWriter writer) { - DebugLog.DebugWrite("serialize"); writer.Write(transform.position); if (SyncRotationAxis != AxisSyncMode.None) { diff --git a/QSB/QuantumUNET/QSBNetworkWriter.cs b/QSB/QuantumUNET/QSBNetworkWriter.cs index 3b5f11b31..5e6d23e64 100644 --- a/QSB/QuantumUNET/QSBNetworkWriter.cs +++ b/QSB/QuantumUNET/QSBNetworkWriter.cs @@ -219,14 +219,12 @@ public void Write(ulong value) public void Write(float value) { - s_FloatConverter.floatValue = value; - this.Write(s_FloatConverter.intValue); + m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); } public void Write(double value) { - s_FloatConverter.doubleValue = value; - this.Write(s_FloatConverter.longValue); + m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); } public void Write(decimal value) @@ -533,7 +531,5 @@ public void FinishMessage() private static Encoding s_Encoding; private static byte[] s_StringWriteBuffer; - - private static QSBUIntFloat s_FloatConverter; } } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBUIntDecimal.cs b/QSB/QuantumUNET/QSBUIntDecimal.cs deleted file mode 100644 index ca56865a8..000000000 --- a/QSB/QuantumUNET/QSBUIntDecimal.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace QSB.QuantumUNET -{ - internal struct QSBUIntDecimal - { - public ulong longValue1; - - public ulong longValue2; - - public decimal decimalValue; - } -} \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBUIntFloat.cs b/QSB/QuantumUNET/QSBUIntFloat.cs deleted file mode 100644 index d086ad03d..000000000 --- a/QSB/QuantumUNET/QSBUIntFloat.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace QSB.QuantumUNET -{ - internal struct QSBUIntFloat - { - public float floatValue; - - public uint intValue; - - public double doubleValue; - - public ulong longValue; - } -} \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 5a033b583..96ab553c5 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -101,11 +101,13 @@ private void Init() private void SendServerTime() { + DebugLog.DebugWrite($"send server time {Time.timeSinceLevelLoad}"); GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); } public void OnClientReceiveMessage(ServerTimeMessage message) { + DebugLog.DebugWrite($"get server time {message.ServerTime}"); _serverTime = message.ServerTime; _serverLoopCount = message.LoopCount; WakeUpOrSleep(); From 325eb4ea33ef2f3ef849a1b8ef2fe0fbf3b38a62 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 21:04:46 +0000 Subject: [PATCH 116/207] remove logs --- QSB/QuantumUNET/QSBNetworkTransform.cs | 1 - QSB/TimeSync/WakeUpSync.cs | 2 -- 2 files changed, 3 deletions(-) diff --git a/QSB/QuantumUNET/QSBNetworkTransform.cs b/QSB/QuantumUNET/QSBNetworkTransform.cs index 1ebf6db2f..4ccfde7d8 100644 --- a/QSB/QuantumUNET/QSBNetworkTransform.cs +++ b/QSB/QuantumUNET/QSBNetworkTransform.cs @@ -268,7 +268,6 @@ private void SendTransform() public static void HandleTransform(QSBNetworkMessage netMsg) { - DebugLog.DebugWrite("handle transform"); var networkInstanceId = netMsg.Reader.ReadNetworkId(); var gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); if (gameObject == null) diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 96ab553c5..5a033b583 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -101,13 +101,11 @@ private void Init() private void SendServerTime() { - DebugLog.DebugWrite($"send server time {Time.timeSinceLevelLoad}"); GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); } public void OnClientReceiveMessage(ServerTimeMessage message) { - DebugLog.DebugWrite($"get server time {message.ServerTime}"); _serverTime = message.ServerTime; _serverLoopCount = message.LoopCount; WakeUpOrSleep(); From 56e99c49f1438b36857e7404a5e348448a9b039a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 22:14:53 +0000 Subject: [PATCH 117/207] seperate projects --- QSB.sln | 6 + QSB/Animation/AnimationSync.cs | 1 + QSB/Animation/CrouchSync.cs | 2 +- .../Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- QSB/EventsCore/QSBEvent.cs | 2 +- QSB/GeyserSync/QSBGeyser.cs | 2 +- QSB/MessagesCore/EnumMessage.cs | 2 +- QSB/MessagesCore/FloatMessage.cs | 2 +- QSB/MessagesCore/MessageHandler.cs | 2 +- QSB/MessagesCore/PlayerMessage.cs | 2 +- QSB/MessagesCore/ToggleMessage.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 2 +- QSB/OrbSync/OrbManager.cs | 2 +- QSB/Player/Events/PlayerJoinMessage.cs | 2 +- QSB/Player/Events/PlayerLeaveMessage.cs | 2 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/Player/PlayerSyncObject.cs | 2 +- QSB/Player/QSBPlayerManager.cs | 2 +- QSB/QSB.cs | 2 +- QSB/QSB.csproj | 58 +------ QSB/QSBNetworkManager.cs | 15 +- QSB/TimeSync/Events/ServerTimeMessage.cs | 2 +- QSB/TimeSync/PreserveTimeScale.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 2 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 2 +- QSB/Utility/UnetExtensions.cs | 2 +- .../Events/BoolWorldObjectMessage.cs | 2 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- QuantumUNET/Properties/AssemblyInfo.cs | 36 ++++ .../QSBAddPlayerMessage.cs | 2 +- .../QSBAnimationMessage.cs | 5 +- .../QSBAnimationParametersMessage.cs | 5 +- .../QSBAnimationTriggerMessage.cs | 5 +- .../QSBCRCMessage.cs | 2 +- .../QSBCRCMessageEntry.cs | 2 +- .../QSBChannelBuffer.cs | 2 +- .../QSBChannelPacket.cs | 2 +- .../QSBClientAuthorityMessage.cs | 2 +- .../QSBClientScene.cs | 6 +- .../QSBEmptyMessage.cs | 2 +- .../QSBErrorMessage.cs | 2 +- .../QSBLocalClient.cs | 2 +- .../QSBMessageBase.cs | 2 +- .../QSBNetBuffer.cs | 2 +- .../QSBNetworkAnimator.cs | 10 +- .../QSBNetworkBehaviour.cs | 6 +- .../QSBNetworkCRC.cs | 2 +- .../QSBNetworkClient.cs | 14 +- .../QSBNetworkConnection.cs | 7 +- .../QSBNetworkIdentity.cs | 17 +- .../QSBNetworkManagerHUD.cs | 6 +- .../QSBNetworkManagerUNET.cs | 24 +-- .../QSBNetworkMessage.cs | 2 +- .../QSBNetworkMessageDelegate.cs | 2 +- .../QSBNetworkMessageHandlers.cs | 2 +- .../QSBNetworkMigrationManager.cs | 12 +- .../QSBNetworkReader.cs | 2 +- .../QSBNetworkScene.cs | 2 +- .../QSBNetworkServer.cs | 13 +- .../QSBNetworkServerSimple.cs | 5 +- .../QSBNetworkTransform.cs | 16 +- .../QSBNetworkWriter.cs | 2 +- .../QSBNotReadyMessage.cs | 2 +- .../QSBObjectDestroyMessage.cs | 2 +- .../QSBObjectSpawnFinishedMessage.cs | 2 +- .../QSBObjectSpawnMessage.cs | 2 +- .../QSBObjectSpawnSceneMessage.cs | 2 +- .../QSBOwnerMessage.cs | 2 +- .../QSBPeerAuthorityMessage.cs | 2 +- .../QSBPeerInfoMessage.cs | 2 +- .../QSBPeerInfoPlayer.cs | 2 +- .../QSBPeerListMessage.cs | 2 +- .../QSBPlayerController.cs | 2 +- .../QSBReadyMessage.cs | 2 +- .../QSBReconnectMessage.cs | 2 +- .../QSBRemovePlayerMessage.cs | 2 +- .../QSBStringMessage.cs | 2 +- .../QSBULocalConnectionToClient.cs | 2 +- .../QSBULocalConnectionToServer.cs | 2 +- .../QuantumUNET => QuantumUNET}/QSBUtility.cs | 2 +- QuantumUNET/QuantumUNET.csproj | 156 ++++++++++++++++++ QuantumUNET/QuantumUNET.csproj.user | 8 + QuantumUNET/packages.config | 6 + 84 files changed, 351 insertions(+), 208 deletions(-) create mode 100644 QuantumUNET/Properties/AssemblyInfo.cs rename {QSB/QuantumUNET => QuantumUNET}/QSBAddPlayerMessage.cs (95%) rename {QSB/Animation/Events => QuantumUNET}/QSBAnimationMessage.cs (89%) rename {QSB/Animation/Events => QuantumUNET}/QSBAnimationParametersMessage.cs (85%) rename {QSB/Animation/Events => QuantumUNET}/QSBAnimationTriggerMessage.cs (82%) rename {QSB/QuantumUNET => QuantumUNET}/QSBCRCMessage.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBCRCMessageEntry.cs (75%) rename {QSB/QuantumUNET => QuantumUNET}/QSBChannelBuffer.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBChannelPacket.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBClientAuthorityMessage.cs (94%) rename {QSB/QuantumUNET => QuantumUNET}/QSBClientScene.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBEmptyMessage.cs (86%) rename {QSB/QuantumUNET => QuantumUNET}/QSBErrorMessage.cs (91%) rename {QSB/QuantumUNET => QuantumUNET}/QSBLocalClient.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBMessageBase.cs (86%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetBuffer.cs (99%) rename {QSB/Animation => QuantumUNET}/QSBNetworkAnimator.cs (97%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkBehaviour.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkCRC.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkClient.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkConnection.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkIdentity.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkManagerHUD.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkManagerUNET.cs (97%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkMessage.cs (95%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkMessageDelegate.cs (72%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkMessageHandlers.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkMigrationManager.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkReader.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkScene.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkServer.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkServerSimple.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkTransform.cs (95%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNetworkWriter.cs (99%) rename {QSB/QuantumUNET => QuantumUNET}/QSBNotReadyMessage.cs (67%) rename {QSB/QuantumUNET => QuantumUNET}/QSBObjectDestroyMessage.cs (92%) rename {QSB/QuantumUNET => QuantumUNET}/QSBObjectSpawnFinishedMessage.cs (91%) rename {QSB/QuantumUNET => QuantumUNET}/QSBObjectSpawnMessage.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBObjectSpawnSceneMessage.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBOwnerMessage.cs (94%) rename {QSB/QuantumUNET => QuantumUNET}/QSBPeerAuthorityMessage.cs (95%) rename {QSB/QuantumUNET => QuantumUNET}/QSBPeerInfoMessage.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBPeerInfoPlayer.cs (84%) rename {QSB/QuantumUNET => QuantumUNET}/QSBPeerListMessage.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBPlayerController.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBReadyMessage.cs (66%) rename {QSB/QuantumUNET => QuantumUNET}/QSBReconnectMessage.cs (96%) rename {QSB/QuantumUNET => QuantumUNET}/QSBRemovePlayerMessage.cs (91%) rename {QSB/QuantumUNET => QuantumUNET}/QSBStringMessage.cs (92%) rename {QSB/QuantumUNET => QuantumUNET}/QSBULocalConnectionToClient.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBULocalConnectionToServer.cs (98%) rename {QSB/QuantumUNET => QuantumUNET}/QSBUtility.cs (96%) create mode 100644 QuantumUNET/QuantumUNET.csproj create mode 100644 QuantumUNET/QuantumUNET.csproj.user create mode 100644 QuantumUNET/packages.config diff --git a/QSB.sln b/QSB.sln index a228a92fd..95d71f000 100644 --- a/QSB.sln +++ b/QSB.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.29613.14 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QSB", "QSB\QSB.csproj", "{1F00090A-C697-4C55-B401-192F3CFB9DC2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuantumUNET", "QuantumUNET\QuantumUNET.csproj", "{C8C53004-1508-4F86-A419-4292C188DC2A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {1F00090A-C697-4C55-B401-192F3CFB9DC2}.Debug|Any CPU.Build.0 = Debug|Any CPU {1F00090A-C697-4C55-B401-192F3CFB9DC2}.Release|Any CPU.ActiveCfg = Release|Any CPU {1F00090A-C697-4C55-B401-192F3CFB9DC2}.Release|Any CPU.Build.0 = Release|Any CPU + {C8C53004-1508-4F86-A419-4292C188DC2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8C53004-1508-4F86-A419-4292C188DC2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8C53004-1508-4F86-A419-4292C188DC2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8C53004-1508-4F86-A419-4292C188DC2A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 7ec1df7c0..816bd1a09 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -5,6 +5,7 @@ using QSB.Utility; using System.Linq; using UnityEngine; +using QuantumUNET; namespace QSB.Animation { diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index 55c9699d5..f1c0dfbdd 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -1,4 +1,4 @@ -using QSB.QuantumUNET; +using QuantumUNET; using System; using UnityEngine; diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index c41c0c8aa..206072c0c 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.ConversationSync.Events { diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 8b1175694..75db950da 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.ConversationSync.Events { diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index f49dfeb8a..fe8bcb0cc 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -1,6 +1,6 @@ using QSB.Messaging; using QSB.Player; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.TransformSync; namespace QSB.EventsCore diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index 0b5e6fcd0..484898e5e 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -1,5 +1,5 @@ using QSB.EventsCore; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.WorldSync; namespace QSB.GeyserSync diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/MessagesCore/EnumMessage.cs index 1a009f745..e970fb606 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/MessagesCore/EnumMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.MessagesCore { diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/MessagesCore/FloatMessage.cs index 46bab71c7..d2e08802a 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/MessagesCore/FloatMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.MessagesCore { diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index ed8dd5f5d..c820c0657 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -1,6 +1,6 @@ using OWML.Common; using QSB.EventsCore; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.Utility; using System; using System.Linq; diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 83e611cd0..51609d9e9 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -1,4 +1,4 @@ -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.Messaging { diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/MessagesCore/ToggleMessage.cs index 538c73e79..0956b3b25 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/MessagesCore/ToggleMessage.cs @@ -1,4 +1,4 @@ -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.Messaging { diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 675cc3a98..bfa741f25 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,6 +1,6 @@ using OWML.Common; using QSB.EventsCore; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 3108b1842..1cd505639 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.Utility; using QSB.WorldSync; using System.Linq; diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 21b79d0cb..0e6954242 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.Player.Events { diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs index b05b6cb20..08d3126bb 100644 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ b/QSB/Player/Events/PlayerLeaveMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; using System; using System.Linq; diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 719f4ca7e..bcf5cd61e 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.Player.Events { diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 73fed6465..7cd9145e4 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -1,4 +1,4 @@ -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.Player { diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index c4fc4dc43..093b43a01 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -1,6 +1,6 @@ using OWML.Common; using QSB.Player.Events; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.TransformSync; using QSB.Utility; using System.Collections.Generic; diff --git a/QSB/QSB.cs b/QSB/QSB.cs index bc56b8e71..31ed7f391 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -6,7 +6,7 @@ using QSB.GeyserSync; using QSB.OrbSync; using QSB.Patches; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.SectorSync; using QSB.TimeSync; using QSB.Utility; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 033077b88..fb321ef5e 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -127,21 +127,7 @@ - - - - - - - - - - - - - - @@ -172,48 +158,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -286,7 +235,12 @@ - + + + {C8C53004-1508-4F86-A419-4292C188DC2A} + QuantumUNET + + md "$(OwmlDir)\Mods\$(ProjectName)" diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 33d94e1fe..afdffc7a0 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -9,7 +9,7 @@ using QSB.OrbSync; using QSB.Patches; using QSB.Player; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.SectorSync; using QSB.TimeSync; using QSB.TransformSync; @@ -156,13 +156,6 @@ public override void OnStartServer() { WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } - - QSBNetworkServer.UnregisterHandler(40); - QSBNetworkServer.UnregisterHandler(41); - QSBNetworkServer.UnregisterHandler(42); - QSBNetworkServer.RegisterHandler(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); - QSBNetworkServer.RegisterHandler(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); - QSBNetworkServer.RegisterHandler(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); } public override void OnServerAddPlayer(QSBNetworkConnection connection, short playerControllerId) // Called on the server when a client joins @@ -193,13 +186,7 @@ public override void OnClientConnect(QSBNetworkConnection connection) // Called if (!QSBNetworkServer.localClientActive) { QSBPatchManager.DoPatchType(QSBPatchTypes.OnNonServerClientConnect); - singleton.client.UnregisterHandler(40); - singleton.client.UnregisterHandler(41); - singleton.client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - singleton.client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); } - singleton.client.UnregisterHandler(42); - singleton.client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); QSBPatchManager.DoPatchType(QSBPatchTypes.OnClientConnect); diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 9054e6fe9..407d2bfc0 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.TimeSync.Events { diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index c24cf74cc..c0f086283 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -1,5 +1,5 @@ using OWML.ModHelper.Events; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.TimeSync { diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 5a033b583..01b3b4ec3 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,6 +1,6 @@ using QSB.DeathSync; using QSB.EventsCore; -using QSB.QuantumUNET; +using QuantumUNET; using QSB.TimeSync.Events; using QSB.Utility; using UnityEngine; diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 20513639e..03c2cff43 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -1,4 +1,4 @@ -using QSB.QuantumUNET; +using QuantumUNET; using QSB.Utility; using QSB.WorldSync; using UnityEngine; diff --git a/QSB/Utility/UnetExtensions.cs b/QSB/Utility/UnetExtensions.cs index 921ab957e..60fdfad71 100644 --- a/QSB/Utility/UnetExtensions.cs +++ b/QSB/Utility/UnetExtensions.cs @@ -1,6 +1,6 @@ using QSB.Player; -using QSB.QuantumUNET; using QSB.TransformSync; +using QuantumUNET; namespace QSB.Utility { diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 0987fb783..99f820cfe 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,4 +1,4 @@ -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.WorldSync.Events { diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 1dc3c58a0..12ec48f85 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QSB.QuantumUNET; +using QuantumUNET; namespace QSB.WorldSync.Events { diff --git a/QuantumUNET/Properties/AssemblyInfo.cs b/QuantumUNET/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..a4d9e4f87 --- /dev/null +++ b/QuantumUNET/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("QuantumUNET")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("HP Inc.")] +[assembly: AssemblyProduct("QuantumUNET")] +[assembly: AssemblyCopyright("Copyright © HP Inc. 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c8c53004-1508-4f86-a419-4292c188dc2a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/QSB/QuantumUNET/QSBAddPlayerMessage.cs b/QuantumUNET/QSBAddPlayerMessage.cs similarity index 95% rename from QSB/QuantumUNET/QSBAddPlayerMessage.cs rename to QuantumUNET/QSBAddPlayerMessage.cs index adf7bbead..02f07d3b3 100644 --- a/QSB/QuantumUNET/QSBAddPlayerMessage.cs +++ b/QuantumUNET/QSBAddPlayerMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBAddPlayerMessage : QSBMessageBase { diff --git a/QSB/Animation/Events/QSBAnimationMessage.cs b/QuantumUNET/QSBAnimationMessage.cs similarity index 89% rename from QSB/Animation/Events/QSBAnimationMessage.cs rename to QuantumUNET/QSBAnimationMessage.cs index 1f292673c..b5bc2de08 100644 --- a/QSB/Animation/Events/QSBAnimationMessage.cs +++ b/QuantumUNET/QSBAnimationMessage.cs @@ -1,7 +1,6 @@ -using QSB.QuantumUNET; -using UnityEngine.Networking; +using UnityEngine.Networking; -namespace QSB.Animation.Events +namespace QuantumUNET { internal class QSBAnimationMessage : QSBMessageBase { diff --git a/QSB/Animation/Events/QSBAnimationParametersMessage.cs b/QuantumUNET/QSBAnimationParametersMessage.cs similarity index 85% rename from QSB/Animation/Events/QSBAnimationParametersMessage.cs rename to QuantumUNET/QSBAnimationParametersMessage.cs index 08adf4ce7..0ff4098ec 100644 --- a/QSB/Animation/Events/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/QSBAnimationParametersMessage.cs @@ -1,7 +1,6 @@ -using QSB.QuantumUNET; -using UnityEngine.Networking; +using UnityEngine.Networking; -namespace QSB.Animation.Events +namespace QuantumUNET { internal class QSBAnimationParametersMessage : QSBMessageBase { diff --git a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs b/QuantumUNET/QSBAnimationTriggerMessage.cs similarity index 82% rename from QSB/Animation/Events/QSBAnimationTriggerMessage.cs rename to QuantumUNET/QSBAnimationTriggerMessage.cs index 8890207cb..a4497280e 100644 --- a/QSB/Animation/Events/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/QSBAnimationTriggerMessage.cs @@ -1,7 +1,6 @@ -using QSB.QuantumUNET; -using UnityEngine.Networking; +using UnityEngine.Networking; -namespace QSB.Animation.Events +namespace QuantumUNET { internal class QSBAnimationTriggerMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBCRCMessage.cs b/QuantumUNET/QSBCRCMessage.cs similarity index 96% rename from QSB/QuantumUNET/QSBCRCMessage.cs rename to QuantumUNET/QSBCRCMessage.cs index d551a15ec..59462ef1c 100644 --- a/QSB/QuantumUNET/QSBCRCMessage.cs +++ b/QuantumUNET/QSBCRCMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBCRCMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBCRCMessageEntry.cs b/QuantumUNET/QSBCRCMessageEntry.cs similarity index 75% rename from QSB/QuantumUNET/QSBCRCMessageEntry.cs rename to QuantumUNET/QSBCRCMessageEntry.cs index b3f3ffe3c..1d9c78956 100644 --- a/QSB/QuantumUNET/QSBCRCMessageEntry.cs +++ b/QuantumUNET/QSBCRCMessageEntry.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { internal struct QSBCRCMessageEntry { diff --git a/QSB/QuantumUNET/QSBChannelBuffer.cs b/QuantumUNET/QSBChannelBuffer.cs similarity index 99% rename from QSB/QuantumUNET/QSBChannelBuffer.cs rename to QuantumUNET/QSBChannelBuffer.cs index cfde98e2d..d3d911495 100644 --- a/QSB/QuantumUNET/QSBChannelBuffer.cs +++ b/QuantumUNET/QSBChannelBuffer.cs @@ -3,7 +3,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBChannelBuffer : IDisposable { diff --git a/QSB/QuantumUNET/QSBChannelPacket.cs b/QuantumUNET/QSBChannelPacket.cs similarity index 98% rename from QSB/QuantumUNET/QSBChannelPacket.cs rename to QuantumUNET/QSBChannelPacket.cs index a5ee07ee8..f6001ad63 100644 --- a/QSB/QuantumUNET/QSBChannelPacket.cs +++ b/QuantumUNET/QSBChannelPacket.cs @@ -2,7 +2,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal struct QSBChannelPacket { diff --git a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs b/QuantumUNET/QSBClientAuthorityMessage.cs similarity index 94% rename from QSB/QuantumUNET/QSBClientAuthorityMessage.cs rename to QuantumUNET/QSBClientAuthorityMessage.cs index 779f19098..66889b3d0 100644 --- a/QSB/QuantumUNET/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/QSBClientAuthorityMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBClientAuthorityMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs similarity index 99% rename from QSB/QuantumUNET/QSBClientScene.cs rename to QuantumUNET/QSBClientScene.cs index f7e562ab9..2052c8059 100644 --- a/QSB/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,10 +1,8 @@ -using QSB.Animation; -using QSB.Utility; -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBClientScene { diff --git a/QSB/QuantumUNET/QSBEmptyMessage.cs b/QuantumUNET/QSBEmptyMessage.cs similarity index 86% rename from QSB/QuantumUNET/QSBEmptyMessage.cs rename to QuantumUNET/QSBEmptyMessage.cs index 6a1c0bc82..00d1ce193 100644 --- a/QSB/QuantumUNET/QSBEmptyMessage.cs +++ b/QuantumUNET/QSBEmptyMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBEmptyMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBErrorMessage.cs b/QuantumUNET/QSBErrorMessage.cs similarity index 91% rename from QSB/QuantumUNET/QSBErrorMessage.cs rename to QuantumUNET/QSBErrorMessage.cs index 9169152f7..ebb436db6 100644 --- a/QSB/QuantumUNET/QSBErrorMessage.cs +++ b/QuantumUNET/QSBErrorMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBErrorMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBLocalClient.cs b/QuantumUNET/QSBLocalClient.cs similarity index 99% rename from QSB/QuantumUNET/QSBLocalClient.cs rename to QuantumUNET/QSBLocalClient.cs index 736676d1c..f6e546c8f 100644 --- a/QSB/QuantumUNET/QSBLocalClient.cs +++ b/QuantumUNET/QSBLocalClient.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using UnityEngine; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBLocalClient : QSBNetworkClient { diff --git a/QSB/QuantumUNET/QSBMessageBase.cs b/QuantumUNET/QSBMessageBase.cs similarity index 86% rename from QSB/QuantumUNET/QSBMessageBase.cs rename to QuantumUNET/QSBMessageBase.cs index 7ec1a3e3d..dce35c360 100644 --- a/QSB/QuantumUNET/QSBMessageBase.cs +++ b/QuantumUNET/QSBMessageBase.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public abstract class QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBNetBuffer.cs b/QuantumUNET/QSBNetBuffer.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetBuffer.cs rename to QuantumUNET/QSBNetBuffer.cs index 9153d8752..8f879800a 100644 --- a/QSB/QuantumUNET/QSBNetBuffer.cs +++ b/QuantumUNET/QSBNetBuffer.cs @@ -1,7 +1,7 @@ using System; using UnityEngine; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBNetBuffer { diff --git a/QSB/Animation/QSBNetworkAnimator.cs b/QuantumUNET/QSBNetworkAnimator.cs similarity index 97% rename from QSB/Animation/QSBNetworkAnimator.cs rename to QuantumUNET/QSBNetworkAnimator.cs index 868452723..542fd693f 100644 --- a/QSB/Animation/QSBNetworkAnimator.cs +++ b/QuantumUNET/QSBNetworkAnimator.cs @@ -1,12 +1,8 @@ -using QSB.Animation.Events; -using QSB.QuantumUNET; -using UnityEngine; +using UnityEngine; -namespace QSB.Animation +namespace QuantumUNET { - // Cleaned up unity code. UNET is so broken I gave up and fixed it myself. - - internal class QSBNetworkAnimator : QSBNetworkBehaviour + public class QSBNetworkAnimator : QSBNetworkBehaviour { private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); diff --git a/QSB/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs similarity index 98% rename from QSB/QuantumUNET/QSBNetworkBehaviour.cs rename to QuantumUNET/QSBNetworkBehaviour.cs index 9b5c6db0f..02855c310 100644 --- a/QSB/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,12 +1,12 @@ using OWML.Common; -using QSB.Utility; +using OWML.Logging; using System; using System.Collections.Generic; using System.Net.Sockets; using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkBehaviour : MonoBehaviour { @@ -97,7 +97,7 @@ protected void SendEventInternal(QSBNetworkWriter writer, int channelId, string { if (!QSBNetworkServer.active) { - DebugLog.ToConsole($"Error - Tried to send event {eventName} on channel {channelId} but QSBNetworkServer isn't active.", MessageType.Error); + ModConsole.OwmlConsole.WriteLine($"Error - Tried to send event {eventName} on channel {channelId} but QSBNetworkServer isn't active."); return; } writer.FinishMessage(); diff --git a/QSB/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkCRC.cs rename to QuantumUNET/QSBNetworkCRC.cs index 1c22ce230..0bf0643f6 100644 --- a/QSB/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -4,7 +4,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkCRC { diff --git a/QSB/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs similarity index 98% rename from QSB/QuantumUNET/QSBNetworkClient.cs rename to QuantumUNET/QSBNetworkClient.cs index ba5dd6b29..7d8ade9f0 100644 --- a/QSB/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -1,4 +1,5 @@ -using QSB.Utility; +using OWML.Common; +using OWML.Logging; using System; using System.Collections.Generic; using System.Net; @@ -8,7 +9,7 @@ using UnityEngine.Networking.Match; using UnityEngine.Networking.NetworkSystem; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkClient { @@ -366,7 +367,7 @@ private static bool IsValidIpV6(string address) public void Connect(string serverIp, int serverPort) { PrepareForConnect(); - DebugLog.DebugWrite(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "Client Connect: ", serverIp, @@ -391,7 +392,7 @@ public void Connect(string serverIp, int serverPort) } else { - DebugLog.DebugWrite("Async DNS START:" + serverIp); + ModConsole.OwmlConsole.WriteLine("Async DNS START:" + serverIp); m_RequestedServerHost = serverIp; m_AsyncConnect = ConnectState.Resolving; Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(GetHostAddressesCallback), this); @@ -482,7 +483,6 @@ private void PrepareForConnect() private void PrepareForConnect(bool usePlatformSpecificProtocols) { - DebugLog.DebugWrite("prepare for connect"); SetActive(true); RegisterSystemHandlers(false); if (m_HostTopology == null) @@ -501,7 +501,7 @@ private void PrepareForConnect(bool usePlatformSpecificProtocols) num = 1; } int num2 = m_SimulatedLatency * 3; - DebugLog.DebugWrite(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "AddHost Using Simulator ", num, @@ -560,7 +560,7 @@ internal void ContinueConnect() { num = 1; } - DebugLog.DebugWrite(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "Connect Using Simulator ", m_SimulatedLatency / 3, diff --git a/QSB/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkConnection.cs rename to QuantumUNET/QSBNetworkConnection.cs index 80553f42f..6f52a3661 100644 --- a/QSB/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -1,11 +1,12 @@ -using QSB.Utility; +using OWML.Common; +using OWML.Logging; using System; using System.Collections.Generic; using System.Text; using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkConnection : IDisposable { @@ -367,7 +368,7 @@ protected void HandleReader(NetworkReader reader, int receivedSize, int channelI } if (networkMessageDelegate == null) { - DebugLog.ToConsole(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "Unknown message ID ", num2, diff --git a/QSB/QuantumUNET/QSBNetworkIdentity.cs b/QuantumUNET/QSBNetworkIdentity.cs similarity index 96% rename from QSB/QuantumUNET/QSBNetworkIdentity.cs rename to QuantumUNET/QSBNetworkIdentity.cs index ab522f682..d8e5a37d8 100644 --- a/QSB/QuantumUNET/QSBNetworkIdentity.cs +++ b/QuantumUNET/QSBNetworkIdentity.cs @@ -1,12 +1,12 @@ using OWML.Common; -using QSB.Utility; +using OWML.Logging; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public sealed class QSBNetworkIdentity : MonoBehaviour { @@ -191,8 +191,7 @@ internal void OnStartServer(bool allowNonZeroNetId) } else if (!allowNonZeroNetId) { - DebugLog.DebugWrite($"netid is {NetId}"); - Debug.LogError(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "Object has non-zero netId ", NetId, @@ -648,7 +647,7 @@ internal void OnUpdateVars(QSBNetworkReader reader, bool initialState) internal void SetLocalPlayer(short localPlayerControllerId) { - DebugLog.DebugWrite($"SetLocalPlayer {localPlayerControllerId}", OWML.Common.MessageType.Warning); + ModConsole.OwmlConsole.WriteLine($"SetLocalPlayer {localPlayerControllerId}"); IsLocalPlayer = true; PlayerControllerId = localPlayerControllerId; var hasAuthority = this.HasAuthority; @@ -856,7 +855,7 @@ public bool RemoveClientAuthority(QSBNetworkConnection conn) { if (!IsServer) { - DebugLog.ToConsole($"Warning - Cannot remove authority on client-side. (NetId:{NetId}, Gameobject:{gameObject.name})", MessageType.Warning); + ModConsole.OwmlConsole.WriteLine($"Warning - Cannot remove authority on client-side. (NetId:{NetId}, Gameobject:{gameObject.name})"); return false; } else if (ConnectionToClient != null) @@ -890,12 +889,12 @@ public bool AssignClientAuthority(QSBNetworkConnection conn) { if (!IsServer) { - DebugLog.ToConsole($"Warning - Cannot assign authority on client-side. (NetId:{NetId}, Gameobject:{gameObject.name})", MessageType.Warning); + ModConsole.OwmlConsole.WriteLine($"Warning - Cannot assign authority on client-side. (NetId:{NetId}, Gameobject:{gameObject.name})"); return false; } else if (!LocalPlayerAuthority) { - DebugLog.ToConsole($"Warning - Cannot assign authority on object without LocalPlayerAuthority. (NetId:{NetId}, Gameobject:{gameObject.name})", MessageType.Warning); + ModConsole.OwmlConsole.WriteLine($"Warning - Cannot assign authority on object without LocalPlayerAuthority. (NetId:{NetId}, Gameobject:{gameObject.name})"); return false; } else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) @@ -942,7 +941,7 @@ internal void Reset() } } - internal static void UNetStaticUpdate() + public static void UNetStaticUpdate() { QSBNetworkServer.Update(); QSBNetworkClient.UpdateClients(); diff --git a/QSB/QuantumUNET/QSBNetworkManagerHUD.cs b/QuantumUNET/QSBNetworkManagerHUD.cs similarity index 98% rename from QSB/QuantumUNET/QSBNetworkManagerHUD.cs rename to QuantumUNET/QSBNetworkManagerHUD.cs index 03efec600..7b6c64327 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/QSBNetworkManagerHUD.cs @@ -2,13 +2,13 @@ using UnityEngine; using UnityEngine.Networking.Match; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkManagerHUD : MonoBehaviour { private void Awake() { - this.manager = base.GetComponent(); + this.manager = base.GetComponent(); } private void Update() @@ -243,7 +243,7 @@ private void OnGUI() } } - public QSBNetworkManager manager; + public QSBNetworkManagerUNET manager; [SerializeField] public bool showGUI = true; diff --git a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs similarity index 97% rename from QSB/QuantumUNET/QSBNetworkManagerUNET.cs rename to QuantumUNET/QSBNetworkManagerUNET.cs index cb6d7ed23..ef3a109e5 100644 --- a/QSB/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.Utility; +using OWML.Logging; using System; using System.Collections.Generic; using System.Net; @@ -9,7 +9,7 @@ using UnityEngine.Networking.Types; using UnityEngine.SceneManagement; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkManagerUNET : MonoBehaviour { @@ -697,22 +697,22 @@ public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int this.RegisterClientMessages(client); if (matchInfo != null) { - DebugLog.DebugWrite("NetworkManager StartClient match: " + matchInfo); + ModConsole.OwmlConsole.WriteLine("NetworkManager StartClient match: " + matchInfo); client.Connect(matchInfo); } else if (m_EndPoint != null) { - DebugLog.DebugWrite("NetworkManager StartClient using provided SecureTunnel"); + ModConsole.OwmlConsole.WriteLine("NetworkManager StartClient using provided SecureTunnel"); client.Connect(m_EndPoint); } else { if (string.IsNullOrEmpty(m_NetworkAddress)) { - DebugLog.DebugWrite("Must set the Network Address field in the manager"); + ModConsole.OwmlConsole.WriteLine("Must set the Network Address field in the manager"); return null; } - DebugLog.DebugWrite(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "NetworkManager StartClient address:", m_NetworkAddress, @@ -721,12 +721,12 @@ public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int })); if (m_UseSimulator) { - DebugLog.DebugWrite("connecting with simulator"); + ModConsole.OwmlConsole.WriteLine("connecting with simulator"); client.ConnectWithSimulator(m_NetworkAddress, m_NetworkPort, m_SimulatedLatency, m_PacketLossPercentage); } else { - DebugLog.DebugWrite("connecting"); + ModConsole.OwmlConsole.WriteLine("connecting"); client.Connect(m_NetworkAddress, m_NetworkPort); } } @@ -982,7 +982,7 @@ internal static void UpdateScene() { if (s_LoadingSceneAsync.isDone) { - DebugLog.DebugWrite("ClientChangeScene done readyCon:" + s_ClientReadyConnection); + ModConsole.OwmlConsole.WriteLine("ClientChangeScene done readyCon:" + s_ClientReadyConnection); singleton.FinishLoadScene(); s_LoadingSceneAsync.allowSceneActivation = true; s_LoadingSceneAsync = null; @@ -1267,21 +1267,21 @@ private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerCo { if (LogFilter.logError) { - DebugLog.ToConsole("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object.", MessageType.Error); + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); } } else if (m_PlayerPrefab.GetComponent() == null) { if (LogFilter.logError) { - DebugLog.ToConsole("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab.", MessageType.Error); + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); } } else if ((int)playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[(int)playerControllerId].IsValid && conn.PlayerControllers[(int)playerControllerId].Gameobject != null) { if (LogFilter.logError) { - Debug.LogError("There is already a player at that playerControllerId for this connections."); + ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); } } else diff --git a/QSB/QuantumUNET/QSBNetworkMessage.cs b/QuantumUNET/QSBNetworkMessage.cs similarity index 95% rename from QSB/QuantumUNET/QSBNetworkMessage.cs rename to QuantumUNET/QSBNetworkMessage.cs index db5d7a4cd..8628bcf74 100644 --- a/QSB/QuantumUNET/QSBNetworkMessage.cs +++ b/QuantumUNET/QSBNetworkMessage.cs @@ -1,6 +1,6 @@ using System; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkMessage { diff --git a/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs b/QuantumUNET/QSBNetworkMessageDelegate.cs similarity index 72% rename from QSB/QuantumUNET/QSBNetworkMessageDelegate.cs rename to QuantumUNET/QSBNetworkMessageDelegate.cs index 14ddcf5af..1add490e8 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageDelegate.cs +++ b/QuantumUNET/QSBNetworkMessageDelegate.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public delegate void QSBNetworkMessageDelegate(QSBNetworkMessage netMsg); } \ No newline at end of file diff --git a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs b/QuantumUNET/QSBNetworkMessageHandlers.cs similarity index 98% rename from QSB/QuantumUNET/QSBNetworkMessageHandlers.cs rename to QuantumUNET/QSBNetworkMessageHandlers.cs index 092b82ce6..d0c651208 100644 --- a/QSB/QuantumUNET/QSBNetworkMessageHandlers.cs +++ b/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using UnityEngine; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBNetworkMessageHandlers { diff --git a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs b/QuantumUNET/QSBNetworkMigrationManager.cs similarity index 98% rename from QSB/QuantumUNET/QSBNetworkMigrationManager.cs rename to QuantumUNET/QSBNetworkMigrationManager.cs index 8988f73d4..909059861 100644 --- a/QSB/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QuantumUNET/QSBNetworkMigrationManager.cs @@ -4,7 +4,7 @@ using UnityEngine.Networking.Match; using UnityEngine.Networking.Types; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkMigrationManager : MonoBehaviour { @@ -197,9 +197,9 @@ public void Reset(int reconnectId) this.m_DisconnectedFromHost = false; this.m_HostWasShutdown = false; QSBClientScene.SetReconnectId(reconnectId, this.m_Peers); - if (QSBNetworkManager.singleton != null) + if (QSBNetworkManagerUNET.singleton != null) { - QSBNetworkManager.singleton.SetupMigrationManager(this); + QSBNetworkManagerUNET.singleton.SetupMigrationManager(this); } } @@ -711,10 +711,10 @@ public bool BecomeNewHost(int port) bool result; if (networkClient != null) { - if (QSBNetworkManager.singleton != null) + if (QSBNetworkManagerUNET.singleton != null) { - QSBNetworkManager.singleton.RegisterServerMessages(); - QSBNetworkManager.singleton.UseExternalClient(networkClient); + QSBNetworkManagerUNET.singleton.RegisterServerMessages(); + QSBNetworkManagerUNET.singleton.UseExternalClient(networkClient); } else { diff --git a/QSB/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkReader.cs rename to QuantumUNET/QSBNetworkReader.cs index 32d9d6251..552596e5b 100644 --- a/QSB/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -3,7 +3,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkReader { diff --git a/QSB/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkScene.cs rename to QuantumUNET/QSBNetworkScene.cs index 457e1cf86..31346daa1 100644 --- a/QSB/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -2,7 +2,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBNetworkScene { diff --git a/QSB/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkServer.cs rename to QuantumUNET/QSBNetworkServer.cs index 62350cdde..e6e7c1f84 100644 --- a/QSB/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1,6 +1,5 @@ using OWML.Common; -using QSB.Animation; -using QSB.Utility; +using OWML.Logging; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -9,7 +8,7 @@ using UnityEngine.Networking.Match; using UnityEngine.Networking.Types; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkServer { @@ -548,7 +547,7 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu } if (!flag) { - DebugLog.DebugWrite("SendBytesToReady failed"); + ModConsole.OwmlConsole.WriteLine("SendBytesToReady failed"); } } else @@ -571,12 +570,12 @@ public static void SendBytesToReady(GameObject contextObj, byte[] buffer, int nu } if (!flag2) { - DebugLog.DebugWrite("SendBytesToReady failed for " + contextObj); + ModConsole.OwmlConsole.WriteLine("SendBytesToReady failed for " + contextObj); } } catch (NullReferenceException) { - DebugLog.DebugWrite("SendBytesToReady object " + contextObj + " has not been spawned"); + ModConsole.OwmlConsole.WriteLine("SendBytesToReady object " + contextObj + " has not been spawned"); } } } @@ -1443,7 +1442,7 @@ internal void SpawnObject(GameObject obj) QSBNetworkIdentity networkIdentity; if (!active) { - DebugLog.ToConsole("Error - SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server.", MessageType.Error); + ModConsole.OwmlConsole.WriteLine("Error - SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); } else if (!GetNetworkIdentity(obj, out networkIdentity)) { diff --git a/QSB/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkServerSimple.cs rename to QuantumUNET/QSBNetworkServerSimple.cs index bf8bd61e1..3b670cbc2 100644 --- a/QSB/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,12 +1,11 @@ -using QSB.Utility; -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Types; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkServerSimple { diff --git a/QSB/QuantumUNET/QSBNetworkTransform.cs b/QuantumUNET/QSBNetworkTransform.cs similarity index 95% rename from QSB/QuantumUNET/QSBNetworkTransform.cs rename to QuantumUNET/QSBNetworkTransform.cs index 4ccfde7d8..0bad199d5 100644 --- a/QSB/QuantumUNET/QSBNetworkTransform.cs +++ b/QuantumUNET/QSBNetworkTransform.cs @@ -1,8 +1,9 @@ -using QSB.Utility; +using OWML.Common; +using OWML.Logging; using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkTransform : QSBNetworkBehaviour { @@ -107,7 +108,6 @@ public override bool OnSerialize(QSBNetworkWriter writer, bool initialState) { if (SyncVarDirtyBits == 0U) { - DebugLog.DebugWrite("dirty bits = 0, abort"); writer.WritePackedUInt32(0U); return false; } @@ -272,22 +272,22 @@ public static void HandleTransform(QSBNetworkMessage netMsg) var gameObject = QSBNetworkServer.FindLocalObject(networkInstanceId); if (gameObject == null) { - DebugLog.DebugWrite("Received NetworkTransform data for GameObject that doesn't exist"); + ModConsole.OwmlConsole.WriteLine("Warning - Received NetworkTransform data for GameObject that doesn't exist"); } else { var component = gameObject.GetComponent(); if (component == null) { - DebugLog.DebugWrite("HandleTransform null target"); + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform null target"); } else if (!component.LocalPlayerAuthority) { - DebugLog.DebugWrite("HandleTransform no localPlayerAuthority"); + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform no localPlayerAuthority"); } else if (netMsg.Connection.ClientOwnedObjects == null) { - DebugLog.DebugWrite("HandleTransform object not owned by connection"); + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform object not owned by connection"); } else if (netMsg.Connection.ClientOwnedObjects.Contains(networkInstanceId)) { @@ -296,7 +296,7 @@ public static void HandleTransform(QSBNetworkMessage netMsg) } else if (LogFilter.logWarn) { - DebugLog.DebugWrite("HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); } } } diff --git a/QSB/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/QSBNetworkWriter.cs similarity index 99% rename from QSB/QuantumUNET/QSBNetworkWriter.cs rename to QuantumUNET/QSBNetworkWriter.cs index 5e6d23e64..1e32bdac3 100644 --- a/QSB/QuantumUNET/QSBNetworkWriter.cs +++ b/QuantumUNET/QSBNetworkWriter.cs @@ -3,7 +3,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNetworkWriter { diff --git a/QSB/QuantumUNET/QSBNotReadyMessage.cs b/QuantumUNET/QSBNotReadyMessage.cs similarity index 67% rename from QSB/QuantumUNET/QSBNotReadyMessage.cs rename to QuantumUNET/QSBNotReadyMessage.cs index e135dbda7..b8bcc65e8 100644 --- a/QSB/QuantumUNET/QSBNotReadyMessage.cs +++ b/QuantumUNET/QSBNotReadyMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBNotReadyMessage : QSBEmptyMessage { diff --git a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs b/QuantumUNET/QSBObjectDestroyMessage.cs similarity index 92% rename from QSB/QuantumUNET/QSBObjectDestroyMessage.cs rename to QuantumUNET/QSBObjectDestroyMessage.cs index f4aefd3f6..0bd945214 100644 --- a/QSB/QuantumUNET/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/QSBObjectDestroyMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBObjectDestroyMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/QSBObjectSpawnFinishedMessage.cs similarity index 91% rename from QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs rename to QuantumUNET/QSBObjectSpawnFinishedMessage.cs index d20827cc3..3ceb71a13 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/QSBObjectSpawnFinishedMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs b/QuantumUNET/QSBObjectSpawnMessage.cs similarity index 96% rename from QSB/QuantumUNET/QSBObjectSpawnMessage.cs rename to QuantumUNET/QSBObjectSpawnMessage.cs index fa077d43c..32b5c9d73 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/QSBObjectSpawnMessage.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBObjectSpawnMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/QSBObjectSpawnSceneMessage.cs similarity index 96% rename from QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs rename to QuantumUNET/QSBObjectSpawnSceneMessage.cs index 99b4a6cad..cf49fe77f 100644 --- a/QSB/QuantumUNET/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/QSBObjectSpawnSceneMessage.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBObjectSpawnSceneMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBOwnerMessage.cs b/QuantumUNET/QSBOwnerMessage.cs similarity index 94% rename from QSB/QuantumUNET/QSBOwnerMessage.cs rename to QuantumUNET/QSBOwnerMessage.cs index 4a0810308..b5aafc2e9 100644 --- a/QSB/QuantumUNET/QSBOwnerMessage.cs +++ b/QuantumUNET/QSBOwnerMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBOwnerMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs b/QuantumUNET/QSBPeerAuthorityMessage.cs similarity index 95% rename from QSB/QuantumUNET/QSBPeerAuthorityMessage.cs rename to QuantumUNET/QSBPeerAuthorityMessage.cs index 0cdd08ffe..1ef5ec75d 100644 --- a/QSB/QuantumUNET/QSBPeerAuthorityMessage.cs +++ b/QuantumUNET/QSBPeerAuthorityMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBPeerAuthorityMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBPeerInfoMessage.cs b/QuantumUNET/QSBPeerInfoMessage.cs similarity index 98% rename from QSB/QuantumUNET/QSBPeerInfoMessage.cs rename to QuantumUNET/QSBPeerInfoMessage.cs index b98942715..a564670d2 100644 --- a/QSB/QuantumUNET/QSBPeerInfoMessage.cs +++ b/QuantumUNET/QSBPeerInfoMessage.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBPeerInfoMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBPeerInfoPlayer.cs b/QuantumUNET/QSBPeerInfoPlayer.cs similarity index 84% rename from QSB/QuantumUNET/QSBPeerInfoPlayer.cs rename to QuantumUNET/QSBPeerInfoPlayer.cs index 19a5f81d4..77394469a 100644 --- a/QSB/QuantumUNET/QSBPeerInfoPlayer.cs +++ b/QuantumUNET/QSBPeerInfoPlayer.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public struct QSBPeerInfoPlayer { diff --git a/QSB/QuantumUNET/QSBPeerListMessage.cs b/QuantumUNET/QSBPeerListMessage.cs similarity index 96% rename from QSB/QuantumUNET/QSBPeerListMessage.cs rename to QuantumUNET/QSBPeerListMessage.cs index 8482446d9..17ab92411 100644 --- a/QSB/QuantumUNET/QSBPeerListMessage.cs +++ b/QuantumUNET/QSBPeerListMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBPeerListMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBPlayerController.cs b/QuantumUNET/QSBPlayerController.cs similarity index 96% rename from QSB/QuantumUNET/QSBPlayerController.cs rename to QuantumUNET/QSBPlayerController.cs index 617a0667d..88b8ac0f1 100644 --- a/QSB/QuantumUNET/QSBPlayerController.cs +++ b/QuantumUNET/QSBPlayerController.cs @@ -1,6 +1,6 @@ using UnityEngine; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBPlayerController { diff --git a/QSB/QuantumUNET/QSBReadyMessage.cs b/QuantumUNET/QSBReadyMessage.cs similarity index 66% rename from QSB/QuantumUNET/QSBReadyMessage.cs rename to QuantumUNET/QSBReadyMessage.cs index 11adb735b..0403fe815 100644 --- a/QSB/QuantumUNET/QSBReadyMessage.cs +++ b/QuantumUNET/QSBReadyMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBReadyMessage : QSBEmptyMessage { diff --git a/QSB/QuantumUNET/QSBReconnectMessage.cs b/QuantumUNET/QSBReconnectMessage.cs similarity index 96% rename from QSB/QuantumUNET/QSBReconnectMessage.cs rename to QuantumUNET/QSBReconnectMessage.cs index b98a5a21a..4cfa14ef1 100644 --- a/QSB/QuantumUNET/QSBReconnectMessage.cs +++ b/QuantumUNET/QSBReconnectMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBReconnectMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs b/QuantumUNET/QSBRemovePlayerMessage.cs similarity index 91% rename from QSB/QuantumUNET/QSBRemovePlayerMessage.cs rename to QuantumUNET/QSBRemovePlayerMessage.cs index eb4d1a96a..1399e1fa2 100644 --- a/QSB/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/QSBRemovePlayerMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBRemovePlayerMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBStringMessage.cs b/QuantumUNET/QSBStringMessage.cs similarity index 92% rename from QSB/QuantumUNET/QSBStringMessage.cs rename to QuantumUNET/QSBStringMessage.cs index a13fb42e0..5b352d9d5 100644 --- a/QSB/QuantumUNET/QSBStringMessage.cs +++ b/QuantumUNET/QSBStringMessage.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBStringMessage : QSBMessageBase { diff --git a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs b/QuantumUNET/QSBULocalConnectionToClient.cs similarity index 98% rename from QSB/QuantumUNET/QSBULocalConnectionToClient.cs rename to QuantumUNET/QSBULocalConnectionToClient.cs index ec41ead9a..312647d10 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,4 +1,4 @@ -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBULocalConnectionToClient : QSBNetworkConnection { diff --git a/QSB/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs similarity index 98% rename from QSB/QuantumUNET/QSBULocalConnectionToServer.cs rename to QuantumUNET/QSBULocalConnectionToServer.cs index 9bf4bedb0..f1aa485a5 100644 --- a/QSB/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB.QuantumUNET +namespace QuantumUNET { internal class QSBULocalConnectionToServer : QSBNetworkConnection { diff --git a/QSB/QuantumUNET/QSBUtility.cs b/QuantumUNET/QSBUtility.cs similarity index 96% rename from QSB/QuantumUNET/QSBUtility.cs rename to QuantumUNET/QSBUtility.cs index 86fc1b149..57c806098 100644 --- a/QSB/QuantumUNET/QSBUtility.cs +++ b/QuantumUNET/QSBUtility.cs @@ -2,7 +2,7 @@ using UnityEngine; using UnityEngine.Networking.Types; -namespace QSB.QuantumUNET +namespace QuantumUNET { public class QSBUtility { diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj new file mode 100644 index 000000000..bd7371702 --- /dev/null +++ b/QuantumUNET/QuantumUNET.csproj @@ -0,0 +1,156 @@ + + + + + Debug + AnyCPU + {C8C53004-1508-4F86-A419-4292C188DC2A} + Library + Properties + QuantumUNET + QuantumUNET + v3.5 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Lib.Harmony.1.2.0.1\lib\net35\0Harmony.dll + + + ..\packages\OWML.0.7.3\lib\net35\NAudio-Unity.dll + + + ..\packages\Json.Net.Unity3D.9.0.1\lib\net35\Newtonsoft.Json.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.Common.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.Logging.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.ModHelper.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.ModHelper.Assets.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.ModHelper.Events.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.ModHelper.Input.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.ModHelper.Interaction.dll + + + ..\packages\OWML.0.7.3\lib\net35\OWML.ModHelper.Menus.dll + + + + + + + + + D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.dll + + + D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.AnimationModule.dll + + + D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.CoreModule.dll + + + D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.IMGUIModule.dll + + + D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.Networking.dll + + + D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.UNETModule.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + copy /y "$(TargetPath)" "$(OwmlDir)\Mods\QSB" + + \ No newline at end of file diff --git a/QuantumUNET/QuantumUNET.csproj.user b/QuantumUNET/QuantumUNET.csproj.user new file mode 100644 index 000000000..c8a11e84d --- /dev/null +++ b/QuantumUNET/QuantumUNET.csproj.user @@ -0,0 +1,8 @@ + + + + D:\EpicGames\OuterWilds + C:\Users\Henry\AppData\Roaming\OuterWildsModManager\OWML + ShowAllFiles + + \ No newline at end of file diff --git a/QuantumUNET/packages.config b/QuantumUNET/packages.config new file mode 100644 index 000000000..c2d105a69 --- /dev/null +++ b/QuantumUNET/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 709ac756955f1887cd50af50b8d04348696b6663 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 4 Dec 2020 22:15:41 +0000 Subject: [PATCH 118/207] cleanup --- QSB/Animation/AnimationSync.cs | 2 +- QSB/EventsCore/QSBEvent.cs | 2 +- QSB/GeyserSync/QSBGeyser.cs | 2 +- QSB/MessagesCore/MessageHandler.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 2 +- QSB/OrbSync/OrbManager.cs | 2 +- QSB/Player/QSBPlayerManager.cs | 2 +- QSB/QSB.cs | 2 +- QSB/QSBNetworkManager.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 2 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 4 ++-- QuantumUNET/Properties/AssemblyInfo.cs | 1 - QuantumUNET/QSBNetworkBehaviour.cs | 3 +-- QuantumUNET/QSBNetworkClient.cs | 3 +-- QuantumUNET/QSBNetworkConnection.cs | 3 +-- QuantumUNET/QSBNetworkIdentity.cs | 3 +-- QuantumUNET/QSBNetworkManagerUNET.cs | 3 +-- QuantumUNET/QSBNetworkReader.cs | 12 ++++++------ QuantumUNET/QSBNetworkServer.cs | 3 +-- QuantumUNET/QSBNetworkTransform.cs | 3 +-- 20 files changed, 25 insertions(+), 33 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 816bd1a09..29e01492d 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -3,9 +3,9 @@ using QSB.EventsCore; using QSB.Player; using QSB.Utility; +using QuantumUNET; using System.Linq; using UnityEngine; -using QuantumUNET; namespace QSB.Animation { diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index fe8bcb0cc..970325f33 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using QSB.Player; -using QuantumUNET; using QSB.TransformSync; +using QuantumUNET; namespace QSB.EventsCore { diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index 484898e5e..91091f663 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -1,6 +1,6 @@ using QSB.EventsCore; -using QuantumUNET; using QSB.WorldSync; +using QuantumUNET; namespace QSB.GeyserSync { diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index c820c0657..729c59c93 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -1,7 +1,7 @@ using OWML.Common; using QSB.EventsCore; -using QuantumUNET; using QSB.Utility; +using QuantumUNET; using System; using System.Linq; using UnityEngine.Networking; diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index bfa741f25..db2ca212b 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,9 +1,9 @@ using OWML.Common; using QSB.EventsCore; -using QuantumUNET; using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; +using QuantumUNET; using System.Linq; namespace QSB.OrbSync.Events diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 1cd505639..a1288960e 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -1,7 +1,7 @@ using OWML.Common; -using QuantumUNET; using QSB.Utility; using QSB.WorldSync; +using QuantumUNET; using System.Linq; using UnityEngine; diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 093b43a01..c31956e15 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -1,8 +1,8 @@ using OWML.Common; using QSB.Player.Events; -using QuantumUNET; using QSB.TransformSync; using QSB.Utility; +using QuantumUNET; using System.Collections.Generic; using System.Linq; diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 31ed7f391..f8aae0fdf 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -6,10 +6,10 @@ using QSB.GeyserSync; using QSB.OrbSync; using QSB.Patches; -using QuantumUNET; using QSB.SectorSync; using QSB.TimeSync; using QSB.Utility; +using QuantumUNET; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index afdffc7a0..a178292f9 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -9,12 +9,12 @@ using QSB.OrbSync; using QSB.Patches; using QSB.Player; -using QuantumUNET; using QSB.SectorSync; using QSB.TimeSync; using QSB.TransformSync; using QSB.Utility; using QSB.WorldSync; +using QuantumUNET; using System; using System.Linq; using UnityEngine; diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 01b3b4ec3..ab6b857e6 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,8 +1,8 @@ using QSB.DeathSync; using QSB.EventsCore; -using QuantumUNET; using QSB.TimeSync.Events; using QSB.Utility; +using QuantumUNET; using UnityEngine; namespace QSB.TimeSync diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 03c2cff43..4572b11d4 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -1,6 +1,6 @@ -using QuantumUNET; -using QSB.Utility; +using QSB.Utility; using QSB.WorldSync; +using QuantumUNET; using UnityEngine; namespace QSB.TransformSync diff --git a/QuantumUNET/Properties/AssemblyInfo.cs b/QuantumUNET/Properties/AssemblyInfo.cs index a4d9e4f87..ea4d460c7 100644 --- a/QuantumUNET/Properties/AssemblyInfo.cs +++ b/QuantumUNET/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 02855c310..7ae19ce7d 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using System; using System.Collections.Generic; using System.Net.Sockets; diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 7d8ade9f0..8acce4123 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using System; using System.Collections.Generic; using System.Net; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 6f52a3661..9b0cddb87 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using System; using System.Collections.Generic; using System.Text; diff --git a/QuantumUNET/QSBNetworkIdentity.cs b/QuantumUNET/QSBNetworkIdentity.cs index d8e5a37d8..24b98ef2b 100644 --- a/QuantumUNET/QSBNetworkIdentity.cs +++ b/QuantumUNET/QSBNetworkIdentity.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs index ef3a109e5..fd87cb687 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using System; using System.Collections.Generic; using System.Net; diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs index 552596e5b..f88d9f10b 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -10,27 +10,27 @@ public class QSBNetworkReader public QSBNetworkReader() { m_buf = new QSBNetBuffer(); - Initialize(); + Initialize(); } public QSBNetworkReader(QSBNetworkWriter writer) { m_buf = new QSBNetBuffer(writer.AsArray()); - Initialize(); + Initialize(); } public QSBNetworkReader(byte[] buffer) { m_buf = new QSBNetBuffer(buffer); - Initialize(); + Initialize(); } private static void Initialize() { if (s_Encoding == null) { - s_StringReaderBuffer = new byte[1024]; - s_Encoding = new UTF8Encoding(); + s_StringReaderBuffer = new byte[1024]; + s_Encoding = new UTF8Encoding(); } } @@ -312,7 +312,7 @@ public string ReadString() } while ((int)num > s_StringReaderBuffer.Length) { - s_StringReaderBuffer = new byte[s_StringReaderBuffer.Length * 2]; + s_StringReaderBuffer = new byte[s_StringReaderBuffer.Length * 2]; } m_buf.ReadBytes(s_StringReaderBuffer, (uint)num); char[] chars = s_Encoding.GetChars(s_StringReaderBuffer, 0, (int)num); diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index e6e7c1f84..3c4a405b9 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/QuantumUNET/QSBNetworkTransform.cs b/QuantumUNET/QSBNetworkTransform.cs index 0bad199d5..7c4385205 100644 --- a/QuantumUNET/QSBNetworkTransform.cs +++ b/QuantumUNET/QSBNetworkTransform.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using OWML.Logging; +using OWML.Logging; using UnityEngine; using UnityEngine.Networking; From 229b1a5924da9a2e1d2ea9f85ea6fc774edf0a2b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 5 Dec 2020 10:58:01 +0000 Subject: [PATCH 119/207] Update QSBNetworkManagerHUD.cs --- QuantumUNET/QSBNetworkManagerHUD.cs | 39 ----------------------------- 1 file changed, 39 deletions(-) diff --git a/QuantumUNET/QSBNetworkManagerHUD.cs b/QuantumUNET/QSBNetworkManagerHUD.cs index 7b6c64327..d3015c639 100644 --- a/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/QSBNetworkManagerHUD.cs @@ -11,45 +11,6 @@ private void Awake() this.manager = base.GetComponent(); } - private void Update() - { - if (this.showGUI) - { - if (!this.manager.IsClientConnected() && !QSBNetworkServer.active && this.manager.matchMaker == null) - { - if (Application.platform != RuntimePlatform.WebGLPlayer) - { - if (Input.GetKeyDown(KeyCode.S)) - { - this.manager.StartServer(); - } - if (Input.GetKeyDown(KeyCode.H)) - { - this.manager.StartHost(); - } - } - if (Input.GetKeyDown(KeyCode.C)) - { - this.manager.StartClient(); - } - } - if (QSBNetworkServer.active) - { - if (this.manager.IsClientConnected()) - { - if (Input.GetKeyDown(KeyCode.X)) - { - this.manager.StopHost(); - } - } - else if (Input.GetKeyDown(KeyCode.X)) - { - this.manager.StopServer(); - } - } - } - } - private void OnGUI() { if (this.showGUI) From f53cb305627d052b18c57044e9bf26cf271b7f26 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 5 Dec 2020 13:39:40 +0000 Subject: [PATCH 120/207] fix orbs having to be used by server first --- QSB/TimeSync/WakeUpSync.cs | 1 - QSB/TransformSync/NomaiOrbTransformSync.cs | 25 +--------------------- QuantumUNET/QSBNetworkIdentity.cs | 4 ++-- QuantumUNET/QSBNetworkManagerUNET.cs | 2 +- QuantumUNET/QSBNetworkMigrationManager.cs | 4 ++-- QuantumUNET/QSBNetworkReader.cs | 2 +- 6 files changed, 7 insertions(+), 31 deletions(-) diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index ab6b857e6..5387ce74a 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -52,7 +52,6 @@ private void Start() private void OnWakeUp() { - DebugLog.DebugWrite("ON WAKE UP!"); if (QSBNetworkServer.active) { QSB.HasWokenUp = true; diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 4572b11d4..80c36e5eb 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -12,12 +12,9 @@ public class NomaiOrbTransformSync : QSBNetworkBehaviour private int Index => WorldRegistry.OrbSyncList.IndexOf(this); - private const int MaxUpdatesBeforeDisable = 5; - private bool _isInitialized; private bool _isReady; private Transform _orbParent; - private int _updateCount; public override void OnStartClient() { @@ -27,16 +24,6 @@ public override void OnStartClient() QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); } - public override void OnStartAuthority() - { - DebugLog.DebugWrite("START AUTHORITY - has auth? : " + HasAuthority); - } - - public override void OnStopAuthority() - { - DebugLog.DebugWrite("END AUTHORITY - has auth? : " + HasAuthority); - } - private void OnReady() { AttachedOrb = WorldRegistry.OldOrbList[Index]; @@ -74,7 +61,7 @@ private void Update() UpdateTransform(); } - protected virtual void UpdateTransform() + private void UpdateTransform() { if (HasAuthority) { @@ -84,16 +71,6 @@ protected virtual void UpdateTransform() } OrbTransform.position = _orbParent.TransformPoint(transform.position); OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); - - if (transform.localPosition == Vector3.zero) - { - _updateCount++; - } - if (_updateCount >= MaxUpdatesBeforeDisable) - { - enabled = false; - _updateCount = 0; - } } } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkIdentity.cs b/QuantumUNET/QSBNetworkIdentity.cs index 24b98ef2b..a4dc90d1d 100644 --- a/QuantumUNET/QSBNetworkIdentity.cs +++ b/QuantumUNET/QSBNetworkIdentity.cs @@ -898,12 +898,12 @@ public bool AssignClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) { - Debug.LogError("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); return false; } else if (conn == null) { - Debug.LogError("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); return false; } ClientAuthorityOwner = conn; diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs index fd87cb687..dac241956 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -872,7 +872,7 @@ public void StopClient() client = null; } StopMatchMaker(); - ClientScene.DestroyAllClientObjects(); + QSBClientScene.DestroyAllClientObjects(); if (!string.IsNullOrEmpty(m_OfflineScene)) { ClientChangeScene(m_OfflineScene, false); diff --git a/QuantumUNET/QSBNetworkMigrationManager.cs b/QuantumUNET/QSBNetworkMigrationManager.cs index 909059861..5af90dc96 100644 --- a/QuantumUNET/QSBNetworkMigrationManager.cs +++ b/QuantumUNET/QSBNetworkMigrationManager.cs @@ -255,7 +255,7 @@ public void DisablePlayerObjects() " control:", peerInfoPlayer.playerControllerId })); - GameObject gameObject = ClientScene.FindLocalObject(peerInfoPlayer.netId); + GameObject gameObject = QSBClientScene.FindLocalObject(peerInfoPlayer.netId); if (gameObject != null) { gameObject.SetActive(false); @@ -408,7 +408,7 @@ private void OnPeerClientAuthority(QSBNetworkMessage netMsg) } } } - GameObject go = ClientScene.FindLocalObject(peerAuthorityMessage.netId); + GameObject go = QSBClientScene.FindLocalObject(peerAuthorityMessage.netId); this.OnAuthorityUpdated(go, peerAuthorityMessage.connectionId, peerAuthorityMessage.authorityState); } } diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs index f88d9f10b..c4a676c3b 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -458,7 +458,7 @@ public Transform ReadTransform() } else { - GameObject gameObject = ClientScene.FindLocalObject(networkInstanceId); + GameObject gameObject = QSBClientScene.FindLocalObject(networkInstanceId); if (gameObject == null) { if (LogFilter.logDebug) From 39a343a17ff8fedc7d203fa53cf8aad4f889d76f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 5 Dec 2020 14:00:56 +0000 Subject: [PATCH 121/207] cleanup --- QSB/TimeSync/WakeUpSync.cs | 1 - QSB/TransformSync/NomaiOrbTransformSync.cs | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 5387ce74a..c01efa486 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,7 +1,6 @@ using QSB.DeathSync; using QSB.EventsCore; using QSB.TimeSync.Events; -using QSB.Utility; using QuantumUNET; using UnityEngine; diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 80c36e5eb..80eb77965 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -1,5 +1,4 @@ -using QSB.Utility; -using QSB.WorldSync; +using QSB.WorldSync; using QuantumUNET; using UnityEngine; From 1a6f6629c410fdb10b8b4fdb0f3c4c5fa12cbe8d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 5 Dec 2020 18:41:38 +0000 Subject: [PATCH 122/207] fixed suit and suit event --- QSB/Animation/AnimationSync.cs | 4 +++- QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/OrbSync/QSBOrbSlot.cs | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 29e01492d..6d425a83b 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -29,7 +29,7 @@ public class AnimationSync : PlayerSyncObject private RuntimeAnimatorController _riebeckController; public AnimatorMirror Mirror { get; private set; } - public AnimationType CurrentType = AnimationType.PlayerUnsuited; + public AnimationType CurrentType; public Animator Animator { @@ -130,6 +130,8 @@ public void InitRemote(Transform body) body.Find("player_mesh_noSuit:Traveller_HEA_Player/player_mesh_noSuit:Player_Head").gameObject.layer = 0; body.Find("Traveller_Mesh_v01:Traveller_Geo/Traveller_Mesh_v01:PlayerSuit_Helmet").gameObject.layer = 0; + SetAnimationType(AnimationType.PlayerUnsuited); + InitCrouchSync(); var ikSync = body.gameObject.AddComponent(); diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index c7b2517f1..d3869d9ce 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -35,7 +35,7 @@ public override void OnReceiveRemote(ToggleMessage message) var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); - if (!player.IsReady) + if (!QSB.HasWokenUp) { return; } diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index 2a6e756b4..f7b0987c8 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -6,6 +6,7 @@ namespace QSB.OrbSync public class QSBOrbSlot : WorldObject { public NomaiInterfaceSlot InterfaceSlot { get; private set; } + public bool Activated { get; private set; } private bool _initialized; @@ -33,6 +34,7 @@ public void SetState(bool state) } var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; WorldRegistry.RaiseEvent(InterfaceSlot, ev); + Activated = state; } } } \ No newline at end of file From a09e9568e74e174418a9c40ccf98e40276bff876 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 5 Dec 2020 20:58:05 +0000 Subject: [PATCH 123/207] fixed flashlight --- QSB/Tools/QSBFlashlight.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index ce07b29af..8f54e5e18 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -26,6 +26,12 @@ public void Init(Flashlight oldComponent) _root = oldComponent.GetValue("_root"); _basePivot = oldComponent.GetValue("_basePivot"); _wobblePivot = oldComponent.GetValue("_wobblePivot"); + + foreach (var light in _lights) + { + light.GetLight().enabled = false; + } + _flashlightOn = false; } public void UpdateState(bool value) From c3dee2c3ae61573605c5b046ce0fbee6bf4ff51e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 6 Dec 2020 10:10:21 +0000 Subject: [PATCH 124/207] added shadows to flashlight --- QSB/Tools/QSBFlashlight.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index 8f54e5e18..99a069369 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -26,10 +26,12 @@ public void Init(Flashlight oldComponent) _root = oldComponent.GetValue("_root"); _basePivot = oldComponent.GetValue("_basePivot"); _wobblePivot = oldComponent.GetValue("_wobblePivot"); + Destroy(oldComponent.GetComponent()); foreach (var light in _lights) { light.GetLight().enabled = false; + light.GetLight().shadows = LightShadows.Soft; } _flashlightOn = false; } From 3f9db41045493276d8fb83980657c6968d2da765 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 6 Dec 2020 10:13:13 +0000 Subject: [PATCH 125/207] disable instruments (for now) --- QSB/QSBInputManager.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index 47b00a496..2c076d12b 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -6,8 +6,6 @@ namespace QSB public class QSBInputManager : MonoBehaviour { - public static QSBInputManager Instance; - public static event InputEvent ChertTaunt; public static event InputEvent EskerTaunt; @@ -20,8 +18,8 @@ public class QSBInputManager : MonoBehaviour public static event InputEvent ExitTaunt; - public void Awake() => Instance = this; - + // TODO : finish instruments - disabled for 0.7.0 release + /* public void Update() { if (Input.GetKey(KeyCode.T)) @@ -55,5 +53,6 @@ public void Update() ExitTaunt?.Invoke(); } } + */ } } \ No newline at end of file From 1b39bb23301ff525cd747463d20cbe91407bd742 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 6 Dec 2020 10:32:12 +0000 Subject: [PATCH 126/207] cleanup --- QSB/QSB.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/QSB/QSB.cs b/QSB/QSB.cs index f8aae0fdf..1235976c7 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -51,9 +51,6 @@ private void Start() QSBPatchManager.DoPatchType(QSBPatchTypes.OnModStart); - // Turns out these are very finicky about what order they go. QSBNetworkManager seems to - // want to go first-ish, otherwise the NetworkManager complains about the PlayerPrefab being - // null (even though it isn't...) gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); From 39fd68f0317e99e3c10acd273bbb231285e1eae0 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 6 Dec 2020 17:00:23 +0000 Subject: [PATCH 127/207] fix orb placement --- QSB/TransformSync/NomaiOrbTransformSync.cs | 7 +++++-- QSB/WorldSync/WorldRegistry.cs | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 80eb77965..fcf489f5f 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -68,8 +68,11 @@ private void UpdateTransform() transform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); return; } - OrbTransform.position = _orbParent.TransformPoint(transform.position); - OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + if (transform.position != Vector3.zero) + { + OrbTransform.position = _orbParent.TransformPoint(transform.position); + OrbTransform.rotation = _orbParent.InverseTransformRotation(OrbTransform.rotation); + } } } } \ No newline at end of file diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index b016f674f..f984b0abe 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -77,7 +77,10 @@ public static void RaiseEvent(object instance, string eventName) return; } var delegateList = multiDelegate.GetInvocationList().ToList(); - delegateList.ForEach(x => x.DynamicInvoke(instance)); + foreach (var del in delegateList) + { + del.DynamicInvoke(instance); + } } } } \ No newline at end of file From 6c30b536cbc4bfa358b89af56d5ab958c1fb2431 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 6 Dec 2020 23:39:25 +0000 Subject: [PATCH 128/207] fix tools missing material --- QSB/Instruments/InstrumentsManager.cs | 12 ++++++++++-- QSB/Tools/PlayerToolsManager.cs | 6 ++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 04e3feea9..e5ab1c0d0 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -60,14 +60,22 @@ private void SetupInstruments() ChertDrum = MakeChertDrum(bundle); } - // EyeCompatibility : Need to find right object. private GameObject MakeChertDrum(AssetBundle bundle) { var drum = new GameObject(); var mf = drum.AddComponent(); mf.sharedMesh = bundle.LoadAsset("assets/Chert/hourglasstwinsmeshescharacters2.asset") as Mesh; var mr = drum.AddComponent(); - mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) + { + mr.sharedMaterial = GameObject.Find("NewDrum:polySurface2").GetComponent().material; + } + else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) + { + //mr.sharedMaterial = GameObject.Find("Props_HEA_Drums").GetComponent().material; + // TODO : fix for instrument release + mr.sharedMaterial = null; + } drum.transform.parent = rootObj; drum.transform.rotation = rootObj.rotation; drum.transform.localPosition = Vector3.zero; diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 096687871..078ee0cf6 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -22,16 +22,14 @@ public static void Init(Transform camera) { CreateStowTransforms(camera); + _playerToolsMaterial = GameObject.Find("Props_HEA_ProbeLauncher_ProbeCamera/ProbeLauncherChassis").GetComponent().materials[0]; if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) { - _playerToolsMaterial = GameObject.Find("PlayerSuit_Jetpack").GetComponent().materials[0]; _lightbulbMaterial = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; } else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse) { - // EyeCompatibility : Get these materials another way. - _playerToolsMaterial = null; - _lightbulbMaterial = null; + _lightbulbMaterial = GameObject.Find("lantern_lamp").GetComponent().materials[0]; } CreateFlashlight(camera); From a1b5744adf288ac213bac5375d718a66f33f8171 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 18:49:51 +0000 Subject: [PATCH 129/207] fixes --- QSB/Animation/PlayerHeadRotationSync.cs | 6 +++++ QSB/OrbSync/Events/OrbSlotEvent.cs | 22 ++++++++--------- QSB/OrbSync/Events/OrbSlotMessage.cs | 32 +++++++++++++++++++++++++ QSB/OrbSync/Events/OrbUserEvent.cs | 6 ----- QSB/OrbSync/QSBOrbSlot.cs | 11 +++++---- QSB/QSB.csproj | 1 + QSB/Utility/DebugActions.cs | 2 -- QSB/WorldSync/WorldRegistry.cs | 2 +- 8 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 QSB/OrbSync/Events/OrbSlotMessage.cs diff --git a/QSB/Animation/PlayerHeadRotationSync.cs b/QSB/Animation/PlayerHeadRotationSync.cs index 55a7061db..886a8077e 100644 --- a/QSB/Animation/PlayerHeadRotationSync.cs +++ b/QSB/Animation/PlayerHeadRotationSync.cs @@ -6,15 +6,21 @@ public class PlayerHeadRotationSync : MonoBehaviour { private Animator _attachedAnimator; private Transform _lookBase; + private bool _isSetUp; public void Init(Transform lookBase) { _attachedAnimator = GetComponent(); _lookBase = lookBase; + _isSetUp = true; } private void LateUpdate() { + if (!_isSetUp) + { + return; + } var bone = _attachedAnimator.GetBoneTransform(HumanBodyBones.Head); // Get the camera's local rotation with respect to the player body var lookLocalRotation = Quaternion.Inverse(_attachedAnimator.transform.rotation) * _lookBase.rotation; diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 6baba2fb0..0713a14af 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -5,28 +5,28 @@ namespace QSB.OrbSync.Events { - public class OrbSlotEvent : QSBEvent + public class OrbSlotEvent : QSBEvent { public override EventType Type => EventType.OrbSlot; - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); - private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); + private void Handler(int slotId, int orbId, bool slotState) => SendEvent(CreateMessage(slotId, orbId, slotState)); - private BoolWorldObjectMessage CreateMessage(int id, bool state) => new BoolWorldObjectMessage + private OrbSlotMessage CreateMessage(int slotId, int orbId, bool slotState) => new OrbSlotMessage { AboutId = LocalPlayerId, - ObjectId = id, - State = state + SlotId = slotId, + OrbId = orbId, + SlotState = slotState }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) + public override void OnReceiveRemote(OrbSlotMessage message) { - DebugLog.DebugWrite($"receive slot {message.ObjectId} to {message.State}"); - var orbSlot = WorldRegistry.GetObject(message.ObjectId); - orbSlot?.SetState(message.State); + var orbSlot = WorldRegistry.GetObject(message.SlotId); + orbSlot?.SetState(message.SlotState, message.OrbId); } } } \ No newline at end of file diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs new file mode 100644 index 000000000..a61c27313 --- /dev/null +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -0,0 +1,32 @@ +using QSB.Messaging; +using QuantumUNET; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace QSB.OrbSync.Events +{ + public class OrbSlotMessage : PlayerMessage + { + public int SlotId { get; set; } + public int OrbId { get; set; } + public bool SlotState { get; set; } + + public override void Deserialize(QSBNetworkReader reader) + { + base.Deserialize(reader); + SlotId = reader.ReadInt32(); + OrbId = reader.ReadInt32(); + SlotState = reader.ReadBoolean(); + } + + public override void Serialize(QSBNetworkWriter writer) + { + base.Serialize(writer); + writer.Write(SlotId); + writer.Write(OrbId); + writer.Write(SlotState); + } + } +} diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index db2ca212b..d9b9cf48d 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -27,10 +27,6 @@ public class OrbUserEvent : QSBEvent public override void OnServerReceive(WorldObjectMessage message) { var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); - foreach (var item in QSBNetworkServer.connections) - { - DebugLog.DebugWrite(item.GetPlayer().PlayerId.ToString()); - } if (WorldRegistry.OrbSyncList.Count == 0) { DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); @@ -55,10 +51,8 @@ public override void OnServerReceive(WorldObjectMessage message) } if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) { - DebugLog.DebugWrite($"Removed authority of orb {message.ObjectId} from {orbIdentity.ClientAuthorityOwner.GetPlayer().PlayerId}"); orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); } - DebugLog.DebugWrite($"Assigned authority of orb {message.ObjectId} to player {message.FromId}."); orbIdentity.AssignClientAuthority(fromPlayer); orb.enabled = true; } diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index f7b0987c8..19eb5650a 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -1,4 +1,5 @@ -using QSB.EventsCore; +using OWML.ModHelper.Events; +using QSB.EventsCore; using QSB.WorldSync; namespace QSB.OrbSync @@ -18,20 +19,22 @@ public void Init(NomaiInterfaceSlot slot, int id) WorldRegistry.AddObject(this); } - public void HandleEvent(bool state) + public void HandleEvent(bool state, int orbId) { if (QSB.HasWokenUp) { - GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, state); + GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, orbId, state); } } - public void SetState(bool state) + public void SetState(bool state, int orbId) { if (!_initialized) { return; } + var occOrb = state ? WorldRegistry.OldOrbList[orbId] : null; + InterfaceSlot.SetValue("_occupyingOrb", occOrb); var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; WorldRegistry.RaiseEvent(InterfaceSlot, ev); Activated = state; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index fb321ef5e..09ccb9278 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -150,6 +150,7 @@ + diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 96f85616c..360058c8e 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -18,8 +18,6 @@ private void InsertWarpCore() var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); socket.PlaceIntoSocket(warpCore); - - GetComponent().SetPillarRaised(true, true); } private void Update() diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/WorldRegistry.cs index f984b0abe..ce97f9f41 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/WorldRegistry.cs @@ -55,7 +55,7 @@ public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterface orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); if (orbSync.HasAuthority) { - qsbSlot.HandleEvent(state); + qsbSlot.HandleEvent(state, OldOrbList.IndexOf(affectingOrb)); } } catch From 442db9372efc01e75e7bb3fe5d81893edcacc862 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 19:37:21 +0000 Subject: [PATCH 130/207] cleanup QSBAddPlayerMessage --- QuantumUNET/QSBAddPlayerMessage.cs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/QuantumUNET/QSBAddPlayerMessage.cs b/QuantumUNET/QSBAddPlayerMessage.cs index 02f07d3b3..3c96b880e 100644 --- a/QuantumUNET/QSBAddPlayerMessage.cs +++ b/QuantumUNET/QSBAddPlayerMessage.cs @@ -2,30 +2,28 @@ { internal class QSBAddPlayerMessage : QSBMessageBase { + public short playerControllerId; + public int msgSize; + public byte[] msgData; + public override void Deserialize(QSBNetworkReader reader) { - this.playerControllerId = (short)reader.ReadUInt16(); - this.msgData = reader.ReadBytesAndSize(); - if (this.msgData == null) + playerControllerId = reader.ReadInt16(); + msgData = reader.ReadBytesAndSize(); + if (msgData == null) { - this.msgSize = 0; + msgSize = 0; } else { - this.msgSize = this.msgData.Length; + msgSize = msgData.Length; } } public override void Serialize(QSBNetworkWriter writer) { - writer.Write((ushort)this.playerControllerId); - writer.WriteBytesAndSize(this.msgData, this.msgSize); + writer.Write(playerControllerId); + writer.WriteBytesAndSize(msgData, msgSize); } - - public short playerControllerId; - - public int msgSize; - - public byte[] msgData; } } \ No newline at end of file From 6ec83dac9418747aabe7cca714063bb97b972e26 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 19:38:46 +0000 Subject: [PATCH 131/207] cleanup qsbreconnectmessage --- QuantumUNET/QSBReconnectMessage.cs | 34 +++++++++++++----------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/QuantumUNET/QSBReconnectMessage.cs b/QuantumUNET/QSBReconnectMessage.cs index 4cfa14ef1..d4b8f3445 100644 --- a/QuantumUNET/QSBReconnectMessage.cs +++ b/QuantumUNET/QSBReconnectMessage.cs @@ -4,31 +4,27 @@ namespace QuantumUNET { public class QSBReconnectMessage : QSBMessageBase { + public int oldConnectionId; + public short playerControllerId; + public NetworkInstanceId netId; + public int msgSize; + public byte[] msgData; + public override void Deserialize(QSBNetworkReader reader) { - this.oldConnectionId = (int)reader.ReadPackedUInt32(); - this.playerControllerId = (short)reader.ReadPackedUInt32(); - this.netId = reader.ReadNetworkId(); - this.msgData = reader.ReadBytesAndSize(); - this.msgSize = this.msgData.Length; + oldConnectionId = (int)reader.ReadPackedUInt32(); + playerControllerId = (short)reader.ReadPackedUInt32(); + netId = reader.ReadNetworkId(); + msgData = reader.ReadBytesAndSize(); + msgSize = msgData.Length; } public override void Serialize(QSBNetworkWriter writer) { - writer.WritePackedUInt32((uint)this.oldConnectionId); - writer.WritePackedUInt32((uint)this.playerControllerId); - writer.Write(this.netId); - writer.WriteBytesAndSize(this.msgData, this.msgSize); + writer.WritePackedUInt32((uint)oldConnectionId); + writer.WritePackedUInt32((uint)playerControllerId); + writer.Write(netId); + writer.WriteBytesAndSize(msgData, msgSize); } - - public int oldConnectionId; - - public short playerControllerId; - - public NetworkInstanceId netId; - - public int msgSize; - - public byte[] msgData; } } \ No newline at end of file From c56b23b34cb0eed0264bb9e281581a88db3f0222 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 20:47:07 +0000 Subject: [PATCH 132/207] cleanup --- QuantumUNET/QSBNetworkClient.cs | 6 - QuantumUNET/QSBNetworkManagerHUD.cs | 154 +-- QuantumUNET/QSBNetworkManagerUNET.cs | 1016 +++----------------- QuantumUNET/QSBNetworkMigrationManager.cs | 1066 --------------------- QuantumUNET/QSBPeerAuthorityMessage.cs | 27 - QuantumUNET/QSBPeerListMessage.cs | 32 - QuantumUNET/QuantumUNET.csproj | 3 - 7 files changed, 189 insertions(+), 2115 deletions(-) delete mode 100644 QuantumUNET/QSBNetworkMigrationManager.cs delete mode 100644 QuantumUNET/QSBPeerAuthorityMessage.cs delete mode 100644 QuantumUNET/QSBPeerListMessage.cs diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 8acce4123..e6e4cc2b5 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -170,12 +170,6 @@ public bool Configure(HostTopology topology) return true; } - public void Connect(MatchInfo matchInfo) - { - PrepareForConnect(); - ConnectWithRelay(matchInfo); - } - public bool ReconnectToNewHost(string serverIp, int serverPort) { bool result; diff --git a/QuantumUNET/QSBNetworkManagerHUD.cs b/QuantumUNET/QSBNetworkManagerHUD.cs index d3015c639..78aed10d1 100644 --- a/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/QSBNetworkManagerHUD.cs @@ -8,62 +8,62 @@ public class QSBNetworkManagerHUD : MonoBehaviour { private void Awake() { - this.manager = base.GetComponent(); + manager = GetComponent(); } private void OnGUI() { - if (this.showGUI) + if (showGUI) { - int num = 10 + this.offsetX; - int num2 = 40 + this.offsetY; - bool flag = this.manager.client == null || this.manager.client.connection == null || this.manager.client.connection.connectionId == -1; - if (!this.manager.IsClientConnected() && !QSBNetworkServer.active && this.manager.matchMaker == null) + var num = 10 + offsetX; + var num2 = 40 + offsetY; + var flag = manager.client == null || manager.client.connection == null || manager.client.connection.connectionId == -1; + if (!manager.IsClientConnected() && !QSBNetworkServer.active) { if (flag) { if (Application.platform != RuntimePlatform.WebGLPlayer) { - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Host(H)")) + if (GUI.Button(new Rect(num, num2, 200f, 20f), "Host")) { - this.manager.StartHost(); + manager.StartHost(); } num2 += 24; } - if (GUI.Button(new Rect((float)num, (float)num2, 105f, 20f), "LAN Client(C)")) + if (GUI.Button(new Rect(num, num2, 105f, 20f), "Connect")) { - this.manager.StartClient(); + manager.StartClient(); } - this.manager.networkAddress = GUI.TextField(new Rect((float)(num + 100), (float)num2, 95f, 20f), this.manager.networkAddress); + manager.networkAddress = GUI.TextField(new Rect(num + 100, num2, 95f, 20f), manager.networkAddress); num2 += 24; if (Application.platform == RuntimePlatform.WebGLPlayer) { - GUI.Box(new Rect((float)num, (float)num2, 200f, 25f), "( WebGL cannot be server )"); + GUI.Box(new Rect(num, num2, 200f, 25f), "( WebGL cannot be server )"); num2 += 24; } else { - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Server Only(S)")) + if (GUI.Button(new Rect(num, num2, 200f, 20f), "LAN Server Only")) { - this.manager.StartServer(); + manager.StartServer(); } num2 += 24; } } else { - GUI.Label(new Rect((float)num, (float)num2, 200f, 20f), string.Concat(new object[] + GUI.Label(new Rect(num, num2, 200f, 20f), string.Concat(new object[] { "Connecting to ", - this.manager.networkAddress, + manager.networkAddress, ":", - this.manager.networkPort, + manager.networkPort, ".." })); num2 += 24; - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Cancel Connection Attempt")) + if (GUI.Button(new Rect(num, num2, 200f, 20f), "Cancel Connection Attempt")) { - this.manager.StopClient(); + manager.StopClient(); } } } @@ -71,31 +71,25 @@ private void OnGUI() { if (QSBNetworkServer.active) { - string text = "Server: port=" + this.manager.networkPort; - if (this.manager.useWebSockets) + var text = $"Hosting on port {manager.networkPort}"; + if (manager.useWebSockets) { - text += " (Using WebSockets)"; + text += " (using WebSockets)"; } - GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), text); + GUI.Label(new Rect(num, num2, 300f, 20f), text); num2 += 24; } - if (this.manager.IsClientConnected()) + if (manager.IsClientConnected()) { - GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), string.Concat(new object[] - { - "Client: address=", - this.manager.networkAddress, - " port=", - this.manager.networkPort - })); + GUI.Label(new Rect(num, num2, 300f, 20f), $"Connected to {manager.networkAddress}, port {manager.networkPort}"); num2 += 24; } } - if (this.manager.IsClientConnected() && !QSBClientScene.ready) + if (manager.IsClientConnected() && !QSBClientScene.ready) { - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Client Ready")) + if (GUI.Button(new Rect(num, num2, 200f, 20f), "Client Ready")) { - QSBClientScene.Ready(this.manager.client.connection); + QSBClientScene.Ready(manager.client.connection); if (QSBClientScene.localPlayers.Count == 0) { QSBClientScene.AddPlayer(0); @@ -103,102 +97,20 @@ private void OnGUI() } num2 += 24; } - if (QSBNetworkServer.active || this.manager.IsClientConnected()) + if (QSBNetworkServer.active || manager.IsClientConnected()) { - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Stop (X)")) + if (GUI.Button(new Rect(num, num2, 200f, 20f), "Stop")) { - this.manager.StopHost(); + manager.StopHost(); } num2 += 24; } - if (!QSBNetworkServer.active && !this.manager.IsClientConnected() && flag) + if (!QSBNetworkServer.active && !manager.IsClientConnected() && flag) { num2 += 10; if (Application.platform == RuntimePlatform.WebGLPlayer) { - GUI.Box(new Rect((float)(num - 5), (float)num2, 220f, 25f), "(WebGL cannot use Match Maker)"); - } - else if (this.manager.matchMaker == null) - { - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Enable Match Maker (M)")) - { - this.manager.StartMatchMaker(); - } - num2 += 24; - } - else - { - if (this.manager.matchInfo == null) - { - if (this.manager.matches == null) - { - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Create Internet Match")) - { - this.manager.matchMaker.CreateMatch(this.manager.matchName, this.manager.matchSize, true, "", "", "", 0, 0, new NetworkMatch.DataResponseDelegate(this.manager.OnMatchCreate)); - } - num2 += 24; - GUI.Label(new Rect((float)num, (float)num2, 100f, 20f), "Room Name:"); - this.manager.matchName = GUI.TextField(new Rect((float)(num + 100), (float)num2, 100f, 20f), this.manager.matchName); - num2 += 24; - num2 += 10; - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Find Internet Match")) - { - this.manager.matchMaker.ListMatches(0, 20, "", false, 0, 0, new NetworkMatch.DataResponseDelegate>(this.manager.OnMatchList)); - } - num2 += 24; - } - else - { - for (int i = 0; i < this.manager.matches.Count; i++) - { - MatchInfoSnapshot matchInfoSnapshot = this.manager.matches[i]; - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Join Match:" + matchInfoSnapshot.name)) - { - this.manager.matchName = matchInfoSnapshot.name; - this.manager.matchMaker.JoinMatch(matchInfoSnapshot.networkId, "", "", "", 0, 0, new NetworkMatch.DataResponseDelegate(this.manager.OnMatchJoined)); - } - num2 += 24; - } - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Back to Match Menu")) - { - this.manager.matches = null; - } - num2 += 24; - } - } - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Change MM server")) - { - this.m_ShowServer = !this.m_ShowServer; - } - if (this.m_ShowServer) - { - num2 += 24; - if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Local")) - { - this.manager.SetMatchHost("localhost", 1337, false); - this.m_ShowServer = false; - } - num2 += 24; - if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Internet")) - { - this.manager.SetMatchHost("mm.unet.unity3d.com", 443, true); - this.m_ShowServer = false; - } - num2 += 24; - if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Staging")) - { - this.manager.SetMatchHost("staging-mm.unet.unity3d.com", 443, true); - this.m_ShowServer = false; - } - } - num2 += 24; - GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), "MM Uri: " + this.manager.matchMaker.baseUri); - num2 += 24; - if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Disable Match Maker")) - { - this.manager.StopMatchMaker(); - } - num2 += 24; + GUI.Box(new Rect(num - 5, num2, 220f, 25f), "(WebGL cannot use Match Maker)"); } } } diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs index dac241956..8e8cb4711 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -5,201 +5,53 @@ using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; -using UnityEngine.Networking.Types; using UnityEngine.SceneManagement; namespace QuantumUNET { public class QSBNetworkManagerUNET : MonoBehaviour { - public int networkPort - { - get - { - return m_NetworkPort; - } - set - { - m_NetworkPort = value; - } - } - - public bool serverBindToIP - { - get - { - return m_ServerBindToIP; - } - set - { - m_ServerBindToIP = value; - } - } - - public string serverBindAddress - { - get - { - return m_ServerBindAddress; - } - set - { - m_ServerBindAddress = value; - } - } - - public string networkAddress - { - get - { - return m_NetworkAddress; - } - set - { - m_NetworkAddress = value; - } - } - - public bool dontDestroyOnLoad - { - get - { - return m_DontDestroyOnLoad; - } - set - { - m_DontDestroyOnLoad = value; - } - } - - public bool runInBackground - { - get - { - return m_RunInBackground; - } - set - { - m_RunInBackground = value; - } - } - - public bool scriptCRCCheck - { - get - { - return m_ScriptCRCCheck; - } - set - { - m_ScriptCRCCheck = value; - } - } - - [Obsolete("moved to NetworkMigrationManager")] - public bool sendPeerInfo - { - get - { - return false; - } - set - { - } - } - - public float maxDelay - { - get - { - return m_MaxDelay; - } - set - { - m_MaxDelay = value; - } - } - - public LogFilter.FilterLevel logLevel - { - get - { - return m_LogLevel; - } - set - { - m_LogLevel = value; - LogFilter.currentLogLevel = (int)value; - } - } - - public GameObject playerPrefab - { - get - { - return m_PlayerPrefab; - } - set - { - m_PlayerPrefab = value; - } - } - - public bool autoCreatePlayer - { - get - { - return m_AutoCreatePlayer; - } - set - { - m_AutoCreatePlayer = value; - } - } - - public PlayerSpawnMethod playerSpawnMethod - { - get - { - return m_PlayerSpawnMethod; - } - set - { - m_PlayerSpawnMethod = value; - } - } - - public string offlineScene - { - get - { - return m_OfflineScene; - } - set - { - m_OfflineScene = value; - } - } + public static QSBNetworkManagerUNET singleton; + public static string networkSceneName = ""; - public string onlineScene - { - get - { - return m_OnlineScene; - } - set - { - m_OnlineScene = value; - } - } + public int networkPort { get; set; } = 7777; + public int simulatedLatency { get; set; } = 1; + public bool serverBindToIP { get; set; } + public bool dontDestroyOnLoad { get; set; } = true; + public bool runInBackground { get; set; } = true; + public bool scriptCRCCheck { get; set; } = true; + public bool autoCreatePlayer { get; set; } = true; + public bool isNetworkActive; + public bool useWebSockets { get; set; } + public bool useSimulator { get; set; } + public bool clientLoadedScene { get; set; } + public string serverBindAddress { get; set; } = ""; + public string networkAddress { get; set; } = "localhost"; + public string offlineScene { get; set; } = ""; + public string onlineScene { get; set; } = ""; + public float packetLossPercentage { get; set; } + public float maxDelay { get; set; } = 0.01f; + public GameObject playerPrefab { get; set; } + public PlayerSpawnMethod playerSpawnMethod { get; set; } + public List spawnPrefabs { get; } = new List(); + public string matchName = "default"; + public uint matchSize = 4U; + public QSBNetworkClient client; + public int maxConnections { get; set; } = 4; + public List channels { get; } = new List(); - public List spawnPrefabs - { - get - { - return m_SpawnPrefabs; - } - } + private ConnectionConfig m_ConnectionConfig; + private GlobalConfig m_GlobalConfig; + private int m_MaxBufferedPackets = 16; + private bool m_AllowFragmentation = true; + private static List s_StartPositions = new List(); + private static int s_StartPositionIndex; + private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); + private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); + private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); + private static AsyncOperation s_LoadingSceneAsync; + private static QSBNetworkConnection s_ClientReadyConnection; + private static string s_Address; public List startPositions { @@ -209,17 +61,7 @@ public List startPositions } } - public bool customConfig - { - get - { - return m_CustomConfig; - } - set - { - m_CustomConfig = value; - } - } + public bool customConfig { get; set; } public ConnectionConfig connectionConfig { @@ -245,141 +87,17 @@ public GlobalConfig globalConfig } } - public int maxConnections - { - get - { - return m_MaxConnections; - } - set - { - m_MaxConnections = value; - } - } - - public List channels - { - get - { - return m_Channels; - } - } - - public EndPoint secureTunnelEndpoint - { - get - { - return m_EndPoint; - } - set - { - m_EndPoint = value; - } - } - - public bool useWebSockets - { - get - { - return m_UseWebSockets; - } - set - { - m_UseWebSockets = value; - } - } - - public bool useSimulator - { - get - { - return m_UseSimulator; - } - set - { - m_UseSimulator = value; - } - } - - public int simulatedLatency - { - get - { - return m_SimulatedLatency; - } - set - { - m_SimulatedLatency = value; - } - } - - public float packetLossPercentage - { - get - { - return m_PacketLossPercentage; - } - set - { - m_PacketLossPercentage = value; - } - } - - public string matchHost - { - get - { - return m_MatchHost; - } - set - { - m_MatchHost = value; - } - } - - public int matchPort - { - get - { - return m_MatchPort; - } - set - { - m_MatchPort = value; - } - } - - public bool clientLoadedScene - { - get - { - return m_ClientLoadedScene; - } - set - { - m_ClientLoadedScene = value; - } - } - - public QSBNetworkMigrationManager migrationManager - { - get - { - return m_MigrationManager; - } - } - public int numPlayers { get { - int num = 0; - for (int i = 0; i < QSBNetworkServer.connections.Count; i++) + var num = 0; + for (var i = 0; i < QSBNetworkServer.connections.Count; i++) { - QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; + var networkConnection = QSBNetworkServer.connections[i]; if (networkConnection != null) { - for (int j = 0; j < networkConnection.PlayerControllers.Count; j++) + for (var j = 0; j < networkConnection.PlayerControllers.Count; j++) { if (networkConnection.PlayerControllers[j].IsValid) { @@ -401,12 +119,7 @@ private void InitializeSingleton() { if (!(singleton != null) || !(singleton == this)) { - int logLevel = (int)m_LogLevel; - if (logLevel != -1) - { - LogFilter.currentLogLevel = logLevel; - } - if (m_DontDestroyOnLoad) + if (dontDestroyOnLoad) { if (singleton != null) { @@ -426,80 +139,13 @@ private void InitializeSingleton() Debug.Log("NetworkManager created singleton (ForScene)"); singleton = this; } - if (m_NetworkAddress != "") + if (networkAddress != "") { - s_Address = m_NetworkAddress; + s_Address = networkAddress; } else if (s_Address != "") { - m_NetworkAddress = s_Address; - } - } - } - - private void OnValidate() - { - if (m_SimulatedLatency < 1) - { - m_SimulatedLatency = 1; - } - if (m_SimulatedLatency > 500) - { - m_SimulatedLatency = 500; - } - if (m_PacketLossPercentage < 0f) - { - m_PacketLossPercentage = 0f; - } - if (m_PacketLossPercentage > 99f) - { - m_PacketLossPercentage = 99f; - } - if (m_MaxConnections <= 0) - { - m_MaxConnections = 1; - } - if (m_MaxConnections > 32000) - { - m_MaxConnections = 32000; - } - if (m_MaxBufferedPackets <= 0) - { - m_MaxBufferedPackets = 0; - } - if (m_MaxBufferedPackets > 512) - { - m_MaxBufferedPackets = 512; - if (LogFilter.logError) - { - Debug.LogError("NetworkManager - MaxBufferedPackets cannot be more than " + 512); - } - } - if (m_PlayerPrefab != null && m_PlayerPrefab.GetComponent() == null) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkManager - playerPrefab must have a NetworkIdentity."); - } - m_PlayerPrefab = null; - } - if (m_ConnectionConfig != null && m_ConnectionConfig.MinUpdateTimeout <= 0U) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkManager MinUpdateTimeout cannot be zero or less. The value will be reset to 1 millisecond"); - } - m_ConnectionConfig.MinUpdateTimeout = 1U; - } - if (m_GlobalConfig != null) - { - if (m_GlobalConfig.ThreadAwakeTimeout <= 0U) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkManager ThreadAwakeTimeout cannot be zero or less. The value will be reset to 1 millisecond"); - } - m_GlobalConfig.ThreadAwakeTimeout = 1U; + networkAddress = s_Address; } } } @@ -514,11 +160,6 @@ internal void RegisterServerMessages() QSBNetworkServer.RegisterHandler(34, new QSBNetworkMessageDelegate(OnServerErrorInternal)); } - public void SetupMigrationManager(QSBNetworkMigrationManager man) - { - m_MigrationManager = man; - } - public bool StartServer(ConnectionConfig config, int maxConnections) { return StartServer(null, config, maxConnections); @@ -538,24 +179,24 @@ private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnect { InitializeSingleton(); OnStartServer(); - if (m_RunInBackground) + if (runInBackground) { Application.runInBackground = true; } QSBNetworkCRC.scriptCRCCheck = scriptCRCCheck; - QSBNetworkServer.useWebSockets = m_UseWebSockets; + QSBNetworkServer.useWebSockets = useWebSockets; if (m_GlobalConfig != null) { NetworkTransport.Init(m_GlobalConfig); } - if (m_CustomConfig && m_ConnectionConfig != null && config == null) + if (customConfig && m_ConnectionConfig != null && config == null) { m_ConnectionConfig.Channels.Clear(); - for (int i = 0; i < m_Channels.Count; i++) + for (var i = 0; i < channels.Count; i++) { - m_ConnectionConfig.AddChannel(m_Channels[i]); + m_ConnectionConfig.AddChannel(channels[i]); } - QSBNetworkServer.Configure(m_ConnectionConfig, m_MaxConnections); + QSBNetworkServer.Configure(m_ConnectionConfig, this.maxConnections); } if (config != null) { @@ -563,7 +204,7 @@ private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnect } if (info != null) { - if (!QSBNetworkServer.Listen(info, m_NetworkPort)) + if (!QSBNetworkServer.Listen(info, networkPort)) { if (LogFilter.logError) { @@ -572,18 +213,18 @@ private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnect return false; } } - else if (m_ServerBindToIP && !string.IsNullOrEmpty(m_ServerBindAddress)) + else if (serverBindToIP && !string.IsNullOrEmpty(serverBindAddress)) { - if (!QSBNetworkServer.Listen(m_ServerBindAddress, m_NetworkPort)) + if (!QSBNetworkServer.Listen(serverBindAddress, networkPort)) { if (LogFilter.logError) { - Debug.LogError("StartServer listen on " + m_ServerBindAddress + " failed."); + Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); } return false; } } - else if (!QSBNetworkServer.Listen(m_NetworkPort)) + else if (!QSBNetworkServer.Listen(networkPort)) { if (LogFilter.logError) { @@ -594,13 +235,13 @@ private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnect RegisterServerMessages(); if (LogFilter.logDebug) { - Debug.Log("NetworkManager StartServer port:" + m_NetworkPort); + Debug.Log("NetworkManager StartServer port:" + networkPort); } isNetworkActive = true; - string name = SceneManager.GetSceneAt(0).name; - if (!string.IsNullOrEmpty(m_OnlineScene) && m_OnlineScene != name && m_OnlineScene != m_OfflineScene) + var name = SceneManager.GetSceneAt(0).name; + if (!string.IsNullOrEmpty(onlineScene) && onlineScene != name && onlineScene != offlineScene) { - ServerChangeScene(m_OnlineScene); + ServerChangeScene(onlineScene); } else { @@ -616,13 +257,13 @@ internal void RegisterClientMessages(QSBNetworkClient client) client.RegisterHandler(36, new QSBNetworkMessageDelegate(OnClientNotReadyMessageInternal)); client.RegisterHandler(34, new QSBNetworkMessageDelegate(OnClientErrorInternal)); client.RegisterHandler(39, new QSBNetworkMessageDelegate(OnClientSceneInternal)); - if (m_PlayerPrefab != null) + if (playerPrefab != null) { - QSBClientScene.RegisterPrefab(m_PlayerPrefab); + QSBClientScene.RegisterPrefab(playerPrefab); } - for (int i = 0; i < m_SpawnPrefabs.Count; i++) + for (var i = 0; i < spawnPrefabs.Count; i++) { - GameObject gameObject = m_SpawnPrefabs[i]; + var gameObject = spawnPrefabs[i]; if (gameObject != null) { QSBClientScene.RegisterPrefab(gameObject); @@ -632,7 +273,7 @@ internal void RegisterClientMessages(QSBNetworkClient client) public void UseExternalClient(QSBNetworkClient externalClient) { - if (m_RunInBackground) + if (runInBackground) { Application.runInBackground = true; } @@ -640,8 +281,8 @@ public void UseExternalClient(QSBNetworkClient externalClient) { client = externalClient; isNetworkActive = true; - this.RegisterClientMessages(client); - this.OnStartClient(client); + RegisterClientMessages(client); + OnStartClient(client); } else { @@ -649,19 +290,18 @@ public void UseExternalClient(QSBNetworkClient externalClient) QSBClientScene.DestroyAllClientObjects(); QSBClientScene.HandleClientDisconnect(client.connection); client = null; - if (!string.IsNullOrEmpty(m_OfflineScene)) + if (!string.IsNullOrEmpty(offlineScene)) { - ClientChangeScene(m_OfflineScene, false); + ClientChangeScene(offlineScene, false); } } - s_Address = m_NetworkAddress; + s_Address = networkAddress; } - public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int hostPort) + public QSBNetworkClient StartClient(ConnectionConfig config, int hostPort) { InitializeSingleton(); - matchInfo = info; - if (m_RunInBackground) + if (runInBackground) { Application.runInBackground = true; } @@ -670,8 +310,10 @@ public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int { NetworkTransport.Init(m_GlobalConfig); } - client = new QSBNetworkClient(); - client.hostPort = hostPort; + client = new QSBNetworkClient + { + hostPort = hostPort + }; if (config != null) { if (config.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2) @@ -680,77 +322,55 @@ public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config, int } client.Configure(config, 1); } - else if (m_CustomConfig && m_ConnectionConfig != null) + else if (customConfig && m_ConnectionConfig != null) { m_ConnectionConfig.Channels.Clear(); - for (int i = 0; i < m_Channels.Count; i++) + for (var i = 0; i < channels.Count; i++) { - m_ConnectionConfig.AddChannel(m_Channels[i]); + m_ConnectionConfig.AddChannel(channels[i]); } if (m_ConnectionConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2) { throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform"); } - client.Configure(m_ConnectionConfig, m_MaxConnections); + client.Configure(m_ConnectionConfig, maxConnections); } - this.RegisterClientMessages(client); - if (matchInfo != null) + RegisterClientMessages(client); + if (string.IsNullOrEmpty(networkAddress)) { - ModConsole.OwmlConsole.WriteLine("NetworkManager StartClient match: " + matchInfo); - client.Connect(matchInfo); + ModConsole.OwmlConsole.WriteLine("Must set the Network Address field in the manager"); + return null; } - else if (m_EndPoint != null) + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { - ModConsole.OwmlConsole.WriteLine("NetworkManager StartClient using provided SecureTunnel"); - client.Connect(m_EndPoint); - } - else + "NetworkManager StartClient address:", + networkAddress, + " port:", + networkPort + })); + if (useSimulator) { - if (string.IsNullOrEmpty(m_NetworkAddress)) - { - ModConsole.OwmlConsole.WriteLine("Must set the Network Address field in the manager"); - return null; - } - ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] - { - "NetworkManager StartClient address:", - m_NetworkAddress, - " port:", - m_NetworkPort - })); - if (m_UseSimulator) - { - ModConsole.OwmlConsole.WriteLine("connecting with simulator"); - client.ConnectWithSimulator(m_NetworkAddress, m_NetworkPort, m_SimulatedLatency, m_PacketLossPercentage); - } - else - { - ModConsole.OwmlConsole.WriteLine("connecting"); - client.Connect(m_NetworkAddress, m_NetworkPort); - } + ModConsole.OwmlConsole.WriteLine("connecting with simulator"); + client.ConnectWithSimulator(networkAddress, networkPort, simulatedLatency, packetLossPercentage); } - if (m_MigrationManager != null) + else { - m_MigrationManager.Initialize(client, matchInfo); + ModConsole.OwmlConsole.WriteLine("connecting"); + client.Connect(networkAddress, networkPort); } - this.OnStartClient(client); - s_Address = m_NetworkAddress; + OnStartClient(client); + s_Address = networkAddress; return client; } - public QSBNetworkClient StartClient(MatchInfo matchInfo) - { - return StartClient(matchInfo, null); - } - public QSBNetworkClient StartClient() { - return StartClient(null, null); + return StartClient(null); } - public QSBNetworkClient StartClient(MatchInfo info, ConnectionConfig config) + public QSBNetworkClient StartClient(ConnectionConfig config) { - return StartClient(info, config, 0); + return StartClient(config, 0); } public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnections) @@ -759,7 +379,7 @@ public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnec QSBNetworkClient result; if (StartServer(config, maxConnections)) { - QSBNetworkClient networkClient = ConnectLocalClient(); + var networkClient = ConnectLocalClient(); OnServerConnect(networkClient.connection); OnStartClient(networkClient); result = networkClient; @@ -774,11 +394,10 @@ public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnec public virtual QSBNetworkClient StartHost(MatchInfo info) { OnStartHost(); - matchInfo = info; QSBNetworkClient result; if (StartServer(info)) { - QSBNetworkClient networkClient = ConnectLocalClient(); + var networkClient = ConnectLocalClient(); OnStartClient(networkClient); result = networkClient; } @@ -795,7 +414,7 @@ public virtual QSBNetworkClient StartHost() QSBNetworkClient result; if (StartServer()) { - QSBNetworkClient networkClient = ConnectLocalClient(); + var networkClient = ConnectLocalClient(); OnStartClient(networkClient); result = networkClient; } @@ -810,31 +429,19 @@ private QSBNetworkClient ConnectLocalClient() { if (LogFilter.logDebug) { - Debug.Log("NetworkManager StartHost port:" + m_NetworkPort); + Debug.Log("NetworkManager StartHost port:" + networkPort); } - m_NetworkAddress = "localhost"; + networkAddress = "localhost"; client = QSBClientScene.ConnectLocalServer(); - this.RegisterClientMessages(client); - if (m_MigrationManager != null) - { - m_MigrationManager.Initialize(client, matchInfo); - } + RegisterClientMessages(client); return client; } public void StopHost() { - bool active = QSBNetworkServer.active; OnStopHost(); StopServer(); StopClient(); - if (m_MigrationManager != null) - { - if (active) - { - m_MigrationManager.LostHostOnHost(); - } - } } public void StopServer() @@ -848,10 +455,10 @@ public void StopServer() } isNetworkActive = false; QSBNetworkServer.Shutdown(); - StopMatchMaker(); - if (!string.IsNullOrEmpty(m_OfflineScene)) + //StopMatchMaker(); + if (!string.IsNullOrEmpty(offlineScene)) { - ServerChangeScene(m_OfflineScene); + ServerChangeScene(offlineScene); } CleanupNetworkIdentities(); } @@ -871,11 +478,11 @@ public void StopClient() client.Shutdown(); client = null; } - StopMatchMaker(); + //StopMatchMaker(); QSBClientScene.DestroyAllClientObjects(); - if (!string.IsNullOrEmpty(m_OfflineScene)) + if (!string.IsNullOrEmpty(offlineScene)) { - ClientChangeScene(m_OfflineScene, false); + ClientChangeScene(offlineScene, false); } CleanupNetworkIdentities(); } @@ -898,7 +505,7 @@ public virtual void ServerChangeScene(string newSceneName) QSBNetworkServer.SetAllClientsNotReady(); networkSceneName = newSceneName; s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); - QSBStringMessage msg = new QSBStringMessage(networkSceneName); + var msg = new QSBStringMessage(networkSceneName); QSBNetworkServer.SendToAll(39, msg); s_StartPositionIndex = 0; s_StartPositions.Clear(); @@ -907,7 +514,7 @@ public virtual void ServerChangeScene(string newSceneName) private void CleanupNetworkIdentities() { - foreach (QSBNetworkIdentity networkIdentity in Resources.FindObjectsOfTypeAll()) + foreach (var networkIdentity in Resources.FindObjectsOfTypeAll()) { networkIdentity.MarkForReset(); } @@ -930,11 +537,6 @@ internal void ClientChangeScene(string newSceneName, bool forceReload) } if (newSceneName == networkSceneName) { - if (m_MigrationManager != null) - { - FinishLoadScene(); - return; - } if (!forceReload) { FinishLoadScene(); @@ -952,8 +554,8 @@ private void FinishLoadScene() { if (s_ClientReadyConnection != null) { - m_ClientLoadedScene = true; - this.OnClientConnect(s_ClientReadyConnection); + clientLoadedScene = true; + OnClientConnect(s_ClientReadyConnection); s_ClientReadyConnection = null; } } @@ -968,8 +570,8 @@ private void FinishLoadScene() } if (IsClientConnected() && client != null) { - this.RegisterClientMessages(client); - this.OnClientSceneChanged(client.connection); + RegisterClientMessages(client); + OnClientSceneChanged(client.connection); } } @@ -990,11 +592,6 @@ internal static void UpdateScene() } } - private void OnDestroy() - { - Debug.Log("NetworkManager destroyed"); - } - public static void RegisterStartPosition(Transform start) { if (LogFilter.logDebug) @@ -1048,30 +645,26 @@ internal void OnServerConnectInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerConnectInternal"); } - netMsg.Connection.SetMaxDelay(m_MaxDelay); + netMsg.Connection.SetMaxDelay(maxDelay); if (m_MaxBufferedPackets != 512) { - for (int i = 0; i < QSBNetworkServer.numChannels; i++) + for (var i = 0; i < QSBNetworkServer.numChannels; i++) { netMsg.Connection.SetChannelOption(i, ChannelOption.MaxPendingBuffers, m_MaxBufferedPackets); } } if (!m_AllowFragmentation) { - for (int j = 0; j < QSBNetworkServer.numChannels; j++) + for (var j = 0; j < QSBNetworkServer.numChannels; j++) { netMsg.Connection.SetChannelOption(j, ChannelOption.AllowFragmentation, 0); } } - if (networkSceneName != "" && networkSceneName != m_OfflineScene) + if (networkSceneName != "" && networkSceneName != offlineScene) { - QSBStringMessage msg = new QSBStringMessage(networkSceneName); + var msg = new QSBStringMessage(networkSceneName); netMsg.Connection.Send(39, msg); } - if (m_MigrationManager != null) - { - m_MigrationManager.SendPeerInfo(); - } OnServerConnect(netMsg.Connection); } @@ -1081,10 +674,6 @@ internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnServerDisconnectInternal"); } - if (m_MigrationManager != null) - { - m_MigrationManager.SendPeerInfo(); - } OnServerDisconnect(netMsg.Connection); } @@ -1106,16 +695,12 @@ internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) netMsg.ReadMessage(s_AddPlayerMessage); if (s_AddPlayerMessage.msgSize != 0) { - NetworkReader extraMessageReader = new NetworkReader(s_AddPlayerMessage.msgData); - this.OnServerAddPlayer(netMsg.Connection, s_AddPlayerMessage.playerControllerId, extraMessageReader); + var extraMessageReader = new NetworkReader(s_AddPlayerMessage.msgData); + OnServerAddPlayer(netMsg.Connection, s_AddPlayerMessage.playerControllerId, extraMessageReader); } else { - this.OnServerAddPlayer(netMsg.Connection, s_AddPlayerMessage.playerControllerId); - } - if (m_MigrationManager != null) - { - m_MigrationManager.SendPeerInfo(); + OnServerAddPlayer(netMsg.Connection, s_AddPlayerMessage.playerControllerId); } } @@ -1126,14 +711,9 @@ internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); } netMsg.ReadMessage(s_RemovePlayerMessage); - QSBPlayerController player; - netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out player); + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var player); OnServerRemovePlayer(netMsg.Connection, player); netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); - if (m_MigrationManager != null) - { - m_MigrationManager.SendPeerInfo(); - } } internal void OnServerErrorInternal(QSBNetworkMessage netMsg) @@ -1143,7 +723,7 @@ internal void OnServerErrorInternal(QSBNetworkMessage netMsg) Debug.Log("NetworkManager:OnServerErrorInternal"); } netMsg.ReadMessage(s_ErrorMessage); - this.OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); + OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientConnectInternal(QSBNetworkMessage netMsg) @@ -1152,11 +732,11 @@ internal void OnClientConnectInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnClientConnectInternal"); } - netMsg.Connection.SetMaxDelay(m_MaxDelay); - string name = SceneManager.GetSceneAt(0).name; - if (string.IsNullOrEmpty(m_OnlineScene) || m_OnlineScene == m_OfflineScene || name == m_OnlineScene) + netMsg.Connection.SetMaxDelay(maxDelay); + var name = SceneManager.GetSceneAt(0).name; + if (string.IsNullOrEmpty(onlineScene) || onlineScene == offlineScene || name == onlineScene) { - m_ClientLoadedScene = false; + clientLoadedScene = false; OnClientConnect(netMsg.Connection); } else @@ -1171,20 +751,9 @@ internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnClientDisconnectInternal"); } - if (m_MigrationManager != null) - { - if (m_MigrationManager.LostHostOnClient(netMsg.Connection)) - { - return; - } - } - if (!string.IsNullOrEmpty(m_OfflineScene)) + if (!string.IsNullOrEmpty(offlineScene)) { - ClientChangeScene(m_OfflineScene, false); - } - if (matchMaker != null && matchInfo != null && matchInfo.networkId != NetworkID.Invalid && matchInfo.nodeId != NodeID.Invalid) - { - matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, matchInfo.domain, new NetworkMatch.BasicResponseDelegate(OnDropConnection)); + ClientChangeScene(offlineScene, false); } OnClientDisconnect(netMsg.Connection); } @@ -1206,7 +775,7 @@ internal void OnClientErrorInternal(QSBNetworkMessage netMsg) Debug.Log("NetworkManager:OnClientErrorInternal"); } netMsg.ReadMessage(s_ErrorMessage); - this.OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); + OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientSceneInternal(QSBNetworkMessage netMsg) @@ -1215,7 +784,7 @@ internal void OnClientSceneInternal(QSBNetworkMessage netMsg) { Debug.Log("NetworkManager:OnClientSceneInternal"); } - string newSceneName = netMsg.Reader.ReadString(); + var newSceneName = netMsg.Reader.ReadString(); if (IsClientConnected() && !QSBNetworkServer.active) { ClientChangeScene(newSceneName, true); @@ -1262,21 +831,21 @@ public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerCon private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerControllerId) { - if (m_PlayerPrefab == null) + if (playerPrefab == null) { if (LogFilter.logError) { ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); } } - else if (m_PlayerPrefab.GetComponent() == null) + else if (playerPrefab.GetComponent() == null) { if (LogFilter.logError) { ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); } } - else if ((int)playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[(int)playerControllerId].IsValid && conn.PlayerControllers[(int)playerControllerId].Gameobject != null) + else if (playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[playerControllerId].IsValid && conn.PlayerControllers[playerControllerId].Gameobject != null) { if (LogFilter.logError) { @@ -1285,15 +854,15 @@ private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerCo } else { - Transform startPosition = GetStartPosition(); + var startPosition = GetStartPosition(); GameObject player; if (startPosition != null) { - player = Instantiate(m_PlayerPrefab, startPosition.position, startPosition.rotation); + player = Instantiate(playerPrefab, startPosition.position, startPosition.rotation); } else { - player = Instantiate(m_PlayerPrefab, Vector3.zero, Quaternion.identity); + player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); } QSBNetworkServer.AddPlayerForConnection(conn, player, playerControllerId); } @@ -1303,7 +872,7 @@ public Transform GetStartPosition() { if (s_StartPositions.Count > 0) { - for (int i = s_StartPositions.Count - 1; i >= 0; i--) + for (var i = s_StartPositions.Count - 1; i >= 0; i--) { if (s_StartPositions[i] == null) { @@ -1312,18 +881,18 @@ public Transform GetStartPosition() } } Transform result; - if (m_PlayerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0) + if (playerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0) { - int index = UnityEngine.Random.Range(0, s_StartPositions.Count); + var index = UnityEngine.Random.Range(0, s_StartPositions.Count); result = s_StartPositions[index]; } - else if (m_PlayerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0) + else if (playerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0) { if (s_StartPositionIndex >= s_StartPositions.Count) { s_StartPositionIndex = 0; } - Transform transform = s_StartPositions[s_StartPositionIndex]; + var transform = s_StartPositions[s_StartPositionIndex]; s_StartPositionIndex++; result = transform; } @@ -1355,7 +924,7 @@ public virtual void OnClientConnect(QSBNetworkConnection conn) if (!clientLoadedScene) { QSBClientScene.Ready(conn); - if (m_AutoCreatePlayer) + if (autoCreatePlayer) { QSBClientScene.AddPlayer(0); } @@ -1385,11 +954,11 @@ public virtual void OnClientNotReady(QSBNetworkConnection conn) public virtual void OnClientSceneChanged(QSBNetworkConnection conn) { QSBClientScene.Ready(conn); - if (m_AutoCreatePlayer) + if (autoCreatePlayer) { - bool flag = QSBClientScene.localPlayers.Count == 0; - bool flag2 = false; - for (int i = 0; i < QSBClientScene.localPlayers.Count; i++) + var flag = QSBClientScene.localPlayers.Count == 0; + var flag2 = false; + for (var i = 0; i < QSBClientScene.localPlayers.Count; i++) { if (QSBClientScene.localPlayers[i].Gameobject != null) { @@ -1408,69 +977,6 @@ public virtual void OnClientSceneChanged(QSBNetworkConnection conn) } } - public void StartMatchMaker() - { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StartMatchMaker"); - } - SetMatchHost(m_MatchHost, m_MatchPort, m_MatchPort == 443); - } - - public void StopMatchMaker() - { - if (matchMaker != null && matchInfo != null && matchInfo.networkId != NetworkID.Invalid && matchInfo.nodeId != NodeID.Invalid) - { - matchMaker.DropConnection(matchInfo.networkId, matchInfo.nodeId, matchInfo.domain, new NetworkMatch.BasicResponseDelegate(OnDropConnection)); - } - if (matchMaker != null) - { - Destroy(matchMaker); - matchMaker = null; - } - matchInfo = null; - matches = null; - } - - public void SetMatchHost(string newHost, int port, bool https) - { - if (matchMaker == null) - { - matchMaker = base.gameObject.AddComponent(); - } - if (newHost == "127.0.0.1") - { - newHost = "localhost"; - } - string text = "http://"; - if (https) - { - text = "https://"; - } - if (newHost.StartsWith("http://")) - { - newHost = newHost.Replace("http://", ""); - } - if (newHost.StartsWith("https://")) - { - newHost = newHost.Replace("https://", ""); - } - m_MatchHost = newHost; - m_MatchPort = port; - string text2 = string.Concat(new object[] - { - text, - m_MatchHost, - ":", - m_MatchPort - }); - if (LogFilter.logDebug) - { - Debug.Log("SetMatchHost:" + text2); - } - matchMaker.baseUri = new Uri(text2); - } - public virtual void OnStartHost() { } @@ -1494,215 +1000,5 @@ public virtual void OnStopClient() public virtual void OnStopHost() { } - - public virtual void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) - { - if (LogFilter.logDebug) - { - Debug.LogFormat("NetworkManager OnMatchCreate Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", new object[] - { - success, - extendedInfo, - matchInfo - }); - } - if (success) - { - StartHost(matchInfo); - } - } - - public virtual void OnMatchList(bool success, string extendedInfo, List matchList) - { - if (LogFilter.logDebug) - { - Debug.LogFormat("NetworkManager OnMatchList Success:{0}, ExtendedInfo:{1}, matchList.Count:{2}", new object[] - { - success, - extendedInfo, - matchList.Count - }); - } - matches = matchList; - } - - public virtual void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) - { - if (LogFilter.logDebug) - { - Debug.LogFormat("NetworkManager OnMatchJoined Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", new object[] - { - success, - extendedInfo, - matchInfo - }); - } - if (success) - { - StartClient(matchInfo); - } - } - - public virtual void OnDestroyMatch(bool success, string extendedInfo) - { - if (LogFilter.logDebug) - { - Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", new object[] - { - success, - extendedInfo - }); - } - } - - public virtual void OnDropConnection(bool success, string extendedInfo) - { - if (LogFilter.logDebug) - { - Debug.LogFormat("NetworkManager OnDropConnection Success:{0}, ExtendedInfo:{1}", new object[] - { - success, - extendedInfo - }); - } - } - - public virtual void OnSetMatchAttributes(bool success, string extendedInfo) - { - if (LogFilter.logDebug) - { - Debug.LogFormat("NetworkManager OnSetMatchAttributes Success:{0}, ExtendedInfo:{1}", new object[] - { - success, - extendedInfo - }); - } - } - - [SerializeField] - private int m_NetworkPort = 7777; - - [SerializeField] - private bool m_ServerBindToIP; - - [SerializeField] - private string m_ServerBindAddress = ""; - - [SerializeField] - private string m_NetworkAddress = "localhost"; - - [SerializeField] - private bool m_DontDestroyOnLoad = true; - - [SerializeField] - private bool m_RunInBackground = true; - - [SerializeField] - private bool m_ScriptCRCCheck = true; - - [SerializeField] - private float m_MaxDelay = 0.01f; - - [SerializeField] - private LogFilter.FilterLevel m_LogLevel = LogFilter.FilterLevel.Info; - - [SerializeField] - private GameObject m_PlayerPrefab; - - [SerializeField] - private bool m_AutoCreatePlayer = true; - - [SerializeField] - private PlayerSpawnMethod m_PlayerSpawnMethod; - - [SerializeField] - private string m_OfflineScene = ""; - - [SerializeField] - private string m_OnlineScene = ""; - - [SerializeField] - private List m_SpawnPrefabs = new List(); - - [SerializeField] - private bool m_CustomConfig; - - [SerializeField] - private int m_MaxConnections = 4; - - [SerializeField] - private ConnectionConfig m_ConnectionConfig; - - [SerializeField] - private GlobalConfig m_GlobalConfig; - - [SerializeField] - private List m_Channels = new List(); - - [SerializeField] - private bool m_UseWebSockets; - - [SerializeField] - private bool m_UseSimulator; - - [SerializeField] - private int m_SimulatedLatency = 1; - - [SerializeField] - private float m_PacketLossPercentage; - - [SerializeField] - private int m_MaxBufferedPackets = 16; - - [SerializeField] - private bool m_AllowFragmentation = true; - - [SerializeField] - private string m_MatchHost = "mm.unet.unity3d.com"; - - [SerializeField] - private int m_MatchPort = 443; - - [SerializeField] - public string matchName = "default"; - - [SerializeField] - public uint matchSize = 4U; - - private QSBNetworkMigrationManager m_MigrationManager; - - private EndPoint m_EndPoint; - - private bool m_ClientLoadedScene; - - public static string networkSceneName = ""; - - public bool isNetworkActive; - - public QSBNetworkClient client; - - private static List s_StartPositions = new List(); - - private static int s_StartPositionIndex; - - public MatchInfo matchInfo; - - public NetworkMatch matchMaker; - - public List matches; - - public static QSBNetworkManagerUNET singleton; - - private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); - - private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); - - private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); - - private static AsyncOperation s_LoadingSceneAsync; - - private static QSBNetworkConnection s_ClientReadyConnection; - - private static string s_Address; } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkMigrationManager.cs b/QuantumUNET/QSBNetworkMigrationManager.cs deleted file mode 100644 index 5af90dc96..000000000 --- a/QuantumUNET/QSBNetworkMigrationManager.cs +++ /dev/null @@ -1,1066 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Networking; -using UnityEngine.Networking.Match; -using UnityEngine.Networking.Types; - -namespace QuantumUNET -{ - public class QSBNetworkMigrationManager : MonoBehaviour - { - private void AddPendingPlayer(GameObject obj, int connectionId, NetworkInstanceId netId, short playerControllerId) - { - if (!this.m_PendingPlayers.ContainsKey(connectionId)) - { - ConnectionPendingPlayers value = default(ConnectionPendingPlayers); - value.players = new List(); - this.m_PendingPlayers[connectionId] = value; - } - PendingPlayerInfo item = default(PendingPlayerInfo); - item.netId = netId; - item.playerControllerId = playerControllerId; - item.obj = obj; - this.m_PendingPlayers[connectionId].players.Add(item); - } - - private GameObject FindPendingPlayer(int connectionId, NetworkInstanceId netId, short playerControllerId) - { - if (this.m_PendingPlayers.ContainsKey(connectionId)) - { - for (int i = 0; i < this.m_PendingPlayers[connectionId].players.Count; i++) - { - PendingPlayerInfo pendingPlayerInfo = this.m_PendingPlayers[connectionId].players[i]; - if (pendingPlayerInfo.netId == netId && pendingPlayerInfo.playerControllerId == playerControllerId) - { - return pendingPlayerInfo.obj; - } - } - } - return null; - } - - private void RemovePendingPlayer(int connectionId) - { - this.m_PendingPlayers.Remove(connectionId); - } - - public bool hostMigration - { - get - { - return this.m_HostMigration; - } - set - { - this.m_HostMigration = value; - } - } - - public bool showGUI - { - get - { - return this.m_ShowGUI; - } - set - { - this.m_ShowGUI = value; - } - } - - public int offsetX - { - get - { - return this.m_OffsetX; - } - set - { - this.m_OffsetX = value; - } - } - - public int offsetY - { - get - { - return this.m_OffsetY; - } - set - { - this.m_OffsetY = value; - } - } - - public QSBNetworkClient client - { - get - { - return this.m_Client; - } - } - - public bool waitingToBecomeNewHost - { - get - { - return this.m_WaitingToBecomeNewHost; - } - set - { - this.m_WaitingToBecomeNewHost = value; - } - } - - public bool waitingReconnectToNewHost - { - get - { - return this.m_WaitingReconnectToNewHost; - } - set - { - this.m_WaitingReconnectToNewHost = value; - } - } - - public bool disconnectedFromHost - { - get - { - return this.m_DisconnectedFromHost; - } - } - - public bool hostWasShutdown - { - get - { - return this.m_HostWasShutdown; - } - } - - public MatchInfo matchInfo - { - get - { - return this.m_MatchInfo; - } - } - - public int oldServerConnectionId - { - get - { - return this.m_OldServerConnectionId; - } - } - - public string newHostAddress - { - get - { - return this.m_NewHostAddress; - } - set - { - this.m_NewHostAddress = value; - } - } - - public QSBPeerInfoMessage[] peers - { - get - { - return this.m_Peers; - } - } - - public Dictionary pendingPlayers - { - get - { - return this.m_PendingPlayers; - } - } - - private void Start() - { - this.Reset(-1); - } - - public void Reset(int reconnectId) - { - this.m_OldServerConnectionId = -1; - this.m_WaitingToBecomeNewHost = false; - this.m_WaitingReconnectToNewHost = false; - this.m_DisconnectedFromHost = false; - this.m_HostWasShutdown = false; - QSBClientScene.SetReconnectId(reconnectId, this.m_Peers); - if (QSBNetworkManagerUNET.singleton != null) - { - QSBNetworkManagerUNET.singleton.SetupMigrationManager(this); - } - } - - internal void AssignAuthorityCallback(QSBNetworkConnection conn, QSBNetworkIdentity uv, bool authorityState) - { - QSBPeerAuthorityMessage peerAuthorityMessage = new QSBPeerAuthorityMessage(); - peerAuthorityMessage.connectionId = conn.connectionId; - peerAuthorityMessage.netId = uv.NetId; - peerAuthorityMessage.authorityState = authorityState; - if (LogFilter.logDebug) - { - Debug.Log("AssignAuthorityCallback send for netId" + uv.NetId); - } - for (int i = 0; i < QSBNetworkServer.connections.Count; i++) - { - QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; - if (networkConnection != null) - { - networkConnection.Send(18, peerAuthorityMessage); - } - } - } - - public void Initialize(QSBNetworkClient newClient, MatchInfo newMatchInfo) - { - Debug.Log("NetworkMigrationManager initialize"); - this.m_Client = newClient; - this.m_MatchInfo = newMatchInfo; - newClient.RegisterHandlerSafe(11, new QSBNetworkMessageDelegate(this.OnPeerInfo)); - newClient.RegisterHandlerSafe(18, new QSBNetworkMessageDelegate(this.OnPeerClientAuthority)); - QSBNetworkIdentity.clientAuthorityCallback = new QSBNetworkIdentity.ClientAuthorityCallback(this.AssignAuthorityCallback); - } - - public void DisablePlayerObjects() - { - Debug.Log("NetworkMigrationManager DisablePlayerObjects"); - if (this.m_Peers != null) - { - for (int i = 0; i < this.m_Peers.Length; i++) - { - QSBPeerInfoMessage peerInfoMessage = this.m_Peers[i]; - if (peerInfoMessage.playerIds != null) - { - for (int j = 0; j < peerInfoMessage.playerIds.Length; j++) - { - QSBPeerInfoPlayer peerInfoPlayer = peerInfoMessage.playerIds[j]; - Debug.Log(string.Concat(new object[] - { - "DisablePlayerObjects disable player for ", - peerInfoMessage.address, - " netId:", - peerInfoPlayer.netId, - " control:", - peerInfoPlayer.playerControllerId - })); - GameObject gameObject = QSBClientScene.FindLocalObject(peerInfoPlayer.netId); - if (gameObject != null) - { - gameObject.SetActive(false); - this.AddPendingPlayer(gameObject, peerInfoMessage.connectionId, peerInfoPlayer.netId, peerInfoPlayer.playerControllerId); - } - else if (LogFilter.logWarn) - { - Debug.LogWarning(string.Concat(new object[] - { - "DisablePlayerObjects didnt find player Conn:", - peerInfoMessage.connectionId, - " NetId:", - peerInfoPlayer.netId - })); - } - } - } - } - } - } - - public void SendPeerInfo() - { - if (this.m_HostMigration) - { - QSBPeerListMessage peerListMessage = new QSBPeerListMessage(); - List list = new List(); - for (int i = 0; i < QSBNetworkServer.connections.Count; i++) - { - QSBNetworkConnection networkConnection = QSBNetworkServer.connections[i]; - if (networkConnection != null) - { - QSBPeerInfoMessage peerInfoMessage = new QSBPeerInfoMessage(); - string address; - int port; - NetworkID networkID; - NodeID nodeID; - byte b; - NetworkTransport.GetConnectionInfo(QSBNetworkServer.serverHostId, networkConnection.connectionId, out address, out port, out networkID, out nodeID, out b); - peerInfoMessage.connectionId = networkConnection.connectionId; - peerInfoMessage.port = port; - if (i == 0) - { - peerInfoMessage.port = QSBNetworkServer.listenPort; - peerInfoMessage.isHost = true; - peerInfoMessage.address = ""; - } - else - { - peerInfoMessage.address = address; - peerInfoMessage.isHost = false; - } - List list2 = new List(); - for (int j = 0; j < networkConnection.PlayerControllers.Count; j++) - { - QSBPlayerController playerController = networkConnection.PlayerControllers[j]; - if (playerController != null && playerController.UnetView != null) - { - QSBPeerInfoPlayer item; - item.netId = playerController.UnetView.NetId; - item.playerControllerId = playerController.UnetView.PlayerControllerId; - list2.Add(item); - } - } - if (networkConnection.ClientOwnedObjects != null) - { - foreach (NetworkInstanceId netId in networkConnection.ClientOwnedObjects) - { - GameObject gameObject = QSBNetworkServer.FindLocalObject(netId); - if (!(gameObject == null)) - { - QSBNetworkIdentity component = gameObject.GetComponent(); - if (component.PlayerControllerId == -1) - { - QSBPeerInfoPlayer item2; - item2.netId = netId; - item2.playerControllerId = -1; - list2.Add(item2); - } - } - } - } - if (list2.Count > 0) - { - peerInfoMessage.playerIds = list2.ToArray(); - } - list.Add(peerInfoMessage); - } - } - peerListMessage.peers = list.ToArray(); - for (int k = 0; k < QSBNetworkServer.connections.Count; k++) - { - QSBNetworkConnection networkConnection2 = QSBNetworkServer.connections[k]; - if (networkConnection2 != null) - { - peerListMessage.oldServerConnectionId = networkConnection2.connectionId; - networkConnection2.Send(11, peerListMessage); - } - } - } - } - - private void OnPeerClientAuthority(QSBNetworkMessage netMsg) - { - QSBPeerAuthorityMessage peerAuthorityMessage = netMsg.ReadMessage(); - if (LogFilter.logDebug) - { - Debug.Log("OnPeerClientAuthority for netId:" + peerAuthorityMessage.netId); - } - if (this.m_Peers != null) - { - for (int i = 0; i < this.m_Peers.Length; i++) - { - QSBPeerInfoMessage peerInfoMessage = this.m_Peers[i]; - if (peerInfoMessage.connectionId == peerAuthorityMessage.connectionId) - { - if (peerInfoMessage.playerIds == null) - { - peerInfoMessage.playerIds = new QSBPeerInfoPlayer[0]; - } - if (peerAuthorityMessage.authorityState) - { - for (int j = 0; j < peerInfoMessage.playerIds.Length; j++) - { - if (peerInfoMessage.playerIds[j].netId == peerAuthorityMessage.netId) - { - return; - } - } - QSBPeerInfoPlayer item = default(QSBPeerInfoPlayer); - item.netId = peerAuthorityMessage.netId; - item.playerControllerId = -1; - peerInfoMessage.playerIds = new List(peerInfoMessage.playerIds) - { - item - }.ToArray(); - } - else - { - for (int k = 0; k < peerInfoMessage.playerIds.Length; k++) - { - if (peerInfoMessage.playerIds[k].netId == peerAuthorityMessage.netId) - { - List list = new List(peerInfoMessage.playerIds); - list.RemoveAt(k); - peerInfoMessage.playerIds = list.ToArray(); - break; - } - } - } - } - } - GameObject go = QSBClientScene.FindLocalObject(peerAuthorityMessage.netId); - this.OnAuthorityUpdated(go, peerAuthorityMessage.connectionId, peerAuthorityMessage.authorityState); - } - } - - private void OnPeerInfo(QSBNetworkMessage netMsg) - { - if (LogFilter.logDebug) - { - Debug.Log("OnPeerInfo"); - } - netMsg.ReadMessage(this.m_PeerListMessage); - this.m_Peers = this.m_PeerListMessage.peers; - this.m_OldServerConnectionId = this.m_PeerListMessage.oldServerConnectionId; - for (int i = 0; i < this.m_Peers.Length; i++) - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "peer conn ", - this.m_Peers[i].connectionId, - " your conn ", - this.m_PeerListMessage.oldServerConnectionId - })); - } - if (this.m_Peers[i].connectionId == this.m_PeerListMessage.oldServerConnectionId) - { - this.m_Peers[i].isYou = true; - break; - } - } - this.OnPeersUpdated(this.m_PeerListMessage); - } - - private void OnServerReconnectPlayerMessage(QSBNetworkMessage netMsg) - { - QSBReconnectMessage reconnectMessage = netMsg.ReadMessage(); - Debug.Log(string.Concat(new object[] - { - "OnReconnectMessage: connId=", - reconnectMessage.oldConnectionId, - " playerControllerId:", - reconnectMessage.playerControllerId, - " netId:", - reconnectMessage.netId - })); - GameObject gameObject = this.FindPendingPlayer(reconnectMessage.oldConnectionId, reconnectMessage.netId, reconnectMessage.playerControllerId); - if (gameObject == null) - { - if (LogFilter.logError) - { - Debug.LogError(string.Concat(new object[] - { - "OnReconnectMessage connId=", - reconnectMessage.oldConnectionId, - " player null for netId:", - reconnectMessage.netId, - " msg.playerControllerId:", - reconnectMessage.playerControllerId - })); - } - } - else if (gameObject.activeSelf) - { - if (LogFilter.logError) - { - Debug.LogError("OnReconnectMessage connId=" + reconnectMessage.oldConnectionId + " player already active?"); - } - } - else - { - if (LogFilter.logDebug) - { - Debug.Log("OnReconnectMessage: player=" + gameObject); - } - NetworkReader networkReader = null; - if (reconnectMessage.msgSize != 0) - { - networkReader = new NetworkReader(reconnectMessage.msgData); - } - if (reconnectMessage.playerControllerId != -1) - { - if (networkReader == null) - { - this.OnServerReconnectPlayer(netMsg.Connection, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId); - } - else - { - this.OnServerReconnectPlayer(netMsg.Connection, gameObject, reconnectMessage.oldConnectionId, reconnectMessage.playerControllerId, networkReader); - } - } - else - { - this.OnServerReconnectObject(netMsg.Connection, gameObject, reconnectMessage.oldConnectionId); - } - } - } - - public bool ReconnectObjectForConnection(QSBNetworkConnection newConnection, GameObject oldObject, int oldConnectionId) - { - bool result; - if (!QSBNetworkServer.active) - { - if (LogFilter.logError) - { - Debug.LogError("ReconnectObjectForConnection must have active server"); - } - result = false; - } - else - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "ReconnectObjectForConnection: oldConnId=", - oldConnectionId, - " obj=", - oldObject, - " conn:", - newConnection - })); - } - if (!this.m_PendingPlayers.ContainsKey(oldConnectionId)) - { - if (LogFilter.logError) - { - Debug.LogError("ReconnectObjectForConnection oldConnId=" + oldConnectionId + " not found."); - } - result = false; - } - else - { - oldObject.SetActive(true); - oldObject.GetComponent().SetNetworkInstanceId(new NetworkInstanceId(0U)); - if (!QSBNetworkServer.SpawnWithClientAuthority(oldObject, newConnection)) - { - if (LogFilter.logError) - { - Debug.LogError("ReconnectObjectForConnection oldConnId=" + oldConnectionId + " SpawnWithClientAuthority failed."); - } - result = false; - } - else - { - result = true; - } - } - } - return result; - } - - public bool ReconnectPlayerForConnection(QSBNetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId) - { - bool result; - if (!QSBNetworkServer.active) - { - if (LogFilter.logError) - { - Debug.LogError("ReconnectPlayerForConnection must have active server"); - } - result = false; - } - else - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "ReconnectPlayerForConnection: oldConnId=", - oldConnectionId, - " player=", - oldPlayer, - " conn:", - newConnection - })); - } - if (!this.m_PendingPlayers.ContainsKey(oldConnectionId)) - { - if (LogFilter.logError) - { - Debug.LogError("ReconnectPlayerForConnection oldConnId=" + oldConnectionId + " not found."); - } - result = false; - } - else - { - oldPlayer.SetActive(true); - QSBNetworkServer.Spawn(oldPlayer); - if (!QSBNetworkServer.AddPlayerForConnection(newConnection, oldPlayer, playerControllerId)) - { - if (LogFilter.logError) - { - Debug.LogError("ReconnectPlayerForConnection oldConnId=" + oldConnectionId + " AddPlayerForConnection failed."); - } - result = false; - } - else - { - if (QSBNetworkServer.localClientActive) - { - this.SendPeerInfo(); - } - result = true; - } - } - } - return result; - } - - public bool LostHostOnClient(QSBNetworkConnection conn) - { - if (LogFilter.logDebug) - { - Debug.Log("NetworkMigrationManager client OnDisconnectedFromHost"); - } - bool result; - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - if (LogFilter.logError) - { - Debug.LogError("LostHostOnClient: Host migration not supported on WebGL"); - } - result = false; - } - else if (this.m_Client == null) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkMigrationManager LostHostOnHost client was never initialized."); - } - result = false; - } - else if (!this.m_HostMigration) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkMigrationManager LostHostOnHost migration not enabled."); - } - result = false; - } - else - { - this.m_DisconnectedFromHost = true; - this.DisablePlayerObjects(); - byte b; - NetworkTransport.Disconnect(this.m_Client.hostId, this.m_Client.connection.connectionId, out b); - if (this.m_OldServerConnectionId != -1) - { - SceneChangeOption sceneChangeOption; - this.OnClientDisconnectedFromHost(conn, out sceneChangeOption); - result = (sceneChangeOption == SceneChangeOption.StayInOnlineScene); - } - else - { - result = false; - } - } - return result; - } - - public void LostHostOnHost() - { - if (LogFilter.logDebug) - { - Debug.Log("NetworkMigrationManager LostHostOnHost"); - } - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - if (LogFilter.logError) - { - Debug.LogError("LostHostOnHost: Host migration not supported on WebGL"); - } - } - else - { - this.OnServerHostShutdown(); - if (this.m_Peers == null) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkMigrationManager LostHostOnHost no peers"); - } - } - else if (this.m_Peers.Length != 1) - { - this.m_HostWasShutdown = true; - } - } - } - - public bool BecomeNewHost(int port) - { - if (LogFilter.logDebug) - { - Debug.Log("NetworkMigrationManager BecomeNewHost " + this.m_MatchInfo); - } - QSBNetworkServer.RegisterHandler(47, new QSBNetworkMessageDelegate(this.OnServerReconnectPlayerMessage)); - QSBNetworkClient networkClient = QSBNetworkServer.BecomeHost(this.m_Client, port, this.m_MatchInfo, this.oldServerConnectionId, this.peers); - bool result; - if (networkClient != null) - { - if (QSBNetworkManagerUNET.singleton != null) - { - QSBNetworkManagerUNET.singleton.RegisterServerMessages(); - QSBNetworkManagerUNET.singleton.UseExternalClient(networkClient); - } - else - { - Debug.LogWarning("MigrationManager BecomeNewHost - No NetworkManager."); - } - networkClient.RegisterHandlerSafe(11, new QSBNetworkMessageDelegate(this.OnPeerInfo)); - this.RemovePendingPlayer(this.m_OldServerConnectionId); - this.Reset(-1); - this.SendPeerInfo(); - result = true; - } - else - { - if (LogFilter.logError) - { - Debug.LogError("NetworkServer.BecomeHost failed"); - } - result = false; - } - return result; - } - - protected virtual void OnClientDisconnectedFromHost(QSBNetworkConnection conn, out SceneChangeOption sceneChange) - { - sceneChange = SceneChangeOption.StayInOnlineScene; - } - - protected virtual void OnServerHostShutdown() - { - } - - protected virtual void OnServerReconnectPlayer(QSBNetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId) - { - this.ReconnectPlayerForConnection(newConnection, oldPlayer, oldConnectionId, playerControllerId); - } - - protected virtual void OnServerReconnectPlayer(QSBNetworkConnection newConnection, GameObject oldPlayer, int oldConnectionId, short playerControllerId, NetworkReader extraMessageReader) - { - this.ReconnectPlayerForConnection(newConnection, oldPlayer, oldConnectionId, playerControllerId); - } - - protected virtual void OnServerReconnectObject(QSBNetworkConnection newConnection, GameObject oldObject, int oldConnectionId) - { - this.ReconnectObjectForConnection(newConnection, oldObject, oldConnectionId); - } - - protected virtual void OnPeersUpdated(QSBPeerListMessage peers) - { - Debug.Log("NetworkMigrationManager NumPeers " + peers.peers.Length); - } - - protected virtual void OnAuthorityUpdated(GameObject go, int connectionId, bool authorityState) - { - Debug.Log(string.Concat(new object[] - { - "NetworkMigrationManager OnAuthorityUpdated for ", - go, - " conn:", - connectionId, - " state:", - authorityState - })); - } - - public virtual bool FindNewHost(out QSBPeerInfoMessage newHostInfo, out bool youAreNewHost) - { - bool result; - if (this.m_Peers == null) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkMigrationManager FindLowestHost no peers"); - } - newHostInfo = null; - youAreNewHost = false; - result = false; - } - else - { - Debug.Log("NetworkMigrationManager FindLowestHost"); - newHostInfo = new QSBPeerInfoMessage(); - newHostInfo.connectionId = 50000; - newHostInfo.address = ""; - newHostInfo.port = 0; - int num = -1; - youAreNewHost = false; - if (this.m_Peers == null) - { - result = false; - } - else - { - for (int i = 0; i < this.m_Peers.Length; i++) - { - QSBPeerInfoMessage peerInfoMessage = this.m_Peers[i]; - if (peerInfoMessage.connectionId != 0) - { - if (!peerInfoMessage.isHost) - { - if (peerInfoMessage.isYou) - { - num = peerInfoMessage.connectionId; - } - if (peerInfoMessage.connectionId < newHostInfo.connectionId) - { - newHostInfo = peerInfoMessage; - } - } - } - } - if (newHostInfo.connectionId == 50000) - { - result = false; - } - else - { - if (newHostInfo.connectionId == num) - { - youAreNewHost = true; - } - Debug.Log("FindNewHost new host is " + newHostInfo.address); - result = true; - } - } - } - return result; - } - - private void OnGUIHost() - { - int num = this.m_OffsetY; - GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Was Shutdown ID(" + this.m_OldServerConnectionId + ")"); - num += 25; - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Migration not supported for WebGL"); - } - else - { - if (this.m_WaitingReconnectToNewHost) - { - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Reconnect as Client")) - { - this.Reset(0); - if (NetworkManager.singleton != null) - { - NetworkManager.singleton.networkAddress = GUI.TextField(new Rect((float)(this.m_OffsetX + 100), (float)num, 95f, 20f), NetworkManager.singleton.networkAddress); - NetworkManager.singleton.StartClient(); - } - else - { - Debug.LogWarning("MigrationManager Old Host Reconnect - No NetworkManager."); - } - } - num += 25; - } - else - { - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Pick New Host")) - { - bool flag; - if (this.FindNewHost(out this.m_NewHostInfo, out flag)) - { - this.m_NewHostAddress = this.m_NewHostInfo.address; - if (flag) - { - Debug.LogWarning("MigrationManager FindNewHost - new host is self?"); - } - else - { - this.m_WaitingReconnectToNewHost = true; - } - } - } - num += 25; - } - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Leave Game")) - { - if (NetworkManager.singleton != null) - { - NetworkManager.singleton.SetupMigrationManager(null); - NetworkManager.singleton.StopHost(); - } - else - { - Debug.LogWarning("MigrationManager Old Host LeaveGame - No NetworkManager."); - } - this.Reset(-1); - } - num += 25; - } - } - - private void OnGUIClient() - { - int num = this.m_OffsetY; - GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Lost Connection To Host ID(" + this.m_OldServerConnectionId + ")"); - num += 25; - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "Host Migration not supported for WebGL"); - } - else - { - if (this.m_WaitingToBecomeNewHost) - { - GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "You are the new host"); - num += 25; - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Start As Host")) - { - if (NetworkManager.singleton != null) - { - this.BecomeNewHost(NetworkManager.singleton.networkPort); - } - else - { - Debug.LogWarning("MigrationManager Client BecomeNewHost - No NetworkManager."); - } - } - num += 25; - } - else if (this.m_WaitingReconnectToNewHost) - { - GUI.Label(new Rect((float)this.m_OffsetX, (float)num, 200f, 40f), "New host is " + this.m_NewHostAddress); - num += 25; - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Reconnect To New Host")) - { - this.Reset(this.m_OldServerConnectionId); - if (NetworkManager.singleton != null) - { - NetworkManager.singleton.networkAddress = this.m_NewHostAddress; - NetworkManager.singleton.client.ReconnectToNewHost(this.m_NewHostAddress, NetworkManager.singleton.networkPort); - } - else - { - Debug.LogWarning("MigrationManager Client reconnect - No NetworkManager."); - } - } - num += 25; - } - else - { - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Pick New Host")) - { - bool flag; - if (this.FindNewHost(out this.m_NewHostInfo, out flag)) - { - this.m_NewHostAddress = this.m_NewHostInfo.address; - if (flag) - { - this.m_WaitingToBecomeNewHost = true; - } - else - { - this.m_WaitingReconnectToNewHost = true; - } - } - } - num += 25; - } - if (GUI.Button(new Rect((float)this.m_OffsetX, (float)num, 200f, 20f), "Leave Game")) - { - if (NetworkManager.singleton != null) - { - NetworkManager.singleton.SetupMigrationManager(null); - NetworkManager.singleton.StopHost(); - } - else - { - Debug.LogWarning("MigrationManager Client LeaveGame - No NetworkManager."); - } - this.Reset(-1); - } - num += 25; - } - } - - private void OnGUI() - { - if (this.m_ShowGUI) - { - if (this.m_HostWasShutdown) - { - this.OnGUIHost(); - } - else if (this.m_DisconnectedFromHost && this.m_OldServerConnectionId != -1) - { - this.OnGUIClient(); - } - } - } - - [SerializeField] - private bool m_HostMigration = true; - - [SerializeField] - private bool m_ShowGUI = true; - - [SerializeField] - private int m_OffsetX = 10; - - [SerializeField] - private int m_OffsetY = 300; - - private QSBNetworkClient m_Client; - - private bool m_WaitingToBecomeNewHost; - - private bool m_WaitingReconnectToNewHost; - - private bool m_DisconnectedFromHost; - - private bool m_HostWasShutdown; - - private MatchInfo m_MatchInfo; - - private int m_OldServerConnectionId = -1; - - private string m_NewHostAddress; - - private QSBPeerInfoMessage m_NewHostInfo = new QSBPeerInfoMessage(); - - private QSBPeerListMessage m_PeerListMessage = new QSBPeerListMessage(); - - private QSBPeerInfoMessage[] m_Peers; - - private Dictionary m_PendingPlayers = new Dictionary(); - - public enum SceneChangeOption - { - StayInOnlineScene, - SwitchToOfflineScene - } - - public struct PendingPlayerInfo - { - public NetworkInstanceId netId; - - public short playerControllerId; - - public GameObject obj; - } - - public struct ConnectionPendingPlayers - { - public List players; - } - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBPeerAuthorityMessage.cs b/QuantumUNET/QSBPeerAuthorityMessage.cs deleted file mode 100644 index 1ef5ec75d..000000000 --- a/QuantumUNET/QSBPeerAuthorityMessage.cs +++ /dev/null @@ -1,27 +0,0 @@ -using UnityEngine.Networking; - -namespace QuantumUNET -{ - public class QSBPeerAuthorityMessage : QSBMessageBase - { - public override void Deserialize(QSBNetworkReader reader) - { - this.connectionId = (int)reader.ReadPackedUInt32(); - this.netId = reader.ReadNetworkId(); - this.authorityState = reader.ReadBoolean(); - } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32((uint)this.connectionId); - writer.Write(this.netId); - writer.Write(this.authorityState); - } - - public int connectionId; - - public NetworkInstanceId netId; - - public bool authorityState; - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBPeerListMessage.cs b/QuantumUNET/QSBPeerListMessage.cs deleted file mode 100644 index 17ab92411..000000000 --- a/QuantumUNET/QSBPeerListMessage.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace QuantumUNET -{ - public class QSBPeerListMessage : QSBMessageBase - { - public override void Deserialize(QSBNetworkReader reader) - { - this.oldServerConnectionId = (int)reader.ReadPackedUInt32(); - int num = (int)reader.ReadUInt16(); - this.peers = new QSBPeerInfoMessage[num]; - for (int i = 0; i < this.peers.Length; i++) - { - QSBPeerInfoMessage peerInfoMessage = new QSBPeerInfoMessage(); - peerInfoMessage.Deserialize(reader); - this.peers[i] = peerInfoMessage; - } - } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32((uint)this.oldServerConnectionId); - writer.Write((ushort)this.peers.Length); - for (int i = 0; i < this.peers.Length; i++) - { - this.peers[i].Serialize(writer); - } - } - - public QSBPeerInfoMessage[] peers; - - public int oldServerConnectionId; - } -} \ No newline at end of file diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index bd7371702..019e0ae1c 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -120,7 +120,6 @@ - @@ -133,10 +132,8 @@ - - From 83b5daf205dd1978f536a60da8b42051409b155f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 20:49:51 +0000 Subject: [PATCH 133/207] code cleanup --- QSB/OrbSync/Events/OrbSlotEvent.cs | 2 -- QSB/OrbSync/Events/OrbSlotMessage.cs | 4 ---- QuantumUNET/QSBNetworkManagerHUD.cs | 4 +--- QuantumUNET/QSBNetworkManagerUNET.cs | 1 - 4 files changed, 1 insertion(+), 10 deletions(-) diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 0713a14af..4f7133253 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -1,7 +1,5 @@ using QSB.EventsCore; -using QSB.Utility; using QSB.WorldSync; -using QSB.WorldSync.Events; namespace QSB.OrbSync.Events { diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs index a61c27313..c25da215c 100644 --- a/QSB/OrbSync/Events/OrbSlotMessage.cs +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -1,9 +1,5 @@ using QSB.Messaging; using QuantumUNET; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace QSB.OrbSync.Events { diff --git a/QuantumUNET/QSBNetworkManagerHUD.cs b/QuantumUNET/QSBNetworkManagerHUD.cs index 78aed10d1..59c17d32a 100644 --- a/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/QSBNetworkManagerHUD.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Networking.Match; +using UnityEngine; namespace QuantumUNET { diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs index 8e8cb4711..515cee785 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -1,7 +1,6 @@ using OWML.Logging; using System; using System.Collections.Generic; -using System.Net; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Match; From 24806ebb984695c67b36a7ffdf37c2903a15ad26 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 20:52:10 +0000 Subject: [PATCH 134/207] remove more --- QuantumUNET/QSBNetworkClient.cs | 16 ---------- QuantumUNET/QSBNetworkManagerUNET.cs | 47 ++-------------------------- 2 files changed, 3 insertions(+), 60 deletions(-) diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index e6e4cc2b5..bce38ca20 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -5,7 +5,6 @@ using System.Net.Sockets; using UnityEngine; using UnityEngine.Networking; -using UnityEngine.Networking.Match; using UnityEngine.Networking.NetworkSystem; namespace QuantumUNET @@ -574,21 +573,6 @@ internal void ContinueConnect() m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); } - private void ConnectWithRelay(MatchInfo info) - { - m_AsyncConnect = ConnectState.Connecting; - Update(); - byte b; - m_ClientConnectionId = NetworkTransport.ConnectToNetworkPeer(m_ClientId, info.address, info.port, 0, 0, info.networkId, QSBUtility.GetSourceID(), info.nodeId, out b); - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); - m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(info.address, m_ClientId, m_ClientConnectionId, m_HostTopology); - if (b != 0) - { - Debug.LogError("ConnectToNetworkPeer Error: " + b); - } - } - public virtual void Disconnect() { m_AsyncConnect = ConnectState.Disconnected; diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs index 515cee785..c44e5855a 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; -using UnityEngine.Networking.Match; using UnityEngine.SceneManagement; namespace QuantumUNET @@ -33,8 +32,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour public GameObject playerPrefab { get; set; } public PlayerSpawnMethod playerSpawnMethod { get; set; } public List spawnPrefabs { get; } = new List(); - public string matchName = "default"; - public uint matchSize = 4U; public QSBNetworkClient client; public int maxConnections { get; set; } = 4; public List channels { get; } = new List(); @@ -159,22 +156,12 @@ internal void RegisterServerMessages() QSBNetworkServer.RegisterHandler(34, new QSBNetworkMessageDelegate(OnServerErrorInternal)); } - public bool StartServer(ConnectionConfig config, int maxConnections) - { - return StartServer(null, config, maxConnections); - } - public bool StartServer() { - return StartServer(null); - } - - public bool StartServer(MatchInfo info) - { - return StartServer(info, null, -1); + return StartServer(null, -1); } - private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnections) + private bool StartServer(ConnectionConfig config, int maxConnections) { InitializeSingleton(); OnStartServer(); @@ -201,18 +188,7 @@ private bool StartServer(MatchInfo info, ConnectionConfig config, int maxConnect { QSBNetworkServer.Configure(config, maxConnections); } - if (info != null) - { - if (!QSBNetworkServer.Listen(info, networkPort)) - { - if (LogFilter.logError) - { - Debug.LogError("StartServer listen failed."); - } - return false; - } - } - else if (serverBindToIP && !string.IsNullOrEmpty(serverBindAddress)) + if (serverBindToIP && !string.IsNullOrEmpty(serverBindAddress)) { if (!QSBNetworkServer.Listen(serverBindAddress, networkPort)) { @@ -390,23 +366,6 @@ public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnec return result; } - public virtual QSBNetworkClient StartHost(MatchInfo info) - { - OnStartHost(); - QSBNetworkClient result; - if (StartServer(info)) - { - var networkClient = ConnectLocalClient(); - OnStartClient(networkClient); - result = networkClient; - } - else - { - result = null; - } - return result; - } - public virtual QSBNetworkClient StartHost() { OnStartHost(); From a814c418a779972b1151ad0bc1d65aefcaead7e0 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 20:54:14 +0000 Subject: [PATCH 135/207] more cleanup --- QuantumUNET/QSBNetworkManagerUNET.cs | 2 -- QuantumUNET/QSBNetworkServer.cs | 40 ++++++---------------------- 2 files changed, 8 insertions(+), 34 deletions(-) diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/QSBNetworkManagerUNET.cs index c44e5855a..6f45f518b 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/QSBNetworkManagerUNET.cs @@ -413,7 +413,6 @@ public void StopServer() } isNetworkActive = false; QSBNetworkServer.Shutdown(); - //StopMatchMaker(); if (!string.IsNullOrEmpty(offlineScene)) { ServerChangeScene(offlineScene); @@ -436,7 +435,6 @@ public void StopClient() client.Shutdown(); client = null; } - //StopMatchMaker(); QSBClientScene.DestroyAllClientObjects(); if (!string.IsNullOrEmpty(offlineScene)) { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 3c4a405b9..842182359 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -4,7 +4,6 @@ using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Networking; -using UnityEngine.Networking.Match; using UnityEngine.Networking.Types; namespace QuantumUNET @@ -213,21 +212,6 @@ public static void Shutdown() s_Active = false; } - public static bool Listen(MatchInfo matchInfo, int listenPort) - { - bool result; - if (!matchInfo.usingRelay) - { - result = instance.InternalListen(null, listenPort); - } - else - { - instance.InternalListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, QSBUtility.GetSourceID(), matchInfo.nodeId); - result = true; - } - return result; - } - internal void RegisterMessageHandlers() { m_SimpleServerSimple.RegisterHandlerSafe((short)35, new QSBNetworkMessageDelegate(OnClientReadyMessage)); @@ -279,12 +263,12 @@ internal bool InternalListen(string ipAddress, int serverPort) return true; } - public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, QSBPeerInfoMessage[] peers) + public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, int oldConnectionId, QSBPeerInfoMessage[] peers) { - return instance.BecomeHostInternal(oldClient, port, matchInfo, oldConnectionId, peers); + return instance.BecomeHostInternal(oldClient, port, oldConnectionId, peers); } - internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, MatchInfo matchInfo, int oldConnectionId, QSBPeerInfoMessage[] peers) + internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, int oldConnectionId, QSBPeerInfoMessage[] peers) { QSBNetworkClient result; if (s_Active) @@ -306,22 +290,14 @@ internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int por else { Configure(hostTopology); - if (matchInfo == null) + Debug.Log("BecomeHost Listen on " + port); + if (!Listen(port)) { - Debug.Log("BecomeHost Listen on " + port); - if (!Listen(port)) + if (LogFilter.logError) { - if (LogFilter.logError) - { - Debug.LogError("BecomeHost bind failed."); - } - return null; + Debug.LogError("BecomeHost bind failed."); } - } - else - { - Debug.Log("BecomeHost match:" + matchInfo.networkId); - ListenRelay(matchInfo.address, matchInfo.port, matchInfo.networkId, QSBUtility.GetSourceID(), matchInfo.nodeId); + return null; } foreach (var networkIdentity in QSBClientScene.Objects.Values) { From f726e651b887485c0ddf66badeba4b01bbdabfb2 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 21:04:52 +0000 Subject: [PATCH 136/207] cleanup --- QuantumUNET/QSBNetworkClient.cs | 9 -- QuantumUNET/QSBNetworkConnection.cs | 3 - QuantumUNET/QSBNetworkManagerHUD.cs | 21 --- QuantumUNET/QSBNetworkReader.cs | 236 ++++++++++------------------ QuantumUNET/QSBNetworkScene.cs | 46 +++--- QuantumUNET/QSBNetworkServer.cs | 59 ++----- 6 files changed, 113 insertions(+), 261 deletions(-) diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index bce38ca20..40cba4695 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -75,15 +75,6 @@ public QSBNetworkConnection connection } } - [Obsolete("Moved to NetworkMigrationManager.")] - public PeerInfoMessage[] peers - { - get - { - return null; - } - } - internal int hostId { get diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 9b0cddb87..37b9c0c9d 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -450,9 +450,6 @@ internal void RemoveObservers() public virtual void TransportReceive(byte[] bytes, int numBytes, int channelId) => HandleBytes(bytes, numBytes, channelId); - [Obsolete("TransportRecieve has been deprecated. Use TransportReceive instead (UnityUpgradable) -> TransportReceive(*)", false)] - public virtual void TransportRecieve(byte[] bytes, int numBytes, int channelId) => TransportReceive(bytes, numBytes, channelId); - public virtual bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error) => NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error); internal void AddOwnedObject(QSBNetworkIdentity obj) diff --git a/QuantumUNET/QSBNetworkManagerHUD.cs b/QuantumUNET/QSBNetworkManagerHUD.cs index 59c17d32a..046016c0f 100644 --- a/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/QSBNetworkManagerHUD.cs @@ -34,19 +34,6 @@ private void OnGUI() } manager.networkAddress = GUI.TextField(new Rect(num + 100, num2, 95f, 20f), manager.networkAddress); num2 += 24; - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - GUI.Box(new Rect(num, num2, 200f, 25f), "( WebGL cannot be server )"); - num2 += 24; - } - else - { - if (GUI.Button(new Rect(num, num2, 200f, 20f), "LAN Server Only")) - { - manager.StartServer(); - } - num2 += 24; - } } else { @@ -103,14 +90,6 @@ private void OnGUI() } num2 += 24; } - if (!QSBNetworkServer.active && !manager.IsClientConnected() && flag) - { - num2 += 10; - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - GUI.Box(new Rect(num - 5, num2, 220f, 25f), "(WebGL cannot use Match Maker)"); - } - } } } diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs index c4a676c3b..1200d589a 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -7,11 +7,9 @@ namespace QuantumUNET { public class QSBNetworkReader { - public QSBNetworkReader() - { - m_buf = new QSBNetBuffer(); - Initialize(); - } + private QSBNetBuffer m_buf; + private static byte[] s_StringReaderBuffer; + private static Encoding s_Encoding; public QSBNetworkReader(QSBNetworkWriter writer) { @@ -34,69 +32,51 @@ private static void Initialize() } } - public uint Position - { - get - { - return m_buf.Position; - } - } + public uint Position => m_buf.Position; - public int Length - { - get - { - return m_buf.Length; - } - } + public int Length => m_buf.Length; - public void SeekZero() - { - m_buf.SeekZero(); - } + public void SeekZero() => m_buf.SeekZero(); - internal void Replace(byte[] buffer) - { - m_buf.Replace(buffer); - } + internal void Replace(byte[] buffer) => m_buf.Replace(buffer); public uint ReadPackedUInt32() { - byte b = ReadByte(); + var b = ReadByte(); uint result; if (b < 241) { - result = (uint)b; + result = b; } else { - byte b2 = ReadByte(); + var b2 = ReadByte(); if (b >= 241 && b <= 248) { - result = 240U + 256U * (uint)(b - 241) + (uint)b2; + result = 240U + (256U * (uint)(b - 241)) + b2; } else { - byte b3 = ReadByte(); + var b3 = ReadByte(); if (b == 249) { - result = 2288U + 256U * (uint)b2 + (uint)b3; + result = 2288U + (256U * b2) + b3; } else { - byte b4 = ReadByte(); + var b4 = ReadByte(); if (b == 250) { - result = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16)); + result = (uint)(b2 + (b3 << 8) + (b4 << 16)); } else { - byte b5 = ReadByte(); + var b5 = ReadByte(); if (b < 251) { throw new IndexOutOfRangeException("ReadPackedUInt32() failure: " + b); } - result = (uint)((int)b2 + ((int)b3 << 8) + ((int)b4 << 16) + ((int)b5 << 24)); + result = (uint)(b2 + (b3 << 8) + (b4 << 16) + (b5 << 24)); } } } @@ -106,69 +86,69 @@ public uint ReadPackedUInt32() public ulong ReadPackedUInt64() { - byte b = ReadByte(); + var b = ReadByte(); ulong result; if (b < 241) { - result = (ulong)b; + result = b; } else { - byte b2 = ReadByte(); + var b2 = ReadByte(); if (b >= 241 && b <= 248) { - result = 240UL + 256UL * ((ulong)b - 241UL) + (ulong)b2; + result = 240UL + (256UL * (b - 241UL)) + b2; } else { - byte b3 = ReadByte(); + var b3 = ReadByte(); if (b == 249) { - result = 2288UL + 256UL * (ulong)b2 + (ulong)b3; + result = 2288UL + (256UL * b2) + b3; } else { - byte b4 = ReadByte(); + var b4 = ReadByte(); if (b == 250) { - result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16); + result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16); } else { - byte b5 = ReadByte(); + var b5 = ReadByte(); if (b == 251) { - result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24); + result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24); } else { - byte b6 = ReadByte(); + var b6 = ReadByte(); if (b == 252) { - result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32); + result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32); } else { - byte b7 = ReadByte(); + var b7 = ReadByte(); if (b == 253) { - result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40); + result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40); } else { - byte b8 = ReadByte(); + var b8 = ReadByte(); if (b == 254) { - result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48); + result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48); } else { - byte b9 = ReadByte(); + var b9 = ReadByte(); if (b != 255) { throw new IndexOutOfRangeException("ReadPackedUInt64() failure: " + b); } - result = (ulong)b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48) + ((ulong)b9 << 56); + result = b2 + ((ulong)b3 << 8) + ((ulong)b4 << 16) + ((ulong)b5 << 24) + ((ulong)b6 << 32) + ((ulong)b7 << 40) + ((ulong)b8 << 48) + ((ulong)b9 << 56); } } } @@ -180,61 +160,46 @@ public ulong ReadPackedUInt64() return result; } - public NetworkInstanceId ReadNetworkId() - { - return new NetworkInstanceId(ReadPackedUInt32()); - } + public NetworkInstanceId ReadNetworkId() => new NetworkInstanceId(ReadPackedUInt32()); - public NetworkSceneId ReadSceneId() - { - return new NetworkSceneId(ReadPackedUInt32()); - } + public NetworkSceneId ReadSceneId() => new NetworkSceneId(ReadPackedUInt32()); - public byte ReadByte() - { - return m_buf.ReadByte(); - } + public byte ReadByte() => m_buf.ReadByte(); - public sbyte ReadSByte() - { - return (sbyte)m_buf.ReadByte(); - } + public sbyte ReadSByte() => (sbyte)m_buf.ReadByte(); public short ReadInt16() { ushort num = 0; - num |= (ushort)m_buf.ReadByte(); + num |= m_buf.ReadByte(); num |= (ushort)(m_buf.ReadByte() << 8); return (short)num; } - public ushort ReadUInt16() - { - return (ushort)((uint)(ushort)(0U | (uint)m_buf.ReadByte()) | (uint)(ushort)((uint)m_buf.ReadByte() << 8)); - } + public ushort ReadUInt16() => (ushort)((ushort)(0U | m_buf.ReadByte()) | (uint)(ushort)((uint)m_buf.ReadByte() << 8)); public int ReadInt32() { - uint num = 0U; - num |= (uint)m_buf.ReadByte(); - num |= (uint)((uint)m_buf.ReadByte() << 8); - num |= (uint)((uint)m_buf.ReadByte() << 16); - return (int)(num | (uint)((uint)m_buf.ReadByte() << 24)); + var num = 0U; + num |= m_buf.ReadByte(); + num |= (uint)m_buf.ReadByte() << 8; + num |= (uint)m_buf.ReadByte() << 16; + return (int)(num | ((uint)m_buf.ReadByte() << 24)); } public uint ReadUInt32() { - uint num = 0U; - num |= (uint)m_buf.ReadByte(); - num |= (uint)((uint)m_buf.ReadByte() << 8); - num |= (uint)((uint)m_buf.ReadByte() << 16); - return num | (uint)((uint)m_buf.ReadByte() << 24); + var num = 0U; + num |= m_buf.ReadByte(); + num |= (uint)m_buf.ReadByte() << 8; + num |= (uint)m_buf.ReadByte() << 16; + return num | ((uint)m_buf.ReadByte() << 24); } public long ReadInt64() { - ulong num = 0UL; - ulong num2 = (ulong)m_buf.ReadByte(); + var num = 0UL; + var num2 = (ulong)m_buf.ReadByte(); num |= num2; num2 = (ulong)m_buf.ReadByte() << 8; num |= num2; @@ -254,8 +219,8 @@ public long ReadInt64() public ulong ReadUInt64() { - ulong num = 0UL; - ulong num2 = (ulong)m_buf.ReadByte(); + var num = 0UL; + var num2 = (ulong)m_buf.ReadByte(); num |= num2; num2 = (ulong)m_buf.ReadByte() << 8; num |= num2; @@ -298,7 +263,7 @@ public double ReadDouble() public string ReadString() { - ushort num = ReadUInt16(); + var num = ReadUInt16(); string result; if (num == 0) { @@ -310,25 +275,22 @@ public string ReadString() { throw new IndexOutOfRangeException("ReadString() too long: " + num); } - while ((int)num > s_StringReaderBuffer.Length) + while (num > s_StringReaderBuffer.Length) { s_StringReaderBuffer = new byte[s_StringReaderBuffer.Length * 2]; } - m_buf.ReadBytes(s_StringReaderBuffer, (uint)num); - char[] chars = s_Encoding.GetChars(s_StringReaderBuffer, 0, (int)num); + m_buf.ReadBytes(s_StringReaderBuffer, num); + var chars = s_Encoding.GetChars(s_StringReaderBuffer, 0, num); result = new string(chars); } return result; } - public char ReadChar() - { - return (char)m_buf.ReadByte(); - } + public char ReadChar() => (char)m_buf.ReadByte(); public bool ReadBoolean() { - int num = (int)m_buf.ReadByte(); + var num = (int)m_buf.ReadByte(); return num == 1; } @@ -338,14 +300,14 @@ public byte[] ReadBytes(int count) { throw new IndexOutOfRangeException("NetworkReader ReadBytes " + count); } - byte[] array = new byte[count]; + var array = new byte[count]; m_buf.ReadBytes(array, (uint)count); return array; } public byte[] ReadBytesAndSize() { - ushort num = ReadUInt16(); + var num = ReadUInt16(); byte[] result; if (num == 0) { @@ -353,55 +315,28 @@ public byte[] ReadBytesAndSize() } else { - result = ReadBytes((int)num); + result = ReadBytes(num); } return result; } - public Vector2 ReadVector2() - { - return new Vector2(ReadSingle(), ReadSingle()); - } + public Vector2 ReadVector2() => new Vector2(ReadSingle(), ReadSingle()); - public Vector3 ReadVector3() - { - return new Vector3(ReadSingle(), ReadSingle(), ReadSingle()); - } + public Vector3 ReadVector3() => new Vector3(ReadSingle(), ReadSingle(), ReadSingle()); - public Vector4 ReadVector4() - { - return new Vector4(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - } + public Vector4 ReadVector4() => new Vector4(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - public Color ReadColor() - { - return new Color(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - } + public Color ReadColor() => new Color(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - public Color32 ReadColor32() - { - return new Color32(ReadByte(), ReadByte(), ReadByte(), ReadByte()); - } + public Color32 ReadColor32() => new Color32(ReadByte(), ReadByte(), ReadByte(), ReadByte()); - public Quaternion ReadQuaternion() - { - return new Quaternion(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - } + public Quaternion ReadQuaternion() => new Quaternion(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - public Rect ReadRect() - { - return new Rect(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - } + public Rect ReadRect() => new Rect(ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); - public Plane ReadPlane() - { - return new Plane(ReadVector3(), ReadSingle()); - } + public Plane ReadPlane() => new Plane(ReadVector3(), ReadSingle()); - public Ray ReadRay() - { - return new Ray(ReadVector3(), ReadVector3()); - } + public Ray ReadRay() => new Ray(ReadVector3(), ReadVector3()); public Matrix4x4 ReadMatrix4x4() { @@ -450,7 +385,7 @@ public NetworkHash128 ReadNetworkHash128() public Transform ReadTransform() { - NetworkInstanceId networkInstanceId = ReadNetworkId(); + var networkInstanceId = ReadNetworkId(); Transform result; if (networkInstanceId.IsEmpty()) { @@ -458,7 +393,7 @@ public Transform ReadTransform() } else { - GameObject gameObject = QSBClientScene.FindLocalObject(networkInstanceId); + var gameObject = QSBClientScene.FindLocalObject(networkInstanceId); if (gameObject == null) { if (LogFilter.logDebug) @@ -477,7 +412,7 @@ public Transform ReadTransform() public GameObject ReadGameObject() { - NetworkInstanceId networkInstanceId = ReadNetworkId(); + var networkInstanceId = ReadNetworkId(); GameObject result; if (networkInstanceId.IsEmpty()) { @@ -508,7 +443,7 @@ public GameObject ReadGameObject() public QSBNetworkIdentity ReadNetworkIdentity() { - NetworkInstanceId networkInstanceId = ReadNetworkId(); + var networkInstanceId = ReadNetworkId(); QSBNetworkIdentity result; if (networkInstanceId.IsEmpty()) { @@ -541,26 +476,13 @@ public QSBNetworkIdentity ReadNetworkIdentity() return result; } - public override string ToString() - { - return m_buf.ToString(); - } + public override string ToString() => m_buf.ToString(); public TMsg ReadMessage() where TMsg : QSBMessageBase, new() { - TMsg result = Activator.CreateInstance(); + var result = Activator.CreateInstance(); result.Deserialize(this); return result; } - - private QSBNetBuffer m_buf; - - private const int k_MaxStringLength = 32768; - - private const int k_InitialStringBufferSize = 1024; - - private static byte[] s_StringReaderBuffer; - - private static Encoding s_Encoding; } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index 31346daa1..a88b62553 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -18,13 +18,13 @@ internal Dictionary localObjects { get { - return this.m_LocalObjects; + return m_LocalObjects; } } internal void Shutdown() { - this.ClearLocalObjects(); + ClearLocalObjects(); ClearSpawners(); } @@ -32,19 +32,19 @@ internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isCli { if (obj == null) { - this.localObjects[netId] = null; + localObjects[netId] = null; } else { QSBNetworkIdentity networkIdentity = null; - if (this.localObjects.ContainsKey(netId)) + if (localObjects.ContainsKey(netId)) { - networkIdentity = this.localObjects[netId]; + networkIdentity = localObjects[netId]; } if (networkIdentity == null) { networkIdentity = obj.GetComponent(); - this.localObjects[netId] = networkIdentity; + localObjects[netId] = networkIdentity; } networkIdentity.UpdateClientServer(isClient, isServer); } @@ -52,9 +52,9 @@ internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isCli internal GameObject FindLocalObject(NetworkInstanceId netId) { - if (this.localObjects.ContainsKey(netId)) + if (localObjects.ContainsKey(netId)) { - QSBNetworkIdentity networkIdentity = this.localObjects[netId]; + var networkIdentity = localObjects[netId]; if (networkIdentity != null) { return networkIdentity.gameObject; @@ -87,11 +87,11 @@ internal bool RemoveLocalObject(NetworkInstanceId netId) internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) { bool result; - if (this.localObjects.ContainsKey(netId)) + if (localObjects.ContainsKey(netId)) { - QSBNetworkIdentity networkIdentity = this.localObjects[netId]; + var networkIdentity = localObjects[netId]; UnityEngine.Object.Destroy(networkIdentity.gameObject); - result = this.localObjects.Remove(netId); + result = localObjects.Remove(netId); } else { @@ -102,12 +102,12 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) internal void ClearLocalObjects() { - this.localObjects.Clear(); + localObjects.Clear(); } internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) { - QSBNetworkIdentity component = prefab.GetComponent(); + var component = prefab.GetComponent(); if (component) { component.SetDynamicAssetId(newAssetId); @@ -121,11 +121,11 @@ internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId internal static void RegisterPrefab(GameObject prefab) { - QSBNetworkIdentity component = prefab.GetComponent(); + var component = prefab.GetComponent(); if (component) { guidToPrefab[component.AssetId] = prefab; - NetworkIdentity[] componentsInChildren = prefab.GetComponentsInChildren(); + var componentsInChildren = prefab.GetComponentsInChildren(); if (componentsInChildren.Length > 1) { if (LogFilter.logWarn) @@ -192,7 +192,7 @@ internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate internal static void UnregisterPrefab(GameObject prefab) { - QSBNetworkIdentity component = prefab.GetComponent(); + var component = prefab.GetComponent(); if (component == null) { if (LogFilter.logError) @@ -209,7 +209,7 @@ internal static void UnregisterPrefab(GameObject prefab) internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { - QSBNetworkIdentity component = prefab.GetComponent(); + var component = prefab.GetComponent(); if (component == null) { Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); @@ -250,7 +250,7 @@ internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj bool result; if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null) { - UnSpawnDelegate unSpawnDelegate = unspawnHandlers[assetId]; + var unSpawnDelegate = unspawnHandlers[assetId]; unSpawnDelegate(obj); result = true; } @@ -263,9 +263,9 @@ internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj internal void DestroyAllClientObjects() { - foreach (NetworkInstanceId key in this.localObjects.Keys) + foreach (var key in localObjects.Keys) { - QSBNetworkIdentity networkIdentity = this.localObjects[key]; + var networkIdentity = localObjects[key]; if (networkIdentity != null && networkIdentity.gameObject != null) { if (!InvokeUnSpawnHandler(networkIdentity.AssetId, networkIdentity.gameObject)) @@ -282,14 +282,14 @@ internal void DestroyAllClientObjects() } } } - this.ClearLocalObjects(); + ClearLocalObjects(); } internal void DumpAllClientObjects() { - foreach (NetworkInstanceId networkInstanceId in this.localObjects.Keys) + foreach (var networkInstanceId in localObjects.Keys) { - QSBNetworkIdentity networkIdentity = this.localObjects[networkInstanceId]; + var networkIdentity = localObjects[networkInstanceId]; if (networkIdentity != null) { Debug.Log(string.Concat(new object[] diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 842182359..838a24adf 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -75,29 +75,7 @@ public static Dictionary objects } } - [Obsolete("Moved to NetworkMigrationManager")] - public static bool sendPeerInfo - { - get - { - return false; - } - set - { - } - } - - public static bool dontListen - { - get - { - return m_DontListen; - } - set - { - m_DontListen = value; - } - } + public static bool dontListen { get; set; } public static bool useWebSockets { @@ -130,13 +108,7 @@ internal static QSBNetworkServer instance } } - public static bool active - { - get - { - return s_Active; - } - } + public static bool active { get; private set; } public static bool localClientActive { @@ -194,7 +166,7 @@ public static void Reset() NetworkTransport.Shutdown(); NetworkTransport.Init(); s_Instance = null; - s_Active = false; + active = false; } public static void Shutdown() @@ -202,14 +174,14 @@ public static void Shutdown() if (s_Instance != null) { s_Instance.InternalDisconnectAll(); - if (!m_DontListen) + if (!dontListen) { s_Instance.m_SimpleServerSimple.Stop(); } s_Instance = null; } - m_DontListen = false; - s_Active = false; + dontListen = false; + active = false; } internal void RegisterMessageHandlers() @@ -233,7 +205,7 @@ public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { m_SimpleServerSimple.ListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); - s_Active = true; + active = true; RegisterMessageHandlers(); } @@ -249,7 +221,7 @@ public static bool Listen(string ipAddress, int serverPort) internal bool InternalListen(string ipAddress, int serverPort) { - if (m_DontListen) + if (dontListen) { m_SimpleServerSimple.Initialize(); } @@ -258,7 +230,7 @@ internal bool InternalListen(string ipAddress, int serverPort) return false; } maxPacketSize = hostTopology.DefaultConfig.PacketSize; - s_Active = true; + active = true; RegisterMessageHandlers(); return true; } @@ -271,7 +243,7 @@ public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, int oldConnectionId, QSBPeerInfoMessage[] peers) { QSBNetworkClient result; - if (s_Active) + if (active) { if (LogFilter.logError) { @@ -741,7 +713,7 @@ private void CheckForNullObjects() internal void InternalUpdate() { m_SimpleServerSimple.Update(); - if (m_DontListen) + if (dontListen) { m_SimpleServerSimple.UpdateConnections(); } @@ -1916,19 +1888,10 @@ private static void SendCrc(QSBNetworkConnection targetConnection) } } - [Obsolete("moved to NetworkMigrationManager")] - public void SendNetworkInfo(NetworkConnection targetConnection) - { - } - - private static bool s_Active; - private static volatile QSBNetworkServer s_Instance; private static object s_Sync = new UnityEngine.Object(); - private static bool m_DontListen; - private bool m_LocalClientActive; private List m_LocalConnectionsFakeList = new List(); From 2f1e4373cf7daf63a9dae6f854a173a10b5a55f5 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 21:05:01 +0000 Subject: [PATCH 137/207] Update QSBNetworkClient.cs --- QuantumUNET/QSBNetworkClient.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 40cba4695..2b72f8eb3 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -5,7 +5,6 @@ using System.Net.Sockets; using UnityEngine; using UnityEngine.Networking; -using UnityEngine.Networking.NetworkSystem; namespace QuantumUNET { From 36f925a983ed5664ed9f9bda51467a5277ca5e67 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 21:19:16 +0000 Subject: [PATCH 138/207] re-organize --- QSB/Animation/AnimationSync.cs | 1 + QSB/MessagesCore/MessageHandler.cs | 1 + QSB/MessagesCore/PlayerMessage.cs | 1 + QSB/OrbSync/Events/OrbUserEvent.cs | 1 + QSB/Player/PlayerSyncObject.cs | 1 + QSB/Player/QSBPlayerManager.cs | 1 + QSB/QSB.cs | 1 + QSB/QSBNetworkManager.cs | 1 + .../{ => Components}/QSBNetworkAnimator.cs | 5 +- .../{ => Components}/QSBNetworkIdentity.cs | 3 +- .../{ => Components}/QSBNetworkManagerHUD.cs | 2 +- .../{ => Components}/QSBNetworkManagerUNET.cs | 3 +- .../{ => Components}/QSBNetworkTransform.cs | 3 +- .../{ => Messages}/QSBAddPlayerMessage.cs | 2 +- .../{ => Messages}/QSBAnimationMessage.cs | 2 +- .../QSBAnimationParametersMessage.cs | 2 +- .../QSBAnimationTriggerMessage.cs | 2 +- QuantumUNET/{ => Messages}/QSBCRCMessage.cs | 2 +- .../QSBClientAuthorityMessage.cs | 2 +- QuantumUNET/{ => Messages}/QSBEmptyMessage.cs | 2 +- QuantumUNET/{ => Messages}/QSBErrorMessage.cs | 2 +- QuantumUNET/{ => Messages}/QSBMessageBase.cs | 2 +- .../{ => Messages}/QSBNetworkMessage.cs | 2 +- .../QSBNetworkMessageDelegate.cs | 2 +- .../{ => Messages}/QSBNotReadyMessage.cs | 2 +- .../{ => Messages}/QSBObjectDestroyMessage.cs | 2 +- .../QSBObjectSpawnFinishedMessage.cs | 2 +- .../{ => Messages}/QSBObjectSpawnMessage.cs | 2 +- .../QSBObjectSpawnSceneMessage.cs | 2 +- QuantumUNET/{ => Messages}/QSBOwnerMessage.cs | 2 +- .../{ => Messages}/QSBPeerInfoMessage.cs | 2 +- QuantumUNET/{ => Messages}/QSBReadyMessage.cs | 2 +- .../{ => Messages}/QSBReconnectMessage.cs | 2 +- .../{ => Messages}/QSBRemovePlayerMessage.cs | 2 +- .../{ => Messages}/QSBStringMessage.cs | 2 +- QuantumUNET/QSBChannelBuffer.cs | 3 +- QuantumUNET/QSBClientScene.cs | 4 +- QuantumUNET/QSBLocalClient.cs | 3 +- QuantumUNET/QSBNetworkBehaviour.cs | 1 + QuantumUNET/QSBNetworkClient.cs | 1 + QuantumUNET/QSBNetworkConnection.cs | 2 + QuantumUNET/QSBNetworkMessageHandlers.cs | 3 +- QuantumUNET/QSBNetworkReader.cs | 4 +- QuantumUNET/QSBNetworkScene.cs | 3 +- QuantumUNET/QSBNetworkServer.cs | 2 + QuantumUNET/QSBNetworkServerSimple.cs | 3 +- QuantumUNET/QSBNetworkWriter.cs | 4 +- QuantumUNET/QSBPlayerController.cs | 3 +- QuantumUNET/QSBULocalConnectionToClient.cs | 4 +- QuantumUNET/QSBULocalConnectionToServer.cs | 3 +- QuantumUNET/QuantumUNET.csproj | 54 +++++++++---------- 51 files changed, 99 insertions(+), 66 deletions(-) rename QuantumUNET/{ => Components}/QSBNetworkAnimator.cs (99%) rename QuantumUNET/{ => Components}/QSBNetworkIdentity.cs (99%) rename QuantumUNET/{ => Components}/QSBNetworkManagerHUD.cs (98%) rename QuantumUNET/{ => Components}/QSBNetworkManagerUNET.cs (99%) rename QuantumUNET/{ => Components}/QSBNetworkTransform.cs (99%) rename QuantumUNET/{ => Messages}/QSBAddPlayerMessage.cs (94%) rename QuantumUNET/{ => Messages}/QSBAnimationMessage.cs (96%) rename QuantumUNET/{ => Messages}/QSBAnimationParametersMessage.cs (94%) rename QuantumUNET/{ => Messages}/QSBAnimationTriggerMessage.cs (93%) rename QuantumUNET/{ => Messages}/QSBCRCMessage.cs (95%) rename QuantumUNET/{ => Messages}/QSBClientAuthorityMessage.cs (93%) rename QuantumUNET/{ => Messages}/QSBEmptyMessage.cs (84%) rename QuantumUNET/{ => Messages}/QSBErrorMessage.cs (89%) rename QuantumUNET/{ => Messages}/QSBMessageBase.cs (84%) rename QuantumUNET/{ => Messages}/QSBNetworkMessage.cs (94%) rename QuantumUNET/{ => Messages}/QSBNetworkMessageDelegate.cs (69%) rename QuantumUNET/{ => Messages}/QSBNotReadyMessage.cs (63%) rename QuantumUNET/{ => Messages}/QSBObjectDestroyMessage.cs (91%) rename QuantumUNET/{ => Messages}/QSBObjectSpawnFinishedMessage.cs (89%) rename QuantumUNET/{ => Messages}/QSBObjectSpawnMessage.cs (96%) rename QuantumUNET/{ => Messages}/QSBObjectSpawnSceneMessage.cs (95%) rename QuantumUNET/{ => Messages}/QSBOwnerMessage.cs (93%) rename QuantumUNET/{ => Messages}/QSBPeerInfoMessage.cs (98%) rename QuantumUNET/{ => Messages}/QSBReadyMessage.cs (62%) rename QuantumUNET/{ => Messages}/QSBReconnectMessage.cs (96%) rename QuantumUNET/{ => Messages}/QSBRemovePlayerMessage.cs (90%) rename QuantumUNET/{ => Messages}/QSBStringMessage.cs (91%) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 6d425a83b..af08996de 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -4,6 +4,7 @@ using QSB.Player; using QSB.Utility; using QuantumUNET; +using QuantumUNET.Components; using System.Linq; using UnityEngine; diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 729c59c93..c5ff89df0 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -2,6 +2,7 @@ using QSB.EventsCore; using QSB.Utility; using QuantumUNET; +using QuantumUNET.Messages; using System; using System.Linq; using UnityEngine.Networking; diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 51609d9e9..4362eb0e1 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -1,4 +1,5 @@ using QuantumUNET; +using QuantumUNET.Messages; namespace QSB.Messaging { diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index d9b9cf48d..ba30815df 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -4,6 +4,7 @@ using QSB.WorldSync; using QSB.WorldSync.Events; using QuantumUNET; +using QuantumUNET.Components; using System.Linq; namespace QSB.OrbSync.Events diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 7cd9145e4..9ac03338a 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -1,4 +1,5 @@ using QuantumUNET; +using QuantumUNET.Components; namespace QSB.Player { diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index c31956e15..467d30f4f 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -3,6 +3,7 @@ using QSB.TransformSync; using QSB.Utility; using QuantumUNET; +using QuantumUNET.Components; using System.Collections.Generic; using System.Linq; diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 1235976c7..53e50f407 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -10,6 +10,7 @@ using QSB.TimeSync; using QSB.Utility; using QuantumUNET; +using QuantumUNET.Components; using UnityEngine; using UnityEngine.Networking; diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index a178292f9..b86654522 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -15,6 +15,7 @@ using QSB.Utility; using QSB.WorldSync; using QuantumUNET; +using QuantumUNET.Components; using System; using System.Linq; using UnityEngine; diff --git a/QuantumUNET/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs similarity index 99% rename from QuantumUNET/QSBNetworkAnimator.cs rename to QuantumUNET/Components/QSBNetworkAnimator.cs index 542fd693f..4cfacf722 100644 --- a/QuantumUNET/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -1,6 +1,7 @@ -using UnityEngine; +using QuantumUNET.Messages; +using UnityEngine; -namespace QuantumUNET +namespace QuantumUNET.Components { public class QSBNetworkAnimator : QSBNetworkBehaviour { diff --git a/QuantumUNET/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs similarity index 99% rename from QuantumUNET/QSBNetworkIdentity.cs rename to QuantumUNET/Components/QSBNetworkIdentity.cs index a4dc90d1d..4c144e0c0 100644 --- a/QuantumUNET/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -1,11 +1,12 @@ using OWML.Logging; +using QuantumUNET.Messages; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Components { public sealed class QSBNetworkIdentity : MonoBehaviour { diff --git a/QuantumUNET/QSBNetworkManagerHUD.cs b/QuantumUNET/Components/QSBNetworkManagerHUD.cs similarity index 98% rename from QuantumUNET/QSBNetworkManagerHUD.cs rename to QuantumUNET/Components/QSBNetworkManagerHUD.cs index 046016c0f..58cc9ddf4 100644 --- a/QuantumUNET/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/Components/QSBNetworkManagerHUD.cs @@ -1,6 +1,6 @@ using UnityEngine; -namespace QuantumUNET +namespace QuantumUNET.Components { public class QSBNetworkManagerHUD : MonoBehaviour { diff --git a/QuantumUNET/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs similarity index 99% rename from QuantumUNET/QSBNetworkManagerUNET.cs rename to QuantumUNET/Components/QSBNetworkManagerUNET.cs index 6f45f518b..39a321a08 100644 --- a/QuantumUNET/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -1,11 +1,12 @@ using OWML.Logging; +using QuantumUNET.Messages; using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; -namespace QuantumUNET +namespace QuantumUNET.Components { public class QSBNetworkManagerUNET : MonoBehaviour { diff --git a/QuantumUNET/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs similarity index 99% rename from QuantumUNET/QSBNetworkTransform.cs rename to QuantumUNET/Components/QSBNetworkTransform.cs index 7c4385205..66de6f112 100644 --- a/QuantumUNET/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -1,8 +1,9 @@ using OWML.Logging; +using QuantumUNET.Messages; using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Components { public class QSBNetworkTransform : QSBNetworkBehaviour { diff --git a/QuantumUNET/QSBAddPlayerMessage.cs b/QuantumUNET/Messages/QSBAddPlayerMessage.cs similarity index 94% rename from QuantumUNET/QSBAddPlayerMessage.cs rename to QuantumUNET/Messages/QSBAddPlayerMessage.cs index 3c96b880e..34d65148a 100644 --- a/QuantumUNET/QSBAddPlayerMessage.cs +++ b/QuantumUNET/Messages/QSBAddPlayerMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBAddPlayerMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs similarity index 96% rename from QuantumUNET/QSBAnimationMessage.cs rename to QuantumUNET/Messages/QSBAnimationMessage.cs index b5bc2de08..7278d7a92 100644 --- a/QuantumUNET/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBAnimationMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBAnimationParametersMessage.cs b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs similarity index 94% rename from QuantumUNET/QSBAnimationParametersMessage.cs rename to QuantumUNET/Messages/QSBAnimationParametersMessage.cs index 0ff4098ec..d28169e5b 100644 --- a/QuantumUNET/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBAnimationParametersMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBAnimationTriggerMessage.cs b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs similarity index 93% rename from QuantumUNET/QSBAnimationTriggerMessage.cs rename to QuantumUNET/Messages/QSBAnimationTriggerMessage.cs index a4497280e..832dfa57c 100644 --- a/QuantumUNET/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBAnimationTriggerMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBCRCMessage.cs b/QuantumUNET/Messages/QSBCRCMessage.cs similarity index 95% rename from QuantumUNET/QSBCRCMessage.cs rename to QuantumUNET/Messages/QSBCRCMessage.cs index 59462ef1c..df45dd7aa 100644 --- a/QuantumUNET/QSBCRCMessage.cs +++ b/QuantumUNET/Messages/QSBCRCMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBCRCMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBClientAuthorityMessage.cs b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs similarity index 93% rename from QuantumUNET/QSBClientAuthorityMessage.cs rename to QuantumUNET/Messages/QSBClientAuthorityMessage.cs index 66889b3d0..925bc3eeb 100644 --- a/QuantumUNET/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBClientAuthorityMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBEmptyMessage.cs b/QuantumUNET/Messages/QSBEmptyMessage.cs similarity index 84% rename from QuantumUNET/QSBEmptyMessage.cs rename to QuantumUNET/Messages/QSBEmptyMessage.cs index 00d1ce193..27dbc7856 100644 --- a/QuantumUNET/QSBEmptyMessage.cs +++ b/QuantumUNET/Messages/QSBEmptyMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBEmptyMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBErrorMessage.cs b/QuantumUNET/Messages/QSBErrorMessage.cs similarity index 89% rename from QuantumUNET/QSBErrorMessage.cs rename to QuantumUNET/Messages/QSBErrorMessage.cs index ebb436db6..3a55c670a 100644 --- a/QuantumUNET/QSBErrorMessage.cs +++ b/QuantumUNET/Messages/QSBErrorMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBErrorMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBMessageBase.cs b/QuantumUNET/Messages/QSBMessageBase.cs similarity index 84% rename from QuantumUNET/QSBMessageBase.cs rename to QuantumUNET/Messages/QSBMessageBase.cs index dce35c360..241af1160 100644 --- a/QuantumUNET/QSBMessageBase.cs +++ b/QuantumUNET/Messages/QSBMessageBase.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public abstract class QSBMessageBase { diff --git a/QuantumUNET/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs similarity index 94% rename from QuantumUNET/QSBNetworkMessage.cs rename to QuantumUNET/Messages/QSBNetworkMessage.cs index 8628bcf74..f5b68c0df 100644 --- a/QuantumUNET/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -1,6 +1,6 @@ using System; -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBNetworkMessage { diff --git a/QuantumUNET/QSBNetworkMessageDelegate.cs b/QuantumUNET/Messages/QSBNetworkMessageDelegate.cs similarity index 69% rename from QuantumUNET/QSBNetworkMessageDelegate.cs rename to QuantumUNET/Messages/QSBNetworkMessageDelegate.cs index 1add490e8..c88035d5d 100644 --- a/QuantumUNET/QSBNetworkMessageDelegate.cs +++ b/QuantumUNET/Messages/QSBNetworkMessageDelegate.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public delegate void QSBNetworkMessageDelegate(QSBNetworkMessage netMsg); } \ No newline at end of file diff --git a/QuantumUNET/QSBNotReadyMessage.cs b/QuantumUNET/Messages/QSBNotReadyMessage.cs similarity index 63% rename from QuantumUNET/QSBNotReadyMessage.cs rename to QuantumUNET/Messages/QSBNotReadyMessage.cs index b8bcc65e8..619c7e24b 100644 --- a/QuantumUNET/QSBNotReadyMessage.cs +++ b/QuantumUNET/Messages/QSBNotReadyMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBNotReadyMessage : QSBEmptyMessage { diff --git a/QuantumUNET/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs similarity index 91% rename from QuantumUNET/QSBObjectDestroyMessage.cs rename to QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 0bd945214..62a641c12 100644 --- a/QuantumUNET/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBObjectDestroyMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs similarity index 89% rename from QuantumUNET/QSBObjectSpawnFinishedMessage.cs rename to QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs index 3ceb71a13..66f1c1921 100644 --- a/QuantumUNET/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs similarity index 96% rename from QuantumUNET/QSBObjectSpawnMessage.cs rename to QuantumUNET/Messages/QSBObjectSpawnMessage.cs index 32b5c9d73..98f5fe6c1 100644 --- a/QuantumUNET/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBObjectSpawnMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs similarity index 95% rename from QuantumUNET/QSBObjectSpawnSceneMessage.cs rename to QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index cf49fe77f..88cb68255 100644 --- a/QuantumUNET/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBObjectSpawnSceneMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs similarity index 93% rename from QuantumUNET/QSBOwnerMessage.cs rename to QuantumUNET/Messages/QSBOwnerMessage.cs index b5aafc2e9..7ba819543 100644 --- a/QuantumUNET/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { internal class QSBOwnerMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBPeerInfoMessage.cs b/QuantumUNET/Messages/QSBPeerInfoMessage.cs similarity index 98% rename from QuantumUNET/QSBPeerInfoMessage.cs rename to QuantumUNET/Messages/QSBPeerInfoMessage.cs index a564670d2..a876df834 100644 --- a/QuantumUNET/QSBPeerInfoMessage.cs +++ b/QuantumUNET/Messages/QSBPeerInfoMessage.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBPeerInfoMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBReadyMessage.cs b/QuantumUNET/Messages/QSBReadyMessage.cs similarity index 62% rename from QuantumUNET/QSBReadyMessage.cs rename to QuantumUNET/Messages/QSBReadyMessage.cs index 0403fe815..c100560fb 100644 --- a/QuantumUNET/QSBReadyMessage.cs +++ b/QuantumUNET/Messages/QSBReadyMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBReadyMessage : QSBEmptyMessage { diff --git a/QuantumUNET/QSBReconnectMessage.cs b/QuantumUNET/Messages/QSBReconnectMessage.cs similarity index 96% rename from QuantumUNET/QSBReconnectMessage.cs rename to QuantumUNET/Messages/QSBReconnectMessage.cs index d4b8f3445..f43c20f24 100644 --- a/QuantumUNET/QSBReconnectMessage.cs +++ b/QuantumUNET/Messages/QSBReconnectMessage.cs @@ -1,6 +1,6 @@ using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBReconnectMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBRemovePlayerMessage.cs b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs similarity index 90% rename from QuantumUNET/QSBRemovePlayerMessage.cs rename to QuantumUNET/Messages/QSBRemovePlayerMessage.cs index 1399e1fa2..59d1d3075 100644 --- a/QuantumUNET/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBRemovePlayerMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBStringMessage.cs b/QuantumUNET/Messages/QSBStringMessage.cs similarity index 91% rename from QuantumUNET/QSBStringMessage.cs rename to QuantumUNET/Messages/QSBStringMessage.cs index 5b352d9d5..74dd198d0 100644 --- a/QuantumUNET/QSBStringMessage.cs +++ b/QuantumUNET/Messages/QSBStringMessage.cs @@ -1,4 +1,4 @@ -namespace QuantumUNET +namespace QuantumUNET.Messages { public class QSBStringMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBChannelBuffer.cs b/QuantumUNET/QSBChannelBuffer.cs index d3d911495..5f6d610fc 100644 --- a/QuantumUNET/QSBChannelBuffer.cs +++ b/QuantumUNET/QSBChannelBuffer.cs @@ -1,4 +1,5 @@ -using System; +using QuantumUNET.Messages; +using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 2052c8059..a7a4fe697 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using QuantumUNET.Components; +using QuantumUNET.Messages; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QSBLocalClient.cs b/QuantumUNET/QSBLocalClient.cs index f6e546c8f..ce65e1230 100644 --- a/QuantumUNET/QSBLocalClient.cs +++ b/QuantumUNET/QSBLocalClient.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using QuantumUNET.Messages; +using System.Collections.Generic; using UnityEngine; namespace QuantumUNET diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 7ae19ce7d..734c2ad21 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,4 +1,5 @@ using OWML.Logging; +using QuantumUNET.Components; using System; using System.Collections.Generic; using System.Net.Sockets; diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 2b72f8eb3..04a5169c1 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -1,4 +1,5 @@ using OWML.Logging; +using QuantumUNET.Messages; using System; using System.Collections.Generic; using System.Net; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 37b9c0c9d..ecc794836 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -1,4 +1,6 @@ using OWML.Logging; +using QuantumUNET.Components; +using QuantumUNET.Messages; using System; using System.Collections.Generic; using System.Text; diff --git a/QuantumUNET/QSBNetworkMessageHandlers.cs b/QuantumUNET/QSBNetworkMessageHandlers.cs index d0c651208..9fa676b79 100644 --- a/QuantumUNET/QSBNetworkMessageHandlers.cs +++ b/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using QuantumUNET.Messages; +using System.Collections.Generic; using UnityEngine; namespace QuantumUNET diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs index 1200d589a..afdb40e38 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -1,4 +1,6 @@ -using System; +using QuantumUNET.Components; +using QuantumUNET.Messages; +using System; using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index a88b62553..d3d94d173 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using QuantumUNET.Components; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 838a24adf..b00aedafc 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1,4 +1,6 @@ using OWML.Logging; +using QuantumUNET.Components; +using QuantumUNET.Messages; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index 3b670cbc2..5d9a15455 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,4 +1,5 @@ -using System; +using QuantumUNET.Messages; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; diff --git a/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/QSBNetworkWriter.cs index 1e32bdac3..86a951781 100644 --- a/QuantumUNET/QSBNetworkWriter.cs +++ b/QuantumUNET/QSBNetworkWriter.cs @@ -1,4 +1,6 @@ -using System; +using QuantumUNET.Components; +using QuantumUNET.Messages; +using System; using System.Text; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QSBPlayerController.cs b/QuantumUNET/QSBPlayerController.cs index 88b8ac0f1..745ad2a35 100644 --- a/QuantumUNET/QSBPlayerController.cs +++ b/QuantumUNET/QSBPlayerController.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QuantumUNET.Components; +using UnityEngine; namespace QuantumUNET { diff --git a/QuantumUNET/QSBULocalConnectionToClient.cs b/QuantumUNET/QSBULocalConnectionToClient.cs index 312647d10..72419eabc 100644 --- a/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET +using QuantumUNET.Messages; + +namespace QuantumUNET { internal class QSBULocalConnectionToClient : QSBNetworkConnection { diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index f1aa485a5..51d2d4db7 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QuantumUNET.Messages; +using UnityEngine; using UnityEngine.Networking; namespace QuantumUNET diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 019e0ae1c..9c7c08515 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -94,51 +94,51 @@ - - - - + + + + - + - + - - + + - + - + - - - - - + + + + + - + - - - - - - - + + + + + + + - - - - + + + + From 2cb296c0db8b274d4e76656edd3328f32f4e4784 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 7 Dec 2020 21:21:03 +0000 Subject: [PATCH 139/207] cleanup --- QSB/Animation/AnimationSync.cs | 1 - QSB/Player/QSBPlayerManager.cs | 1 - QSB/QSB.cs | 1 - 3 files changed, 3 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index af08996de..fb892cd24 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -3,7 +3,6 @@ using QSB.EventsCore; using QSB.Player; using QSB.Utility; -using QuantumUNET; using QuantumUNET.Components; using System.Linq; using UnityEngine; diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 467d30f4f..2de27749f 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -2,7 +2,6 @@ using QSB.Player.Events; using QSB.TransformSync; using QSB.Utility; -using QuantumUNET; using QuantumUNET.Components; using System.Collections.Generic; using System.Linq; diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 53e50f407..5d03544e6 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -9,7 +9,6 @@ using QSB.SectorSync; using QSB.TimeSync; using QSB.Utility; -using QuantumUNET; using QuantumUNET.Components; using UnityEngine; using UnityEngine.Networking; From b507ed2588068f74c8bdb76460959c340a59864a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 8 Dec 2020 08:58:18 +0000 Subject: [PATCH 140/207] Update README.md --- README.md | 58 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 25db1153a..d20c15ac3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,14 @@ # Quantum Space Buddies - Outer Wilds Online Multiplayer Mod +Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as "QuantumUNET") for networking. + +**Disclamer - The mod authors (misternebula, AmazingAlek and Raicuparta) take no responsibility for any damages that are caused through opening ports on your network, or connecting to servers. Do not attempt to change your router settings without prior knowledge of what you are doing. Only share your public IP with people you trust, and don't connect to IPs that you do not know the source of. It is good practice to close ports/firewall exceptions after you have finished playing.** + +- [FAQs](#frequently-asked-questions) + - [What is synced?](#what-is-currently-synced) + - [Why can't I connect?](#why-cant-i-connect-to-a-server) - [Installation](#installation) - [Easy installation (recommended)](#easy-installation-recommended) - [Manual installation](#manual-installation) @@ -9,11 +16,35 @@ - [Playing as a host](#playing-as-a-host) - [Development Setup](#development-setup) - [Authors](#authors) -- [Special thanks](#special-thanks) - [Help / Discuss development / Whatever](#help--discuss-development--whatever) +## Frequently Asked Questions + +### What is currently synced? +QSB does not operate on a strict server-client relationship. Each player's game is left as a completely seperate game, and individual elemets are synced or patched so they can be controlled though network messages. Right now, the list of synced objects are : +- Geysers +- Elevators +- Nomai interface orbs +- Player animations +- Player tools +- Player ships +- Player probes +- NPC heads in conversations + +### Why can't I connect to a server? +#### For the host : +- Open port 7777 TCP and UDP on your router. If access the internet through multiple layers of routers, the port will need to be opened on every router. +- Open port 7777 TCP and UDP in and out on your firewall. Some AVs might block you editing firewall settings, so check with your specific software. +- Make sure you are giving your public IPv4 address to your clients. +#### For the client : +- Open port 7777 TCP and UDP in and out on your firewall. Some AVs might block you editing firewall settings, so check with your specific software. +- Sometimes, it has helped to change your network profile to "private". +- Make sure you are putting the right address into the address box. + +If nothing here works, many people have got QSB working through programs such as Hamachi. Also make sure you are not running through a VPN while trying to connect. + ## Installation ### Easy installation (recommended) @@ -25,7 +56,7 @@ ### Manual installation - [Install OWML](https://github.com/amazingalek/owml#installation); -- [Download the latest Quantum Space Buddies release](https://github.com/Raicuparta/quantum-space-buddies/releases/latest); +- [Download the latest Quantum Space Buddies release](https://github.com/misternebula/quantum-space-buddies/releases/latest); - Extract the `QSB` directory to the `OWML/Mods` directory; - Run `OWML.Launcher.exe` to start the game. @@ -33,22 +64,23 @@ - Run the game; - You'll see some new buttons on the top left; -- Replace `localhost` with the server's IP address; -- Press "LAN Client(C). You can join servers in the menu or in-game, but it is recommended to join in the main menu."; -- If you see "Stop (X)", you are connected. +- Replace `localhost` with the server's public IP address; +- Press "Connect". You can join servers in the menu or in-game, but it is recommended to join in the main menu."; +- If you see "Stop", you are connected. +- If it stops at "Connecting to..." then you or the host has issues with their firewall/router/other. ## Playing as a host -- Open port `7777` on your router; -- Run the game; -- You'll see some new buttons on the top left; -- Press "LAN Host(H)". This can be done in-game or in the menu, but it is recommened to start servers in the menu.; -- If you now see the "Stop (X)" button, you are serving; +- Open port `7777` on your router.; +- Run the game.; +- You'll see some new buttons on the top left.; +- Press "Host". This can be done in-game or in the menu, but it is recommened to start servers in the menu.; +- If you now see the "Stop" button, you are hosting.; - Give your external IPv4 address to your clients ([like what you see here](http://whatismyip.host/)). ## Development Setup -- [Download the Outer Wilds Mod Manager](https://github.com/Raicuparta/ow*mod*manager) and install it anywhere you like; +- [Download the Outer Wilds Mod Manager](https://github.com/misternebula/ow*mod*manager) and install it anywhere you like; - Install OWML using the Mod Manager; - Clone QSB's source; - Open the file `QSB/QSB.csproj.user` in your favorite text editor; @@ -65,11 +97,9 @@ If for some reason none of this is working, you might have to set everything man - To fix the references, right*click "References" in the Solution Explorer > "Add Reference", and add all the missing DLLs (references with yellow warning icon). You can find these DLLs in the game's directory (`OuterWilds\OuterWilds_Data\Managed`); - If Visual Studio isn't able to automatically copy the files, you'll have to copy the built dlls manually to OWML. -Refer to this repo's wiki for documentation on core QSB design specifications and mechanics. - ## Authors -- [Mister_Nebula](https://github.com/misternebula) - Developer of v0.3 onwards +- [\_nebula](https://github.com/misternebula) - Developer of v0.3 onwards - [AmazingAlek](https://github.com/amazingalek) - On-and-off developer and sometimes code tidyer - [Raicuparta](https://github.com/Raicuparta) - Developer of v0.1 - v0.2 From 016c983065cb3754e1ec3a3b93db96bef77fab3c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 8 Dec 2020 09:03:10 +0000 Subject: [PATCH 141/207] small cleanup --- .../Components/QSBNetworkManagerHUD.cs | 18 +++++---------- QuantumUNET/QSBNetworkServer.cs | 2 +- QuantumUNET/QSBULocalConnectionToClient.cs | 22 ++++++------------- 3 files changed, 13 insertions(+), 29 deletions(-) diff --git a/QuantumUNET/Components/QSBNetworkManagerHUD.cs b/QuantumUNET/Components/QSBNetworkManagerHUD.cs index 58cc9ddf4..6541f612c 100644 --- a/QuantumUNET/Components/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/Components/QSBNetworkManagerHUD.cs @@ -4,6 +4,11 @@ namespace QuantumUNET.Components { public class QSBNetworkManagerHUD : MonoBehaviour { + public QSBNetworkManagerUNET manager; + public bool showGUI = true; + public int offsetX; + public int offsetY; + private void Awake() { manager = GetComponent(); @@ -92,18 +97,5 @@ private void OnGUI() } } } - - public QSBNetworkManagerUNET manager; - - [SerializeField] - public bool showGUI = true; - - [SerializeField] - public int offsetX; - - [SerializeField] - public int offsetY; - - private bool m_ShowServer; } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index b00aedafc..16597326c 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1060,7 +1060,7 @@ private bool SetupLocalPlayerForConnection(QSBNetworkConnection conn, QSBNetwork } uv.RebuildObservers(true); SendSpawnMessage(uv, null); - ulocalConnectionToClient.localClient.AddLocalPlayer(newPlayerController); + ulocalConnectionToClient.LocalClient.AddLocalPlayer(newPlayerController); uv.SetClientOwner(conn); uv.ForceAuthority(true); uv.SetLocalPlayer(newPlayerController.PlayerControllerId); diff --git a/QuantumUNET/QSBULocalConnectionToClient.cs b/QuantumUNET/QSBULocalConnectionToClient.cs index 72419eabc..041f781c2 100644 --- a/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QuantumUNET/QSBULocalConnectionToClient.cs @@ -7,44 +7,38 @@ internal class QSBULocalConnectionToClient : QSBNetworkConnection public QSBULocalConnectionToClient(QSBLocalClient localClient) { address = "localClient"; - m_LocalClient = localClient; + LocalClient = localClient; } - public QSBLocalClient localClient - { - get - { - return m_LocalClient; - } - } + public QSBLocalClient LocalClient { get; } public override bool Send(short msgType, QSBMessageBase msg) { - m_LocalClient.InvokeHandlerOnClient(msgType, msg, 0); + LocalClient.InvokeHandlerOnClient(msgType, msg, 0); return true; } public override bool SendUnreliable(short msgType, QSBMessageBase msg) { - m_LocalClient.InvokeHandlerOnClient(msgType, msg, 1); + LocalClient.InvokeHandlerOnClient(msgType, msg, 1); return true; } public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) { - m_LocalClient.InvokeHandlerOnClient(msgType, msg, channelId); + LocalClient.InvokeHandlerOnClient(msgType, msg, channelId); return true; } public override bool SendBytes(byte[] bytes, int numBytes, int channelId) { - m_LocalClient.InvokeBytesOnClient(bytes, channelId); + LocalClient.InvokeBytesOnClient(bytes, channelId); return true; } public override bool SendWriter(QSBNetworkWriter writer, int channelId) { - m_LocalClient.InvokeBytesOnClient(writer.AsArray(), channelId); + LocalClient.InvokeBytesOnClient(writer.AsArray(), channelId); return true; } @@ -61,7 +55,5 @@ public override void GetStatsIn(out int numMsgs, out int numBytes) numMsgs = 0; numBytes = 0; } - - private QSBLocalClient m_LocalClient; } } \ No newline at end of file From f0bad7f16a5a404c6ecee6d4913e32e67db93512 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 8 Dec 2020 09:31:29 +0000 Subject: [PATCH 142/207] Update DebugActions.cs --- QSB/Utility/DebugActions.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 360058c8e..0c211bf8b 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using OWML.ModHelper.Events; +using UnityEngine; namespace QSB.Utility { @@ -18,6 +19,9 @@ private void InsertWarpCore() var warpCore = GameObject.Find("Prefab_NOM_WarpCoreVessel").GetComponent(); var socket = GameObject.Find("Interactibles_VesselBridge").GetComponentInChildren(); socket.PlaceIntoSocket(warpCore); + var bridgeVolume = FindObjectOfType().GetValue("_bridgeVolume"); + bridgeVolume.AddObjectToVolume(Locator.GetPlayerDetector()); + bridgeVolume.AddObjectToVolume(Locator.GetPlayerCameraDetector()); } private void Update() From 55fab1ab54c3fd20a2bbff0bd362160e2378ab4e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 10 Dec 2020 11:23:36 +0000 Subject: [PATCH 143/207] Update QuantumUNET.csproj --- QuantumUNET/QuantumUNET.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 9c7c08515..9f96dfa30 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -88,7 +88,8 @@ D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.Networking.dll - + + False D:\EpicGames\OuterWilds\OuterWilds_Data\Managed\UnityEngine.UNETModule.dll From a1c08dd0d17f88618fc68c2e97bb39dcf09210e0 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 11 Dec 2020 12:54:19 +0000 Subject: [PATCH 144/207] add dialogue conditions --- .../DialogueConditionEvent.cs | 29 +++++++++++++++++++ .../DialogueConditionMessage.cs | 25 ++++++++++++++++ QSB/EventsCore/EventNames.cs | 1 + QSB/EventsCore/EventType.cs | 3 +- QSB/EventsCore/QSBEventManager.cs | 4 ++- QSB/QSB.csproj | 2 ++ 6 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 QSB/DialogueConditionSync/DialogueConditionEvent.cs create mode 100644 QSB/DialogueConditionSync/DialogueConditionMessage.cs diff --git a/QSB/DialogueConditionSync/DialogueConditionEvent.cs b/QSB/DialogueConditionSync/DialogueConditionEvent.cs new file mode 100644 index 000000000..965e718bd --- /dev/null +++ b/QSB/DialogueConditionSync/DialogueConditionEvent.cs @@ -0,0 +1,29 @@ +using QSB.EventsCore; +using QSB.Utility; + +namespace QSB.DialogueConditionSync +{ + public class DialogueConditionEvent : QSBEvent + { + public override EventType Type => EventType.DialogueCondition; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.DialogueCondition, Handler); + + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.DialogueCondition, Handler); + + private void Handler(string name, bool state) => SendEvent(CreateMessage(name, state)); + + private DialogueConditionMessage CreateMessage(string name, bool state) => new DialogueConditionMessage + { + AboutId = LocalPlayerId, + ConditionName = name, + ConditionState = state + }; + + public override void OnReceiveRemote(DialogueConditionMessage message) + { + DebugLog.DebugWrite($"dialoguecondition \"{message.ConditionName} to {message.ConditionState}\""); + DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState); + } + } +} \ No newline at end of file diff --git a/QSB/DialogueConditionSync/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/DialogueConditionMessage.cs new file mode 100644 index 000000000..08ce42339 --- /dev/null +++ b/QSB/DialogueConditionSync/DialogueConditionMessage.cs @@ -0,0 +1,25 @@ +using QSB.Messaging; +using QuantumUNET; + +namespace QSB.DialogueConditionSync +{ + public class DialogueConditionMessage : PlayerMessage + { + public string ConditionName { get; set; } + public bool ConditionState { get; set; } + + public override void Deserialize(QSBNetworkReader reader) + { + base.Deserialize(reader); + ConditionName = reader.ReadString(); + ConditionState = reader.ReadBoolean(); + } + + public override void Serialize(QSBNetworkWriter writer) + { + base.Serialize(writer); + writer.Write(ConditionName); + writer.Write(ConditionState); + } + } +} diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index 709888534..cac94b86d 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -17,6 +17,7 @@ public static class EventNames public static string ExitShip = "ExitShip"; public static string RestartTimeLoop = "RestartTimeLoop"; public static string WakeUp = "WakeUp"; + public static string DialogueCondition = "DialogueConditionChanged"; public static string QSBPlayerDeath = "QSBPlayerDeath"; public static string QSBPlayerJoin = "QSBPlayerJoin"; diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index 973c54c83..0d6cc30fb 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -24,6 +24,7 @@ public enum EventType OrbUser, Conversation, ConversationStartEnd, - PlayInstrument + PlayInstrument, + DialogueCondition } } \ No newline at end of file diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index fe670c150..f20b9a4a1 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -3,6 +3,7 @@ using QSB.Animation.Events; using QSB.ConversationSync.Events; using QSB.DeathSync.Events; +using QSB.DialogueConditionSync; using QSB.ElevatorSync.Events; using QSB.GeyserSync.Events; using QSB.OrbSync.Events; @@ -45,7 +46,8 @@ public static void Init() new ConversationEvent(), new ConversationStartEndEvent(), new ChangeAnimTypeEvent(), - new ServerSendPlayerStatesEvent() + new ServerSendPlayerStatesEvent(), + new DialogueConditionEvent() }; _eventList.ForEach(ev => ev.SetupListener()); diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 09ccb9278..35c822c16 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -128,6 +128,8 @@ + + From 90016973fec1fd568787b7fede62f458a2737c9d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 11 Dec 2020 13:14:58 +0000 Subject: [PATCH 145/207] cleanup --- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 1 - QSB/Animation/Events/CrouchEvent.cs | 1 - QSB/ConversationSync/ConversationManager.cs | 6 ++-- QSB/ConversationSync/ConversationPatches.cs | 2 +- .../Events/ConversationEvent.cs | 3 +- .../Events/ConversationStartEndEvent.cs | 3 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 1 - .../{ => Events}/DialogueConditionEvent.cs | 9 ++++-- .../{ => Events}/DialogueConditionMessage.cs | 2 +- QSB/ElevatorSync/ElevatorManager.cs | 4 +-- QSB/ElevatorSync/Events/ElevatorEvent.cs | 3 +- QSB/EventsCore/QSBEventManager.cs | 2 +- QSB/GeyserSync/Events/GeyserEvent.cs | 13 ++------ QSB/GeyserSync/GeyserManager.cs | 4 +-- QSB/MessagesCore/MessageHandler.cs | 4 +-- QSB/OrbSync/Events/OrbSlotEvent.cs | 3 +- QSB/OrbSync/Events/OrbUserEvent.cs | 15 ++++----- QSB/OrbSync/OrbManager.cs | 16 +++++----- QSB/OrbSync/OrbPatches.cs | 10 +++--- QSB/OrbSync/QSBOrbSlot.cs | 6 ++-- QSB/Player/Events/PlayerJoinEvent.cs | 1 - QSB/Player/Events/PlayerLeaveEvent.cs | 1 - QSB/Player/Events/PlayerReadyEvent.cs | 1 - QSB/Player/Events/PlayerSectorEvent.cs | 13 ++------ QSB/Player/Events/PlayerStatesRequestEvent.cs | 1 - .../Events/ServerSendPlayerStatesEvent.cs | 1 - QSB/QSB.cs | 2 ++ QSB/QSB.csproj | 6 ++-- QSB/QSBNetworkManager.cs | 32 +++++++++---------- QSB/SectorSync/QSBSectorManager.cs | 10 +++--- QSB/TimeSync/Events/ServerTimeEvent.cs | 1 - QSB/TransformSync/NomaiOrbTransformSync.cs | 8 ++--- .../{WorldRegistry.cs => QSBWorldSync.cs} | 25 +++++++++++---- 33 files changed, 99 insertions(+), 111 deletions(-) rename QSB/DialogueConditionSync/{ => Events}/DialogueConditionEvent.cs (73%) rename QSB/DialogueConditionSync/{ => Events}/DialogueConditionMessage.cs (92%) rename QSB/WorldSync/{WorldRegistry.cs => QSBWorldSync.cs} (73%) diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 76d96e680..bdf638d35 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -10,7 +10,6 @@ public class ChangeAnimTypeEvent : QSBEvent> public override EventType Type => EventType.PlayInstrument; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBChangeAnimType, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBChangeAnimType, Handler); private void Handler(uint player, AnimationType type) => SendEvent(CreateMessage(player, type)); diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index a38232cd2..8a24cd677 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -9,7 +9,6 @@ public class CrouchEvent : QSBEvent public override EventType Type => EventType.AnimTrigger; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBCrouch, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBCrouch, Handler); private void Handler(float value) => SendEvent(CreateMessage(value)); diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index ff67955ce..757f12a73 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -37,7 +37,7 @@ private void Start() public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) { - var treeIndex = WorldRegistry.OldDialogueTrees.IndexOf(tree); + var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree); if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) { // No player talking to tree @@ -109,14 +109,14 @@ public void DisplayPlayerConversationBox(uint playerId, string text) public void DisplayCharacterConversationBox(int index, string text) { - if (WorldRegistry.OldDialogueTrees.ElementAtOrDefault(index) == null) + if (QSBWorldSync.OldDialogueTrees.ElementAtOrDefault(index) == null) { DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); return; } // Remove old box if it exists - var oldDialogueTree = WorldRegistry.OldDialogueTrees[index]; + var oldDialogueTree = QSBWorldSync.OldDialogueTrees[index]; if (BoxMappings.ContainsKey(oldDialogueTree)) { Destroy(BoxMappings[oldDialogueTree]); diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 0309541e9..fba988823 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -13,7 +13,7 @@ public class ConversationPatches : QSBPatch public static void StartConversation(CharacterDialogueTree __instance) { - var index = WorldRegistry.OldDialogueTrees.FindIndex(x => x == __instance); + var index = QSBWorldSync.OldDialogueTrees.FindIndex(x => x == __instance); if (index == -1) { DebugLog.ToConsole($"Warning - Index for tree {__instance.name} was -1.", MessageType.Warning); diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 451855c09..977cfb4a2 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -9,7 +9,6 @@ public class ConversationEvent : QSBEvent public override EventType Type => EventType.Conversation; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversation, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversation, Handler); private void Handler(uint id, string message, ConversationType type) => SendEvent(CreateMessage(id, message, type)); @@ -40,7 +39,7 @@ public override void OnReceiveRemote(ConversationMessage message) { break; } - var tree = WorldRegistry.OldDialogueTrees[message.ObjectId]; + var tree = QSBWorldSync.OldDialogueTrees[message.ObjectId]; UnityEngine.Object.Destroy(ConversationManager.Instance.BoxMappings[tree]); break; diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 0c0f9f241..7b24c856f 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -14,7 +14,6 @@ public class ConversationStartEndEvent : QSBEvent public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); private void Handler(int charId, uint playerId, bool state) => SendEvent(CreateMessage(charId, playerId, state)); @@ -34,7 +33,7 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); return; } - var dialogueTree = WorldRegistry.OldDialogueTrees[message.CharacterId]; + var dialogueTree = QSBWorldSync.OldDialogueTrees[message.CharacterId]; var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); // Make character face player and talk diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index cea9fa9d9..803aa89f6 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -10,7 +10,6 @@ public class PlayerDeathEvent : QSBEvent> public override EventType Type => EventType.PlayerDeath; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerDeath, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerDeath, Handler); private void Handler(DeathType type) => SendEvent(CreateMessage(type)); diff --git a/QSB/DialogueConditionSync/DialogueConditionEvent.cs b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs similarity index 73% rename from QSB/DialogueConditionSync/DialogueConditionEvent.cs rename to QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs index 965e718bd..5c821af06 100644 --- a/QSB/DialogueConditionSync/DialogueConditionEvent.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs @@ -1,14 +1,14 @@ using QSB.EventsCore; using QSB.Utility; +using QSB.WorldSync; -namespace QSB.DialogueConditionSync +namespace QSB.DialogueConditionSync.Events { public class DialogueConditionEvent : QSBEvent { public override EventType Type => EventType.DialogueCondition; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.DialogueCondition, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.DialogueCondition, Handler); private void Handler(string name, bool state) => SendEvent(CreateMessage(name, state)); @@ -21,9 +21,12 @@ public class DialogueConditionEvent : QSBEvent }; public override void OnReceiveRemote(DialogueConditionMessage message) + => DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState); + + public override void OnServerReceive(DialogueConditionMessage message) { DebugLog.DebugWrite($"dialoguecondition \"{message.ConditionName} to {message.ConditionState}\""); - DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState); + QSBWorldSync.AddDialogueCondition(message.ConditionName, message.ConditionState); } } } \ No newline at end of file diff --git a/QSB/DialogueConditionSync/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs similarity index 92% rename from QSB/DialogueConditionSync/DialogueConditionMessage.cs rename to QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs index 08ce42339..3d4252e9a 100644 --- a/QSB/DialogueConditionSync/DialogueConditionMessage.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using QuantumUNET; -namespace QSB.DialogueConditionSync +namespace QSB.DialogueConditionSync.Events { public class DialogueConditionMessage : PlayerMessage { diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index 5aea5338a..e008cf2a5 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -27,9 +27,9 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) _elevators = Resources.FindObjectsOfTypeAll().ToList(); for (var id = 0; id < _elevators.Count; id++) { - var qsbElevator = WorldRegistry.GetObject(id) ?? new QSBElevator(); + var qsbElevator = QSBWorldSync.GetWorldObject(id) ?? new QSBElevator(); qsbElevator.Init(_elevators[id], id); - WorldRegistry.AddObject(qsbElevator); + QSBWorldSync.AddWorldObject(qsbElevator); } } diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index d49680ba2..68e812f43 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -9,7 +9,6 @@ public class ElevatorEvent : QSBEvent public override EventType Type => EventType.Elevator; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBStartLift, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBStartLift, Handler); private void Handler(int id, bool isGoingUp) => SendEvent(CreateMessage(id, isGoingUp)); @@ -22,7 +21,7 @@ public class ElevatorEvent : QSBEvent public override void OnReceiveRemote(BoolWorldObjectMessage message) { - var elevator = WorldRegistry.GetObject(message.ObjectId); + var elevator = QSBWorldSync.GetWorldObject(message.ObjectId); elevator?.RemoteCall(message.State); } } diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index f20b9a4a1..aa14ed85e 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -3,7 +3,7 @@ using QSB.Animation.Events; using QSB.ConversationSync.Events; using QSB.DeathSync.Events; -using QSB.DialogueConditionSync; +using QSB.DialogueConditionSync.Events; using QSB.ElevatorSync.Events; using QSB.GeyserSync.Events; using QSB.OrbSync.Events; diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index ee61e0db0..b90a7a3d2 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -8,15 +8,8 @@ public class GeyserEvent : QSBEvent { public override EventType Type => EventType.Geyser; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); - } - - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); - } + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBGeyserState, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBGeyserState, Handler); private void Handler(int id, bool state) => SendEvent(CreateMessage(id, state)); @@ -29,7 +22,7 @@ public override void CloseListener() public override void OnReceiveRemote(BoolWorldObjectMessage message) { - var geyser = WorldRegistry.GetObject(message.ObjectId); + var geyser = QSBWorldSync.GetWorldObject(message.ObjectId); geyser?.SetState(message.State); } } diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index b90c06a09..d7325bb23 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -26,9 +26,9 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) var geyserControllers = Resources.FindObjectsOfTypeAll(); for (var id = 0; id < geyserControllers.Length; id++) { - var qsbGeyser = WorldRegistry.GetObject(id) ?? new QSBGeyser(); + var qsbGeyser = QSBWorldSync.GetWorldObject(id) ?? new QSBGeyser(); qsbGeyser.Init(geyserControllers[id], id); - WorldRegistry.AddObject(qsbGeyser); + QSBWorldSync.AddWorldObject(qsbGeyser); } } diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index c5ff89df0..e837c4c7e 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -40,7 +40,7 @@ private void Init() QSBNetworkServer.handlers.Remove((short)_eventType); } QSBNetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); - QSBNetworkManager.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); + QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); } public void SendToAll(T message) @@ -58,7 +58,7 @@ public void SendToServer(T message) { return; } - QSBNetworkManager.singleton.client.Send((short)_eventType, message); + QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.Send((short)_eventType, message); } private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 4f7133253..7f73745fb 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -8,7 +8,6 @@ public class OrbSlotEvent : QSBEvent public override EventType Type => EventType.OrbSlot; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbSlot, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbSlot, Handler); private void Handler(int slotId, int orbId, bool slotState) => SendEvent(CreateMessage(slotId, orbId, slotState)); @@ -23,7 +22,7 @@ public class OrbSlotEvent : QSBEvent public override void OnReceiveRemote(OrbSlotMessage message) { - var orbSlot = WorldRegistry.GetObject(message.SlotId); + var orbSlot = QSBWorldSync.GetWorldObject(message.SlotId); orbSlot?.SetState(message.SlotState, message.OrbId); } } diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index ba30815df..5f176ef51 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -14,7 +14,6 @@ public class OrbUserEvent : QSBEvent public override EventType Type => EventType.OrbUser; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBOrbUser, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBOrbUser, Handler); private void Handler(int id) => SendEvent(CreateMessage(id)); @@ -28,7 +27,7 @@ public class OrbUserEvent : QSBEvent public override void OnServerReceive(WorldObjectMessage message) { var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); - if (WorldRegistry.OrbSyncList.Count == 0) + if (QSBWorldSync.OrbSyncList.Count == 0) { DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); return; @@ -37,8 +36,8 @@ public override void OnServerReceive(WorldObjectMessage message) { DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); } - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + var orb = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); if (orb == null) { DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); @@ -60,13 +59,13 @@ public override void OnServerReceive(WorldObjectMessage message) public override void OnReceiveRemote(WorldObjectMessage message) { - if (WorldRegistry.OrbSyncList.Count < message.ObjectId) + if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) { - DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {WorldRegistry.OrbSyncList.Count}.", MessageType.Error); + DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", MessageType.Error); return; } - var orb = WorldRegistry.OrbSyncList - .First(x => x.AttachedOrb == WorldRegistry.OldOrbList[message.ObjectId]); + var orb = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); orb.enabled = true; } diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index a1288960e..b65cd6b74 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -19,11 +19,11 @@ private void Awake() private void BuildOrbSlots() { DebugLog.DebugWrite("Building QSBOrbSlots...", MessageType.Info); - WorldRegistry.RemoveObjects(); + QSBWorldSync.RemoveWorldObjects(); var orbSlots = Resources.FindObjectsOfTypeAll(); for (var id = 0; id < orbSlots.Length; id++) { - var qsbOrbSlot = WorldRegistry.GetObject(id) ?? new QSBOrbSlot(); + var qsbOrbSlot = QSBWorldSync.GetWorldObject(id) ?? new QSBOrbSlot(); qsbOrbSlot.Init(orbSlots[id], id); } @@ -33,16 +33,16 @@ private void BuildOrbSlots() public void BuildOrbs() { DebugLog.DebugWrite("Building orb syncs...", MessageType.Info); - WorldRegistry.OldOrbList.Clear(); - WorldRegistry.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); + QSBWorldSync.OldOrbList.Clear(); + QSBWorldSync.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); if (QSBNetworkServer.active) { DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); - WorldRegistry.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject)); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); + QSBWorldSync.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject)); + QSBWorldSync.OrbSyncList.Clear(); + QSBWorldSync.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); } - DebugLog.DebugWrite($"Finished orb build with {WorldRegistry.OldOrbList.Count} orbs.", MessageType.Success); + DebugLog.DebugWrite($"Finished orb build with {QSBWorldSync.OldOrbList.Count} orbs.", MessageType.Success); } public void QueueBuildSlots() diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 19df8b996..a3bf26ecf 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -12,7 +12,7 @@ public static void StartDragCallEvent(bool __result, NomaiInterfaceOrb __instanc { if (__result) { - GlobalMessenger.FireEvent(EventNames.QSBOrbUser, WorldRegistry.OldOrbList.FindIndex(x => x == __instance)); + GlobalMessenger.FireEvent(EventNames.QSBOrbUser, QSBWorldSync.OldOrbList.FindIndex(x => x == __instance)); } } @@ -31,8 +31,8 @@ public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __ins ____occupyingOrb = orb; if (Time.timeSinceLevelLoad > 1f) { - WorldRegistry.HandleSlotStateChange(__instance, orb, true); - WorldRegistry.RaiseEvent(__instance, "OnSlotActivated"); + QSBWorldSync.HandleSlotStateChange(__instance, orb, true); + QSBWorldSync.RaiseEvent(__instance, "OnSlotActivated"); } __result = true; return false; @@ -44,9 +44,9 @@ public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __ins } if (orbDistance > triggerRadius) { - WorldRegistry.HandleSlotStateChange(__instance, orb, false); + QSBWorldSync.HandleSlotStateChange(__instance, orb, false); ____occupyingOrb = null; - WorldRegistry.RaiseEvent(__instance, "OnSlotDeactivated"); + QSBWorldSync.RaiseEvent(__instance, "OnSlotDeactivated"); __result = false; return false; } diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index 19eb5650a..6914215d7 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -16,7 +16,7 @@ public void Init(NomaiInterfaceSlot slot, int id) ObjectId = id; InterfaceSlot = slot; _initialized = true; - WorldRegistry.AddObject(this); + QSBWorldSync.AddWorldObject(this); } public void HandleEvent(bool state, int orbId) @@ -33,10 +33,10 @@ public void SetState(bool state, int orbId) { return; } - var occOrb = state ? WorldRegistry.OldOrbList[orbId] : null; + var occOrb = state ? QSBWorldSync.OldOrbList[orbId] : null; InterfaceSlot.SetValue("_occupyingOrb", occOrb); var ev = state ? "OnSlotActivated" : "OnSlotDeactivated"; - WorldRegistry.RaiseEvent(InterfaceSlot, ev); + QSBWorldSync.RaiseEvent(InterfaceSlot, ev); Activated = state; } } diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index d3d9a2e2f..1dcc5974c 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -9,7 +9,6 @@ public class PlayerJoinEvent : QSBEvent public override EventType Type => EventType.PlayerJoin; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerJoin, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerJoin, Handler); private void Handler(string name) => SendEvent(CreateMessage(name)); diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index 4cbe109eb..82d4b2d46 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -10,7 +10,6 @@ public class PlayerLeaveEvent : QSBEvent public override EventType Type => EventType.PlayerLeave; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 6f51ce055..0219971ad 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -12,7 +12,6 @@ public class PlayerReadyEvent : QSBEvent public override EventType Type => EventType.PlayerReady; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerReady, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerReady, Handler); private void Handler(bool ready) => SendEvent(CreateMessage(ready)); diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index f5590b5ae..3ba64c70a 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -11,15 +11,8 @@ public class PlayerSectorEvent : QSBEvent { public override EventType Type => EventType.PlayerSectorChange; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); - } - - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); - } + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBSectorChange, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBSectorChange, Handler); private void Handler(uint netId, QSBSector sector) => SendEvent(CreateMessage(netId, sector)); @@ -35,7 +28,7 @@ public override void OnReceiveRemote(WorldObjectMessage message) { return; } - var sector = WorldRegistry.GetObject(message.ObjectId); + var sector = QSBWorldSync.GetWorldObject(message.ObjectId); if (sector == null) { diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index e0883ca76..32d0b836d 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -11,7 +11,6 @@ public class PlayerStatesRequestEvent : QSBEvent public override EventType Type => EventType.PlayerStatesRequest; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerStatesRequest, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerStatesRequest, Handler); private void Handler() => SendEvent(CreateMessage()); diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index a17a0d80f..7c0a2a613 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -9,7 +9,6 @@ public class ServerSendPlayerStatesEvent : QSBEvent public override EventType Type => EventType.PlayerState; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerSendPlayerStates, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerSendPlayerStates, Handler); private void Handler() diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 5d03544e6..9b61ffaa6 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -9,6 +9,7 @@ using QSB.SectorSync; using QSB.TimeSync; using QSB.Utility; +using QuantumUNET; using QuantumUNET.Components; using UnityEngine; using UnityEngine.Networking; @@ -25,6 +26,7 @@ public class QSB : ModBehaviour public static AssetBundle NetworkAssetBundle { get; private set; } public static AssetBundle InstrumentAssetBundle { get; private set; } public static bool HasWokenUp { get; set; } + public static bool IsServer => QSBNetworkServer.active; private void Awake() { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 35c822c16..24b10fb0c 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -128,8 +128,8 @@ - - + + @@ -230,7 +230,7 @@ - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index b86654522..465741bef 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -127,8 +127,8 @@ private void OnSceneLoaded(OWScene scene) DebugLog.DebugWrite("scene loaded"); OrbManager.Instance.BuildOrbs(); OrbManager.Instance.QueueBuildSlots(); - WorldRegistry.OldDialogueTrees.Clear(); - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + QSBWorldSync.OldDialogueTrees.Clear(); + QSBWorldSync.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } private void ConfigureNetworkManager() @@ -149,13 +149,13 @@ private void ConfigureNetworkManager() public override void OnStartServer() { DebugLog.DebugWrite("OnStartServer", MessageType.Info); - if (WorldRegistry.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) + if (QSBWorldSync.OrbSyncList.Count == 0 && QSBSceneManager.IsInUniverse) { OrbManager.Instance.QueueBuildOrbs(); } - if (WorldRegistry.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) + if (QSBWorldSync.OldDialogueTrees.Count == 0 && QSBSceneManager.IsInUniverse) { - WorldRegistry.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); + QSBWorldSync.OldDialogueTrees = Resources.FindObjectsOfTypeAll().ToList(); } } @@ -221,12 +221,12 @@ public override void OnStopClient() // Called on the client when closing connect } QSBPlayerManager.RemoveAllPlayers(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.OrbSyncList.Clear(); - WorldRegistry.OldDialogueTrees.Clear(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.OrbSyncList.Clear(); + QSBWorldSync.OldDialogueTrees.Clear(); _lobby.CanEditName = true; } @@ -238,7 +238,7 @@ public override void OnServerDisconnect(QSBNetworkConnection connection) // Call var netIds = connection.ClientOwnedObjects.Select(x => x.Value).ToArray(); GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); - foreach (var item in WorldRegistry.OrbSyncList) + foreach (var item in QSBWorldSync.OrbSyncList) { var identity = item.GetComponent(); if (identity.ClientAuthorityOwner == connection) @@ -262,10 +262,10 @@ public override void OnStopServer() QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); QSBNetworkServer.connections.ToList().ForEach(CleanupConnection); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); - WorldRegistry.RemoveObjects(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.RemoveWorldObjects(); + QSBWorldSync.RemoveWorldObjects(); base.OnStopServer(); } diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index cdbc5402f..8cbcb1466 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -32,20 +32,20 @@ private void OnDestroy() public void RebuildSectors() { DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning); - WorldRegistry.RemoveObjects(); + QSBWorldSync.RemoveWorldObjects(); var sectors = Resources.FindObjectsOfTypeAll().ToList(); for (var id = 0; id < sectors.Count; id++) { - var qsbSector = WorldRegistry.GetObject(id) ?? new QSBSector(); + var qsbSector = QSBWorldSync.GetWorldObject(id) ?? new QSBSector(); qsbSector.Init(sectors[id], id); - WorldRegistry.AddObject(qsbSector); + QSBWorldSync.AddWorldObject(qsbSector); } - IsReady = WorldRegistry.GetObjects().Any(); + IsReady = QSBWorldSync.GetWorldObjects().Any(); } public QSBSector GetClosestSector(Transform trans) { - return WorldRegistry.GetObjects() + return QSBWorldSync.GetWorldObjects() .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) .First(); diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index bc8e5cd00..d2670b3e0 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -7,7 +7,6 @@ public class ServerTimeEvent : QSBEvent public override EventType Type => EventType.ServerTime; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBServerTime, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBServerTime, Handler); private void Handler(float time, int count) => SendEvent(CreateMessage(time, count)); diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index fcf489f5f..17a7a9e8b 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -9,7 +9,7 @@ public class NomaiOrbTransformSync : QSBNetworkBehaviour public NomaiInterfaceOrb AttachedOrb { get; private set; } public Transform OrbTransform { get; private set; } - private int Index => WorldRegistry.OrbSyncList.IndexOf(this); + private int Index => QSBWorldSync.OrbSyncList.IndexOf(this); private bool _isInitialized; private bool _isReady; @@ -18,20 +18,20 @@ public class NomaiOrbTransformSync : QSBNetworkBehaviour public override void OnStartClient() { DontDestroyOnLoad(this); - WorldRegistry.OrbSyncList.Add(this); + QSBWorldSync.OrbSyncList.Add(this); QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); } private void OnReady() { - AttachedOrb = WorldRegistry.OldOrbList[Index]; + AttachedOrb = QSBWorldSync.OldOrbList[Index]; _isReady = true; } private void OnDestroy() { - WorldRegistry.OrbSyncList.Remove(this); + QSBWorldSync.OrbSyncList.Remove(this); } protected void Init() diff --git a/QSB/WorldSync/WorldRegistry.cs b/QSB/WorldSync/QSBWorldSync.cs similarity index 73% rename from QSB/WorldSync/WorldRegistry.cs rename to QSB/WorldSync/QSBWorldSync.cs index ce97f9f41..33ec9dc0e 100644 --- a/QSB/WorldSync/WorldRegistry.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -9,14 +9,15 @@ namespace QSB.WorldSync { - public static class WorldRegistry + public static class QSBWorldSync { private static readonly List WorldObjects = new List(); public static List OrbSyncList = new List(); public static List OldOrbList = new List(); public static List OldDialogueTrees = new List(); + public static Dictionary DialogueConditions { get; } = new Dictionary(); - public static void AddObject(WorldObject worldObject) + public static void AddWorldObject(WorldObject worldObject) { if (WorldObjects.Contains(worldObject)) { @@ -25,17 +26,17 @@ public static void AddObject(WorldObject worldObject) WorldObjects.Add(worldObject); } - public static IEnumerable GetObjects() + public static IEnumerable GetWorldObjects() { return WorldObjects.OfType(); } - public static T GetObject(int id) where T : WorldObject + public static T GetWorldObject(int id) where T : WorldObject { - return GetObjects().FirstOrDefault(x => x.ObjectId == id); + return GetWorldObjects().FirstOrDefault(x => x.ObjectId == id); } - public static void RemoveObjects() where T : WorldObject + public static void RemoveWorldObjects() where T : WorldObject { WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); } @@ -44,7 +45,7 @@ public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterface { QSBOrbSlot qsbSlot = null; NomaiOrbTransformSync orbSync = null; - var slotList = GetObjects(); + var slotList = GetWorldObjects(); if (slotList.Count() == 0) { return; @@ -82,5 +83,15 @@ public static void RaiseEvent(object instance, string eventName) del.DynamicInvoke(instance); } } + + public static void AddDialogueCondition(string name, bool state) + { + if (!QSB.IsServer) + { + DebugLog.DebugWrite("Warning - Cannot write to condition dict when not server!", MessageType.Warning); + return; + } + DialogueConditions[name] = state; + } } } \ No newline at end of file From 10af92f4a1998b41c9e8ff8039c0cfb74489b7c6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 11 Dec 2020 22:42:21 +0000 Subject: [PATCH 146/207] changes --- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 +- QSB/Animation/Events/CrouchEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 4 +- .../Events/ConversationEvent.cs | 2 +- .../Events/ConversationStartEndEvent.cs | 45 ++++++++++--------- QSB/DeathSync/Events/PlayerDeathEvent.cs | 4 +- .../Events/DialogueConditionEvent.cs | 19 +++++--- QSB/ElevatorSync/Events/ElevatorEvent.cs | 2 +- QSB/EventsCore/QSBEvent.cs | 35 +++++++-------- QSB/GeyserSync/Events/GeyserEvent.cs | 2 +- QSB/MessagesCore/MessageHandler.cs | 21 +++++---- QSB/OrbSync/Events/OrbSlotEvent.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 43 ++++++++---------- QSB/Player/Events/PlayerJoinEvent.cs | 4 +- QSB/Player/Events/PlayerLeaveEvent.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 32 ++++++------- QSB/Player/Events/PlayerSectorEvent.cs | 4 +- QSB/Player/Events/PlayerStateMessage.cs | 7 +-- QSB/Player/Events/PlayerStatesRequestEvent.cs | 19 ++++++-- .../Events/ServerSendPlayerStatesEvent.cs | 2 +- QSB/QSBNetworkManager.cs | 5 ++- QSB/TimeSync/Events/ServerTimeEvent.cs | 2 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 4 +- QSB/Tools/Events/PlayerProbeEvent.cs | 4 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 4 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 4 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 4 +- QSB/WorldSync/QSBWorldSync.cs | 23 +++------- 28 files changed, 148 insertions(+), 155 deletions(-) diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index bdf638d35..0fe35ee7f 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -20,7 +20,7 @@ public class ChangeAnimTypeEvent : QSBEvent> Value = type }; - public override void OnReceiveRemote(EnumMessage message) + public override void OnReceiveRemote(bool server, EnumMessage message) { QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index 8a24cd677..1df6b3f48 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -19,7 +19,7 @@ public class CrouchEvent : QSBEvent Value = value }; - public override void OnReceiveRemote(FloatMessage message) + public override void OnReceiveRemote(bool server, FloatMessage message) { var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); if (animationSync == null) diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index d3869d9ce..1ea111772 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -30,7 +30,7 @@ public override void CloseListener() ToggleValue = value }; - public override void OnReceiveRemote(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); @@ -45,7 +45,7 @@ public override void OnReceiveRemote(ToggleMessage message) animator.SetAnimationType(type); } - public override void OnReceiveLocal(ToggleMessage message) + public override void OnReceiveLocal(bool server, ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.Suit, message.ToggleValue); var animator = QSBPlayerManager.LocalPlayer.AnimationSync; diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 977cfb4a2..7dc22cee8 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -21,7 +21,7 @@ public class ConversationEvent : QSBEvent Message = message }; - public override void OnReceiveRemote(ConversationMessage message) + public override void OnReceiveRemote(bool server, ConversationMessage message) { switch (message.Type) { diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 7b24c856f..2d6640a51 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -26,7 +26,7 @@ public class ConversationStartEndEvent : QSBEvent State = state }; - public override void OnReceiveRemote(ConversationStartEndMessage message) + public override void OnReceiveRemote(bool server, ConversationStartEndMessage message) { if (message.CharacterId == -1) { @@ -37,32 +37,33 @@ public override void OnReceiveRemote(ConversationStartEndMessage message) var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); // Make character face player and talk - if (animController != default(CharacterAnimController)) + if (animController == default(CharacterAnimController)) { - if (message.State) + return; + } + if (message.State) + { + // Start talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; + animController.SetValue("_inConversation", true); + animController.SetValue("_playerInHeadZone", true); + if (animController.GetValue("_hasTalkAnimation")) { - // Start talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; - animController.SetValue("_inConversation", true); - animController.SetValue("_playerInHeadZone", true); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Talking"); - } - dialogueTree.GetComponent().DisableInteraction(); + animController.GetValue("_animator").SetTrigger("Talking"); } - else + dialogueTree.GetComponent().DisableInteraction(); + } + else + { + // Stop talking + QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; + animController.SetValue("_inConversation", false); + animController.SetValue("_playerInHeadZone", false); + if (animController.GetValue("_hasTalkAnimation")) { - // Stop talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; - animController.SetValue("_inConversation", false); - animController.SetValue("_playerInHeadZone", false); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Idle"); - } - dialogueTree.GetComponent().EnableInteraction(); + animController.GetValue("_animator").SetTrigger("Idle"); } + dialogueTree.GetComponent().EnableInteraction(); } } } diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 803aa89f6..9a68c9e1b 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -20,13 +20,11 @@ public class PlayerDeathEvent : QSBEvent> Value = type }; - public override void OnReceiveRemote(EnumMessage message) + public override void OnReceiveRemote(bool server, EnumMessage message) { var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; var deathMessage = Necronomicon.GetPhrase(message.Value); DebugLog.ToAll(string.Format(deathMessage, playerName)); } - - public override void OnReceiveLocal(EnumMessage message) => OnReceiveRemote(message); } } \ No newline at end of file diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs index 5c821af06..bd93956fe 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs @@ -20,13 +20,22 @@ public class DialogueConditionEvent : QSBEvent ConditionState = state }; - public override void OnReceiveRemote(DialogueConditionMessage message) - => DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState); + public override void OnReceiveLocal(bool server, DialogueConditionMessage message) + { + if (server) + { + QSBWorldSync.SetDialogueCondition(message.ConditionName, message.ConditionState); + } + } - public override void OnServerReceive(DialogueConditionMessage message) + public override void OnReceiveRemote(bool server, DialogueConditionMessage message) { - DebugLog.DebugWrite($"dialoguecondition \"{message.ConditionName} to {message.ConditionState}\""); - QSBWorldSync.AddDialogueCondition(message.ConditionName, message.ConditionState); + if (server) + { + QSBWorldSync.SetDialogueCondition(message.ConditionName, message.ConditionState); + } + DebugLog.DebugWrite($"set {message.ConditionName} to {message.ConditionState}"); + DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState); } } } \ No newline at end of file diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index 68e812f43..b4bee49a3 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -19,7 +19,7 @@ public class ElevatorEvent : QSBEvent ObjectId = id }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) + public override void OnReceiveRemote(bool server, BoolWorldObjectMessage message) { var elevator = QSBWorldSync.GetWorldObject(message.ObjectId); elevator?.RemoteCall(message.State); diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 970325f33..3955c0fce 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -1,7 +1,10 @@ -using QSB.Messaging; +using OWML.ModHelper.Events; +using QSB.Messaging; using QSB.Player; using QSB.TransformSync; +using QSB.Utility; using QuantumUNET; +using System; namespace QSB.EventsCore { @@ -14,26 +17,16 @@ namespace QSB.EventsCore protected QSBEvent() { _eventHandler = new MessageHandler(Type); - _eventHandler.OnClientReceiveMessage += OnClientReceive; - _eventHandler.OnServerReceiveMessage += OnServerReceive; + _eventHandler.OnClientReceiveMessage += OnReceive; + _eventHandler.OnServerReceiveMessage += OnReceive; } public abstract void SetupListener(); public abstract void CloseListener(); - public virtual void OnReceiveRemote(T message) - { - } - - public virtual void OnReceiveLocal(T message) - { - } - - public virtual void OnServerReceive(T message) - { - _eventHandler.SendToAll(message); - } + public virtual void OnReceiveRemote(bool server, T message) { } + public virtual void OnReceiveLocal(bool server, T message) { } public void SendEvent(T message) { @@ -53,16 +46,22 @@ private void Send(T message) } } - private void OnClientReceive(T message) + private void OnReceive(T message) { + /* Uncomment for event debugging - very noisey and annoying (keeping as I don't want to have to rewrite this each time) + if (_eventHandler.BaseEventType != EventType.ServerTime && _eventHandler.BaseEventType != EventType.Geyser) + { + DebugLog.DebugWrite($"message type {_eventHandler.BaseEventType} from {message.FromId}, about {message.AboutId}. isserver? {QSB.IsServer}"); + } + */ if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { - OnReceiveLocal(message); + OnReceiveLocal(QSB.IsServer, message); return; } - OnReceiveRemote(message); + OnReceiveRemote(QSB.IsServer, message); } } } \ No newline at end of file diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index b90a7a3d2..33eb24c3f 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -20,7 +20,7 @@ public class GeyserEvent : QSBEvent State = state }; - public override void OnReceiveRemote(BoolWorldObjectMessage message) + public override void OnReceiveRemote(bool server, BoolWorldObjectMessage message) { var geyser = QSBWorldSync.GetWorldObject(message.ObjectId); geyser?.SetState(message.State); diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index e837c4c7e..b637a5fd0 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -9,18 +9,18 @@ namespace QSB.Messaging { - // Extend this to create new message handlers. public class MessageHandler where T : QSBMessageBase, new() { public event Action OnClientReceiveMessage; public event Action OnServerReceiveMessage; - private readonly EventType _eventType; + private readonly short _eventType; + public EventType BaseEventType => (EventType)(_eventType - 1 - MsgType.Highest); public MessageHandler(EventType eventType) { - _eventType = eventType + MsgType.Highest + 1; + _eventType = (short)(eventType + MsgType.Highest + 1); if (QSBNetworkManager.Instance.IsReady) { Init(); @@ -33,14 +33,13 @@ public MessageHandler(EventType eventType) private void Init() { - var eventName = Enum.GetName(typeof(EventType), _eventType - 1 - MsgType.Highest).ToUpper(); - if (QSBNetworkServer.handlers.Keys.Contains((short)_eventType)) + if (QSBNetworkServer.handlers.Keys.Contains(_eventType)) { - DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {_eventType}", MessageType.Warning); - QSBNetworkServer.handlers.Remove((short)_eventType); + DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {BaseEventType}", MessageType.Warning); + QSBNetworkServer.handlers.Remove(_eventType); } - QSBNetworkServer.RegisterHandler((short)_eventType, OnServerReceiveMessageHandler); - QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.RegisterHandler((short)_eventType, OnClientReceiveMessageHandler); + QSBNetworkServer.RegisterHandler(_eventType, OnServerReceiveMessageHandler); + QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.RegisterHandler(_eventType, OnClientReceiveMessageHandler); } public void SendToAll(T message) @@ -49,7 +48,7 @@ public void SendToAll(T message) { return; } - QSBNetworkServer.SendToAll((short)_eventType, message); + QSBNetworkServer.SendToAll(_eventType, message); } public void SendToServer(T message) @@ -58,7 +57,7 @@ public void SendToServer(T message) { return; } - QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.Send((short)_eventType, message); + QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.Send(_eventType, message); } private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 7f73745fb..5d86bee32 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -20,7 +20,7 @@ public class OrbSlotEvent : QSBEvent SlotState = slotState }; - public override void OnReceiveRemote(OrbSlotMessage message) + public override void OnReceiveRemote(bool server, OrbSlotMessage message) { var orbSlot = QSBWorldSync.GetWorldObject(message.SlotId); orbSlot?.SetState(message.SlotState, message.OrbId); diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 5f176ef51..48523295c 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -24,8 +24,21 @@ public class OrbUserEvent : QSBEvent ObjectId = id }; - public override void OnServerReceive(WorldObjectMessage message) + public override void OnReceiveRemote(bool server, WorldObjectMessage message) { + if (!server) + { + if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) + { + DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", MessageType.Error); + return; + } + var orb = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); + orb.enabled = true; + return; + } + var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); if (QSBWorldSync.OrbSyncList.Count == 0) { @@ -36,14 +49,14 @@ public override void OnServerReceive(WorldObjectMessage message) { DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); } - var orb = QSBWorldSync.OrbSyncList + var orbSync = QSBWorldSync.OrbSyncList .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); - if (orb == null) + if (orbSync == null) { DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); return; } - var orbIdentity = orb.GetComponent(); + var orbIdentity = orbSync.GetComponent(); if (orbIdentity == null) { DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); @@ -54,27 +67,7 @@ public override void OnServerReceive(WorldObjectMessage message) orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); } orbIdentity.AssignClientAuthority(fromPlayer); - orb.enabled = true; - } - - public override void OnReceiveRemote(WorldObjectMessage message) - { - if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) - { - DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", MessageType.Error); - return; - } - var orb = QSBWorldSync.OrbSyncList - .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); - orb.enabled = true; - } - - public override void OnReceiveLocal(WorldObjectMessage message) - { - if (QSBNetworkServer.active) - { - OnServerReceive(message); - } + orbSync.enabled = true; } } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index 1dcc5974c..e46bb6572 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -19,7 +19,7 @@ public class PlayerJoinEvent : QSBEvent PlayerName = name }; - public override void OnReceiveRemote(PlayerJoinMessage message) + public override void OnReceiveRemote(bool server, PlayerJoinMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player.Name = message.PlayerName; @@ -27,7 +27,7 @@ public override void OnReceiveRemote(PlayerJoinMessage message) DebugLog.DebugWrite($"{player.Name} joined as id {player.PlayerId}", MessageType.Info); } - public override void OnReceiveLocal(PlayerJoinMessage message) + public override void OnReceiveLocal(bool server, PlayerJoinMessage message) { var player = QSBPlayerManager.GetPlayer(QSBPlayerManager.LocalPlayerId); player.Name = message.PlayerName; diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs index 82d4b2d46..4ae67c547 100644 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ b/QSB/Player/Events/PlayerLeaveEvent.cs @@ -20,7 +20,7 @@ public class PlayerLeaveEvent : QSBEvent NetIds = netIds }; - public override void OnReceiveRemote(PlayerLeaveMessage message) + public override void OnReceiveRemote(bool server, PlayerLeaveMessage message) { var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 0219971ad..4ad4c439c 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -22,30 +22,26 @@ public class PlayerReadyEvent : QSBEvent ToggleValue = ready }; - public override void OnServerReceive(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { - DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); - if (message.FromId == QSBPlayerManager.LocalPlayerId) + if (!server) { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); + return; + } + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); + } return; } + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); } - - public override void OnReceiveRemote(ToggleMessage message) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - if (!QSBPlayerManager.PlayerExists(message.FromId)) - { - DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); - return; - } - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); - } - } } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 3ba64c70a..1effc12f9 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -22,7 +22,7 @@ public class PlayerSectorEvent : QSBEvent ObjectId = sector.ObjectId }; - public override void OnReceiveRemote(WorldObjectMessage message) + public override void OnReceiveRemote(bool server, WorldObjectMessage message) { if (!QSBSceneManager.IsInUniverse) { @@ -32,7 +32,7 @@ public override void OnReceiveRemote(WorldObjectMessage message) if (sector == null) { - DebugLog.ToConsole($"Sector with order id {message.ObjectId} not found!", MessageType.Warning); + DebugLog.ToConsole($"Sector with index id {message.ObjectId} not found!", MessageType.Warning); return; } diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index bcf5cd61e..7d2d341f1 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -8,8 +8,7 @@ public class PlayerStateMessage : PlayerMessage public string PlayerName { get; set; } public bool PlayerReady { get; set; } public State PlayerState { get; set; } - public Sector.Name SectorID { get; set; } - public string SectorName { get; set; } + public override void Deserialize(QSBNetworkReader reader) { @@ -17,8 +16,6 @@ public override void Deserialize(QSBNetworkReader reader) PlayerName = reader.ReadString(); PlayerReady = reader.ReadBoolean(); PlayerState = (State)reader.ReadInt32(); - SectorID = (Sector.Name)reader.ReadInt32(); - SectorName = reader.ReadString(); } public override void Serialize(QSBNetworkWriter writer) @@ -27,8 +24,6 @@ public override void Serialize(QSBNetworkWriter writer) writer.Write(PlayerName); writer.Write(PlayerReady); writer.Write((int)PlayerState); - writer.Write((int)SectorID); - writer.Write(SectorName); } } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 32d0b836d..988d1df25 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,7 +1,10 @@ -using QSB.EventsCore; +using OWML.ModHelper.Events; +using QSB.EventsCore; using QSB.Messaging; using QSB.SectorSync; using QSB.Utility; +using QSB.WorldSync; +using System.Collections.Generic; using System.Linq; namespace QSB.Player.Events @@ -20,15 +23,25 @@ public class PlayerStatesRequestEvent : QSBEvent AboutId = LocalPlayerId }; - public override void OnServerReceive(PlayerMessage message) + public override void OnReceiveRemote(bool server, PlayerMessage message) { - DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); + if (!server) + { + return; + } + DebugLog.DebugWrite($"Get state request from {message.FromId}"); GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) { GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); } + + foreach (var condition in QSBWorldSync.DialogueConditions) + { + DebugLog.DebugWrite($"SENDING STATE OF CONDITION {condition.Key}"); + GlobalMessenger.FireEvent(EventNames.DialogueCondition, condition.Key, condition.Value); + } } } } \ No newline at end of file diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index 7c0a2a613..658b0da3a 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -28,7 +28,7 @@ private void Handler() PlayerState = player.State }; - public override void OnReceiveRemote(PlayerStateMessage message) + public override void OnReceiveRemote(bool server, PlayerStateMessage message) { DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); QSB.Helper.Events.Unity.RunWhen( diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 465741bef..24bfd7e90 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -201,8 +201,11 @@ public override void OnClientConnect(QSBNetworkConnection connection) // Called QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + if (!QSB.IsServer) + { + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); + } } public override void OnStopClient() // Called on the client when closing connection diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index d2670b3e0..ecf6bbc90 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -18,7 +18,7 @@ public class ServerTimeEvent : QSBEvent LoopCount = count }; - public override void OnReceiveRemote(ServerTimeMessage message) + public override void OnReceiveRemote(bool server, ServerTimeMessage message) { WakeUpSync.LocalInstance.OnClientReceiveMessage(message); } diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 441533b45..2bc4e1a1a 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() ToggleValue = value }; - public override void OnReceiveRemote(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.Flashlight, message.ToggleValue); player.FlashLight?.UpdateState(message.ToggleValue); } - public override void OnReceiveLocal(ToggleMessage message) + public override void OnReceiveLocal(bool server, ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); } diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 8f698cb4b..4323dc500 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() ToggleValue = value }; - public override void OnReceiveRemote(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.ProbeActive, message.ToggleValue); player.Probe?.SetState(message.ToggleValue); } - public override void OnReceiveLocal(ToggleMessage message) + public override void OnReceiveLocal(bool server, ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); } diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 1fe356af1..2ed6cd964 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() ToggleValue = value }; - public override void OnReceiveRemote(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.ProbeLauncher, message.ToggleValue); player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(ToggleMessage message) + public override void OnReceiveLocal(bool server, ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); } diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 8f2b9955e..fdfe8031d 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() ToggleValue = value }; - public override void OnReceiveRemote(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.Signalscope, message.ToggleValue); player.Signalscope?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(ToggleMessage message) + public override void OnReceiveLocal(bool server, ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); } diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index a185daaaa..c0ad1a7f7 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -30,14 +30,14 @@ public override void CloseListener() ToggleValue = value }; - public override void OnReceiveRemote(ToggleMessage message) + public override void OnReceiveRemote(bool server, ToggleMessage message) { var player = QSBPlayerManager.GetPlayer(message.AboutId); player.UpdateState(State.Translator, message.ToggleValue); player.Translator?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(ToggleMessage message) + public override void OnReceiveLocal(bool server, ToggleMessage message) { QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); } diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 33ec9dc0e..6a44d1b12 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -43,29 +43,16 @@ public static void RemoveWorldObjects() where T : WorldObject public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) { - QSBOrbSlot qsbSlot = null; - NomaiOrbTransformSync orbSync = null; var slotList = GetWorldObjects(); if (slotList.Count() == 0) { return; } - try + var qsbSlot = slotList.First(x => x.InterfaceSlot == slot); + var orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); + if (orbSync.HasAuthority) { - qsbSlot = slotList.First(x => x.InterfaceSlot == slot); - orbSync = OrbSyncList.First(x => x.AttachedOrb == affectingOrb); - if (orbSync.HasAuthority) - { - qsbSlot.HandleEvent(state, OldOrbList.IndexOf(affectingOrb)); - } - } - catch - { - DebugLog.DebugWrite("Error - Exception when handling slot state change." - + Environment.NewLine + $"Slot name {slot.name} to {state}" - + Environment.NewLine + $"SlotList count : {slotList?.Count()}" - + Environment.NewLine + $"QSBOrbSlot null? : {qsbSlot == null}" - + Environment.NewLine + $"NomaiOrbTransformSync null? : {orbSync == null}", MessageType.Error); + qsbSlot.HandleEvent(state, OldOrbList.IndexOf(affectingOrb)); } } @@ -84,7 +71,7 @@ public static void RaiseEvent(object instance, string eventName) } } - public static void AddDialogueCondition(string name, bool state) + public static void SetDialogueCondition(string name, bool state) { if (!QSB.IsServer) { From 0de7ddd7cd44186394b3574d4f6992f4f902870a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 11 Dec 2020 22:42:43 +0000 Subject: [PATCH 147/207] cleanup --- QSB/EventsCore/QSBEvent.cs | 5 +---- QSB/Player/Events/PlayerStatesRequestEvent.cs | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 3955c0fce..2031fe66b 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -1,10 +1,7 @@ -using OWML.ModHelper.Events; -using QSB.Messaging; +using QSB.Messaging; using QSB.Player; using QSB.TransformSync; -using QSB.Utility; using QuantumUNET; -using System; namespace QSB.EventsCore { diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 988d1df25..f668696e4 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,10 +1,8 @@ -using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.EventsCore; using QSB.Messaging; using QSB.SectorSync; using QSB.Utility; using QSB.WorldSync; -using System.Collections.Generic; using System.Linq; namespace QSB.Player.Events From 440072e20b5d4126840b262085b978e0acbe23de Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 11 Dec 2020 23:13:13 +0000 Subject: [PATCH 148/207] cleanup --- QSB/Animation/AnimationSync.cs | 5 ---- QSB/Animation/Events/CrouchEvent.cs | 6 +--- QSB/Animation/Events/PlayerSuitEvent.cs | 1 - QSB/ConversationSync/ConversationManager.cs | 2 -- QSB/ConversationSync/ConversationPatches.cs | 2 +- QSB/DeathSync/RespawnOnDeath.cs | 3 -- QSB/EventsCore/IQSBEvent.cs | 1 - QSB/EventsCore/QSBEvent.cs | 7 ----- QSB/EventsCore/QSBEventManager.cs | 2 -- QSB/GeyserSync/GeyserManager.cs | 3 -- QSB/GeyserSync/QSBGeyser.cs | 6 ++-- QSB/MessagesCore/MessageHandler.cs | 6 ++-- QSB/OrbSync/OrbManager.cs | 16 ++--------- QSB/Patches/QSBPatch.cs | 1 - QSB/Patches/QSBPatchManager.cs | 4 +-- QSB/Player/State.cs | 1 - QSB/QSB.csproj | 1 - QSB/SectorSync/QSBSectorManager.cs | 2 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 1 - QSB/Tools/Events/PlayerProbeEvent.cs | 1 - QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 1 - QSB/Tools/Events/PlayerSignalscopeEvent.cs | 1 - QSB/Tools/Events/PlayerTranslatorEvent.cs | 1 - QSB/Tools/ProbePatches.cs | 29 -------------------- QSB/Tools/QSBProbe.cs | 18 ++---------- QSB/Tools/QSBTool.cs | 17 +++--------- QSB/TransformSync/PlayerCameraSync.cs | 8 ------ QSB/TransformSync/PlayerProbeSync.cs | 14 ++-------- QSB/TransformSync/PlayerTransformSync.cs | 14 +++------- QSB/TransformSync/ShipTransformSync.cs | 13 +-------- 30 files changed, 25 insertions(+), 162 deletions(-) delete mode 100644 QSB/Tools/ProbePatches.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index fb892cd24..3c08a2f96 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -31,11 +31,6 @@ public class AnimationSync : PlayerSyncObject public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType; - public Animator Animator - { - get { return _bodyAnim; } - } - private void Awake() { _anim = gameObject.AddComponent(); diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index 1df6b3f48..3a46da55b 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -22,11 +22,7 @@ public class CrouchEvent : QSBEvent public override void OnReceiveRemote(bool server, FloatMessage message) { var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); - if (animationSync == null) - { - return; - } - animationSync.HandleCrouch(message.Value); + animationSync?.HandleCrouch(message.Value); } } } \ No newline at end of file diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 1ea111772..d9f981b0b 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -21,7 +21,6 @@ public override void CloseListener() } private void HandleSuitUp() => SendEvent(CreateMessage(true)); - private void HandleSuitDown() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 757f12a73..4f9dfa21d 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -40,10 +40,8 @@ public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree); if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) { - // No player talking to tree return uint.MaxValue; } - // .First() should be fine here as only one player should be talking to a character. return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; } diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index fba988823..c895e89b3 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -83,7 +83,7 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, { position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; } - float b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + var b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); ____animator.SetLookAtPosition(____currentLookTarget); diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index 0228f2ed0..cc0388e90 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -7,9 +7,6 @@ namespace QSB.DeathSync { - /// - /// Client-only-side component for managing respawning after death. - /// public class RespawnOnDeath : MonoBehaviour { public static RespawnOnDeath Instance; diff --git a/QSB/EventsCore/IQSBEvent.cs b/QSB/EventsCore/IQSBEvent.cs index 65c305ed8..f215c378b 100644 --- a/QSB/EventsCore/IQSBEvent.cs +++ b/QSB/EventsCore/IQSBEvent.cs @@ -3,7 +3,6 @@ public interface IQSBEvent { void SetupListener(); - void CloseListener(); } } \ No newline at end of file diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 2031fe66b..5eafb467a 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -19,7 +19,6 @@ protected QSBEvent() } public abstract void SetupListener(); - public abstract void CloseListener(); public virtual void OnReceiveRemote(bool server, T message) { } @@ -45,12 +44,6 @@ private void Send(T message) private void OnReceive(T message) { - /* Uncomment for event debugging - very noisey and annoying (keeping as I don't want to have to rewrite this each time) - if (_eventHandler.BaseEventType != EventType.ServerTime && _eventHandler.BaseEventType != EventType.Geyser) - { - DebugLog.DebugWrite($"message type {_eventHandler.BaseEventType} from {message.FromId}, about {message.AboutId}. isserver? {QSB.IsServer}"); - } - */ if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index aa14ed85e..53249ffb4 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -60,9 +60,7 @@ public static void Init() public static void Reset() { Ready = false; - _eventList.ForEach(ev => ev.CloseListener()); - _eventList = new List(); } } diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index d7325bb23..2fdee0028 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -6,11 +6,8 @@ namespace QSB.GeyserSync { public class GeyserManager : MonoBehaviour { - public static GeyserManager Instance { get; private set; } - private void Awake() { - Instance = this; QSBSceneManager.OnSceneLoaded += OnSceneLoaded; QSBPatchManager.OnPatchType += OnPatchType; } diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index 91091f663..cc45cc731 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -30,11 +30,9 @@ public void SetState(bool state) if (state) { _geyserController?.ActivateGeyser(); + return; } - else - { - _geyserController?.DeactivateGeyser(); - } + _geyserController?.DeactivateGeyser(); } } } \ No newline at end of file diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index b637a5fd0..aa6a07c87 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -2,6 +2,7 @@ using QSB.EventsCore; using QSB.Utility; using QuantumUNET; +using QuantumUNET.Components; using QuantumUNET.Messages; using System; using System.Linq; @@ -12,7 +13,6 @@ namespace QSB.Messaging public class MessageHandler where T : QSBMessageBase, new() { public event Action OnClientReceiveMessage; - public event Action OnServerReceiveMessage; private readonly short _eventType; @@ -39,7 +39,7 @@ private void Init() QSBNetworkServer.handlers.Remove(_eventType); } QSBNetworkServer.RegisterHandler(_eventType, OnServerReceiveMessageHandler); - QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.RegisterHandler(_eventType, OnClientReceiveMessageHandler); + QSBNetworkManagerUNET.singleton.client.RegisterHandler(_eventType, OnClientReceiveMessageHandler); } public void SendToAll(T message) @@ -57,7 +57,7 @@ public void SendToServer(T message) { return; } - QuantumUNET.Components.QSBNetworkManagerUNET.singleton.client.Send(_eventType, message); + QSBNetworkManagerUNET.singleton.client.Send(_eventType, message); } private void OnClientReceiveMessageHandler(QSBNetworkMessage netMsg) diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index b65cd6b74..0d4c63077 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -18,7 +18,6 @@ private void Awake() private void BuildOrbSlots() { - DebugLog.DebugWrite("Building QSBOrbSlots...", MessageType.Info); QSBWorldSync.RemoveWorldObjects(); var orbSlots = Resources.FindObjectsOfTypeAll(); for (var id = 0; id < orbSlots.Length; id++) @@ -32,12 +31,10 @@ private void BuildOrbSlots() public void BuildOrbs() { - DebugLog.DebugWrite("Building orb syncs...", MessageType.Info); QSBWorldSync.OldOrbList.Clear(); QSBWorldSync.OldOrbList = Resources.FindObjectsOfTypeAll().ToList(); if (QSBNetworkServer.active) { - DebugLog.DebugWrite("- Is server, instantiating orb prefabs."); QSBWorldSync.OrbSyncList.ForEach(x => QSBNetworkServer.Destroy(x.gameObject)); QSBWorldSync.OrbSyncList.Clear(); QSBWorldSync.OldOrbList.ForEach(x => QSBNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab))); @@ -45,16 +42,7 @@ public void BuildOrbs() DebugLog.DebugWrite($"Finished orb build with {QSBWorldSync.OldOrbList.Count} orbs.", MessageType.Success); } - public void QueueBuildSlots() - { - DebugLog.DebugWrite("Queueing build of QSBOrbSlots...", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); - } - - public void QueueBuildOrbs() - { - DebugLog.DebugWrite("Queueing build of NetworkOrbs...", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); - } + public void QueueBuildSlots() => QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); + public void QueueBuildOrbs() => QSB.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); } } \ No newline at end of file diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index fc4f8fab5..59b064b02 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -3,7 +3,6 @@ public abstract class QSBPatch { public abstract QSBPatchTypes Type { get; } - public abstract void DoPatches(); } } \ No newline at end of file diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index faaa91437..3dadc8a02 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -4,7 +4,6 @@ using QSB.ElevatorSync; using QSB.OrbSync; using QSB.TimeSync; -using QSB.Tools; using QSB.Utility; using System; using System.Collections.Generic; @@ -28,8 +27,7 @@ public static void Init() new DeathPatches(), new ElevatorPatches(), new OrbPatches(), - new WakeUpPatches(), - new ProbePatches() + new WakeUpPatches() }; DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); diff --git a/QSB/Player/State.cs b/QSB/Player/State.cs index 49b666abb..7b7f418f7 100644 --- a/QSB/Player/State.cs +++ b/QSB/Player/State.cs @@ -12,6 +12,5 @@ public enum State Signalscope = 8, Translator = 16, ProbeActive = 32 - //Increment these in binary to add more states } } \ No newline at end of file diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 24b10fb0c..54dfc9018 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -219,7 +219,6 @@ - diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 8cbcb1466..392d8e116 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -43,7 +43,7 @@ public void RebuildSectors() IsReady = QSBWorldSync.GetWorldObjects().Any(); } - public QSBSector GetClosestSector(Transform trans) + public QSBSector GetClosestSector(Transform trans) // trans rights { return QSBWorldSync.GetWorldObjects() .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 2bc4e1a1a..c8f6f2a79 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -21,7 +21,6 @@ public override void CloseListener() } private void HandleTurnOn() => SendEvent(CreateMessage(true)); - private void HandleTurnOff() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 4323dc500..b35a06f01 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -21,7 +21,6 @@ public override void CloseListener() } private void HandleLaunch(SurveyorProbe probe) => SendEvent(CreateMessage(true)); - private void HandleRetrieve(SurveyorProbe probe) => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 2ed6cd964..2aab5c21c 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -21,7 +21,6 @@ public override void CloseListener() } private void HandleEquip(ProbeLauncher var) => SendEvent(CreateMessage(true)); - private void HandleUnequip(ProbeLauncher var) => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index fdfe8031d..5cfd293ff 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -21,7 +21,6 @@ public override void CloseListener() } private void HandleEquip(Signalscope var) => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index c0ad1a7f7..245aaa845 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -21,7 +21,6 @@ public override void CloseListener() } private void HandleEquip() => SendEvent(CreateMessage(true)); - private void HandleUnequip() => SendEvent(CreateMessage(false)); private ToggleMessage CreateMessage(bool value) => new ToggleMessage diff --git a/QSB/Tools/ProbePatches.cs b/QSB/Tools/ProbePatches.cs deleted file mode 100644 index f68c04ca6..000000000 --- a/QSB/Tools/ProbePatches.cs +++ /dev/null @@ -1,29 +0,0 @@ -using QSB.EventsCore; - -namespace QSB.Tools -{ - public class ProbePatches : QSBPatch - { - public override QSBPatchTypes Type => QSBPatchTypes.OnModStart; - - private static void ProbeAnchor() - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeAnchor); - } - - private static bool ProbeWarp(ref bool ____isRetrieving) - { - if (!____isRetrieving) - { - GlobalMessenger.FireEvent(EventNames.QSBOnProbeWarp); - } - return true; - } - - public override void DoPatches() - { - QSB.Helper.HarmonyHelper.AddPostfix("OnAnchor", typeof(ProbePatches), nameof(ProbeAnchor)); - QSB.Helper.HarmonyHelper.AddPrefix("Retrieve", typeof(ProbePatches), nameof(ProbeWarp)); - } - } -} \ No newline at end of file diff --git a/QSB/Tools/QSBProbe.cs b/QSB/Tools/QSBProbe.cs index ad91fab2a..d7ce49fcb 100644 --- a/QSB/Tools/QSBProbe.cs +++ b/QSB/Tools/QSBProbe.cs @@ -9,22 +9,10 @@ public void SetState(bool state) { if (state) { - Activate(); + gameObject.SetActive(true); + gameObject.Show(); + return; } - else - { - Deactivate(); - } - } - - private void Activate() - { - gameObject.SetActive(true); - gameObject.Show(); - } - - private void Deactivate() - { gameObject.Hide(); } } diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index 237c13f30..349af3d9d 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -31,26 +31,17 @@ public float ArrivalDegrees set => _arrivalDegrees = value; } - private void OnEnable() - { - ToolGameObject?.SetActive(true); - } - - private void OnDisable() - { - ToolGameObject?.SetActive(false); - } + private void OnEnable() => ToolGameObject?.SetActive(true); + private void OnDisable() => ToolGameObject?.SetActive(false); public void ChangeEquipState(bool equipState) { if (equipState) { EquipTool(); + return; } - else - { - UnequipTool(); - } + UnequipTool(); } } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index d4c3ec25d..68b8a7e76 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -9,14 +9,6 @@ namespace QSB.TransformSync { public class PlayerCameraSync : TransformSync { - public static PlayerCameraSync LocalInstance { get; private set; } - - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } - protected override Transform InitLocalTransform() { var body = Locator.GetPlayerCamera().gameObject.transform; diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 16c600906..1b430b756 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -8,20 +8,10 @@ namespace QSB.TransformSync { public class PlayerProbeSync : TransformSync { - public static PlayerProbeSync LocalInstance { get; private set; } - private Transform _disabledSocket; - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } - - private Transform GetProbe() - { - return Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - } + private Transform GetProbe() + => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); protected override Transform InitLocalTransform() { diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index 7f41f7ba0..abcec9394 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -13,20 +13,14 @@ public class PlayerTransformSync : TransformSync static PlayerTransformSync() { - DebugLog.DebugWrite("Constructor", MessageType.Info); AnimControllerPatch.Init(); } - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } + public override void OnStartLocalPlayer() + => LocalInstance = this; - private Transform GetPlayerModel() - { - return Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); - } + private Transform GetPlayerModel() + => Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); protected override Transform InitLocalTransform() { diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 48089beaa..f3901d6d7 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -7,18 +7,7 @@ namespace QSB.TransformSync { public class ShipTransformSync : TransformSync { - public static ShipTransformSync LocalInstance { get; private set; } - - public override void OnStartLocalPlayer() - { - DebugLog.DebugWrite("OnStartLocalPlayer", MessageType.Info); - LocalInstance = this; - } - - private Transform GetShipModel() - { - return Locator.GetShipTransform(); - } + private Transform GetShipModel() => Locator.GetShipTransform(); protected override Transform InitLocalTransform() { From 6097f819f50bdb5beb84d5ede4d2aa537527e5fa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 11 Dec 2020 23:13:32 +0000 Subject: [PATCH 149/207] cleanup --- QSB/TransformSync/PlayerCameraSync.cs | 3 +-- QSB/TransformSync/PlayerProbeSync.cs | 2 +- QSB/TransformSync/PlayerTransformSync.cs | 8 +++----- QSB/TransformSync/ShipTransformSync.cs | 4 +--- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 68b8a7e76..2bfd4a615 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -1,5 +1,4 @@ -using OWML.Common; -using QSB.EventsCore; +using QSB.EventsCore; using QSB.Player; using QSB.Tools; using QSB.Utility; diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 1b430b756..ef7e37f13 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -10,7 +10,7 @@ public class PlayerProbeSync : TransformSync { private Transform _disabledSocket; - private Transform GetProbe() + private Transform GetProbe() => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); protected override Transform InitLocalTransform() diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index abcec9394..c078c2003 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -1,8 +1,6 @@ -using OWML.Common; -using QSB.Animation; +using QSB.Animation; using QSB.Instruments; using QSB.Player; -using QSB.Utility; using UnityEngine; namespace QSB.TransformSync @@ -16,10 +14,10 @@ static PlayerTransformSync() AnimControllerPatch.Init(); } - public override void OnStartLocalPlayer() + public override void OnStartLocalPlayer() => LocalInstance = this; - private Transform GetPlayerModel() + private Transform GetPlayerModel() => Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); protected override Transform InitLocalTransform() diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index f3901d6d7..c157c185c 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -1,6 +1,4 @@ -using OWML.Common; -using QSB.Player; -using QSB.Utility; +using QSB.Player; using UnityEngine; namespace QSB.TransformSync From 75ca997a050d1b2fa69785c771a8b4f10e8c807d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 12 Dec 2020 09:06:20 +0000 Subject: [PATCH 150/207] cleanup --- QSB/TransformSync/TransformSync.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 1d6f4600b..071276df3 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -11,7 +11,6 @@ public abstract class TransformSync : PlayerSyncObject public abstract bool IsReady { get; } protected abstract Transform InitLocalTransform(); - protected abstract Transform InitRemoteTransform(); public Transform SyncedTransform { get; private set; } @@ -25,7 +24,6 @@ public abstract class TransformSync : PlayerSyncObject protected virtual void Awake() { - DebugLog.DebugWrite($"Awake of {GetType().Name}", MessageType.Info); QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; @@ -33,6 +31,7 @@ protected virtual void Awake() protected virtual void OnDestroy() { + QSBPlayerManager.PlayerSyncObjects.Remove(this); QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; } @@ -43,7 +42,6 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) protected void Init() { - DebugLog.DebugWrite($"Init of {AttachedNetId} ({Player.PlayerId}.{GetType().Name})"); SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); _isInitialized = true; _isVisible = true; From d1f28bf2dfad681bad97d0b0f218e0e688628fff Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 12 Dec 2020 11:27:28 +0000 Subject: [PATCH 151/207] start of disconnect remake --- QSB/Animation/AnimationSync.cs | 1 - QSB/EventsCore/EventNames.cs | 1 - QSB/EventsCore/EventType.cs | 1 - QSB/EventsCore/QSBEventManager.cs | 1 - QSB/Instruments/InstrumentsManager.cs | 1 - QSB/MessagesCore/MessageHandler.cs | 6 +-- QSB/Player/Events/PlayerLeaveEvent.cs | 32 -------------- QSB/Player/Events/PlayerLeaveMessage.cs | 24 ---------- QSB/QSB.csproj | 2 - QSB/QSBNetworkManager.cs | 59 +------------------------ QSB/TransformSync/TransformSync.cs | 5 +++ 11 files changed, 9 insertions(+), 124 deletions(-) delete mode 100644 QSB/Player/Events/PlayerLeaveEvent.cs delete mode 100644 QSB/Player/Events/PlayerLeaveMessage.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 3c08a2f96..b18723c9e 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -43,7 +43,6 @@ private void Awake() private void OnDestroy() { - _netAnim.enabled = false; if (_playerController == null) { return; diff --git a/QSB/EventsCore/EventNames.cs b/QSB/EventsCore/EventNames.cs index cac94b86d..1a861f718 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/EventsCore/EventNames.cs @@ -21,7 +21,6 @@ public static class EventNames public static string QSBPlayerDeath = "QSBPlayerDeath"; public static string QSBPlayerJoin = "QSBPlayerJoin"; - public static string QSBPlayerLeave = "QSBPlayerLeave"; public static string QSBPlayerReady = "QSBPlayerReady"; public static string QSBSectorChange = "QSBSectorChange"; public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; diff --git a/QSB/EventsCore/EventType.cs b/QSB/EventsCore/EventType.cs index 0d6cc30fb..87b6d26b9 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/EventsCore/EventType.cs @@ -13,7 +13,6 @@ public enum EventType ProbeLauncherActiveChange, SuitActiveChange, PlayerJoin, - PlayerLeave, PlayerDeath, PlayerSectorChange, PlayerReady, diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/EventsCore/QSBEventManager.cs index 53249ffb4..73f3759f0 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/EventsCore/QSBEventManager.cs @@ -34,7 +34,6 @@ public static void Init() new PlayerProbeLauncherEvent(), new PlayerProbeEvent(), new PlayerSectorEvent(), - new PlayerLeaveEvent(), new PlayerDeathEvent(), new PlayerStatesRequestEvent(), new ElevatorEvent(), diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index e5ab1c0d0..e430911bc 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -45,7 +45,6 @@ private void OnDestroy() { return; } - DebugLog.DebugWrite($"OnDestroy {PlayerId}"); QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index aa6a07c87..c9806598c 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -1,6 +1,4 @@ -using OWML.Common; -using QSB.EventsCore; -using QSB.Utility; +using QSB.EventsCore; using QuantumUNET; using QuantumUNET.Components; using QuantumUNET.Messages; @@ -35,8 +33,8 @@ private void Init() { if (QSBNetworkServer.handlers.Keys.Contains(_eventType)) { - DebugLog.ToConsole($"Warning - NetworkServer already contains a handler for EventType {BaseEventType}", MessageType.Warning); QSBNetworkServer.handlers.Remove(_eventType); + QSBNetworkManagerUNET.singleton.client.handlers.Remove(_eventType); } QSBNetworkServer.RegisterHandler(_eventType, OnServerReceiveMessageHandler); QSBNetworkManagerUNET.singleton.client.RegisterHandler(_eventType, OnClientReceiveMessageHandler); diff --git a/QSB/Player/Events/PlayerLeaveEvent.cs b/QSB/Player/Events/PlayerLeaveEvent.cs deleted file mode 100644 index 4ae67c547..000000000 --- a/QSB/Player/Events/PlayerLeaveEvent.cs +++ /dev/null @@ -1,32 +0,0 @@ -using OWML.Common; -using QSB.EventsCore; -using QSB.Utility; -using System.Linq; - -namespace QSB.Player.Events -{ - public class PlayerLeaveEvent : QSBEvent - { - public override EventType Type => EventType.PlayerLeave; - - public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBPlayerLeave, Handler); - public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBPlayerLeave, Handler); - - private void Handler(uint playerId, uint[] netIds) => SendEvent(CreateMessage(playerId, netIds)); - - private PlayerLeaveMessage CreateMessage(uint playerId, uint[] netIds) => new PlayerLeaveMessage - { - AboutId = playerId, - NetIds = netIds - }; - - public override void OnReceiveRemote(bool server, PlayerLeaveMessage message) - { - var playerName = QSBPlayerManager.GetPlayer(message.AboutId).Name; - DebugLog.ToAll($"{playerName} disconnected.", MessageType.Info); - QSBPlayerManager.GetPlayer(message.AboutId).HudMarker?.Remove(); - QSBPlayerManager.RemovePlayer(message.AboutId); - message.NetIds.ToList().ForEach(netId => QSBNetworkManager.Instance.CleanupNetworkBehaviour(netId)); - } - } -} \ No newline at end of file diff --git a/QSB/Player/Events/PlayerLeaveMessage.cs b/QSB/Player/Events/PlayerLeaveMessage.cs deleted file mode 100644 index 08d3126bb..000000000 --- a/QSB/Player/Events/PlayerLeaveMessage.cs +++ /dev/null @@ -1,24 +0,0 @@ -using QSB.Messaging; -using QuantumUNET; -using System; -using System.Linq; - -namespace QSB.Player.Events -{ - public class PlayerLeaveMessage : PlayerMessage - { - public uint[] NetIds { get; set; } - - public override void Deserialize(QSBNetworkReader reader) - { - base.Deserialize(reader); - NetIds = reader.ReadString().Split(',').Select(x => Convert.ToUInt32(x)).ToArray(); - } - - public override void Serialize(QSBNetworkWriter writer) - { - base.Serialize(writer); - writer.Write(string.Join(",", NetIds.Select(x => x.ToString()).ToArray())); - } - } -} \ No newline at end of file diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 54dfc9018..133079195 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -171,7 +171,6 @@ - @@ -182,7 +181,6 @@ - diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 24bfd7e90..dba8b5d48 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -218,10 +218,6 @@ public override void OnStopClient() // Called on the client when closing connect QSBEventManager.Reset(); QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - foreach (var player in QSBPlayerManager.PlayerList) - { - QSBPlayerManager.GetPlayerNetIds(player).ForEach(CleanupNetworkBehaviour); - } QSBPlayerManager.RemoveAllPlayers(); QSBWorldSync.RemoveWorldObjects(); @@ -236,10 +232,8 @@ public override void OnStopClient() // Called on the client when closing connect public override void OnServerDisconnect(QSBNetworkConnection connection) // Called on the server when any client disconnects { + base.OnServerDisconnect(connection); DebugLog.DebugWrite("OnServerDisconnect", MessageType.Info); - var player = connection.GetPlayer(); - var netIds = connection.ClientOwnedObjects.Select(x => x.Value).ToArray(); - GlobalMessenger.FireEvent(EventNames.QSBPlayerLeave, player.PlayerId, netIds); foreach (var item in QSBWorldSync.OrbSyncList) { @@ -250,8 +244,7 @@ public override void OnServerDisconnect(QSBNetworkConnection connection) // Call } } - player.HudMarker?.Remove(); - CleanupConnection(connection); + QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); } public override void OnStopServer() @@ -263,7 +256,6 @@ public override void OnStopServer() QSBEventManager.Reset(); DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); - QSBNetworkServer.connections.ToList().ForEach(CleanupConnection); QSBWorldSync.RemoveWorldObjects(); QSBWorldSync.RemoveWorldObjects(); @@ -272,52 +264,5 @@ public override void OnStopServer() base.OnStopServer(); } - - private void CleanupConnection(QSBNetworkConnection connection) - { - var player = connection.GetPlayer(); - DebugLog.ToConsole($"{player.Name} disconnected.", MessageType.Info); - QSBPlayerManager.RemovePlayer(player.PlayerId); - - var netIds = connection.ClientOwnedObjects?.Select(x => x.Value).ToList(); - netIds.ForEach(CleanupNetworkBehaviour); - } - - public void CleanupNetworkBehaviour(uint netId) - { - DebugLog.DebugWrite($"Cleaning up netId {netId}"); - // Multiple networkbehaviours can use the same networkidentity (same netId), so get all of them - var networkBehaviours = FindObjectsOfType() - .Where(x => x != null && x.NetId.Value == netId); - foreach (var networkBehaviour in networkBehaviours) - { - var transformSync = networkBehaviour.GetComponent(); - - if (transformSync != null) - { - DebugLog.DebugWrite($" * Removing TransformSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(transformSync); - if (transformSync.SyncedTransform != null && netId != QSBPlayerManager.LocalPlayerId && !networkBehaviour.HasAuthority) - { - DebugLog.DebugWrite($" * Destroying {transformSync.SyncedTransform.gameObject.name}"); - Destroy(transformSync.SyncedTransform.gameObject); - } - } - - var animationSync = networkBehaviour.GetComponent(); - - if (animationSync != null) - { - DebugLog.DebugWrite($" * Removing AnimationSync from syncobjects"); - QSBPlayerManager.PlayerSyncObjects.Remove(animationSync); - } - - if (!networkBehaviour.HasAuthority) - { - DebugLog.DebugWrite($" * Destroying {networkBehaviour.gameObject.name}"); - Destroy(networkBehaviour.gameObject); - } - } - } } } \ No newline at end of file diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 071276df3..c87e13143 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -32,6 +32,10 @@ protected virtual void Awake() protected virtual void OnDestroy() { QSBPlayerManager.PlayerSyncObjects.Remove(this); + if (!HasAuthority && SyncedTransform != null) + { + Destroy(SyncedTransform.gameObject); + } QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; } @@ -43,6 +47,7 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) protected void Init() { SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); + SetReferenceSector(QSBSectorManager.Instance.GetClosestSector(SyncedTransform)); _isInitialized = true; _isVisible = true; } From 087f9013d9cfdb6093a67b900525cdfe75928e12 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 12 Dec 2020 18:14:04 +0000 Subject: [PATCH 152/207] stuff --- QSB/Player/PlayerSyncObject.cs | 6 +- QSB/Player/QSBPlayerManager.cs | 71 +------------------- QSB/QSBNetworkManager.cs | 12 ++-- QSB/Tools/PlayerToolsManager.cs | 1 + QSB/TransformSync/PlayerCameraSync.cs | 7 ++ QSB/TransformSync/PlayerProbeSync.cs | 7 ++ QSB/TransformSync/ShipTransformSync.cs | 7 ++ QSB/TransformSync/TransformSync.cs | 1 + QuantumUNET/Components/QSBNetworkIdentity.cs | 20 ++++++ QuantumUNET/QSBNetworkBehaviour.cs | 2 +- 10 files changed, 52 insertions(+), 82 deletions(-) diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 9ac03338a..df7d6fb99 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -1,13 +1,11 @@ using QuantumUNET; -using QuantumUNET.Components; namespace QSB.Player { public abstract class PlayerSyncObject : QSBNetworkBehaviour { - public uint AttachedNetId => GetComponent()?.NetId.Value ?? uint.MaxValue; - public uint PlayerId => this.GetPlayerOfObject(); - public uint PreviousPlayerId { get; set; } + public uint AttachedNetId => NetIdentity?.NetId.Value ?? uint.MaxValue; + public uint PlayerId => NetIdentity.RootIdentity?.NetId.Value ?? NetIdentity.NetId.Value; public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); } } \ No newline at end of file diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 2de27749f..de010166f 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -2,7 +2,6 @@ using QSB.Player.Events; using QSB.TransformSync; using QSB.Utility; -using QuantumUNET.Components; using System.Collections.Generic; using System.Linq; @@ -10,7 +9,7 @@ namespace QSB.Player { public static class QSBPlayerManager { - public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.GetComponent()?.NetId.Value ?? uint.MaxValue; + public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.NetIdentity?.NetId.Value ?? uint.MaxValue; public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); public static List PlayerList { get; } = new List(); @@ -77,73 +76,5 @@ public static bool IsBelongingToLocalPlayer(uint id) return id == LocalPlayerId || PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); } - - public static uint GetPlayerOfObject(this PlayerSyncObject syncObject) - { - if (PlayerList.Count == 0) - { - DebugLog.ToConsole($"Error - No players exist to find owner of object. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Error); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // Get all Player IDs - var playerIds = PlayerList.Select(x => x.PlayerId).ToList(); - // Get highest ID below the given syncobject's netid. A netid cannot belong to a playerid above it, only below or equal to it. - var lowerBound = playerIds.Where(x => x <= syncObject.AttachedNetId).ToList().Max(); - if (playerIds.Min() > syncObject.AttachedNetId) - { - DebugLog.ToConsole($"Warning - Minimum playerid is greater than syncobject's netid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - // If the player list count is not the same as the count of the same type syncobject (eg. 3 players and 4 PlayerTransformSyncs) - // and the highest ID below the syncobject's id is the same as the highest player id. - if (PlayerList.Count != PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType()) && lowerBound == playerIds.Max()) - { - // If the previous player id was not the error value, return it. To smooth over discrepancies between player list and object list. - if (syncObject.PreviousPlayerId != uint.MaxValue) - { - return syncObject.PreviousPlayerId; - } - // If the syncobject is a PlayerTransformSync, make a player. - if (syncObject.GetType() == typeof(PlayerTransformSync) && syncObject.AttachedNetId != 0U) - { - return GetPlayer(syncObject.AttachedNetId).PlayerId; - } - DebugLog.ToConsole($"Warning - Unequal player:syncobject count. ({PlayerList.Count}:{PlayerSyncObjects.Count(x => x.GetType() == syncObject.GetType())}) (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - syncObject.PreviousPlayerId = uint.MaxValue; - return uint.MaxValue; - } - if (syncObject.PreviousPlayerId == uint.MaxValue) - { - DebugLog.ToConsole($"Warning - Syncobject previously had uint.MaxValue as it's playerid. (Attached NetID : {syncObject.AttachedNetId})", MessageType.Warning); - } - syncObject.PreviousPlayerId = lowerBound; - return lowerBound; - } - - public static List GetPlayerNetIds(PlayerInfo player) - { - if (PlayerSyncObjects.Count == 0) - { - return default; - } - int count = 0; - int totalCount = PlayerSyncObjects.Count; - PlayerSyncObjects.RemoveAll(x => x == null); - PlayerSyncObjects.RemoveAll(x => x.GetComponent() == null); - if (PlayerSyncObjects.Count != totalCount) - { - DebugLog.ToConsole($"Warning - Removed {totalCount - PlayerSyncObjects.Count} items from PlayerSyncObjects.", MessageType.Warning); - } - foreach (var item in PlayerSyncObjects.DistinctBy(x => x.AttachedNetId)) - { - if (item.PlayerId == player.PlayerId) - { - count++; - } - } - return Enumerable.Range((int)player.PlayerId, count).Select(x => (uint)x).ToList(); - } } } \ No newline at end of file diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index dba8b5d48..43af70e87 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -161,7 +161,7 @@ public override void OnStartServer() public override void OnServerAddPlayer(QSBNetworkConnection connection, short playerControllerId) // Called on the server when a client joins { - DebugLog.DebugWrite("OnServerAddPlayer", MessageType.Info); + DebugLog.DebugWrite($"OnServerAddPlayer {playerControllerId}", MessageType.Info); base.OnServerAddPlayer(connection, playerControllerId); QSBNetworkServer.SpawnWithClientAuthority(Instantiate(_shipPrefab), connection); @@ -174,6 +174,8 @@ public override void OnClientConnect(QSBNetworkConnection connection) // Called DebugLog.DebugWrite("OnClientConnect", MessageType.Info); base.OnClientConnect(connection); + QSBEventManager.Init(); + gameObject.AddComponent(); gameObject.AddComponent(); gameObject.AddComponent(); @@ -196,14 +198,12 @@ public override void OnClientConnect(QSBNetworkConnection connection) // Called OnNetworkManagerReady?.Invoke(); IsReady = true; - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, QSBEventManager.Init); - - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready && PlayerTransformSync.LocalInstance != null, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); if (!QSB.IsServer) { - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready, + QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready && PlayerTransformSync.LocalInstance != null, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); } } @@ -243,8 +243,6 @@ public override void OnServerDisconnect(QSBNetworkConnection connection) // Call identity.RemoveClientAuthority(connection); } } - - QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); } public override void OnStopServer() diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 078ee0cf6..ac5cfa6f8 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -20,6 +20,7 @@ public class PlayerToolsManager public static void Init(Transform camera) { + DebugLog.DebugWrite($"TOOLS INIT ON {camera.name}"); CreateStowTransforms(camera); _playerToolsMaterial = GameObject.Find("Props_HEA_ProbeLauncher_ProbeCamera/ProbeLauncherChassis").GetComponent().materials[0]; diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 2bfd4a615..f077cd2af 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -2,12 +2,19 @@ using QSB.Player; using QSB.Tools; using QSB.Utility; +using System.Linq; using UnityEngine; namespace QSB.TransformSync { public class PlayerCameraSync : TransformSync { + protected void Start() + { + var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); + NetIdentity.SetRootIdentity(lowestBound.NetIdentity); + } + protected override Transform InitLocalTransform() { var body = Locator.GetPlayerCamera().gameObject.transform; diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index ef7e37f13..a2acdc68c 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -2,6 +2,7 @@ using QSB.Player; using QSB.Tools; using QSB.Utility; +using System.Linq; using UnityEngine; namespace QSB.TransformSync @@ -10,6 +11,12 @@ public class PlayerProbeSync : TransformSync { private Transform _disabledSocket; + protected void Start() + { + var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); + NetIdentity.SetRootIdentity(lowestBound.NetIdentity); + } + private Transform GetProbe() => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index c157c185c..1d27d20fa 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -1,10 +1,17 @@ using QSB.Player; +using System.Linq; using UnityEngine; namespace QSB.TransformSync { public class ShipTransformSync : TransformSync { + protected void Start() + { + var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); + NetIdentity.SetRootIdentity(lowestBound.NetIdentity); + } + private Transform GetShipModel() => Locator.GetShipTransform(); protected override Transform InitLocalTransform() diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index c87e13143..3044c12d6 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -31,6 +31,7 @@ protected virtual void Awake() protected virtual void OnDestroy() { + DebugLog.DebugWrite($"destroy of {PlayerId}.{GetType().Name}"); QSBPlayerManager.PlayerSyncObjects.Remove(this); if (!HasAuthority && SyncedTransform != null) { diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 4c144e0c0..28324cc40 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -21,6 +21,8 @@ public sealed class QSBNetworkIdentity : MonoBehaviour public short PlayerControllerId { get; private set; } = -1; public QSBNetworkConnection ConnectionToServer { get; private set; } public QSBNetworkConnection ConnectionToClient { get; private set; } + public QSBNetworkIdentity RootIdentity { get; private set; } + public List SubIdentities { get; private set; } = new List(); public bool ServerOnly { @@ -46,6 +48,22 @@ public bool LocalPlayerAuthority } } + public void SetRootIdentity(QSBNetworkIdentity newRoot) + { + if (RootIdentity != null) + { + RootIdentity.RemoveSubIdentity(this); + } + RootIdentity = newRoot; + RootIdentity.AddSubIndentity(this); + } + + internal void AddSubIndentity(QSBNetworkIdentity identityToAdd) + => SubIdentities.Add(identityToAdd); + + internal void RemoveSubIdentity(QSBNetworkIdentity identityToRemove) + => SubIdentities.Remove(identityToRemove); + internal void SetDynamicAssetId(NetworkHash128 newAssetId) { if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) @@ -961,11 +979,13 @@ public static void UNetStaticUpdate() private bool m_LocalPlayerAuthority; private bool m_IsServer; + private QSBNetworkBehaviour[] m_NetworkBehaviours; private HashSet m_ObserverConnections; private List m_Observers; + private bool m_Reset = false; private static uint s_NextNetworkId = 1U; diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 734c2ad21..202910c1f 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -23,7 +23,7 @@ public class QSBNetworkBehaviour : MonoBehaviour protected uint SyncVarDirtyBits { get; private set; } protected bool SyncVarHookGuard { get; set; } - internal QSBNetworkIdentity NetIdentity => MyView; + public QSBNetworkIdentity NetIdentity => MyView; private QSBNetworkIdentity MyView { From 906522f23e73d61b4cd15f7cb2fe4a57d78c05c6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 12 Dec 2020 18:27:42 +0000 Subject: [PATCH 153/207] Update QSBInputManager.cs --- QSB/QSBInputManager.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/QSB/QSBInputManager.cs b/QSB/QSBInputManager.cs index 2c076d12b..68a37461d 100644 --- a/QSB/QSBInputManager.cs +++ b/QSB/QSBInputManager.cs @@ -7,15 +7,10 @@ namespace QSB public class QSBInputManager : MonoBehaviour { public static event InputEvent ChertTaunt; - public static event InputEvent EskerTaunt; - public static event InputEvent RiebeckTaunt; - public static event InputEvent GabbroTaunt; - public static event InputEvent FeldsparTaunt; - public static event InputEvent ExitTaunt; // TODO : finish instruments - disabled for 0.7.0 release From 7b500c72080b2fea059365109921e9105213fbe5 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 13 Dec 2020 22:25:23 +0000 Subject: [PATCH 154/207] changes --- QSB/EventsCore/QSBEvent.cs | 4 + QSB/MessagesCore/MessageHandler.cs | 7 +- QSB/MessagesCore/PlayerMessage.cs | 3 + QSB/Properties/AssemblyInfo.cs | 14 +- QSB/QSBNetworkManager.cs | 3 +- QSB/TransformSync/PlayerTransformSync.cs | 7 + .../Components/QSBNetworkManagerUNET.cs | 22 +- QuantumUNET/Messages/QSBMsgType.cs | 118 ++++++++++ QuantumUNET/QSBClientScene.cs | 88 +------ QuantumUNET/QSBNetworkConnection.cs | 22 +- QuantumUNET/QSBNetworkServer.cs | 216 +----------------- QuantumUNET/QuantumUNET.csproj | 1 + 12 files changed, 186 insertions(+), 319 deletions(-) create mode 100644 QuantumUNET/Messages/QSBMsgType.cs diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 5eafb467a..51d97a22e 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -44,6 +44,10 @@ private void Send(T message) private void OnReceive(T message) { + if (QSB.IsServer) + { + _eventHandler.SendToAll(message); + } if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index c9806598c..606209a4a 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -1,10 +1,10 @@ using QSB.EventsCore; +using QSB.Utility; using QuantumUNET; using QuantumUNET.Components; using QuantumUNET.Messages; using System; using System.Linq; -using UnityEngine.Networking; namespace QSB.Messaging { @@ -14,11 +14,11 @@ namespace QSB.Messaging public event Action OnServerReceiveMessage; private readonly short _eventType; - public EventType BaseEventType => (EventType)(_eventType - 1 - MsgType.Highest); + public EventType BaseEventType => (EventType)(_eventType - 1 - QSBMsgType.Highest); public MessageHandler(EventType eventType) { - _eventType = (short)(eventType + MsgType.Highest + 1); + _eventType = (short)(eventType + QSBMsgType.Highest + 1); if (QSBNetworkManager.Instance.IsReady) { Init(); @@ -46,6 +46,7 @@ public void SendToAll(T message) { return; } + DebugLog.DebugWrite("SEND MESSAGE TO ALL"); QSBNetworkServer.SendToAll(_eventType, message); } diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/MessagesCore/PlayerMessage.cs index 4362eb0e1..9fb002381 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/MessagesCore/PlayerMessage.cs @@ -7,17 +7,20 @@ public class PlayerMessage : QSBMessageBase { public uint FromId { get; set; } public uint AboutId { get; set; } + public bool OnlySendToServer { get; set; } public override void Deserialize(QSBNetworkReader reader) { FromId = reader.ReadUInt32(); AboutId = reader.ReadUInt32(); + OnlySendToServer = reader.ReadBoolean(); } public override void Serialize(QSBNetworkWriter writer) { writer.Write(FromId); writer.Write(AboutId); + writer.Write(OnlySendToServer); } } } \ No newline at end of file diff --git a/QSB/Properties/AssemblyInfo.cs b/QSB/Properties/AssemblyInfo.cs index 2aead9f80..e493bd045 100644 --- a/QSB/Properties/AssemblyInfo.cs +++ b/QSB/Properties/AssemblyInfo.cs @@ -1,15 +1,16 @@ using System.Reflection; +using System.Resources; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("FriendsInSpace")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyTitle("Quantum Space Buddies")] +[assembly: AssemblyDescription("Multiplayer mod for Outer Wilds")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("FriendsInSpace")] -[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyCompany("Henry Pointer, Aleksander Waage, Ricardo Lopes")] +[assembly: AssemblyProduct("Quantum Space Buddies")] +[assembly: AssemblyCopyright("Copyright © Henry Pointer, Aleksander Waage, Ricardo Lopes 2020-2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,4 +33,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguage("en-GB")] diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 43af70e87..cae6d7802 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -124,7 +124,6 @@ private void OnDestroy() private void OnSceneLoaded(OWScene scene) { - DebugLog.DebugWrite("scene loaded"); OrbManager.Instance.BuildOrbs(); OrbManager.Instance.QueueBuildSlots(); QSBWorldSync.OldDialogueTrees.Clear(); @@ -252,7 +251,7 @@ public override void OnStopServer() Destroy(GetComponent()); Destroy(GetComponent()); QSBEventManager.Reset(); - DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); + DebugLog.ToConsole("Server stopped!", MessageType.Info); QSBPlayerManager.PlayerList.ForEach(player => player.HudMarker?.Remove()); QSBWorldSync.RemoveWorldObjects(); diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index c078c2003..cf04ec02b 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -17,6 +17,13 @@ static PlayerTransformSync() public override void OnStartLocalPlayer() => LocalInstance = this; + protected override void OnDestroy() + { + base.OnDestroy(); + Player.HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(PlayerId); + } + private Transform GetPlayerModel() => Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index 39a321a08..2e6899da2 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -149,12 +149,12 @@ private void InitializeSingleton() internal void RegisterServerMessages() { - QSBNetworkServer.RegisterHandler(32, new QSBNetworkMessageDelegate(OnServerConnectInternal)); - QSBNetworkServer.RegisterHandler(33, new QSBNetworkMessageDelegate(OnServerDisconnectInternal)); - QSBNetworkServer.RegisterHandler(35, new QSBNetworkMessageDelegate(OnServerReadyMessageInternal)); - QSBNetworkServer.RegisterHandler(37, new QSBNetworkMessageDelegate(OnServerAddPlayerMessageInternal)); - QSBNetworkServer.RegisterHandler(38, new QSBNetworkMessageDelegate(OnServerRemovePlayerMessageInternal)); - QSBNetworkServer.RegisterHandler(34, new QSBNetworkMessageDelegate(OnServerErrorInternal)); + QSBNetworkServer.RegisterHandler(QSBMsgType.Connect, new QSBNetworkMessageDelegate(OnServerConnectInternal)); + QSBNetworkServer.RegisterHandler(QSBMsgType.Disconnect, new QSBNetworkMessageDelegate(OnServerDisconnectInternal)); + QSBNetworkServer.RegisterHandler(QSBMsgType.Ready, new QSBNetworkMessageDelegate(OnServerReadyMessageInternal)); + QSBNetworkServer.RegisterHandler(QSBMsgType.AddPlayer, new QSBNetworkMessageDelegate(OnServerAddPlayerMessageInternal)); + QSBNetworkServer.RegisterHandler(QSBMsgType.RemovePlayer, new QSBNetworkMessageDelegate(OnServerRemovePlayerMessageInternal)); + QSBNetworkServer.RegisterHandler(QSBMsgType.Error, new QSBNetworkMessageDelegate(OnServerErrorInternal)); } public bool StartServer() @@ -228,11 +228,11 @@ private bool StartServer(ConnectionConfig config, int maxConnections) internal void RegisterClientMessages(QSBNetworkClient client) { - client.RegisterHandler(32, new QSBNetworkMessageDelegate(OnClientConnectInternal)); - client.RegisterHandler(33, new QSBNetworkMessageDelegate(OnClientDisconnectInternal)); - client.RegisterHandler(36, new QSBNetworkMessageDelegate(OnClientNotReadyMessageInternal)); - client.RegisterHandler(34, new QSBNetworkMessageDelegate(OnClientErrorInternal)); - client.RegisterHandler(39, new QSBNetworkMessageDelegate(OnClientSceneInternal)); + client.RegisterHandler(QSBMsgType.Connect, new QSBNetworkMessageDelegate(OnClientConnectInternal)); + client.RegisterHandler(QSBMsgType.Disconnect, new QSBNetworkMessageDelegate(OnClientDisconnectInternal)); + client.RegisterHandler(QSBMsgType.NotReady, new QSBNetworkMessageDelegate(OnClientNotReadyMessageInternal)); + client.RegisterHandler(QSBMsgType.Error, new QSBNetworkMessageDelegate(OnClientErrorInternal)); + client.RegisterHandler(QSBMsgType.Scene, new QSBNetworkMessageDelegate(OnClientSceneInternal)); if (playerPrefab != null) { QSBClientScene.RegisterPrefab(playerPrefab); diff --git a/QuantumUNET/Messages/QSBMsgType.cs b/QuantumUNET/Messages/QSBMsgType.cs new file mode 100644 index 000000000..724bb9c30 --- /dev/null +++ b/QuantumUNET/Messages/QSBMsgType.cs @@ -0,0 +1,118 @@ +namespace QuantumUNET.Messages +{ + public class QSBMsgType + { + public static string MsgTypeToString(short value) + { + string result; + if (value < 0 || value > 47) + { + result = string.Empty; + } + else + { + string text = msgLabels[(int)value]; + if (string.IsNullOrEmpty(text)) + { + text = "[" + value + "]"; + } + result = text; + } + return result; + } + + public const short ObjectDestroy = 1; + public const short Rpc = 2; + public const short ObjectSpawn = 3; + public const short Owner = 4; + public const short Command = 5; + public const short LocalPlayerTransform = 6; + public const short SyncEvent = 7; + public const short UpdateVars = 8; + public const short SyncList = 9; + public const short ObjectSpawnScene = 10; + public const short NetworkInfo = 11; + public const short SpawnFinished = 12; + public const short ObjectHide = 13; + public const short CRC = 14; + public const short LocalClientAuthority = 15; + public const short LocalChildTransform = 16; + public const short Fragment = 17; + public const short PeerClientAuthority = 18; + internal const short UserMessage = 0; + internal const short HLAPIMsg = 28; + internal const short LLAPIMsg = 29; + internal const short HLAPIResend = 30; + internal const short HLAPIPending = 31; + public const short InternalHighest = 31; + public const short Connect = 32; + public const short Disconnect = 33; + public const short Error = 34; + public const short Ready = 35; + public const short NotReady = 36; + public const short AddPlayer = 37; + public const short RemovePlayer = 38; + public const short Scene = 39; + public const short Animation = 40; + public const short AnimationParameters = 41; + public const short AnimationTrigger = 42; + public const short LobbyReadyToBegin = 43; + public const short LobbySceneLoaded = 44; + public const short LobbyAddPlayerFailed = 45; + public const short LobbyReturnToLobby = 46; + public const short ReconnectPlayer = 47; + public const short Highest = 47; + + internal static string[] msgLabels = new string[] + { + "none", + "ObjectDestroy", + "Rpc", + "ObjectSpawn", + "Owner", + "Command", + "LocalPlayerTransform", + "SyncEvent", + "UpdateVars", + "SyncList", + "ObjectSpawnScene", + "NetworkInfo", + "SpawnFinished", + "ObjectHide", + "CRC", + "LocalClientAuthority", + "LocalChildTransform", + "Fragment", + "PeerClientAuthority", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Connect", + "Disconnect", + "Error", + "Ready", + "NotReady", + "AddPlayer", + "RemovePlayer", + "Scene", + "Animation", + "AnimationParams", + "AnimationTrigger", + "LobbyReadyToBegin", + "LobbySceneLoaded", + "LobbyAddPlayerFailed", + "LobbyReturnToLobby", + "ReconnectPlayer" + }; + } +} diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index a7a4fe697..15df0c77c 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,4 +1,5 @@ -using QuantumUNET.Components; +using OWML.Logging; +using QuantumUNET.Components; using QuantumUNET.Messages; using System.Collections.Generic; using UnityEngine; @@ -185,84 +186,19 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl "]" })); } - if (!HasMigrationPending()) + var addPlayerMessage = new QSBAddPlayerMessage { - var addPlayerMessage = new QSBAddPlayerMessage - { - playerControllerId = playerControllerId - }; - if (extraMessage != null) - { - var networkWriter = new QSBNetworkWriter(); - extraMessage.Serialize(networkWriter); - addPlayerMessage.msgData = networkWriter.ToArray(); - addPlayerMessage.msgSize = (int)networkWriter.Position; - } - readyConnection.Send(37, addPlayerMessage); - result = true; - } - else - { - result = SendReconnectMessage(extraMessage); - } - } - return result; - } - - public static bool SendReconnectMessage(QSBMessageBase extraMessage) - { - bool result; - if (!HasMigrationPending()) - { - result = false; - } - else - { - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::AddPlayer reconnect " + reconnectId); - } - if (s_Peers == null) - { - SetReconnectId(-1, null); - if (LogFilter.logError) - { - Debug.LogError("ClientScene::AddPlayer: reconnecting, but no peers."); - } - result = false; - } - else + playerControllerId = playerControllerId + }; + if (extraMessage != null) { - for (var i = 0; i < s_Peers.Length; i++) - { - var peerInfoMessage = s_Peers[i]; - if (peerInfoMessage.playerIds != null) - { - if (peerInfoMessage.connectionId == reconnectId) - { - for (var j = 0; j < peerInfoMessage.playerIds.Length; j++) - { - var reconnectMessage = new QSBReconnectMessage - { - oldConnectionId = reconnectId, - netId = peerInfoMessage.playerIds[j].netId, - playerControllerId = peerInfoMessage.playerIds[j].playerControllerId - }; - if (extraMessage != null) - { - var networkWriter = new QSBNetworkWriter(); - extraMessage.Serialize(networkWriter); - reconnectMessage.msgData = networkWriter.ToArray(); - reconnectMessage.msgSize = (int)networkWriter.Position; - } - readyConnection.Send(47, reconnectMessage); - } - } - } - } - SetReconnectId(-1, null); - result = true; + var networkWriter = new QSBNetworkWriter(); + extraMessage.Serialize(networkWriter); + addPlayerMessage.msgData = networkWriter.ToArray(); + addPlayerMessage.msgSize = (int)networkWriter.Position; } + readyConnection.Send(37, addPlayerMessage); + result = true; } return result; } diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index ecc794836..8f9101c75 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -130,10 +130,6 @@ public bool InvokeHandler(short msgType, QSBNetworkReader reader, int channelId) var networkMessageDelegate = m_MessageHandlersDict[msgType]; if (networkMessageDelegate == null) { - if (LogFilter.logError) - { - Debug.LogError("NetworkConnection InvokeHandler no handler for " + msgType); - } result = false; } else @@ -269,25 +265,17 @@ public virtual bool SendByChannel(short msgType, QSBMessageBase msg, int channel public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) { - if (logNetworkMessages) - { - LogSend(bytes); - } return CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); } public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) { - if (logNetworkMessages) - { - LogSend(writer.ToArray()); - } return CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); } private void LogSend(byte[] bytes) { - var networkReader = new NetworkReader(bytes); + var networkReader = new QSBNetworkReader(bytes); var num = networkReader.ReadUInt16(); var num2 = networkReader.ReadUInt16(); var stringBuilder = new StringBuilder(); @@ -299,7 +287,7 @@ private void LogSend(byte[] bytes) break; } } - Debug.Log(string.Concat(new object[] + ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "ConnectionSend con:", connectionId, @@ -350,11 +338,11 @@ public void ResetStats() protected void HandleBytes(byte[] buffer, int receivedSize, int channelId) { - var reader = new NetworkReader(buffer); + var reader = new QSBNetworkReader(buffer); HandleReader(reader, receivedSize, channelId); } - protected void HandleReader(NetworkReader reader, int receivedSize, int channelId) + protected void HandleReader(QSBNetworkReader reader, int receivedSize, int channelId) { while (reader.Position < receivedSize) { @@ -516,7 +504,7 @@ public override string ToString() { return string.Concat(new object[] { - MsgType.MsgTypeToString(msgType), + QSBMsgType.MsgTypeToString(msgType), ": count=", count, " bytes=", diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 16597326c..313e6e9d3 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -188,14 +188,15 @@ public static void Shutdown() internal void RegisterMessageHandlers() { - m_SimpleServerSimple.RegisterHandlerSafe((short)35, new QSBNetworkMessageDelegate(OnClientReadyMessage)); - m_SimpleServerSimple.RegisterHandlerSafe((short)5, new QSBNetworkMessageDelegate(OnCommandMessage)); - m_SimpleServerSimple.RegisterHandlerSafe(6, new QSBNetworkMessageDelegate(QSBNetworkTransform.HandleTransform)); + ModConsole.OwmlConsole.WriteLine("Register Message Handlers (NetworkServer)"); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.Ready, new QSBNetworkMessageDelegate(OnClientReadyMessage)); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.Command, new QSBNetworkMessageDelegate(OnCommandMessage)); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.LocalPlayerTransform, new QSBNetworkMessageDelegate(QSBNetworkTransform.HandleTransform)); //m_SimpleServerSimple.RegisterHandlerSafe((short)16, new QSBNetworkMessageDelegate(NetworkTransformChild.HandleChildTransform)); - m_SimpleServerSimple.RegisterHandlerSafe((short)38, new QSBNetworkMessageDelegate(OnRemovePlayerMessage)); - m_SimpleServerSimple.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); - m_SimpleServerSimple.RegisterHandlerSafe((short)41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); - m_SimpleServerSimple.RegisterHandlerSafe((short)42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.RemovePlayer, new QSBNetworkMessageDelegate(OnRemovePlayerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.Animation, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationServerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.AnimationParameters, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersServerMessage)); + m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.AnimationTrigger, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerServerMessage)); maxPacketSize = hostTopology.DefaultConfig.PacketSize; } @@ -237,70 +238,6 @@ internal bool InternalListen(string ipAddress, int serverPort) return true; } - public static QSBNetworkClient BecomeHost(QSBNetworkClient oldClient, int port, int oldConnectionId, QSBPeerInfoMessage[] peers) - { - return instance.BecomeHostInternal(oldClient, port, oldConnectionId, peers); - } - - internal QSBNetworkClient BecomeHostInternal(QSBNetworkClient oldClient, int port, int oldConnectionId, QSBPeerInfoMessage[] peers) - { - QSBNetworkClient result; - if (active) - { - if (LogFilter.logError) - { - Debug.LogError("BecomeHost already a server."); - } - result = null; - } - else if (!QSBNetworkClient.active) - { - if (LogFilter.logError) - { - Debug.LogError("BecomeHost NetworkClient not active."); - } - result = null; - } - else - { - Configure(hostTopology); - Debug.Log("BecomeHost Listen on " + port); - if (!Listen(port)) - { - if (LogFilter.logError) - { - Debug.LogError("BecomeHost bind failed."); - } - return null; - } - foreach (var networkIdentity in QSBClientScene.Objects.Values) - { - if (!(networkIdentity == null) && !(networkIdentity.gameObject == null)) - { - QSBNetworkIdentity.AddNetworkId(networkIdentity.NetId.Value); - m_NetworkScene.SetLocalObject(networkIdentity.NetId, networkIdentity.gameObject, false, false); - networkIdentity.OnStartServer(true); - } - } - Debug.Log("NetworkServer BecomeHost done. oldConnectionId:" + oldConnectionId); - RegisterMessageHandlers(); - if (!QSBNetworkClient.RemoveClient(oldClient)) - { - if (LogFilter.logError) - { - Debug.LogError("BecomeHost failed to remove client"); - } - } - Debug.Log("BecomeHost localClient ready"); - var networkClient = QSBClientScene.ReconnectLocalServer(); - QSBClientScene.Ready(networkClient.connection); - QSBClientScene.SetReconnectId(oldConnectionId, peers); - QSBClientScene.AddPlayer(QSBClientScene.readyConnection, 0); - result = networkClient; - } - return result; - } - private void InternalSetMaxDelay(float seconds) { for (var i = 0; i < connections.Count; i++) @@ -324,8 +261,10 @@ internal int AddLocalClient(QSBLocalClient localClient) } else { - m_LocalConnection = new QSBULocalConnectionToClient(localClient); - m_LocalConnection.connectionId = 0; + m_LocalConnection = new QSBULocalConnectionToClient(localClient) + { + connectionId = 0 + }; m_SimpleServerSimple.SetConnectionAtIndex(m_LocalConnection); m_LocalConnectionsFakeList.Add(m_LocalConnection); m_LocalConnection.InvokeHandlerNoData(32); @@ -907,31 +846,6 @@ public static void SendToClient(int connectionId, short msgType, QSBMessageBase } } - public static bool ReplacePlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) - { - QSBNetworkIdentity networkIdentity; - if (GetNetworkIdentity(player, out networkIdentity)) - { - networkIdentity.SetDynamicAssetId(assetId); - } - return instance.InternalReplacePlayerForConnection(conn, player, playerControllerId); - } - - public static bool ReplacePlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) - { - return instance.InternalReplacePlayerForConnection(conn, player, playerControllerId); - } - - public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId, NetworkHash128 assetId) - { - QSBNetworkIdentity networkIdentity; - if (GetNetworkIdentity(player, out networkIdentity)) - { - networkIdentity.SetDynamicAssetId(assetId); - } - return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); - } - public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) { return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); @@ -1716,112 +1630,6 @@ public static GameObject FindLocalObject(NetworkInstanceId netId) return instance.m_NetworkScene.FindLocalObject(netId); } - public static Dictionary GetConnectionStats() - { - var dictionary = new Dictionary(); - for (var i = 0; i < connections.Count; i++) - { - var networkConnection = connections[i]; - if (networkConnection != null) - { - foreach (short key in networkConnection.PacketStats.Keys) - { - if (dictionary.ContainsKey(key)) - { - var packetStat = dictionary[key]; - packetStat.count += networkConnection.PacketStats[key].count; - packetStat.bytes += networkConnection.PacketStats[key].bytes; - dictionary[key] = packetStat; - } - else - { - dictionary[key] = new QSBNetworkConnection.PacketStat(networkConnection.PacketStats[key]); - } - } - } - } - return dictionary; - } - - public static void ResetConnectionStats() - { - for (var i = 0; i < connections.Count; i++) - { - var networkConnection = connections[i]; - if (networkConnection != null) - { - networkConnection.ResetStats(); - } - } - } - - public static bool AddExternalConnection(QSBNetworkConnection conn) - { - return instance.AddExternalConnectionInternal(conn); - } - - private bool AddExternalConnectionInternal(QSBNetworkConnection conn) - { - bool result; - if (conn.connectionId < 0) - { - result = false; - } - else if (conn.connectionId < connections.Count && connections[conn.connectionId] != null) - { - if (LogFilter.logError) - { - Debug.LogError("AddExternalConnection failed, already connection for id:" + conn.connectionId); - } - result = false; - } - else - { - if (LogFilter.logDebug) - { - Debug.Log("AddExternalConnection external connection " + conn.connectionId); - } - m_SimpleServerSimple.SetConnectionAtIndex(conn); - m_ExternalConnections.Add(conn.connectionId); - conn.InvokeHandlerNoData(32); - result = true; - } - return result; - } - - public static void RemoveExternalConnection(int connectionId) - { - instance.RemoveExternalConnectionInternal(connectionId); - } - - private bool RemoveExternalConnectionInternal(int connectionId) - { - bool result; - if (!m_ExternalConnections.Contains(connectionId)) - { - if (LogFilter.logError) - { - Debug.LogError("RemoveExternalConnection failed, no connection for id:" + connectionId); - } - result = false; - } - else - { - if (LogFilter.logDebug) - { - Debug.Log("RemoveExternalConnection external connection " + connectionId); - } - var networkConnection = m_SimpleServerSimple.FindConnection(connectionId); - if (networkConnection != null) - { - networkConnection.RemoveObservers(); - } - m_SimpleServerSimple.RemoveConnectionAtIndex(connectionId); - result = true; - } - return result; - } - private static bool ValidateSceneObject(QSBNetworkIdentity netId) { return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 9f96dfa30..034ab304d 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -94,6 +94,7 @@ + From 96ec06e40da03fe6f8ab7b8588d7fa2c11f10b1c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 13 Dec 2020 22:39:09 +0000 Subject: [PATCH 155/207] Update QSBEvent.cs --- QSB/EventsCore/QSBEvent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/EventsCore/QSBEvent.cs index 51d97a22e..5f0908023 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/EventsCore/QSBEvent.cs @@ -44,7 +44,7 @@ private void Send(T message) private void OnReceive(T message) { - if (QSB.IsServer) + if (QSB.IsServer && !message.OnlySendToServer) { _eventHandler.SendToAll(message); } From b13c4be8dd79c890b174243bc10990144ec2fb8c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:04:16 +0000 Subject: [PATCH 156/207] added automatic syncobject adding --- QSB/Animation/AnimationSync.cs | 8 ++++---- QSB/Instruments/InstrumentsManager.cs | 7 ++----- QSB/Player/PlayerSyncObject.cs | 4 ++++ QSB/TransformSync/TransformSync.cs | 6 ++++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index b18723c9e..5d8eea6ed 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -31,8 +31,9 @@ public class AnimationSync : PlayerSyncObject public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType; - private void Awake() + protected override void Awake() { + base.Awake(); _anim = gameObject.AddComponent(); _netAnim = gameObject.AddComponent(); _netAnim.enabled = false; @@ -41,8 +42,9 @@ private void Awake() QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); } - private void OnDestroy() + protected override void OnDestroy() { + base.OnDestroy(); if (_playerController == null) { return; @@ -79,8 +81,6 @@ private void InitCommon(Transform body) Mirror.Init(_anim, _bodyAnim); } - QSBPlayerManager.PlayerSyncObjects.Add(this); - for (var i = 0; i < _anim.parameterCount; i++) { _netAnim.SetParameterAutoSend(i, true); diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index e430911bc..d85354dad 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -27,20 +27,17 @@ public void InitLocal(Transform root) QSBInputManager.ExitTaunt += () => ReturnToPlayer(); QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - - QSBPlayerManager.PlayerSyncObjects.Add(this); } public void InitRemote(Transform root) { rootObj = root; QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); - - QSBPlayerManager.PlayerSyncObjects.Add(this); } - private void OnDestroy() + protected override void OnDestroy() { + base.Awake(); if (!IsLocalPlayer) { return; diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index df7d6fb99..a78762749 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -7,5 +7,9 @@ public abstract class PlayerSyncObject : QSBNetworkBehaviour public uint AttachedNetId => NetIdentity?.NetId.Value ?? uint.MaxValue; public uint PlayerId => NetIdentity.RootIdentity?.NetId.Value ?? NetIdentity.NetId.Value; public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); + + protected virtual void Awake() => QSBPlayerManager.PlayerSyncObjects.Add(this); + + protected virtual void OnDestroy() => QSBPlayerManager.PlayerSyncObjects.Remove(this); } } \ No newline at end of file diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 3044c12d6..93b8489fd 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -22,15 +22,17 @@ public abstract class TransformSync : PlayerSyncObject private Quaternion _rotationSmoothVelocity; private bool _isVisible; - protected virtual void Awake() + protected override void Awake() { + base.Awake(); QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } - protected virtual void OnDestroy() + protected override void OnDestroy() { + base.OnDestroy(); DebugLog.DebugWrite($"destroy of {PlayerId}.{GetType().Name}"); QSBPlayerManager.PlayerSyncObjects.Remove(this); if (!HasAuthority && SyncedTransform != null) From 70c80ae02194d3988d6b4276adc3c83912b6ca4d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:06:35 +0000 Subject: [PATCH 157/207] cleanup --- QSB/TransformSync/TransformSync.cs | 2 -- QuantumUNET/QSBClientScene.cs | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 93b8489fd..1bd7c93ef 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -25,7 +25,6 @@ public abstract class TransformSync : PlayerSyncObject protected override void Awake() { base.Awake(); - QSBPlayerManager.PlayerSyncObjects.Add(this); DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } @@ -34,7 +33,6 @@ protected override void OnDestroy() { base.OnDestroy(); DebugLog.DebugWrite($"destroy of {PlayerId}.{GetType().Name}"); - QSBPlayerManager.PlayerSyncObjects.Remove(this); if (!HasAuthority && SyncedTransform != null) { Destroy(SyncedTransform.gameObject); diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 15df0c77c..0973f254c 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,5 +1,4 @@ -using OWML.Logging; -using QuantumUNET.Components; +using QuantumUNET.Components; using QuantumUNET.Messages; using System.Collections.Generic; using UnityEngine; From 04a69f66f3750437a257eb82c2d51d7ce51db76f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:12:44 +0000 Subject: [PATCH 158/207] more cleanup --- .../Events/DialogueConditionEvent.cs | 1 - QSB/Player/Events/PlayerStatesRequestEvent.cs | 8 ++------ QSB/Tools/PlayerToolsManager.cs | 1 - 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs index bd93956fe..4d3caad51 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs @@ -34,7 +34,6 @@ public override void OnReceiveRemote(bool server, DialogueConditionMessage messa { QSBWorldSync.SetDialogueCondition(message.ConditionName, message.ConditionState); } - DebugLog.DebugWrite($"set {message.ConditionName} to {message.ConditionState}"); DialogueConditionManager.SharedInstance.SetConditionState(message.ConditionName, message.ConditionState); } } diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index f668696e4..2972cea07 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -18,15 +18,12 @@ public class PlayerStatesRequestEvent : QSBEvent private PlayerMessage CreateMessage() => new PlayerMessage { - AboutId = LocalPlayerId + AboutId = LocalPlayerId, + OnlySendToServer = true }; public override void OnReceiveRemote(bool server, PlayerMessage message) { - if (!server) - { - return; - } DebugLog.DebugWrite($"Get state request from {message.FromId}"); GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); foreach (var item in QSBPlayerManager.GetSyncObjects() @@ -37,7 +34,6 @@ public override void OnReceiveRemote(bool server, PlayerMessage message) foreach (var condition in QSBWorldSync.DialogueConditions) { - DebugLog.DebugWrite($"SENDING STATE OF CONDITION {condition.Key}"); GlobalMessenger.FireEvent(EventNames.DialogueCondition, condition.Key, condition.Value); } } diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index ac5cfa6f8..078ee0cf6 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -20,7 +20,6 @@ public class PlayerToolsManager public static void Init(Transform camera) { - DebugLog.DebugWrite($"TOOLS INIT ON {camera.name}"); CreateStowTransforms(camera); _playerToolsMaterial = GameObject.Find("Props_HEA_ProbeLauncher_ProbeCamera/ProbeLauncherChassis").GetComponent().materials[0]; From 49b57268fd8cb4af1711dd7ea8f4cd55e807e82c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:15:04 +0000 Subject: [PATCH 159/207] Update TransformSync.cs --- QSB/TransformSync/TransformSync.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 1bd7c93ef..d8d65c0c6 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -32,7 +32,6 @@ protected override void Awake() protected override void OnDestroy() { base.OnDestroy(); - DebugLog.DebugWrite($"destroy of {PlayerId}.{GetType().Name}"); if (!HasAuthority && SyncedTransform != null) { Destroy(SyncedTransform.gameObject); From 402ad290ec5d0315e7261141aed2ffa38f89e249 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:24:52 +0000 Subject: [PATCH 160/207] eventscore -> events --- QSB/Animation/AnimControllerPatch.cs | 4 ++-- QSB/Animation/AnimationSync.cs | 6 +++--- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 +- QSB/Animation/Events/CrouchEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 4 ++-- QSB/ConversationSync/ConversationManager.cs | 4 ++-- QSB/ConversationSync/ConversationPatches.cs | 14 +++++++------- QSB/ConversationSync/Events/ConversationEvent.cs | 2 +- .../Events/ConversationStartEndEvent.cs | 4 ++-- QSB/DeathSync/DeathPatches.cs | 6 +++--- QSB/DeathSync/Events/PlayerDeathEvent.cs | 2 +- QSB/DeathSync/PreventShipDestruction.cs | 10 +++++----- QSB/DeathSync/RespawnOnDeath.cs | 6 +++--- .../Events/DialogueConditionEvent.cs | 3 +-- QSB/ElevatorSync/ElevatorPatches.cs | 4 ++-- QSB/ElevatorSync/Events/ElevatorEvent.cs | 2 +- QSB/ElevatorSync/QSBElevator.cs | 2 +- QSB/{EventsCore => Events}/EventNames.cs | 2 +- QSB/{EventsCore => Events}/EventType.cs | 2 +- QSB/{EventsCore => Events}/IQSBEvent.cs | 2 +- QSB/{EventsCore => Events}/QSBEvent.cs | 10 +++++----- QSB/{EventsCore => Events}/QSBEventManager.cs | 2 +- QSB/GeyserSync/Events/GeyserEvent.cs | 2 +- QSB/GeyserSync/GeyserManager.cs | 2 +- QSB/GeyserSync/QSBGeyser.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 8 ++++---- QSB/MessagesCore/MessageHandler.cs | 2 +- QSB/OrbSync/Events/OrbSlotEvent.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 2 +- QSB/OrbSync/OrbManager.cs | 4 ++-- QSB/OrbSync/OrbPatches.cs | 6 +++--- QSB/OrbSync/QSBOrbSlot.cs | 4 ++-- QSB/Player/Events/PlayerJoinEvent.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/Player/Events/PlayerSectorEvent.cs | 4 ++-- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/Player/Events/ServerSendPlayerStatesEvent.cs | 4 ++-- QSB/Player/PlayerInfo.cs | 10 ++-------- QSB/Player/PlayerSyncObject.cs | 1 - QSB/Player/QSBPlayerManager.cs | 13 +++---------- QSB/QSB.csproj | 12 ++++++------ QSB/{QSB.cs => QSBCore.cs} | 2 +- QSB/QSBNetworkLobby.cs | 2 +- QSB/QSBNetworkManager.cs | 14 +++++++------- QSB/SectorSync/SectorSync.cs | 2 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 2 +- QSB/TimeSync/PreserveTimeScale.cs | 2 +- QSB/TimeSync/TimeSyncUI.cs | 4 ++-- QSB/TimeSync/WakeUpPatches.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 8 ++++---- QSB/Tools/Events/PlayerFlashlightEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 2 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 2 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 2 +- QSB/Tools/PlayerToolsManager.cs | 2 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 2 +- QSB/TransformSync/PlayerCameraSync.cs | 2 +- QSB/TransformSync/PlayerProbeSync.cs | 2 +- QSB/Utility/DebugActions.cs | 2 +- QSB/Utility/DebugLog.cs | 4 ++-- QSB/WorldSync/QSBWorldSync.cs | 2 +- 62 files changed, 114 insertions(+), 129 deletions(-) rename QSB/{EventsCore => Events}/EventNames.cs (98%) rename QSB/{EventsCore => Events}/EventType.cs (94%) rename QSB/{EventsCore => Events}/IQSBEvent.cs (75%) rename QSB/{EventsCore => Events}/QSBEvent.cs (81%) rename QSB/{EventsCore => Events}/QSBEventManager.cs (98%) rename QSB/{QSB.cs => QSBCore.cs} (98%) diff --git a/QSB/Animation/AnimControllerPatch.cs b/QSB/Animation/AnimControllerPatch.cs index 00f411ff3..5bbfa621d 100644 --- a/QSB/Animation/AnimControllerPatch.cs +++ b/QSB/Animation/AnimControllerPatch.cs @@ -9,8 +9,8 @@ public static class AnimControllerPatch public static void Init() { - QSB.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); - QSB.Helper.Events.Event += OnEvent; + QSBCore.Helper.Events.Subscribe(OWML.Common.Events.BeforeStart); + QSBCore.Helper.Events.Event += OnEvent; } private static void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 5d8eea6ed..6bb0a8d4c 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.Events; using QSB.Player; using QSB.Utility; using QuantumUNET.Components; @@ -58,7 +58,7 @@ protected override void OnDestroy() private void LoadControllers() { - var bundle = QSB.InstrumentAssetBundle; + var bundle = QSBCore.InstrumentAssetBundle; _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; _riebeckController = bundle.LoadAsset("assets/Riebeck/Traveller_Riebeck.controller") as RuntimeAnimatorController; } @@ -129,7 +129,7 @@ public void InitRemote(Transform body) InitCrouchSync(); var ikSync = body.gameObject.AddComponent(); - QSB.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); + QSBCore.Helper.Events.Unity.RunWhen(() => Player.Camera != null, () => ikSync.Init(Player.Camera.transform)); } private void InitCrouchSync() diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 0fe35ee7f..247813776 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Instruments; using QSB.MessagesCore; using QSB.Player; diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index 3a46da55b..7829abe16 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.MessagesCore; using QSB.Player; diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index d9f981b0b..438df5fe3 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.Player; @@ -34,7 +34,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); - if (!QSB.HasWokenUp) + if (!QSBCore.HasWokenUp) { return; } diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 4f9dfa21d..486bbb69f 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.Events; using QSB.Player; using QSB.Utility; using QSB.WorldSync; @@ -22,7 +22,7 @@ private void Start() { Instance = this; - ConversationAssetBundle = QSB.Helper.Assets.LoadBundle("assets/conversation"); + ConversationAssetBundle = QSBCore.Helper.Assets.LoadBundle("assets/conversation"); BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); // TODO : make dynamic so it can be different sizes! diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index c895e89b3..061fecbe9 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -58,7 +58,7 @@ public static void GetNextPage(string ____name, List ____listPagesToDisp { var key = ____name + ____listPagesToDisplay[____currentPage]; // Sending key so translation can be done on client side - should make different language-d clients compatible - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, + QSBCore.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.LocalPlayer.CurrentDialogueID != -1, () => ConversationManager.Instance.SendCharacterDialogue(QSBPlayerManager.LocalPlayer.CurrentDialogueID, key)); } @@ -103,12 +103,12 @@ public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) public override void DoPatches() { - QSB.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); - QSB.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); - QSB.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); - QSB.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); - QSB.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); + QSBCore.Helper.HarmonyHelper.AddPostfix("GetNextPage", typeof(ConversationPatches), nameof(GetNextPage)); + QSBCore.Helper.HarmonyHelper.AddPrefix("InputDialogueOption", typeof(ConversationPatches), nameof(InputDialogueOption)); + QSBCore.Helper.HarmonyHelper.AddPostfix("StartConversation", typeof(ConversationPatches), nameof(StartConversation)); + QSBCore.Helper.HarmonyHelper.AddPrefix("EndConversation", typeof(ConversationPatches), nameof(EndConversation)); + QSBCore.Helper.HarmonyHelper.AddPrefix("OnAnimatorIK", typeof(ConversationPatches), nameof(OnAnimatorIK)); + QSBCore.Helper.HarmonyHelper.AddPrefix("OnZoneExit", typeof(ConversationPatches), nameof(OnZoneExit)); } } } \ No newline at end of file diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 7dc22cee8..5caf6f9f2 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Player; using QSB.WorldSync; diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 2d6640a51..87db15de6 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.Events; using QSB.Player; using QSB.Utility; using QSB.WorldSync; @@ -11,7 +11,7 @@ namespace QSB.ConversationSync.Events { public class ConversationStartEndEvent : QSBEvent { - public override EventsCore.EventType Type => EventsCore.EventType.ConversationStartEnd; + public override QSB.Events.EventType Type => QSB.Events.EventType.ConversationStartEnd; public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBConversationStartEnd, Handler); public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBConversationStartEnd, Handler); diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index 41e0e0f2f..d3a45a359 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using System.Linq; namespace QSB.DeathSync @@ -26,8 +26,8 @@ public static bool PreFinishDeathSequence(DeathType deathType) public override void DoPatches() { - QSB.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); - QSB.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); + QSBCore.Helper.HarmonyHelper.AddPrefix("KillPlayer", typeof(DeathPatches), nameof(PreFinishDeathSequence)); + QSBCore.Helper.HarmonyHelper.AddPostfix("KillPlayer", typeof(DeathPatches), nameof(BroadcastDeath)); } } } \ No newline at end of file diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 9a68c9e1b..888d04207 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.MessagesCore; using QSB.Player; using QSB.Utility; diff --git a/QSB/DeathSync/PreventShipDestruction.cs b/QSB/DeathSync/PreventShipDestruction.cs index 1f8c81304..1d38d5f9e 100644 --- a/QSB/DeathSync/PreventShipDestruction.cs +++ b/QSB/DeathSync/PreventShipDestruction.cs @@ -10,13 +10,13 @@ public class PreventShipDestruction : MonoBehaviour { private void Awake() { - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + QSBCore.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); + QSBCore.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); - QSB.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); + QSBCore.Helper.HarmonyHelper.EmptyMethod("OnPressInteract"); - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); - QSB.Helper.Events.Event += OnEvent; + QSBCore.Helper.Events.Subscribe(OWML.Common.Events.AfterAwake); + QSBCore.Helper.Events.Event += OnEvent; } private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index cc0388e90..cb0231b3e 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -1,6 +1,6 @@ using OWML.Common; using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.Events; using QSB.Utility; using System.Linq; using UnityEngine; @@ -32,8 +32,8 @@ private void Awake() { Instance = this; - QSB.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); - QSB.Helper.Events.Event += OnEvent; + QSBCore.Helper.Events.Subscribe(OWML.Common.Events.AfterStart); + QSBCore.Helper.Events.Event += OnEvent; } private void OnEvent(MonoBehaviour behaviour, OWML.Common.Events ev) diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs index 4d3caad51..13df65868 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs @@ -1,5 +1,4 @@ -using QSB.EventsCore; -using QSB.Utility; +using QSB.Events; using QSB.WorldSync; namespace QSB.DialogueConditionSync.Events diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 8a02703ba..410829eb1 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -1,5 +1,5 @@ using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.Events; namespace QSB.ElevatorSync { @@ -16,7 +16,7 @@ public static void StartLift(Elevator __instance) public override void DoPatches() { - QSB.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); + QSBCore.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); } } } \ No newline at end of file diff --git a/QSB/ElevatorSync/Events/ElevatorEvent.cs b/QSB/ElevatorSync/Events/ElevatorEvent.cs index b4bee49a3..ccb96c0d5 100644 --- a/QSB/ElevatorSync/Events/ElevatorEvent.cs +++ b/QSB/ElevatorSync/Events/ElevatorEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.WorldSync; using QSB.WorldSync.Events; diff --git a/QSB/ElevatorSync/QSBElevator.cs b/QSB/ElevatorSync/QSBElevator.cs index 8b2ade63a..1f43bfa93 100644 --- a/QSB/ElevatorSync/QSBElevator.cs +++ b/QSB/ElevatorSync/QSBElevator.cs @@ -18,7 +18,7 @@ public void Init(Elevator elevator, int id) { _elevator = elevator; ObjectId = id; - QSB.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); + QSBCore.Helper.Events.Unity.RunWhen(() => _elevator.GetValue("_interactVolume") != null, InitValues); } private void InitValues() diff --git a/QSB/EventsCore/EventNames.cs b/QSB/Events/EventNames.cs similarity index 98% rename from QSB/EventsCore/EventNames.cs rename to QSB/Events/EventNames.cs index 1a861f718..6eba9a070 100644 --- a/QSB/EventsCore/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -1,4 +1,4 @@ -namespace QSB.EventsCore +namespace QSB.Events { public static class EventNames { diff --git a/QSB/EventsCore/EventType.cs b/QSB/Events/EventType.cs similarity index 94% rename from QSB/EventsCore/EventType.cs rename to QSB/Events/EventType.cs index 87b6d26b9..31c8b9c48 100644 --- a/QSB/EventsCore/EventType.cs +++ b/QSB/Events/EventType.cs @@ -1,4 +1,4 @@ -namespace QSB.EventsCore +namespace QSB.Events { public enum EventType { diff --git a/QSB/EventsCore/IQSBEvent.cs b/QSB/Events/IQSBEvent.cs similarity index 75% rename from QSB/EventsCore/IQSBEvent.cs rename to QSB/Events/IQSBEvent.cs index f215c378b..63ad403b9 100644 --- a/QSB/EventsCore/IQSBEvent.cs +++ b/QSB/Events/IQSBEvent.cs @@ -1,4 +1,4 @@ -namespace QSB.EventsCore +namespace QSB.Events { public interface IQSBEvent { diff --git a/QSB/EventsCore/QSBEvent.cs b/QSB/Events/QSBEvent.cs similarity index 81% rename from QSB/EventsCore/QSBEvent.cs rename to QSB/Events/QSBEvent.cs index 5f0908023..cb4c4a065 100644 --- a/QSB/EventsCore/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -3,7 +3,7 @@ using QSB.TransformSync; using QuantumUNET; -namespace QSB.EventsCore +namespace QSB.Events { public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() { @@ -27,7 +27,7 @@ public virtual void OnReceiveLocal(bool server, T message) { } public void SendEvent(T message) { message.FromId = QSBPlayerManager.LocalPlayerId; - QSB.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); + QSBCore.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); } private void Send(T message) @@ -44,18 +44,18 @@ private void Send(T message) private void OnReceive(T message) { - if (QSB.IsServer && !message.OnlySendToServer) + if (QSBCore.IsServer && !message.OnlySendToServer) { _eventHandler.SendToAll(message); } if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { - OnReceiveLocal(QSB.IsServer, message); + OnReceiveLocal(QSBCore.IsServer, message); return; } - OnReceiveRemote(QSB.IsServer, message); + OnReceiveRemote(QSBCore.IsServer, message); } } } \ No newline at end of file diff --git a/QSB/EventsCore/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs similarity index 98% rename from QSB/EventsCore/QSBEventManager.cs rename to QSB/Events/QSBEventManager.cs index 73f3759f0..1033e3a8c 100644 --- a/QSB/EventsCore/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -13,7 +13,7 @@ using QSB.Utility; using System.Collections.Generic; -namespace QSB.EventsCore +namespace QSB.Events { public static class QSBEventManager { diff --git a/QSB/GeyserSync/Events/GeyserEvent.cs b/QSB/GeyserSync/Events/GeyserEvent.cs index 33eb24c3f..5eb10a80c 100644 --- a/QSB/GeyserSync/Events/GeyserEvent.cs +++ b/QSB/GeyserSync/Events/GeyserEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.WorldSync; using QSB.WorldSync.Events; diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index 2fdee0028..7d7adf389 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -35,7 +35,7 @@ public void OnPatchType(QSBPatchTypes type) { return; } - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + QSBCore.Helper.HarmonyHelper.EmptyMethod("Update"); } } } \ No newline at end of file diff --git a/QSB/GeyserSync/QSBGeyser.cs b/QSB/GeyserSync/QSBGeyser.cs index cc45cc731..934812560 100644 --- a/QSB/GeyserSync/QSBGeyser.cs +++ b/QSB/GeyserSync/QSBGeyser.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.WorldSync; using QuantumUNET; diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index d85354dad..e94a5fbb9 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -1,6 +1,6 @@ using OWML.Common; using QSB.Animation; -using QSB.EventsCore; +using QSB.Events; using QSB.Instruments.QSBCamera; using QSB.Player; using QSB.Utility; @@ -26,13 +26,13 @@ public void InitLocal(Transform root) QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); QSBInputManager.ExitTaunt += () => ReturnToPlayer(); - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); } public void InitRemote(Transform root) { rootObj = root; - QSB.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); + QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); } protected override void OnDestroy() @@ -52,7 +52,7 @@ protected override void OnDestroy() private void SetupInstruments() { - var bundle = QSB.InstrumentAssetBundle; + var bundle = QSBCore.InstrumentAssetBundle; ChertDrum = MakeChertDrum(bundle); } diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/MessagesCore/MessageHandler.cs index 606209a4a..e81af7ae1 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/MessagesCore/MessageHandler.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Utility; using QuantumUNET; using QuantumUNET.Components; diff --git a/QSB/OrbSync/Events/OrbSlotEvent.cs b/QSB/OrbSync/Events/OrbSlotEvent.cs index 5d86bee32..d8b0e0368 100644 --- a/QSB/OrbSync/Events/OrbSlotEvent.cs +++ b/QSB/OrbSync/Events/OrbSlotEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.WorldSync; namespace QSB.OrbSync.Events diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 48523295c..583958e30 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.EventsCore; +using QSB.Events; using QSB.Utility; using QSB.WorldSync; using QSB.WorldSync.Events; diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 0d4c63077..878f81db7 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -42,7 +42,7 @@ public void BuildOrbs() DebugLog.DebugWrite($"Finished orb build with {QSBWorldSync.OldOrbList.Count} orbs.", MessageType.Success); } - public void QueueBuildSlots() => QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, BuildOrbSlots); - public void QueueBuildOrbs() => QSB.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); + public void QueueBuildSlots() => QSBCore.Helper.Events.Unity.RunWhen(() => QSBCore.HasWokenUp, BuildOrbSlots); + public void QueueBuildOrbs() => QSBCore.Helper.Events.Unity.RunWhen(() => QSBNetworkServer.active, BuildOrbs); } } \ No newline at end of file diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index a3bf26ecf..8deea8dc3 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.WorldSync; using UnityEngine; @@ -56,8 +56,8 @@ public static bool CheckOrbCollision(ref bool __result, NomaiInterfaceSlot __ins public override void DoPatches() { - QSB.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); - QSB.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); + QSBCore.Helper.HarmonyHelper.AddPostfix("StartDragFromPosition", typeof(OrbPatches), nameof(StartDragCallEvent)); + QSBCore.Helper.HarmonyHelper.AddPrefix("CheckOrbCollision", typeof(OrbPatches), nameof(CheckOrbCollision)); } } } \ No newline at end of file diff --git a/QSB/OrbSync/QSBOrbSlot.cs b/QSB/OrbSync/QSBOrbSlot.cs index 6914215d7..4f8fa5ade 100644 --- a/QSB/OrbSync/QSBOrbSlot.cs +++ b/QSB/OrbSync/QSBOrbSlot.cs @@ -1,5 +1,5 @@ using OWML.ModHelper.Events; -using QSB.EventsCore; +using QSB.Events; using QSB.WorldSync; namespace QSB.OrbSync @@ -21,7 +21,7 @@ public void Init(NomaiInterfaceSlot slot, int id) public void HandleEvent(bool state, int orbId) { - if (QSB.HasWokenUp) + if (QSBCore.HasWokenUp) { GlobalMessenger.FireEvent(EventNames.QSBOrbSlot, ObjectId, orbId, state); } diff --git a/QSB/Player/Events/PlayerJoinEvent.cs b/QSB/Player/Events/PlayerJoinEvent.cs index e46bb6572..47ad52517 100644 --- a/QSB/Player/Events/PlayerJoinEvent.cs +++ b/QSB/Player/Events/PlayerJoinEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.EventsCore; +using QSB.Events; using QSB.Utility; namespace QSB.Player.Events diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 4ad4c439c..cec6b65f6 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.SectorSync; using QSB.Utility; diff --git a/QSB/Player/Events/PlayerSectorEvent.cs b/QSB/Player/Events/PlayerSectorEvent.cs index 1effc12f9..eec4de9e1 100644 --- a/QSB/Player/Events/PlayerSectorEvent.cs +++ b/QSB/Player/Events/PlayerSectorEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.EventsCore; +using QSB.Events; using QSB.SectorSync; using QSB.Utility; using QSB.WorldSync; @@ -38,7 +38,7 @@ public override void OnReceiveRemote(bool server, WorldObjectMessage message) var transformSync = QSBPlayerManager.GetSyncObject(message.AboutId); - QSB.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, + QSBCore.Helper.Events.Unity.RunWhen(() => transformSync?.SyncedTransform != null, () => transformSync?.SetReferenceSector(sector)); } } diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 2972cea07..b37086b48 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.SectorSync; using QSB.Utility; diff --git a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs index 658b0da3a..67584c0c2 100644 --- a/QSB/Player/Events/ServerSendPlayerStatesEvent.cs +++ b/QSB/Player/Events/ServerSendPlayerStatesEvent.cs @@ -1,5 +1,5 @@ using OWML.Common; -using QSB.EventsCore; +using QSB.Events; using QSB.Utility; namespace QSB.Player.Events @@ -31,7 +31,7 @@ private void Handler() public override void OnReceiveRemote(bool server, PlayerStateMessage message) { DebugLog.DebugWrite($"Received playerstate of player ID {message.AboutId}", MessageType.Info); - QSB.Helper.Events.Unity.RunWhen( + QSBCore.Helper.Events.Unity.RunWhen( () => QSBPlayerManager.GetSyncObject(message.AboutId) != null, () => QSBPlayerManager.HandleFullStateMessage(message)); } diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 22947e911..37990b512 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -16,12 +16,10 @@ public class PlayerInfo // Body Objects public GameObject Camera { get; set; } - public GameObject Body { get; set; } // Tools public GameObject ProbeBody { get; set; } - public QSBProbe Probe { get; set; } public QSBFlashlight FlashLight => Camera?.GetComponentInChildren(); public QSBTool Signalscope => GetToolByType(ToolType.Signalscope); @@ -30,12 +28,10 @@ public class PlayerInfo // Conversation public int CurrentDialogueID { get; set; } - public GameObject CurrentDialogueBox { get; set; } // Animation public AnimationSync AnimationSync => QSBPlayerManager.GetSyncObject(PlayerId); - public bool PlayingInstrument => AnimationSync.CurrentType != AnimationType.PlayerSuited && AnimationSync.CurrentType != AnimationType.PlayerUnsuited; @@ -69,14 +65,12 @@ public void UpdateStateObjects() Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); - QSB.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, + QSBCore.Helper.Events.Unity.RunWhen(() => QSBPlayerManager.GetSyncObject(PlayerId) != null, () => QSBPlayerManager.GetSyncObject(PlayerId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); } public bool GetState(State state) - { - return FlagsHelper.IsSet(State, state); - } + => FlagsHelper.IsSet(State, state); private QSBTool GetToolByType(ToolType type) { diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index a78762749..8ffccffed 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -9,7 +9,6 @@ public abstract class PlayerSyncObject : QSBNetworkBehaviour public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); protected virtual void Awake() => QSBPlayerManager.PlayerSyncObjects.Add(this); - protected virtual void OnDestroy() => QSBPlayerManager.PlayerSyncObjects.Remove(this); } } \ No newline at end of file diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index de010166f..596b0773e 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -12,7 +12,6 @@ public static class QSBPlayerManager public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.NetIdentity?.NetId.Value ?? uint.MaxValue; public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); public static List PlayerList { get; } = new List(); - public static List PlayerSyncObjects { get; } = new List(); public static PlayerInfo GetPlayer(uint id) @@ -45,9 +44,7 @@ public static void RemoveAllPlayers() } public static bool PlayerExists(uint id) - { - return id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); - } + => id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); public static void HandleFullStateMessage(PlayerStateMessage message) { @@ -62,14 +59,10 @@ public static void HandleFullStateMessage(PlayerStateMessage message) } public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - { - return PlayerSyncObjects.OfType().Where(x => x != null); - } + => PlayerSyncObjects.OfType().Where(x => x != null); public static T GetSyncObject(uint id) where T : PlayerSyncObject - { - return GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); - } + => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); public static bool IsBelongingToLocalPlayer(uint id) { diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 133079195..b3dc72378 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -142,9 +142,9 @@ - + - + @@ -184,7 +184,7 @@ - + @@ -201,13 +201,13 @@ - + - + @@ -224,7 +224,7 @@ - + diff --git a/QSB/QSB.cs b/QSB/QSBCore.cs similarity index 98% rename from QSB/QSB.cs rename to QSB/QSBCore.cs index 9b61ffaa6..0ee477fca 100644 --- a/QSB/QSB.cs +++ b/QSB/QSBCore.cs @@ -16,7 +16,7 @@ namespace QSB { - public class QSB : ModBehaviour + public class QSBCore : ModBehaviour { public static IModBehaviour ModBehaviour { get; private set; } public static IModHelper Helper { get; private set; } diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index 5f07a90aa..5cb209e5e 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -40,7 +40,7 @@ private void Awake() { PlayerName = GetPlayerName(); CanEditName = true; - QSB.Helper.HarmonyHelper.EmptyMethod("Update"); + QSBCore.Helper.HarmonyHelper.EmptyMethod("Update"); } private string GetPlayerName() diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index cae6d7802..9b6ed1021 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -3,7 +3,7 @@ using QSB.Animation; using QSB.DeathSync; using QSB.ElevatorSync; -using QSB.EventsCore; +using QSB.Events; using QSB.GeyserSync; using QSB.Instruments; using QSB.OrbSync; @@ -46,7 +46,7 @@ private void Awake() Instance = this; _lobby = gameObject.AddComponent(); - _assetBundle = QSB.NetworkAssetBundle; + _assetBundle = QSBCore.NetworkAssetBundle; playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); var ident = playerPrefab.AddComponent(); @@ -132,8 +132,8 @@ private void OnSceneLoaded(OWScene scene) private void ConfigureNetworkManager() { - networkAddress = QSB.DefaultServerIP; - networkPort = QSB.Port; + networkAddress = QSBCore.DefaultServerIP; + networkPort = QSBCore.Port; maxConnections = MaxConnections; customConfig = true; connectionConfig.AddChannel(QosType.Reliable); @@ -197,12 +197,12 @@ public override void OnClientConnect(QSBNetworkConnection connection) // Called OnNetworkManagerReady?.Invoke(); IsReady = true; - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready && PlayerTransformSync.LocalInstance != null, + QSBCore.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready && PlayerTransformSync.LocalInstance != null, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerJoin, _lobby.PlayerName)); - if (!QSB.IsServer) + if (!QSBCore.IsServer) { - QSB.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready && PlayerTransformSync.LocalInstance != null, + QSBCore.Helper.Events.Unity.RunWhen(() => QSBEventManager.Ready && PlayerTransformSync.LocalInstance != null, () => GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest)); } } diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 0173b5155..4ebe3a5ce 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Player; using System.Linq; using UnityEngine; diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index ecf6bbc90..8edea9790 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; namespace QSB.TimeSync.Events { diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index c0f086283..fd2853585 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -7,7 +7,7 @@ public class PreserveTimeScale : QSBNetworkBehaviour { private void Start() { - QSB.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button + QSBCore.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button // Allow server to sleep at campfires if (IsServer) diff --git a/QSB/TimeSync/TimeSyncUI.cs b/QSB/TimeSync/TimeSyncUI.cs index 895b671dd..173a73b33 100644 --- a/QSB/TimeSync/TimeSyncUI.cs +++ b/QSB/TimeSync/TimeSyncUI.cs @@ -41,9 +41,9 @@ private void OnDestroy() } } - public static void Start(TimeSyncType type) => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); + public static void Start(TimeSyncType type) => QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); - public static void Stop() => QSB.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); + public static void Stop() => QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); private void StartTimeSync(TimeSyncType type) { diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index 0a41a4fa5..d3adce634 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -17,7 +17,7 @@ public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __in public override void DoPatches() { - QSB.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); + QSBCore.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); } } } \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index c01efa486..be91aaa0b 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,5 +1,5 @@ using QSB.DeathSync; -using QSB.EventsCore; +using QSB.Events; using QSB.TimeSync.Events; using QuantumUNET; using UnityEngine; @@ -53,7 +53,7 @@ private void OnWakeUp() { if (QSBNetworkServer.active) { - QSB.HasWokenUp = true; + QSBCore.HasWokenUp = true; } } @@ -66,7 +66,7 @@ private void OnDestroy() private void OnSceneLoaded(OWScene scene, bool isInUniverse) { - QSB.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); + QSBCore.HasWokenUp = (scene == OWScene.EyeOfTheUniverse); if (isInUniverse) { Init(); @@ -164,7 +164,7 @@ private void ResetTimeScale() EnableInput(); } _isFirstFastForward = false; - QSB.HasWokenUp = true; + QSBCore.HasWokenUp = true; Physics.SyncTransforms(); SpinnerUI.Hide(); TimeSyncUI.Stop(); diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index c8f6f2a79..195009b8b 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index b35a06f01..4a46795c7 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 2aab5c21c..a271e28fb 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 5cfd293ff..5451d449d 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 245aaa845..d6ef404ff 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Messaging; using QSB.Player; diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 078ee0cf6..bba215609 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -141,7 +141,7 @@ private static GameObject CreateTranslator(Transform cameraBody) translatorRoot.transform.parent = cameraBody; translatorRoot.transform.localPosition = Vector3.zero; translatorRoot.transform.localScale = TranslatorScale; - QSB.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + QSBCore.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); return translatorRoot; } diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 17a7a9e8b..1dcf6f09f 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -20,7 +20,7 @@ public override void OnStartClient() DontDestroyOnLoad(this); QSBWorldSync.OrbSyncList.Add(this); - QSB.Helper.Events.Unity.RunWhen(() => QSB.HasWokenUp, () => QSB.Helper.Events.Unity.FireOnNextUpdate(OnReady)); + QSBCore.Helper.Events.Unity.RunWhen(() => QSBCore.HasWokenUp, () => QSBCore.Helper.Events.Unity.FireOnNextUpdate(OnReady)); } private void OnReady() diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index f077cd2af..087cd2aed 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -1,4 +1,4 @@ -using QSB.EventsCore; +using QSB.Events; using QSB.Player; using QSB.Tools; using QSB.Utility; diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index a2acdc68c..aa3fc0cf2 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -47,7 +47,7 @@ protected override Transform InitRemoteTransform() PlayerToolsManager.CreateProbe(body, Player); - QSB.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); + QSBCore.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); Player.ProbeBody = body.gameObject; return body; diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 0c211bf8b..e2c97f1bf 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -26,7 +26,7 @@ private void InsertWarpCore() private void Update() { - if (!QSB.DebugMode) + if (!QSBCore.DebugMode) { return; } diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index f6ab94043..0802e4afa 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -11,7 +11,7 @@ public static void ToConsole(string message, MessageType type = MessageType.Mess { // make custom method name in owml log. // i wrote the owml code for this so this is fine?? shut up i dont want to change owml - var console = (ModSocketOutput)QSB.Helper.Console; + var console = (ModSocketOutput)QSBCore.Helper.Console; var method = console.GetType() .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .Last(x => x.Name == "WriteLine"); @@ -37,7 +37,7 @@ public static void ToAll(string message, MessageType type = MessageType.Message) public static void DebugWrite(string message, MessageType type = MessageType.Message) { - if (QSB.DebugMode) + if (QSBCore.DebugMode) { ToConsole(message, type); } diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 6a44d1b12..f095db1a9 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -73,7 +73,7 @@ public static void RaiseEvent(object instance, string eventName) public static void SetDialogueCondition(string name, bool state) { - if (!QSB.IsServer) + if (!QSBCore.IsServer) { DebugLog.DebugWrite("Warning - Cannot write to condition dict when not server!", MessageType.Warning); return; From 5a39446bd2c4a8764803a84c93608bb87cc21bfa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:26:38 +0000 Subject: [PATCH 161/207] messagescore -> messages --- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 +- QSB/Animation/Events/CrouchEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/ConversationSync/Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 2 +- .../Events/DialogueConditionMessage.cs | 2 +- QSB/Events/QSBEvent.cs | 2 +- QSB/{MessagesCore => Messages}/EnumMessage.cs | 4 ++-- QSB/{MessagesCore => Messages}/FloatMessage.cs | 4 ++-- QSB/{MessagesCore => Messages}/MessageHandler.cs | 2 +- QSB/{MessagesCore => Messages}/PlayerMessage.cs | 2 +- QSB/{MessagesCore => Messages}/ToggleMessage.cs | 2 +- QSB/OrbSync/Events/OrbSlotMessage.cs | 2 +- QSB/Player/Events/PlayerJoinMessage.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/QSB.csproj | 10 +++++----- QSB/TimeSync/Events/ServerTimeMessage.cs | 2 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 2 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 2 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 2 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- 26 files changed, 32 insertions(+), 32 deletions(-) rename QSB/{MessagesCore => Messages}/EnumMessage.cs (87%) rename QSB/{MessagesCore => Messages}/FloatMessage.cs (87%) rename QSB/{MessagesCore => Messages}/MessageHandler.cs (98%) rename QSB/{MessagesCore => Messages}/PlayerMessage.cs (95%) rename QSB/{MessagesCore => Messages}/ToggleMessage.cs (94%) diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 247813776..c979ed3ce 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -1,6 +1,6 @@ using QSB.Events; using QSB.Instruments; -using QSB.MessagesCore; +using QSB.Messages; using QSB.Player; namespace QSB.Animation.Events diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index 7829abe16..f0d07d3ee 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.MessagesCore; +using QSB.Messages; using QSB.Player; namespace QSB.Animation.Events diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 438df5fe3..b9489b7d7 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.Player; namespace QSB.Animation diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 206072c0c..3db5e1073 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.ConversationSync.Events diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 75db950da..1b7c833b7 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.ConversationSync.Events diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 888d04207..9abda66fe 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.MessagesCore; +using QSB.Messages; using QSB.Player; using QSB.Utility; diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs index 3d4252e9a..24ba88e58 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.DialogueConditionSync.Events diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index cb4c4a065..c94e1071e 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QSB.Player; using QSB.TransformSync; using QuantumUNET; diff --git a/QSB/MessagesCore/EnumMessage.cs b/QSB/Messages/EnumMessage.cs similarity index 87% rename from QSB/MessagesCore/EnumMessage.cs rename to QSB/Messages/EnumMessage.cs index e970fb606..b3f49d881 100644 --- a/QSB/MessagesCore/EnumMessage.cs +++ b/QSB/Messages/EnumMessage.cs @@ -1,7 +1,7 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; -namespace QSB.MessagesCore +namespace QSB.Messages { public class EnumMessage : PlayerMessage { diff --git a/QSB/MessagesCore/FloatMessage.cs b/QSB/Messages/FloatMessage.cs similarity index 87% rename from QSB/MessagesCore/FloatMessage.cs rename to QSB/Messages/FloatMessage.cs index d2e08802a..b1a3802aa 100644 --- a/QSB/MessagesCore/FloatMessage.cs +++ b/QSB/Messages/FloatMessage.cs @@ -1,7 +1,7 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; -namespace QSB.MessagesCore +namespace QSB.Messages { public class FloatMessage : PlayerMessage { diff --git a/QSB/MessagesCore/MessageHandler.cs b/QSB/Messages/MessageHandler.cs similarity index 98% rename from QSB/MessagesCore/MessageHandler.cs rename to QSB/Messages/MessageHandler.cs index e81af7ae1..6537ecf85 100644 --- a/QSB/MessagesCore/MessageHandler.cs +++ b/QSB/Messages/MessageHandler.cs @@ -6,7 +6,7 @@ using System; using System.Linq; -namespace QSB.Messaging +namespace QSB.Messages { public class MessageHandler where T : QSBMessageBase, new() { diff --git a/QSB/MessagesCore/PlayerMessage.cs b/QSB/Messages/PlayerMessage.cs similarity index 95% rename from QSB/MessagesCore/PlayerMessage.cs rename to QSB/Messages/PlayerMessage.cs index 9fb002381..6ee5c2271 100644 --- a/QSB/MessagesCore/PlayerMessage.cs +++ b/QSB/Messages/PlayerMessage.cs @@ -1,7 +1,7 @@ using QuantumUNET; using QuantumUNET.Messages; -namespace QSB.Messaging +namespace QSB.Messages { public class PlayerMessage : QSBMessageBase { diff --git a/QSB/MessagesCore/ToggleMessage.cs b/QSB/Messages/ToggleMessage.cs similarity index 94% rename from QSB/MessagesCore/ToggleMessage.cs rename to QSB/Messages/ToggleMessage.cs index 0956b3b25..df4e8e73f 100644 --- a/QSB/MessagesCore/ToggleMessage.cs +++ b/QSB/Messages/ToggleMessage.cs @@ -1,6 +1,6 @@ using QuantumUNET; -namespace QSB.Messaging +namespace QSB.Messages { public class ToggleMessage : PlayerMessage { diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs index c25da215c..1e36aeeff 100644 --- a/QSB/OrbSync/Events/OrbSlotMessage.cs +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.OrbSync.Events diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 0e6954242..1be50f5a0 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.Player.Events diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index cec6b65f6..efbed2caa 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -1,6 +1,6 @@ using OWML.Common; using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.SectorSync; using QSB.Utility; using System.Linq; diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 7d2d341f1..223325c8b 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.Player.Events diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index b37086b48..6d6bbb20d 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.SectorSync; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index b3dc72378..16020f554 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -150,8 +150,8 @@ - - + + @@ -186,7 +186,7 @@ - + @@ -205,8 +205,8 @@ - - + + diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 407d2bfc0..cd3de9ff5 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.TimeSync.Events diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 195009b8b..707f940f5 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 4a46795c7..fac5111ee 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index a271e28fb..42792a3f4 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 5451d449d..c86ad0ff9 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index d6ef404ff..ecd1cac5b 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messaging; +using QSB.Messages; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 12ec48f85..6d7937c2d 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messaging; +using QSB.Messages; using QuantumUNET; namespace QSB.WorldSync.Events From 0be12afd9c305e2df05a34d136f5ba72355fd245 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 16:28:03 +0000 Subject: [PATCH 162/207] messages -> messaging --- QSB/Animation/Events/ChangeAnimTypeEvent.cs | 2 +- QSB/Animation/Events/CrouchEvent.cs | 2 +- QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/ConversationSync/Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- QSB/DeathSync/Events/PlayerDeathEvent.cs | 2 +- .../Events/DialogueConditionMessage.cs | 2 +- QSB/Events/QSBEvent.cs | 2 +- QSB/{Messages => Messaging}/EnumMessage.cs | 5 ++--- QSB/{Messages => Messaging}/FloatMessage.cs | 5 ++--- QSB/{Messages => Messaging}/MessageHandler.cs | 2 +- QSB/{Messages => Messaging}/PlayerMessage.cs | 2 +- QSB/{Messages => Messaging}/ToggleMessage.cs | 2 +- QSB/OrbSync/Events/OrbSlotMessage.cs | 2 +- QSB/Player/Events/PlayerJoinMessage.cs | 2 +- QSB/Player/Events/PlayerReadyEvent.cs | 2 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/Player/Events/PlayerStatesRequestEvent.cs | 2 +- QSB/QSB.csproj | 10 +++++----- QSB/TimeSync/Events/ServerTimeMessage.cs | 2 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeEvent.cs | 2 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 2 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 2 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 2 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- 26 files changed, 32 insertions(+), 34 deletions(-) rename QSB/{Messages => Messaging}/EnumMessage.cs (84%) rename QSB/{Messages => Messaging}/FloatMessage.cs (83%) rename QSB/{Messages => Messaging}/MessageHandler.cs (98%) rename QSB/{Messages => Messaging}/PlayerMessage.cs (95%) rename QSB/{Messages => Messaging}/ToggleMessage.cs (94%) diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index c979ed3ce..1913e8c35 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -1,6 +1,6 @@ using QSB.Events; using QSB.Instruments; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Animation.Events diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index f0d07d3ee..ff3afda86 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Animation.Events diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index b9489b7d7..438df5fe3 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Animation diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 3db5e1073..206072c0c 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.ConversationSync.Events diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 1b7c833b7..75db950da 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.ConversationSync.Events diff --git a/QSB/DeathSync/Events/PlayerDeathEvent.cs b/QSB/DeathSync/Events/PlayerDeathEvent.cs index 9abda66fe..0bd9b0ea3 100644 --- a/QSB/DeathSync/Events/PlayerDeathEvent.cs +++ b/QSB/DeathSync/Events/PlayerDeathEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; using QSB.Utility; diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs index 24ba88e58..3d4252e9a 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.DialogueConditionSync.Events diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index c94e1071e..cb4c4a065 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QSB.Player; using QSB.TransformSync; using QuantumUNET; diff --git a/QSB/Messages/EnumMessage.cs b/QSB/Messaging/EnumMessage.cs similarity index 84% rename from QSB/Messages/EnumMessage.cs rename to QSB/Messaging/EnumMessage.cs index b3f49d881..0624f8363 100644 --- a/QSB/Messages/EnumMessage.cs +++ b/QSB/Messaging/EnumMessage.cs @@ -1,7 +1,6 @@ -using QSB.Messages; -using QuantumUNET; +using QuantumUNET; -namespace QSB.Messages +namespace QSB.Messaging { public class EnumMessage : PlayerMessage { diff --git a/QSB/Messages/FloatMessage.cs b/QSB/Messaging/FloatMessage.cs similarity index 83% rename from QSB/Messages/FloatMessage.cs rename to QSB/Messaging/FloatMessage.cs index b1a3802aa..832c6a0cd 100644 --- a/QSB/Messages/FloatMessage.cs +++ b/QSB/Messaging/FloatMessage.cs @@ -1,7 +1,6 @@ -using QSB.Messages; -using QuantumUNET; +using QuantumUNET; -namespace QSB.Messages +namespace QSB.Messaging { public class FloatMessage : PlayerMessage { diff --git a/QSB/Messages/MessageHandler.cs b/QSB/Messaging/MessageHandler.cs similarity index 98% rename from QSB/Messages/MessageHandler.cs rename to QSB/Messaging/MessageHandler.cs index 6537ecf85..e81af7ae1 100644 --- a/QSB/Messages/MessageHandler.cs +++ b/QSB/Messaging/MessageHandler.cs @@ -6,7 +6,7 @@ using System; using System.Linq; -namespace QSB.Messages +namespace QSB.Messaging { public class MessageHandler where T : QSBMessageBase, new() { diff --git a/QSB/Messages/PlayerMessage.cs b/QSB/Messaging/PlayerMessage.cs similarity index 95% rename from QSB/Messages/PlayerMessage.cs rename to QSB/Messaging/PlayerMessage.cs index 6ee5c2271..9fb002381 100644 --- a/QSB/Messages/PlayerMessage.cs +++ b/QSB/Messaging/PlayerMessage.cs @@ -1,7 +1,7 @@ using QuantumUNET; using QuantumUNET.Messages; -namespace QSB.Messages +namespace QSB.Messaging { public class PlayerMessage : QSBMessageBase { diff --git a/QSB/Messages/ToggleMessage.cs b/QSB/Messaging/ToggleMessage.cs similarity index 94% rename from QSB/Messages/ToggleMessage.cs rename to QSB/Messaging/ToggleMessage.cs index df4e8e73f..0956b3b25 100644 --- a/QSB/Messages/ToggleMessage.cs +++ b/QSB/Messaging/ToggleMessage.cs @@ -1,6 +1,6 @@ using QuantumUNET; -namespace QSB.Messages +namespace QSB.Messaging { public class ToggleMessage : PlayerMessage { diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs index 1e36aeeff..c25da215c 100644 --- a/QSB/OrbSync/Events/OrbSlotMessage.cs +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.OrbSync.Events diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 1be50f5a0..0e6954242 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.Player.Events diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index efbed2caa..cec6b65f6 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -1,6 +1,6 @@ using OWML.Common; using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.SectorSync; using QSB.Utility; using System.Linq; diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 223325c8b..7d2d341f1 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.Player.Events diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index 6d6bbb20d..b37086b48 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.SectorSync; using QSB.Utility; using QSB.WorldSync; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 16020f554..7d77e6a64 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -150,8 +150,8 @@ - - + + @@ -186,7 +186,7 @@ - + @@ -205,8 +205,8 @@ - - + + diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index cd3de9ff5..407d2bfc0 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.TimeSync.Events diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 707f940f5..195009b8b 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index fac5111ee..4a46795c7 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index 42792a3f4..a271e28fb 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index c86ad0ff9..5451d449d 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index ecd1cac5b..d6ef404ff 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -1,5 +1,5 @@ using QSB.Events; -using QSB.Messages; +using QSB.Messaging; using QSB.Player; namespace QSB.Tools.Events diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 6d7937c2d..12ec48f85 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,4 +1,4 @@ -using QSB.Messages; +using QSB.Messaging; using QuantumUNET; namespace QSB.WorldSync.Events From c2b348ba3a6d88afcfe2774529b78ef2eecab174 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 17:18:51 +0000 Subject: [PATCH 163/207] fixes --- QSB/Events/QSBEvent.cs | 14 ++++++++------ QSB/Messaging/MessageHandler.cs | 2 -- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index cb4c4a065..0db09e6a8 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -14,8 +14,8 @@ namespace QSB.Events protected QSBEvent() { _eventHandler = new MessageHandler(Type); - _eventHandler.OnClientReceiveMessage += OnReceive; - _eventHandler.OnServerReceiveMessage += OnReceive; + _eventHandler.OnClientReceiveMessage += (T message) => OnReceive(false, message); + _eventHandler.OnServerReceiveMessage += (T message) => OnReceive(true, message); } public abstract void SetupListener(); @@ -42,20 +42,22 @@ private void Send(T message) } } - private void OnReceive(T message) + private void OnReceive(bool isServer, T message) { - if (QSBCore.IsServer && !message.OnlySendToServer) + if (isServer + && !message.OnlySendToServer + && message.FromId != QSBPlayerManager.LocalPlayerId) { _eventHandler.SendToAll(message); } if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { - OnReceiveLocal(QSBCore.IsServer, message); + OnReceiveLocal(isServer, message); return; } - OnReceiveRemote(QSBCore.IsServer, message); + OnReceiveRemote(isServer, message); } } } \ No newline at end of file diff --git a/QSB/Messaging/MessageHandler.cs b/QSB/Messaging/MessageHandler.cs index e81af7ae1..4c148f91d 100644 --- a/QSB/Messaging/MessageHandler.cs +++ b/QSB/Messaging/MessageHandler.cs @@ -1,5 +1,4 @@ using QSB.Events; -using QSB.Utility; using QuantumUNET; using QuantumUNET.Components; using QuantumUNET.Messages; @@ -46,7 +45,6 @@ public void SendToAll(T message) { return; } - DebugLog.DebugWrite("SEND MESSAGE TO ALL"); QSBNetworkServer.SendToAll(_eventType, message); } From 7f71392cbad44f49074bf5c91c24342580417d93 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 19:23:24 +0000 Subject: [PATCH 164/207] changes --- QSB/Animation/AnimationSync.cs | 3 +-- QSB/Animation/AnimatorMirror.cs | 5 ----- QSB/Events/QSBEvent.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 7 +++---- QSB/Player/PlayerSyncObject.cs | 4 ++-- QSB/Player/QSBPlayerManager.cs | 25 +++++++++++++++++++------ QSB/TransformSync/PlayerCameraSync.cs | 6 ------ QSB/TransformSync/PlayerProbeSync.cs | 6 ------ QSB/TransformSync/ShipTransformSync.cs | 6 ------ QSB/TransformSync/TransformSync.cs | 8 ++++++-- 10 files changed, 32 insertions(+), 40 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 6bb0a8d4c..7bd0b005e 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -31,9 +31,8 @@ public class AnimationSync : PlayerSyncObject public AnimatorMirror Mirror { get; private set; } public AnimationType CurrentType; - protected override void Awake() + protected void Awake() { - base.Awake(); _anim = gameObject.AddComponent(); _netAnim = gameObject.AddComponent(); _netAnim.enabled = false; diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 1c20bd101..43078221b 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -36,11 +36,6 @@ public void Init(Animator from, Animator to) } } - private PlayerInfo GetPlayer() - { - return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; - } - private void Update() { if (_to == null || _from == null) diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index 0db09e6a8..6af5f2763 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -45,7 +45,7 @@ private void Send(T message) private void OnReceive(bool isServer, T message) { if (isServer - && !message.OnlySendToServer + && !message.OnlySendToServer && message.FromId != QSBPlayerManager.LocalPlayerId) { _eventHandler.SendToAll(message); diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index e94a5fbb9..a0e475110 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -37,7 +37,7 @@ public void InitRemote(Transform root) protected override void OnDestroy() { - base.Awake(); + base.OnDestroy(); if (!IsLocalPlayer) { return; @@ -120,12 +120,11 @@ public void CheckInstrumentProps(AnimationType type) switch (type) { case AnimationType.Chert: - ChertDrum.SetActive(true); + ChertDrum?.SetActive(true); break; - case AnimationType.PlayerSuited: case AnimationType.PlayerUnsuited: - ChertDrum.SetActive(false); + ChertDrum?.SetActive(false); break; } } diff --git a/QSB/Player/PlayerSyncObject.cs b/QSB/Player/PlayerSyncObject.cs index 8ffccffed..87de74acb 100644 --- a/QSB/Player/PlayerSyncObject.cs +++ b/QSB/Player/PlayerSyncObject.cs @@ -8,7 +8,7 @@ public abstract class PlayerSyncObject : QSBNetworkBehaviour public uint PlayerId => NetIdentity.RootIdentity?.NetId.Value ?? NetIdentity.NetId.Value; public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId); - protected virtual void Awake() => QSBPlayerManager.PlayerSyncObjects.Add(this); - protected virtual void OnDestroy() => QSBPlayerManager.PlayerSyncObjects.Remove(this); + protected virtual void Start() => QSBPlayerManager.AddSyncObject(this); + protected virtual void OnDestroy() => QSBPlayerManager.AddSyncObject(this); } } \ No newline at end of file diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 596b0773e..9e0d4e050 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -12,7 +12,8 @@ public static class QSBPlayerManager public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.NetIdentity?.NetId.Value ?? uint.MaxValue; public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); public static List PlayerList { get; } = new List(); - public static List PlayerSyncObjects { get; } = new List(); + + private static List _playerSyncObjects = new List(); public static PlayerInfo GetPlayer(uint id) { @@ -25,7 +26,7 @@ public static PlayerInfo GetPlayer(uint id) { return player; } - DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); + DebugLog.DebugWrite($"Create Player : id<{id}>", MessageType.Info); player = new PlayerInfo(id); PlayerList.Add(player); return player; @@ -33,13 +34,13 @@ public static PlayerInfo GetPlayer(uint id) public static void RemovePlayer(uint id) { - DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); + DebugLog.DebugWrite($"Remove Player : id<{id}>", MessageType.Info); PlayerList.Remove(GetPlayer(id)); } public static void RemoveAllPlayers() { - DebugLog.DebugWrite($"Removing all players.", MessageType.Info); + DebugLog.DebugWrite($"Remove All Players", MessageType.Info); PlayerList.Clear(); } @@ -59,15 +60,27 @@ public static void HandleFullStateMessage(PlayerStateMessage message) } public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - => PlayerSyncObjects.OfType().Where(x => x != null); + => _playerSyncObjects.OfType().Where(x => x != null); public static T GetSyncObject(uint id) where T : PlayerSyncObject => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + public static void AddSyncObject(PlayerSyncObject obj) + { + DebugLog.DebugWrite($"SyncObject Add : type<{obj.GetType().Name}>, netid<{obj.NetId}>"); + _playerSyncObjects.Add(obj); + } + + public static void RemoveSyncObject(PlayerSyncObject obj) + { + DebugLog.DebugWrite($"SyncObject Remove : type<{obj.GetType().Name}>, netid<{obj.NetId}>"); + _playerSyncObjects.Remove(obj); + } + public static bool IsBelongingToLocalPlayer(uint id) { return id == LocalPlayerId || - PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); + _playerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); } } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 087cd2aed..d92ffdfd3 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -9,12 +9,6 @@ namespace QSB.TransformSync { public class PlayerCameraSync : TransformSync { - protected void Start() - { - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); - NetIdentity.SetRootIdentity(lowestBound.NetIdentity); - } - protected override Transform InitLocalTransform() { var body = Locator.GetPlayerCamera().gameObject.transform; diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index aa3fc0cf2..4439cf9e0 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -11,12 +11,6 @@ public class PlayerProbeSync : TransformSync { private Transform _disabledSocket; - protected void Start() - { - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); - NetIdentity.SetRootIdentity(lowestBound.NetIdentity); - } - private Transform GetProbe() => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 1d27d20fa..5addc1ac5 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -6,12 +6,6 @@ namespace QSB.TransformSync { public class ShipTransformSync : TransformSync { - protected void Start() - { - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); - NetIdentity.SetRootIdentity(lowestBound.NetIdentity); - } - private Transform GetShipModel() => Locator.GetShipTransform(); protected override Transform InitLocalTransform() diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index d8d65c0c6..5991be416 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -2,6 +2,7 @@ using QSB.Player; using QSB.SectorSync; using QSB.Utility; +using System.Linq; using UnityEngine; namespace QSB.TransformSync @@ -22,9 +23,12 @@ public abstract class TransformSync : PlayerSyncObject private Quaternion _rotationSmoothVelocity; private bool _isVisible; - protected override void Awake() + protected override void Start() { - base.Awake(); + base.Start(); + var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value <= NetId.Value).OrderBy(x => x.NetId.Value).Last(); + NetIdentity.SetRootIdentity(lowestBound.NetIdentity); + DontDestroyOnLoad(gameObject); QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } From 2a5c1fcb1d486939ade4e1688e5b6d261335c9c6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 19:27:42 +0000 Subject: [PATCH 165/207] cleanup --- QSB/Animation/AnimatorMirror.cs | 1 - QSB/TransformSync/PlayerCameraSync.cs | 1 - QSB/TransformSync/PlayerProbeSync.cs | 1 - QSB/TransformSync/ShipTransformSync.cs | 1 - 4 files changed, 4 deletions(-) diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 43078221b..b5d75ac95 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -1,5 +1,4 @@ using OWML.Common; -using QSB.Player; using QSB.Utility; using System.Collections.Generic; using System.Linq; diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index d92ffdfd3..91c01cc34 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -2,7 +2,6 @@ using QSB.Player; using QSB.Tools; using QSB.Utility; -using System.Linq; using UnityEngine; namespace QSB.TransformSync diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 4439cf9e0..33b68aab3 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -2,7 +2,6 @@ using QSB.Player; using QSB.Tools; using QSB.Utility; -using System.Linq; using UnityEngine; namespace QSB.TransformSync diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 5addc1ac5..c157c185c 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -1,5 +1,4 @@ using QSB.Player; -using System.Linq; using UnityEngine; namespace QSB.TransformSync From 36bf53b3c3feb60c01e8ae05ae3ea4e53e832e41 Mon Sep 17 00:00:00 2001 From: Aleksander Waage Date: Mon, 14 Dec 2020 20:31:31 +0100 Subject: [PATCH 166/207] namespaces in QSB proj --- QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/ConversationSync/ConversationPatches.cs | 1 + QSB/DeathSync/DeathPatches.cs | 1 + QSB/ElevatorSync/ElevatorPatches.cs | 1 + QSB/OrbSync/OrbPatches.cs | 1 + QSB/Patches/QSBPatch.cs | 2 +- QSB/Patches/QSBPatchTypes.cs | 2 +- QSB/TimeSync/WakeUpPatches.cs | 1 + 8 files changed, 8 insertions(+), 3 deletions(-) diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 438df5fe3..3c1b4bfc9 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Player; -namespace QSB.Animation +namespace QSB.Animation.Events { public class PlayerSuitEvent : QSBEvent { diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 061fecbe9..bd35ae377 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -3,6 +3,7 @@ using QSB.Utility; using QSB.WorldSync; using System.Collections.Generic; +using QSB.Patches; using UnityEngine; namespace QSB.ConversationSync diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index d3a45a359..528568ecd 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -1,5 +1,6 @@ using QSB.Events; using System.Linq; +using QSB.Patches; namespace QSB.DeathSync { diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 410829eb1..0a299787e 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -1,5 +1,6 @@ using OWML.ModHelper.Events; using QSB.Events; +using QSB.Patches; namespace QSB.ElevatorSync { diff --git a/QSB/OrbSync/OrbPatches.cs b/QSB/OrbSync/OrbPatches.cs index 8deea8dc3..64fbe4079 100644 --- a/QSB/OrbSync/OrbPatches.cs +++ b/QSB/OrbSync/OrbPatches.cs @@ -1,4 +1,5 @@ using QSB.Events; +using QSB.Patches; using QSB.WorldSync; using UnityEngine; diff --git a/QSB/Patches/QSBPatch.cs b/QSB/Patches/QSBPatch.cs index 59b064b02..4f118b80b 100644 --- a/QSB/Patches/QSBPatch.cs +++ b/QSB/Patches/QSBPatch.cs @@ -1,4 +1,4 @@ -namespace QSB +namespace QSB.Patches { public abstract class QSBPatch { diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 161a2fdea..5ba4706b6 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -1,4 +1,4 @@ -namespace QSB +namespace QSB.Patches { public enum QSBPatchTypes { diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index d3adce634..8e49c6428 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -1,4 +1,5 @@ using OWML.ModHelper.Events; +using QSB.Patches; namespace QSB.TimeSync { From a8181605ab6613855878a0d90136e1e4e26c226a Mon Sep 17 00:00:00 2001 From: Aleksander Waage Date: Mon, 14 Dec 2020 21:41:56 +0100 Subject: [PATCH 167/207] cleanup of main proj --- QSB/Animation/AnimationSync.cs | 18 +- QSB/Animation/AnimationType.cs | 14 +- QSB/Animation/AnimatorMirror.cs | 8 +- QSB/Animation/CrouchSync.cs | 2 +- QSB/ConversationSync/ConversationManager.cs | 251 +++++++++--------- QSB/ConversationSync/ConversationPatches.cs | 25 +- QSB/ConversationSync/ConversationType.cs | 8 +- QSB/DeathSync/Necronomicon.cs | 8 +- QSB/DeathSync/PreventShipDestruction.cs | 2 +- QSB/DeathSync/RespawnOnDeath.cs | 14 +- QSB/ElevatorSync/ElevatorManager.cs | 9 +- QSB/Events/EventNames.cs | 2 - QSB/Events/QSBEvent.cs | 7 +- QSB/Events/QSBEventManager.cs | 1 - QSB/GeyserSync/GeyserManager.cs | 4 +- QSB/Instruments/InstrumentsManager.cs | 40 +-- QSB/Instruments/QSBCamera/CameraController.cs | 28 +- QSB/Instruments/QSBCamera/CameraManager.cs | 73 ++--- QSB/Instruments/QSBCamera/CameraMode.cs | 4 +- QSB/Messaging/MessageHandler.cs | 1 - QSB/OrbSync/Events/OrbUserEvent.cs | 101 ++++--- QSB/Patches/QSBPatchManager.cs | 6 +- QSB/Patches/QSBPatchTypes.cs | 6 +- QSB/Player/Events/PlayerReadyEvent.cs | 56 ++-- QSB/Player/QSBPlayerManager.cs | 108 ++++---- QSB/QSBCore.cs | 12 +- QSB/QSBNetworkLobby.cs | 4 +- QSB/QSBNetworkManager.cs | 100 ++++--- QSB/QSBSceneManager.cs | 48 ++-- QSB/SectorSync/QSBSectorManager.cs | 8 +- QSB/SectorSync/SectorSync.cs | 11 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 8 +- QSB/TimeSync/PreserveTimeScale.cs | 2 +- QSB/TimeSync/TimeSyncType.cs | 6 +- QSB/TimeSync/TimeSyncUI.cs | 12 +- QSB/TimeSync/WakeUpSync.cs | 6 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 8 +- QSB/Tools/Events/PlayerProbeEvent.cs | 8 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 8 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 8 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 8 +- QSB/Tools/PlayerToolsManager.cs | 32 +-- QSB/Tools/QSBFlashlight.cs | 6 +- QSB/Tools/QSBTool.cs | 4 +- QSB/Tools/ToolType.cs | 6 +- QSB/TransformSync/NomaiOrbTransformSync.cs | 4 +- QSB/TransformSync/PlayerCameraSync.cs | 3 +- QSB/TransformSync/PlayerProbeSync.cs | 172 ++++++------ QSB/TransformSync/PlayerTransformSync.cs | 81 +++--- QSB/TransformSync/ShipTransformSync.cs | 11 +- QSB/TransformSync/TransformSync.cs | 10 +- QSB/Utility/DebugActions.cs | 4 +- QSB/Utility/DebugLog.cs | 2 +- QSB/Utility/GOExtensions.cs | 8 +- QSB/Utility/ListExtensions.cs | 20 -- QSB/WorldSync/QSBWorldSync.cs | 15 +- 56 files changed, 683 insertions(+), 748 deletions(-) delete mode 100644 QSB/Utility/ListExtensions.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 6bb0a8d4c..4be568ae1 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -29,9 +29,9 @@ public class AnimationSync : PlayerSyncObject private RuntimeAnimatorController _riebeckController; public AnimatorMirror Mirror { get; private set; } - public AnimationType CurrentType; + public AnimationType CurrentType { get; set; } - protected override void Awake() + protected override void Awake() { base.Awake(); _anim = gameObject.AddComponent(); @@ -39,10 +39,10 @@ protected override void Awake() _netAnim.enabled = false; _netAnim.animator = _anim; - QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => LoadControllers(); + QSBSceneManager.OnUniverseSceneLoaded += OnUniverseSceneLoaded; } - - protected override void OnDestroy() + + protected override void OnDestroy() { base.OnDestroy(); if (_playerController == null) @@ -53,10 +53,12 @@ protected override void OnDestroy() _playerController.OnBecomeGrounded -= OnBecomeGrounded; _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => LoadControllers(); - } + QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoaded; + } + + private void OnUniverseSceneLoaded(OWScene obj) => LoadControllers(); - private void LoadControllers() + private void LoadControllers() { var bundle = QSBCore.InstrumentAssetBundle; _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; diff --git a/QSB/Animation/AnimationType.cs b/QSB/Animation/AnimationType.cs index 977bcda4f..f44b236cf 100644 --- a/QSB/Animation/AnimationType.cs +++ b/QSB/Animation/AnimationType.cs @@ -2,12 +2,12 @@ { public enum AnimationType { - Chert, - Esker, - Feldspar, - Gabbro, - PlayerSuited, - PlayerUnsuited, - Riebeck + Chert = 0, + Esker = 1, + Feldspar = 2, + Gabbro = 3, + PlayerSuited = 4, + PlayerUnsuited = 5, + Riebeck = 6 } } \ No newline at end of file diff --git a/QSB/Animation/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs index 1c20bd101..995383eb2 100644 --- a/QSB/Animation/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -1,5 +1,4 @@ using OWML.Common; -using QSB.Player; using QSB.Utility; using System.Collections.Generic; using System.Linq; @@ -36,12 +35,7 @@ public void Init(Animator from, Animator to) } } - private PlayerInfo GetPlayer() - { - return QSBPlayerManager.GetSyncObjects().First(x => x.Mirror == this).Player; - } - - private void Update() + public void Update() { if (_to == null || _from == null) { diff --git a/QSB/Animation/CrouchSync.cs b/QSB/Animation/CrouchSync.cs index f1c0dfbdd..6fe802452 100644 --- a/QSB/Animation/CrouchSync.cs +++ b/QSB/Animation/CrouchSync.cs @@ -27,7 +27,7 @@ public void Init(AnimationSync animationSync, PlayerCharacterController playerCo _bodyAnim = bodyAnim; } - private void Update() + public void Update() { if (IsLocalPlayer) { diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 486bbb69f..2c5d25d57 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -11,133 +11,126 @@ namespace QSB.ConversationSync { - public class ConversationManager : MonoBehaviour - { - public static ConversationManager Instance { get; private set; } - public AssetBundle ConversationAssetBundle { get; private set; } - private GameObject BoxPrefab; - public Dictionary BoxMappings = new Dictionary(); - - private void Start() - { - Instance = this; - - ConversationAssetBundle = QSBCore.Helper.Assets.LoadBundle("assets/conversation"); - - BoxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); - // TODO : make dynamic so it can be different sizes! - var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); - if (font == null) - { - DebugLog.ToConsole("Error - Font is null!", MessageType.Error); - } - BoxPrefab.GetComponent().font = font; - BoxPrefab.GetComponent().color = Color.white; - } - - public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) - { - var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree); - if (!QSBPlayerManager.PlayerList.Any(x => x.CurrentDialogueID == treeIndex)) - { - return uint.MaxValue; - } - return QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; - } - - public void SendPlayerOption(string text) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); - } - - public void SendCharacterDialogue(int id, string text) - { - if (id == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); - } - - public void CloseBoxPlayer() - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); - } - - public void CloseBoxCharacter(int id) - { - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); - } - - public void SendConvState(int charId, bool state) - { - if (charId == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); - } - - public void DisplayPlayerConversationBox(uint playerId, string text) - { - if (playerId == QSBPlayerManager.LocalPlayerId) - { - DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); - return; - } - - var player = QSBPlayerManager.GetPlayer(playerId); - - // Destroy old box if it exists - var playerBox = player.CurrentDialogueBox; - if (playerBox != null) - { - Destroy(playerBox); - } - - QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); - } - - public void DisplayCharacterConversationBox(int index, string text) - { - if (QSBWorldSync.OldDialogueTrees.ElementAtOrDefault(index) == null) - { - DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); - return; - } - - // Remove old box if it exists - var oldDialogueTree = QSBWorldSync.OldDialogueTrees[index]; - if (BoxMappings.ContainsKey(oldDialogueTree)) - { - Destroy(BoxMappings[oldDialogueTree]); - BoxMappings.Remove(oldDialogueTree); - } - - BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); - } - - private GameObject CreateBox(Transform parent, float vertOffset, string text) - { - var newBox = Instantiate(BoxPrefab); - newBox.SetActive(false); - newBox.transform.parent = parent; - newBox.transform.localPosition = new Vector3(0, vertOffset, 0); - newBox.transform.rotation = parent.rotation; - var lookAt = newBox.AddComponent(); - lookAt.SetValue("_useLookAt", false); - lookAt.SetValue("_localFacingVector", Vector3.back); - lookAt.SetValue("_localRotationAxis", Vector3.up); - newBox.GetComponent().text = text; - newBox.SetActive(true); - return newBox; - } - } + public class ConversationManager : MonoBehaviour + { + public static ConversationManager Instance { get; private set; } + public AssetBundle ConversationAssetBundle { get; private set; } + public Dictionary BoxMappings { get; } = new Dictionary(); + + private GameObject _boxPrefab; + + public void Start() + { + Instance = this; + + ConversationAssetBundle = QSBCore.Helper.Assets.LoadBundle("assets/conversation"); + + _boxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + // TODO : make dynamic so it can be different sizes! + var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); + if (font == null) + { + DebugLog.ToConsole("Error - Font is null!", MessageType.Error); + } + _boxPrefab.GetComponent().font = font; + _boxPrefab.GetComponent().color = Color.white; + } + + public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) + { + var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree); + return QSBPlayerManager.PlayerList.All(x => x.CurrentDialogueID != treeIndex) + ? uint.MaxValue + : QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + } + + public void SendPlayerOption(string text) => + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); + + public void SendCharacterDialogue(int id, string text) + { + if (id == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + } + + public void CloseBoxPlayer() => + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); + + public void CloseBoxCharacter(int id) => + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + + public void SendConvState(int charId, bool state) + { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); + } + + public void DisplayPlayerConversationBox(uint playerId, string text) + { + if (playerId == QSBPlayerManager.LocalPlayerId) + { + DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); + return; + } + + var player = QSBPlayerManager.GetPlayer(playerId); + + // Destroy old box if it exists + var playerBox = player.CurrentDialogueBox; + if (playerBox != null) + { + Destroy(playerBox); + } + + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); + } + + public void DisplayCharacterConversationBox(int index, string text) + { + if (QSBWorldSync.OldDialogueTrees.ElementAtOrDefault(index) == null) + { + DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); + return; + } + + // Remove old box if it exists + var oldDialogueTree = QSBWorldSync.OldDialogueTrees[index]; + if (BoxMappings.ContainsKey(oldDialogueTree)) + { + Destroy(BoxMappings[oldDialogueTree]); + BoxMappings.Remove(oldDialogueTree); + } + + BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); + } + + private GameObject CreateBox(Transform parent, float vertOffset, string text) + { + var newBox = Instantiate(_boxPrefab); + newBox.SetActive(false); + newBox.transform.parent = parent; + newBox.transform.localPosition = new Vector3(0, vertOffset, 0); + newBox.transform.rotation = parent.rotation; + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); + newBox.GetComponent().text = text; + newBox.SetActive(true); + return newBox; + } + } } \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index bd35ae377..6675f6ba2 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -74,17 +74,12 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, CharacterDialogueTree ____dialogueTree) { var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - Vector3 position; - if (playerId == uint.MaxValue) - { - // TODO : Find closest player and track to that camera. - position = Locator.GetActiveCamera().transform.position; - } - else - { - position = QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; - } - var b = ___headTrackingWeight * Mathf.Min(1, (!___lookOnlyWhenTalking) ? ((!____playerInHeadZone) ? 0 : 1) : ((!____inConversation || !____playerInHeadZone) ? 0 : 1)); + var position = playerId == uint.MaxValue + ? Locator.GetActiveCamera().transform.position + : QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; + var b = ___headTrackingWeight * Mathf.Min(1, !___lookOnlyWhenTalking + ? !____playerInHeadZone ? 0 : 1 + : !____inConversation || !____playerInHeadZone ? 0 : 1); ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); ____animator.SetLookAtPosition(____currentLookTarget); @@ -95,12 +90,8 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) { var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - if (playerId == uint.MaxValue) - { - return true; - } - return false; - } + return playerId == uint.MaxValue; + } public override void DoPatches() { diff --git a/QSB/ConversationSync/ConversationType.cs b/QSB/ConversationSync/ConversationType.cs index 3e8658f30..7c67563da 100644 --- a/QSB/ConversationSync/ConversationType.cs +++ b/QSB/ConversationSync/ConversationType.cs @@ -2,9 +2,9 @@ { public enum ConversationType { - Character, - Player, - CloseCharacter, - ClosePlayer + Character = 0, + Player = 1, + CloseCharacter = 2, + ClosePlayer = 3 } } \ No newline at end of file diff --git a/QSB/DeathSync/Necronomicon.cs b/QSB/DeathSync/Necronomicon.cs index 23a081a25..86bca2177 100644 --- a/QSB/DeathSync/Necronomicon.cs +++ b/QSB/DeathSync/Necronomicon.cs @@ -95,9 +95,7 @@ public static class Necronomicon } } }; - public static string GetPhrase(DeathType deathType) - { - return DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); - } - } + public static string GetPhrase(DeathType deathType) => + DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); + } } \ No newline at end of file diff --git a/QSB/DeathSync/PreventShipDestruction.cs b/QSB/DeathSync/PreventShipDestruction.cs index 1d38d5f9e..b2dd7beb5 100644 --- a/QSB/DeathSync/PreventShipDestruction.cs +++ b/QSB/DeathSync/PreventShipDestruction.cs @@ -8,7 +8,7 @@ namespace QSB.DeathSync { public class PreventShipDestruction : MonoBehaviour { - private void Awake() + public void Awake() { QSBCore.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); QSBCore.Helper.HarmonyHelper.Transpile("Detach", typeof(Patch), nameof(Patch.ReturnNull)); diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index cb0231b3e..a6fc26024 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -28,7 +28,7 @@ public class RespawnOnDeath : MonoBehaviour private ShipCockpitController _cockpitController; private PlayerSpacesuit _spaceSuit; - private void Awake() + public void Awake() { Instance = this; @@ -126,11 +126,9 @@ public void ResetPlayer() _spaceSuit.RemoveSuit(true); } - private SpawnPoint GetSpawnPoint(bool isShip = false) - { - return _playerSpawner - .GetValue("_spawnList") - .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); - } - } + private SpawnPoint GetSpawnPoint(bool isShip = false) => + _playerSpawner + .GetValue("_spawnList") + .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); + } } \ No newline at end of file diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index e008cf2a5..ebb824e96 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -11,18 +11,15 @@ public class ElevatorManager : MonoBehaviour private List _elevators; - private void Awake() + public void Awake() { Instance = this; QSBSceneManager.OnSceneLoaded += OnSceneLoaded; } - private void OnDestroy() - { - QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - } + public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - private void OnSceneLoaded(OWScene scene, bool isInUniverse) + private void OnSceneLoaded(OWScene scene, bool isInUniverse) { _elevators = Resources.FindObjectsOfTypeAll().ToList(); for (var id = 0; id < _elevators.Count; id++) diff --git a/QSB/Events/EventNames.cs b/QSB/Events/EventNames.cs index 6eba9a070..32b341229 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -25,8 +25,6 @@ public static class EventNames public static string QSBSectorChange = "QSBSectorChange"; public static string QSBPlayerStatesRequest = "QSBPlayerStatesRequest"; public static string QSBServerTime = "QSBServerTime"; - public static string QSBOnProbeAnchor = "QSBOnProbeAnchor"; - public static string QSBOnProbeWarp = "QSBOnProbeWarp"; public static string QSBStartLift = "QSBStartLift"; public static string QSBGeyserState = "QSBGeyserState"; public static string QSBCrouch = "QSBAnimTrigger"; diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index 0db09e6a8..2a890b2ec 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -8,14 +8,15 @@ namespace QSB.Events public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() { public abstract EventType Type { get; } - public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; + public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; + private readonly MessageHandler _eventHandler; protected QSBEvent() { _eventHandler = new MessageHandler(Type); - _eventHandler.OnClientReceiveMessage += (T message) => OnReceive(false, message); - _eventHandler.OnServerReceiveMessage += (T message) => OnReceive(true, message); + _eventHandler.OnClientReceiveMessage += message => OnReceive(false, message); + _eventHandler.OnServerReceiveMessage += message => OnReceive(true, message); } public abstract void SetupListener(); diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index 1033e3a8c..8dcb163d8 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -1,5 +1,4 @@ using OWML.Common; -using QSB.Animation; using QSB.Animation.Events; using QSB.ConversationSync.Events; using QSB.DeathSync.Events; diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index 7d7adf389..d535cc0df 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -6,13 +6,13 @@ namespace QSB.GeyserSync { public class GeyserManager : MonoBehaviour { - private void Awake() + public void Awake() { QSBSceneManager.OnSceneLoaded += OnSceneLoaded; QSBPatchManager.OnPatchType += OnPatchType; } - private void OnDestroy() + public void OnDestroy() { QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; QSBPatchManager.OnPatchType -= OnPatchType; diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index e94a5fbb9..d169ac209 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -10,13 +10,13 @@ namespace QSB.Instruments { public class InstrumentsManager : PlayerSyncObject { - private Transform rootObj; + private Transform _rootObj; private AnimationType _savedType; - private GameObject ChertDrum; + private GameObject _chertDrum; public void InitLocal(Transform root) { - rootObj = root; + _rootObj = root; gameObject.AddComponent(); QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); @@ -24,14 +24,14 @@ public void InitLocal(Transform root) QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt += () => ReturnToPlayer(); + QSBInputManager.ExitTaunt += ReturnToPlayer; QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); } public void InitRemote(Transform root) { - rootObj = root; + _rootObj = root; QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); } @@ -42,18 +42,24 @@ protected override void OnDestroy() { return; } - QSBInputManager.ChertTaunt -= () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt -= () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt -= () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt -= () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt -= () => StartInstrument(AnimationType.Riebeck); - QSBInputManager.ExitTaunt -= () => ReturnToPlayer(); + QSBInputManager.ChertTaunt -= OnChertTaunt; + QSBInputManager.EskerTaunt -= OnEskerTaunt; + QSBInputManager.FeldsparTaunt -= OnFeldsparTaunt; + QSBInputManager.GabbroTaunt -= OnGabbroTaunt; + QSBInputManager.RiebeckTaunt -= OnRiebeckTaunt; + QSBInputManager.ExitTaunt -= ReturnToPlayer; } + + private void OnChertTaunt() => StartInstrument(AnimationType.Chert); + private void OnEskerTaunt() => StartInstrument(AnimationType.Esker); + private void OnFeldsparTaunt() => StartInstrument(AnimationType.Feldspar); + private void OnGabbroTaunt() => StartInstrument(AnimationType.Gabbro); + private void OnRiebeckTaunt() => StartInstrument(AnimationType.Riebeck); - private void SetupInstruments() + private void SetupInstruments() { var bundle = QSBCore.InstrumentAssetBundle; - ChertDrum = MakeChertDrum(bundle); + _chertDrum = MakeChertDrum(bundle); } private GameObject MakeChertDrum(AssetBundle bundle) @@ -72,8 +78,8 @@ private GameObject MakeChertDrum(AssetBundle bundle) // TODO : fix for instrument release mr.sharedMaterial = null; } - drum.transform.parent = rootObj; - drum.transform.rotation = rootObj.rotation; + drum.transform.parent = _rootObj; + drum.transform.rotation = _rootObj.rotation; drum.transform.localPosition = Vector3.zero; drum.transform.localScale = new Vector3(16.0f, 16.5f, 16.0f); drum.SetActive(false); @@ -120,12 +126,12 @@ public void CheckInstrumentProps(AnimationType type) switch (type) { case AnimationType.Chert: - ChertDrum.SetActive(true); + _chertDrum.SetActive(true); break; case AnimationType.PlayerSuited: case AnimationType.PlayerUnsuited: - ChertDrum.SetActive(false); + _chertDrum.SetActive(false); break; } } diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index a5c3c9c5e..146006325 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -3,8 +3,10 @@ namespace QSB.Instruments.QSBCamera { internal class CameraController : MonoBehaviour - { - private float _degreesX; + { + public GameObject CameraObject { get; set; } + + private float _degreesX; private float _degreesY; private Quaternion _rotationX; private Quaternion _rotationY; @@ -15,9 +17,7 @@ internal class CameraController : MonoBehaviour // Maximum distance for camera clipping private const float RayLength = 5f; - public GameObject CameraObject; - - private void FixedUpdate() + public void FixedUpdate() { if (CameraManager.Instance.Mode != CameraMode.ThirdPerson) { @@ -41,27 +41,19 @@ private void UpdatePosition() else { // Raycast didn't hit collider, get target from camera direction - localTargetPoint = localDirection * RayLength * PercentToMove; + localTargetPoint = RayLength * PercentToMove * localDirection; } var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); - Vector3 movement; - if (targetDistance < currentDistance) - { - // Snap to target to avoid clipping - movement = localTargetPoint; - } - else - { - // Move camera out slowly - movement = Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); - } + var movement = targetDistance < currentDistance + ? localTargetPoint + : Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); CameraObject.transform.localPosition = movement; } private void UpdateInput() { - var input = OWInput.GetValue(InputLibrary.look, false, InputMode.All); + var input = OWInput.GetValue(InputLibrary.look, false); _degreesX += input.x * 180f * Time.fixedDeltaTime; _degreesY += input.y * 180f * Time.fixedDeltaTime; } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index ff72c4eb3..781ad57b7 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -8,14 +8,17 @@ namespace QSB.Instruments.QSBCamera public class CameraManager : MonoBehaviour { public static CameraManager Instance; - private GameObject CameraBase; - private GameObject CameraObj; - private Camera Camera; - private OWCamera OWCamera; + + public bool IsSetUp { get; private set; } public CameraMode Mode { get; private set; } - public void Start() + private GameObject _cameraBase; + private GameObject _cameraObj; + private Camera _camera; + private OWCamera _owCamera; + + public void Start() { Instance = this; SetupCamera(); @@ -23,38 +26,38 @@ public void Start() private void SetupCamera() { - CameraBase = new GameObject(); - CameraBase.SetActive(false); - CameraBase.AddComponent(); - CameraBase.transform.parent = Locator.GetPlayerTransform(); - CameraBase.transform.localPosition = Vector3.zero; - CameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); + _cameraBase = new GameObject(); + _cameraBase.SetActive(false); + _cameraBase.AddComponent(); + _cameraBase.transform.parent = Locator.GetPlayerTransform(); + _cameraBase.transform.localPosition = Vector3.zero; + _cameraBase.transform.localRotation = Quaternion.Euler(0, 0, 0); - CameraObj = new GameObject(); - CameraObj.transform.parent = CameraBase.transform; - CameraObj.transform.localPosition = new Vector3(0, 0, -5f); - CameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); - Camera = CameraObj.AddComponent(); - Camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); - Camera.clearFlags = CameraClearFlags.Color; - Camera.backgroundColor = Color.black; - Camera.fieldOfView = 90f; - Camera.nearClipPlane = 0.1f; - Camera.farClipPlane = 40000f; - Camera.depth = 0f; - Camera.enabled = false; - OWCamera = CameraObj.AddComponent(); - OWCamera.renderSkybox = true; + _cameraObj = new GameObject(); + _cameraObj.transform.parent = _cameraBase.transform; + _cameraObj.transform.localPosition = new Vector3(0, 0, -5f); + _cameraObj.transform.localRotation = Quaternion.Euler(0, 0, 0); + _camera = _cameraObj.AddComponent(); + _camera.cullingMask = Locator.GetPlayerCamera().mainCamera.cullingMask & ~(1 << 27) | (1 << 22); + _camera.clearFlags = CameraClearFlags.Color; + _camera.backgroundColor = Color.black; + _camera.fieldOfView = 90f; + _camera.nearClipPlane = 0.1f; + _camera.farClipPlane = 40000f; + _camera.depth = 0f; + _camera.enabled = false; + _owCamera = _cameraObj.AddComponent(); + _owCamera.renderSkybox = true; - CameraBase.AddComponent().CameraObject = CameraObj; + _cameraBase.AddComponent().CameraObject = _cameraObj; - var screenGrab = CameraObj.AddComponent(); + var screenGrab = _cameraObj.AddComponent(); screenGrab._downsampleShader = Locator.GetPlayerCamera().gameObject.GetComponent()._downsampleShader; - var fogImage = CameraObj.AddComponent(); + var fogImage = _cameraObj.AddComponent(); fogImage.fogShader = Locator.GetPlayerCamera().gameObject.GetComponent().fogShader; - CameraBase.SetActive(true); + _cameraBase.SetActive(true); IsSetUp = true; } @@ -79,14 +82,14 @@ public void SwitchTo3rdPerson() return; } OWInput.ChangeInputMode(InputMode.None); - GlobalMessenger.FireEvent("SwitchActiveCamera", OWCamera); + GlobalMessenger.FireEvent("SwitchActiveCamera", _owCamera); Locator.GetPlayerCamera().mainCamera.enabled = false; - if (CameraObj.GetComponent() == null) + if (_cameraObj.GetComponent() == null) { - var postProcessing = CameraObj.AddComponent(); + var postProcessing = _cameraObj.AddComponent(); postProcessing.profile = Locator.GetPlayerCamera().gameObject.GetComponent().profile; } - Camera.enabled = true; + _camera.enabled = true; Mode = CameraMode.ThirdPerson; } @@ -107,7 +110,7 @@ public void SwitchTo1stPerson() OWInput.ChangeInputMode(InputMode.Character); GlobalMessenger.FireEvent("SwitchActiveCamera", Locator.GetPlayerCamera()); Locator.GetActiveCamera().mainCamera.enabled = true; - Camera.enabled = false; + _camera.enabled = false; Mode = CameraMode.FirstPerson; } } diff --git a/QSB/Instruments/QSBCamera/CameraMode.cs b/QSB/Instruments/QSBCamera/CameraMode.cs index 71cb586d1..49229d272 100644 --- a/QSB/Instruments/QSBCamera/CameraMode.cs +++ b/QSB/Instruments/QSBCamera/CameraMode.cs @@ -2,7 +2,7 @@ { public enum CameraMode { - FirstPerson, - ThirdPerson + FirstPerson = 0, + ThirdPerson = 1 } } \ No newline at end of file diff --git a/QSB/Messaging/MessageHandler.cs b/QSB/Messaging/MessageHandler.cs index 4c148f91d..b51ef2de2 100644 --- a/QSB/Messaging/MessageHandler.cs +++ b/QSB/Messaging/MessageHandler.cs @@ -13,7 +13,6 @@ namespace QSB.Messaging public event Action OnServerReceiveMessage; private readonly short _eventType; - public EventType BaseEventType => (EventType)(_eventType - 1 - QSBMsgType.Highest); public MessageHandler(EventType eventType) { diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index 583958e30..e2cee4133 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -25,49 +25,62 @@ public class OrbUserEvent : QSBEvent }; public override void OnReceiveRemote(bool server, WorldObjectMessage message) - { - if (!server) - { - if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) - { - DebugLog.DebugWrite($"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", MessageType.Error); - return; - } - var orb = QSBWorldSync.OrbSyncList - .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); - orb.enabled = true; - return; - } + { + if (server) + { + HandleServer(message); + } + else + { + HandleClient(message); + } + } + + private static void HandleServer(WorldObjectMessage message) + { + var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); + if (QSBWorldSync.OrbSyncList.Count == 0) + { + DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (fromPlayer == null) + { + DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); + } + var orbSync = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); + if (orbSync == null) + { + DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orbIdentity = orbSync.GetComponent(); + if (orbIdentity == null) + { + DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) + { + orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); + } + orbIdentity.AssignClientAuthority(fromPlayer); + orbSync.enabled = true; + } - var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); - if (QSBWorldSync.OrbSyncList.Count == 0) - { - DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (fromPlayer == null) - { - DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); - } - var orbSync = QSBWorldSync.OrbSyncList - .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); - if (orbSync == null) - { - DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orbIdentity = orbSync.GetComponent(); - if (orbIdentity == null) - { - DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) - { - orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); - } - orbIdentity.AssignClientAuthority(fromPlayer); - orbSync.enabled = true; - } - } + private static void HandleClient(WorldObjectMessage message) + { + if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) + { + DebugLog.DebugWrite( + $"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", + MessageType.Error); + return; + } + var orb = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); + orb.enabled = true; + } + } } \ No newline at end of file diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 3dadc8a02..960e28979 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -15,11 +15,11 @@ namespace QSB.Patches public static class QSBPatchManager { - public static List _patchList = new List(); - public static event PatchEvent OnPatchType; - public static void Init() + private static List _patchList = new List(); + + public static void Init() { _patchList = new List { diff --git a/QSB/Patches/QSBPatchTypes.cs b/QSB/Patches/QSBPatchTypes.cs index 5ba4706b6..b2c79493e 100644 --- a/QSB/Patches/QSBPatchTypes.cs +++ b/QSB/Patches/QSBPatchTypes.cs @@ -2,8 +2,8 @@ { public enum QSBPatchTypes { - OnModStart, - OnClientConnect, - OnNonServerClientConnect + OnModStart = 0, + OnClientConnect = 1, + OnNonServerClientConnect = 2 } } \ No newline at end of file diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index cec6b65f6..78dc2ab99 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -23,25 +23,39 @@ public class PlayerReadyEvent : QSBEvent }; public override void OnReceiveRemote(bool server, ToggleMessage message) - { - if (!server) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - if (!QSBPlayerManager.PlayerExists(message.FromId)) - { - DebugLog.ToConsole("Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", MessageType.Error); - return; - } - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); - } - return; - } - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - } - } + { + if (server) + { + HandleServer(message); + } + else + { + HandleClient(message); + } + } + + private static void HandleServer(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + } + + private void HandleClient(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole( + "Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", + MessageType.Error); + return; + } + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); + } + } + } } \ No newline at end of file diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 596b0773e..7a9351a78 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -7,67 +7,65 @@ namespace QSB.Player { - public static class QSBPlayerManager - { - public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.NetIdentity?.NetId.Value ?? uint.MaxValue; - public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); - public static List PlayerList { get; } = new List(); - public static List PlayerSyncObjects { get; } = new List(); + public static class QSBPlayerManager + { + public static uint LocalPlayerId => PlayerTransformSync.LocalInstance.NetIdentity?.NetId.Value ?? uint.MaxValue; + public static PlayerInfo LocalPlayer => GetPlayer(LocalPlayerId); + public static List PlayerList { get; } = new List(); + public static List PlayerSyncObjects { get; } = new List(); - public static PlayerInfo GetPlayer(uint id) - { - if (id == uint.MaxValue || id == 0U) - { - return default; - } - var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); - if (player != null) - { - return player; - } - DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); - player = new PlayerInfo(id); - PlayerList.Add(player); - return player; - } + public static PlayerInfo GetPlayer(uint id) + { + if (id == uint.MaxValue || id == 0U) + { + return default; + } + var player = PlayerList.FirstOrDefault(x => x.PlayerId == id); + if (player != null) + { + return player; + } + DebugLog.DebugWrite($"Creating player id {id}", MessageType.Info); + player = new PlayerInfo(id); + PlayerList.Add(player); + return player; + } - public static void RemovePlayer(uint id) - { - DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); - PlayerList.Remove(GetPlayer(id)); - } + public static void RemovePlayer(uint id) + { + DebugLog.DebugWrite($"Removing player {GetPlayer(id).Name} id {id}", MessageType.Info); + PlayerList.Remove(GetPlayer(id)); + } - public static void RemoveAllPlayers() - { - DebugLog.DebugWrite($"Removing all players.", MessageType.Info); - PlayerList.Clear(); - } + public static void RemoveAllPlayers() + { + DebugLog.DebugWrite($"Removing all players.", MessageType.Info); + PlayerList.Clear(); + } - public static bool PlayerExists(uint id) - => id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); + public static bool PlayerExists(uint id) => + id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); - public static void HandleFullStateMessage(PlayerStateMessage message) - { - var player = GetPlayer(message.AboutId); - player.Name = message.PlayerName; - player.IsReady = message.PlayerReady; - player.State = message.PlayerState; - if (LocalPlayer.IsReady) - { - player.UpdateStateObjects(); - } - } + public static void HandleFullStateMessage(PlayerStateMessage message) + { + var player = GetPlayer(message.AboutId); + player.Name = message.PlayerName; + player.IsReady = message.PlayerReady; + player.State = message.PlayerState; + if (LocalPlayer.IsReady) + { + player.UpdateStateObjects(); + } + } - public static IEnumerable GetSyncObjects() where T : PlayerSyncObject - => PlayerSyncObjects.OfType().Where(x => x != null); + public static IEnumerable GetSyncObjects() where T : PlayerSyncObject => + PlayerSyncObjects.OfType().Where(x => x != null); - public static T GetSyncObject(uint id) where T : PlayerSyncObject - => GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + public static T GetSyncObject(uint id) where T : PlayerSyncObject => + GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); - public static bool IsBelongingToLocalPlayer(uint id) - { - return id == LocalPlayerId || - PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); - } - } + public static bool IsBelongingToLocalPlayer(uint id) => + id == LocalPlayerId || + PlayerSyncObjects.Any(x => x != null && x.AttachedNetId == id && x.IsLocalPlayer); + } } \ No newline at end of file diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 0ee477fca..2a29dd115 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -28,7 +28,7 @@ public class QSBCore : ModBehaviour public static bool HasWokenUp { get; set; } public static bool IsServer => QSBNetworkServer.active; - private void Awake() + public void Awake() { Application.runInBackground = true; @@ -41,7 +41,7 @@ private void Awake() LogFilter.currentLogLevel = LogFilter.Debug; } - private void Start() + public void Start() { Helper = ModHelper; DebugLog.ToConsole($"* Start of QSB version {Helper.Manifest.Version} - authored by {Helper.Manifest.Author}", MessageType.Info); @@ -68,12 +68,10 @@ private void Start() Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); } - private void Update() - { - QSBNetworkIdentity.UNetStaticUpdate(); - } + public void Update() => + QSBNetworkIdentity.UNetStaticUpdate(); - public override void Configure(IModConfig config) + public override void Configure(IModConfig config) { DefaultServerIP = config.GetSettingsValue("defaultServerIP"); Port = config.GetSettingsValue("port"); diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index 5cb209e5e..1f90c3b14 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -36,7 +36,7 @@ public class QSBNetworkLobby : NetworkBehaviour "Jinha" }; - private void Awake() + public void Awake() { PlayerName = GetPlayerName(); CanEditName = true; @@ -54,7 +54,7 @@ private string GetPlayerName() : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); } - private void OnGUI() + public void OnGUI() { GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); if (CanEditName) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 9b6ed1021..789a8418c 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -25,23 +25,23 @@ namespace QSB { public class QSBNetworkManager : QSBNetworkManagerUNET { - private const int MaxConnections = 128; - private const int MaxBufferedPackets = 64; + public static QSBNetworkManager Instance { get; private set; } - public static QSBNetworkManager Instance { get; private set; } + public event Action OnNetworkManagerReady; - public event Action OnNetworkManagerReady; + public bool IsReady { get; private set; } + public GameObject OrbPrefab { get; set; } - public bool IsReady { get; private set; } + private const int MaxConnections = 128; + private const int MaxBufferedPackets = 64; - private QSBNetworkLobby _lobby; + private QSBNetworkLobby _lobby; private AssetBundle _assetBundle; private GameObject _shipPrefab; private GameObject _cameraPrefab; private GameObject _probePrefab; - public GameObject OrbPrefab; - private void Awake() + public void Awake() { Instance = this; @@ -49,78 +49,68 @@ private void Awake() _assetBundle = QSBCore.NetworkAssetBundle; playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - var ident = playerPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); - Destroy(playerPrefab.GetComponent()); + SetupNetworkId(playerPrefab); + Destroy(playerPrefab.GetComponent()); Destroy(playerPrefab.GetComponent()); - var transform = playerPrefab.AddComponent(); - transform.SendInterval = 0.1f; - transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; - playerPrefab.AddComponent(); + SetupNetworkTransform(playerPrefab); + playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); - ident = _shipPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", _shipPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", _shipPrefab.GetComponent().sceneId); - Destroy(_shipPrefab.GetComponent()); + SetupNetworkId(_shipPrefab); + Destroy(_shipPrefab.GetComponent()); Destroy(_shipPrefab.GetComponent()); - transform = _shipPrefab.AddComponent(); - transform.SendInterval = 0.1f; - transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; - _shipPrefab.AddComponent(); + SetupNetworkTransform(_shipPrefab); + _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); - ident = _cameraPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", _cameraPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", _cameraPrefab.GetComponent().sceneId); - Destroy(_cameraPrefab.GetComponent()); + SetupNetworkId(_cameraPrefab); + Destroy(_cameraPrefab.GetComponent()); Destroy(_cameraPrefab.GetComponent()); - transform = _cameraPrefab.AddComponent(); - transform.SendInterval = 0.1f; - transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; - _cameraPrefab.AddComponent(); + SetupNetworkTransform(_cameraPrefab); + _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); - ident = _probePrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", _probePrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", _probePrefab.GetComponent().sceneId); - Destroy(_probePrefab.GetComponent()); + SetupNetworkId(_probePrefab); + Destroy(_probePrefab.GetComponent()); Destroy(_probePrefab.GetComponent()); - transform = _probePrefab.AddComponent(); - transform.SendInterval = 0.1f; - transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; - _probePrefab.AddComponent(); + SetupNetworkTransform(_probePrefab); + _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - ident = OrbPrefab.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", OrbPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", OrbPrefab.GetComponent().sceneId); - Destroy(OrbPrefab.GetComponent()); + SetupNetworkId(OrbPrefab); + Destroy(OrbPrefab.GetComponent()); Destroy(OrbPrefab.GetComponent()); - transform = OrbPrefab.AddComponent(); - transform.SendInterval = 0.1f; - transform.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; - OrbPrefab.AddComponent(); + SetupNetworkTransform(OrbPrefab); + OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); ConfigureNetworkManager(); QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - private void OnDestroy() - => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; + private void SetupNetworkId(GameObject go) + { + var ident = go.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); + } + + private void SetupNetworkTransform(GameObject go) + { + var trans = go.AddComponent(); + trans.SendInterval = 0.1f; + trans.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; + } + + public void OnDestroy() => + QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; private void OnSceneLoaded(OWScene scene) { diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 75daa438f..1b72fbca6 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -4,34 +4,34 @@ namespace QSB { - public static class QSBSceneManager - { - public static OWScene CurrentScene => LoadManager.GetCurrentScene(); + public static class QSBSceneManager + { + public static OWScene CurrentScene => LoadManager.GetCurrentScene(); - public static bool IsInUniverse => InUniverse(CurrentScene); + public static bool IsInUniverse => InUniverse(CurrentScene); - public static event Action OnSceneLoaded; + public static event Action OnSceneLoaded; - public static event Action OnUniverseSceneLoaded; + public static event Action OnUniverseSceneLoaded; - static QSBSceneManager() - { - LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; - DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); - } + static QSBSceneManager() + { + LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; + DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); + } - private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) - { - DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); - var universe = InUniverse(newScene); - OnSceneLoaded?.Invoke(newScene, universe); - if (universe) - { - OnUniverseSceneLoaded?.Invoke(newScene); - } - } + private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) + { + DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); + var universe = InUniverse(newScene); + OnSceneLoaded?.Invoke(newScene, universe); + if (universe) + { + OnUniverseSceneLoaded?.Invoke(newScene); + } + } - private static bool InUniverse(OWScene scene) - => scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) => + scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; + } } \ No newline at end of file diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 392d8e116..ec891393c 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -17,14 +17,14 @@ public class QSBSectorManager : MonoBehaviour Sector.Name.Ship }; - private void Awake() + public void Awake() { Instance = this; QSBSceneManager.OnUniverseSceneLoaded += (OWScene scene) => RebuildSectors(); DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } - private void OnDestroy() + public void OnDestroy() { QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); } @@ -43,8 +43,8 @@ public void RebuildSectors() IsReady = QSBWorldSync.GetWorldObjects().Any(); } - public QSBSector GetClosestSector(Transform trans) // trans rights - { + public QSBSector GetClosestSector(Transform trans) // trans rights \o/ + { return QSBWorldSync.GetWorldObjects() .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index 4ebe3a5ce..d4bfbdd70 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -21,7 +21,8 @@ private void Update() { return; } - QSBPlayerManager.GetSyncObjects().Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); + QSBPlayerManager.GetSyncObjects() + .Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); _checkTimer = 0; } @@ -41,9 +42,7 @@ private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) SendSector(transformSync.NetId.Value, closestSector); } - private void SendSector(uint id, QSBSector sector) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); - } - } + private void SendSector(uint id, QSBSector sector) => + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); + } } \ No newline at end of file diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index 8edea9790..530d8ae7c 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -18,9 +18,7 @@ public class ServerTimeEvent : QSBEvent LoopCount = count }; - public override void OnReceiveRemote(bool server, ServerTimeMessage message) - { - WakeUpSync.LocalInstance.OnClientReceiveMessage(message); - } - } + public override void OnReceiveRemote(bool server, ServerTimeMessage message) => + WakeUpSync.LocalInstance.OnClientReceiveMessage(message); + } } \ No newline at end of file diff --git a/QSB/TimeSync/PreserveTimeScale.cs b/QSB/TimeSync/PreserveTimeScale.cs index fd2853585..12c86fff7 100644 --- a/QSB/TimeSync/PreserveTimeScale.cs +++ b/QSB/TimeSync/PreserveTimeScale.cs @@ -5,7 +5,7 @@ namespace QSB.TimeSync { public class PreserveTimeScale : QSBNetworkBehaviour { - private void Start() + public void Start() { QSBCore.Helper.Menus.PauseMenu.GetTitleButton("Button-EndCurrentLoop").Hide(); // Remove the meditation button diff --git a/QSB/TimeSync/TimeSyncType.cs b/QSB/TimeSync/TimeSyncType.cs index e1545bc4b..41fdfb881 100644 --- a/QSB/TimeSync/TimeSyncType.cs +++ b/QSB/TimeSync/TimeSyncType.cs @@ -2,8 +2,8 @@ { public enum TimeSyncType { - None, - Pausing, - Fastforwarding + None = 0, + Pausing = 1, + Fastforwarding = 2 } } \ No newline at end of file diff --git a/QSB/TimeSync/TimeSyncUI.cs b/QSB/TimeSync/TimeSyncUI.cs index 173a73b33..1faeaf7ff 100644 --- a/QSB/TimeSync/TimeSyncUI.cs +++ b/QSB/TimeSync/TimeSyncUI.cs @@ -15,7 +15,7 @@ internal class TimeSyncUI : MonoBehaviour private bool _isSetUp; private TimeSyncType _currentType; - private void Awake() + public void Awake() { Instance = this; enabled = false; @@ -32,7 +32,7 @@ private void OnUniverseSceneLoad(OWScene scene) _canvas.enabled = false; } - private void OnDestroy() + public void OnDestroy() { QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoad; if (_canvas.enabled) @@ -41,9 +41,11 @@ private void OnDestroy() } } - public static void Start(TimeSyncType type) => QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); + public static void Start(TimeSyncType type) => + QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); - public static void Stop() => QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); + public static void Stop() => + QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); private void StartTimeSync(TimeSyncType type) { @@ -75,7 +77,7 @@ private void OnWillRenderCanvases() switch (_currentType) { case TimeSyncType.Fastforwarding: - text = $"{minutes.ToString("D2")}:{seconds.ToString("D2")}" + text = $"{minutes:D2}:{seconds:D2}" + Environment.NewLine + "Fast-forwarding to match server time..."; break; diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index be91aaa0b..c3fc7689c 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -32,7 +32,7 @@ public override void OnStartLocalPlayer() LocalInstance = this; } - private void Start() + public void Start() { if (!IsLocalPlayer) { @@ -57,7 +57,7 @@ private void OnWakeUp() } } - private void OnDestroy() + public void OnDestroy() { QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; GlobalMessenger.RemoveListener(EventNames.RestartTimeLoop, OnLoopStart); @@ -184,7 +184,7 @@ private void EnableInput() OWInput.ChangeInputMode(InputMode.Character); } - private void Update() + public void Update() { if (IsServer) { diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 195009b8b..293fa3ac4 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -36,9 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.FlashLight?.UpdateState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); - } - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index 4a46795c7..d572db543 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -36,9 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.Probe?.SetState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); - } - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index a271e28fb..fde92dfb1 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -36,9 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); - } - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 5451d449d..10519c02a 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -36,9 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.Signalscope?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); - } - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index d6ef404ff..72f721602 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -36,9 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.Translator?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) - { - QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); - } - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index bba215609..006585ab7 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -59,7 +59,7 @@ private static void CreateStowTransforms(Transform cameraBody) hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); } - private static GameObject CreateFlashlight(Transform cameraBody) + private static void CreateFlashlight(Transform cameraBody) { var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); flashlightRoot.SetActive(false); @@ -72,11 +72,9 @@ private static GameObject CreateFlashlight(Transform cameraBody) flashlightRoot.transform.parent = cameraBody; flashlightRoot.transform.localPosition = FlashlightOffset; flashlightRoot.SetActive(true); + } - return flashlightRoot; - } - - private static GameObject CreateSignalscope(Transform cameraBody) + private static void CreateSignalscope(Transform cameraBody) { var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); signalscopeRoot.SetActive(false); @@ -101,11 +99,9 @@ private static GameObject CreateSignalscope(Transform cameraBody) signalscopeRoot.transform.localPosition = Vector3.zero; signalscopeRoot.transform.localScale = SignalscopeScale; signalscopeRoot.SetActive(true); + } - return signalscopeRoot; - } - - private static GameObject CreateTranslator(Transform cameraBody) + private static void CreateTranslator(Transform cameraBody) { var original = GameObject.Find("NomaiTranslatorProp"); @@ -142,11 +138,9 @@ private static GameObject CreateTranslator(Transform cameraBody) translatorRoot.transform.localPosition = Vector3.zero; translatorRoot.transform.localScale = TranslatorScale; QSBCore.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + } - return translatorRoot; - } - - private static GameObject CreateProbeLauncher(Transform cameraBody) + private static void CreateProbeLauncher(Transform cameraBody) { var launcherRoot = new GameObject("ProbeLauncher"); var modelOrig = GameObject.Find("PlayerCamera/ProbeLauncher/Props_HEA_ProbeLauncher"); @@ -182,13 +176,9 @@ private static GameObject CreateProbeLauncher(Transform cameraBody) launcherRoot.transform.parent = cameraBody; launcherRoot.transform.localPosition = ProbeLauncherOffset; launcherRoot.SetActive(true); + } - return launcherRoot; - } - - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) - { - return root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); - } - } + private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) => + root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); + } } \ No newline at end of file diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/QSBFlashlight.cs index 99a069369..49d86947e 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/QSBFlashlight.cs @@ -14,7 +14,7 @@ public class QSBFlashlight : MonoBehaviour private Vector3 _baseForward; private Quaternion _baseRotation; - private void Start() + public void Start() { _baseForward = _basePivot.forward; _baseRotation = _basePivot.rotation; @@ -78,9 +78,9 @@ private void TurnOff() _flashlightOn = false; } - private void FixedUpdate() + public void FixedUpdate() { - // This really isn't needed... but it makes it look that extra bit nicer. + // This really isn't needed... but it makes it look that extra bit nicer. ^_^ var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward); var b = lhs * _baseRotation; _baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime); diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index 349af3d9d..fd4067858 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -31,8 +31,8 @@ public float ArrivalDegrees set => _arrivalDegrees = value; } - private void OnEnable() => ToolGameObject?.SetActive(true); - private void OnDisable() => ToolGameObject?.SetActive(false); + public void OnEnable() => ToolGameObject?.SetActive(true); + public void OnDisable() => ToolGameObject?.SetActive(false); public void ChangeEquipState(bool equipState) { diff --git a/QSB/Tools/ToolType.cs b/QSB/Tools/ToolType.cs index a1e2a7efd..1b2c711e8 100644 --- a/QSB/Tools/ToolType.cs +++ b/QSB/Tools/ToolType.cs @@ -2,8 +2,8 @@ { public enum ToolType { - Signalscope, - ProbeLauncher, - Translator + Signalscope = 0, + ProbeLauncher = 1, + Translator = 2 } } \ No newline at end of file diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index 1dcf6f09f..ed23b1933 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -29,7 +29,7 @@ private void OnReady() _isReady = true; } - private void OnDestroy() + public void OnDestroy() { QSBWorldSync.OrbSyncList.Remove(this); } @@ -41,7 +41,7 @@ protected void Init() _isInitialized = true; } - private void Update() + public void Update() { if (!_isInitialized && _isReady) { diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 087cd2aed..88c2444d3 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -11,7 +11,8 @@ public class PlayerCameraSync : TransformSync { protected void Start() { - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); + var lowestBound = QSBPlayerManager.GetSyncObjects() + .Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); NetIdentity.SetRootIdentity(lowestBound.NetIdentity); } diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index aa3fc0cf2..983ebf14a 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -7,91 +7,89 @@ namespace QSB.TransformSync { - public class PlayerProbeSync : TransformSync - { - private Transform _disabledSocket; - - protected void Start() - { - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); - NetIdentity.SetRootIdentity(lowestBound.NetIdentity); - } - - private Transform GetProbe() - => Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - - protected override Transform InitLocalTransform() - { - var body = GetProbe(); - - SetSocket(Player.Camera.transform); - Player.ProbeBody = body.gameObject; - - return body; - } - - protected override Transform InitRemoteTransform() - { - var probe = GetProbe(); - - if (probe == null) - { - DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); - return default; - } - - var body = probe.InstantiateInactive(); - body.name = "RemoteProbeTransform"; - - Destroy(body.GetComponentInChildren()); - - PlayerToolsManager.CreateProbe(body, Player); - - QSBCore.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); - Player.ProbeBody = body.gameObject; - - return body; - } - - private void SetSocket(Transform socket) - { - _disabledSocket = socket; - } - - protected override void UpdateTransform() - { - base.UpdateTransform(); - if (Player == null) - { - DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); - return; - } - if (_disabledSocket == null) - { - DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); - return; - } - if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) - { - return; - } - if (HasAuthority) - { - transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - return; - } - if (SyncedTransform.position == Vector3.zero) - { - return; - } - SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - } - - public override bool IsReady => Locator.GetProbe() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public class PlayerProbeSync : TransformSync + { + private Transform _disabledSocket; + + protected void Start() + { + var lowestBound = QSBPlayerManager.GetSyncObjects() + .Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); + NetIdentity.SetRootIdentity(lowestBound.NetIdentity); + } + + private Transform GetProbe() => + Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); + + protected override Transform InitLocalTransform() + { + var body = GetProbe(); + + SetSocket(Player.Camera.transform); + Player.ProbeBody = body.gameObject; + + return body; + } + + protected override Transform InitRemoteTransform() + { + var probe = GetProbe(); + + if (probe == null) + { + DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); + return default; + } + + var body = probe.InstantiateInactive(); + body.name = "RemoteProbeTransform"; + + Destroy(body.GetComponentInChildren()); + + PlayerToolsManager.CreateProbe(body, Player); + + QSBCore.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); + Player.ProbeBody = body.gameObject; + + return body; + } + + private void SetSocket(Transform socket) => _disabledSocket = socket; + + protected override void UpdateTransform() + { + base.UpdateTransform(); + if (Player == null) + { + DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); + return; + } + if (_disabledSocket == null) + { + DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); + return; + } + if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) + { + return; + } + if (HasAuthority) + { + transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + return; + } + if (SyncedTransform.position == Vector3.zero) + { + return; + } + SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + } + + public override bool IsReady => Locator.GetProbe() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index cf04ec02b..38ccaedbe 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -5,60 +5,57 @@ namespace QSB.TransformSync { - public class PlayerTransformSync : TransformSync - { - public static PlayerTransformSync LocalInstance { get; private set; } + public class PlayerTransformSync : TransformSync + { + public static PlayerTransformSync LocalInstance { get; private set; } - static PlayerTransformSync() - { - AnimControllerPatch.Init(); - } + static PlayerTransformSync() => AnimControllerPatch.Init(); - public override void OnStartLocalPlayer() - => LocalInstance = this; + public override void OnStartLocalPlayer() => + LocalInstance = this; - protected override void OnDestroy() - { - base.OnDestroy(); - Player.HudMarker?.Remove(); - QSBPlayerManager.RemovePlayer(PlayerId); - } + protected override void OnDestroy() + { + base.OnDestroy(); + Player.HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(PlayerId); + } - private Transform GetPlayerModel() - => Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); + private Transform GetPlayerModel() => + Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); - protected override Transform InitLocalTransform() - { - var body = GetPlayerModel(); + protected override Transform InitLocalTransform() + { + var body = GetPlayerModel(); - GetComponent().InitLocal(body); - GetComponent().InitLocal(body); + GetComponent().InitLocal(body); + GetComponent().InitLocal(body); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = Instantiate(GetPlayerModel()); + protected override Transform InitRemoteTransform() + { + var body = Instantiate(GetPlayerModel()); - GetComponent().InitRemote(body); - GetComponent().InitRemote(body); + GetComponent().InitRemote(body); + GetComponent().InitRemote(body); - var marker = body.gameObject.AddComponent(); - marker.Init(Player); + var marker = body.gameObject.AddComponent(); + marker.Init(Player); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } \ No newline at end of file diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 1d27d20fa..9df4fc16d 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -8,18 +8,17 @@ public class ShipTransformSync : TransformSync { protected void Start() { - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); + var lowestBound = QSBPlayerManager.GetSyncObjects() + .Where(x => x.NetId.Value < NetId.Value).OrderBy(x => x.NetId.Value).Last(); NetIdentity.SetRootIdentity(lowestBound.NetIdentity); } private Transform GetShipModel() => Locator.GetShipTransform(); - protected override Transform InitLocalTransform() - { - return GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); - } + protected override Transform InitLocalTransform() => + GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); - protected override Transform InitRemoteTransform() + protected override Transform InitRemoteTransform() { var shipModel = GetShipModel(); diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index d8d65c0c6..ad2af5ee3 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -39,12 +39,10 @@ protected override void OnDestroy() QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) - { - _isInitialized = false; - } + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => + _isInitialized = false; - protected void Init() + protected void Init() { SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); SetReferenceSector(QSBSectorManager.Instance.GetClosestSector(SyncedTransform)); @@ -52,7 +50,7 @@ protected void Init() _isVisible = true; } - private void Update() + public void Update() { if (!_isInitialized && IsReady) { diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index e2c97f1bf..c8151a90f 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -24,7 +24,7 @@ private void InsertWarpCore() bridgeVolume.AddObjectToVolume(Locator.GetPlayerCameraDetector()); } - private void Update() + public void Update() { if (!QSBCore.DebugMode) { @@ -40,7 +40,7 @@ private void Update() } if (Input.GetKeyDown(KeyCode.Keypad3)) { - LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite, 1f, true); + LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite); } } } diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index 0802e4afa..dede3f902 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -11,7 +11,7 @@ public static void ToConsole(string message, MessageType type = MessageType.Mess { // make custom method name in owml log. // i wrote the owml code for this so this is fine?? shut up i dont want to change owml - var console = (ModSocketOutput)QSBCore.Helper.Console; + var console = (ModSocketOutput)QSBCore.Helper.Console; var method = console.GetType() .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .Last(x => x.Name == "WriteLine"); diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index 9919cdec0..c68b1a662 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -25,9 +25,7 @@ public static GameObject InstantiateInactive(this GameObject original) return copy; } - public static Transform InstantiateInactive(this Transform original) - { - return original.gameObject.InstantiateInactive().transform; - } - } + public static Transform InstantiateInactive(this Transform original) => + original.gameObject.InstantiateInactive().transform; + } } \ No newline at end of file diff --git a/QSB/Utility/ListExtensions.cs b/QSB/Utility/ListExtensions.cs deleted file mode 100644 index 5513c4d17..000000000 --- a/QSB/Utility/ListExtensions.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace QSB.Utility -{ - public static class ListExtensions - { - public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) - { - var seenKeys = new HashSet(); - foreach (var element in source) - { - if (seenKeys.Add(keySelector(element))) - { - yield return element; - } - } - } - } -} \ No newline at end of file diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index f095db1a9..b231fe310 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -11,13 +11,14 @@ namespace QSB.WorldSync { public static class QSBWorldSync { - private static readonly List WorldObjects = new List(); - public static List OrbSyncList = new List(); - public static List OldOrbList = new List(); - public static List OldDialogueTrees = new List(); + public static List OrbSyncList { get; } = new List(); + 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 void AddWorldObject(WorldObject worldObject) + private static readonly List WorldObjects = new List(); + + public static void AddWorldObject(WorldObject worldObject) { if (WorldObjects.Contains(worldObject)) { @@ -43,8 +44,8 @@ public static void RemoveWorldObjects() where T : WorldObject public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) { - var slotList = GetWorldObjects(); - if (slotList.Count() == 0) + var slotList = GetWorldObjects().ToList(); + if (!slotList.Any()) { return; } From 3166434aac67832b3b7bcc9bd7ba54b63f625071 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 21:20:53 +0000 Subject: [PATCH 168/207] cleanup --- QSB/Animation/AnimationSync.cs | 12 +- QSB/ConversationSync/ConversationManager.cs | 244 +++++++++--------- QSB/ConversationSync/ConversationPatches.cs | 16 +- QSB/DeathSync/DeathPatches.cs | 2 +- QSB/DeathSync/Necronomicon.cs | 6 +- QSB/DeathSync/RespawnOnDeath.cs | 8 +- QSB/ElevatorSync/ElevatorManager.cs | 2 +- QSB/Events/QSBEvent.cs | 2 +- QSB/GeyserSync/GeyserManager.cs | 2 +- QSB/Instruments/InstrumentsManager.cs | 14 +- QSB/Instruments/QSBCamera/CameraController.cs | 12 +- QSB/Instruments/QSBCamera/CameraManager.cs | 10 +- QSB/OrbSync/Events/OrbUserEvent.cs | 112 ++++---- QSB/Patches/QSBPatchManager.cs | 4 +- QSB/Player/Events/PlayerReadyEvent.cs | 66 ++--- QSB/Player/QSBPlayerManager.cs | 34 +-- QSB/QSBCore.cs | 6 +- QSB/QSBNetworkLobby.cs | 2 +- QSB/QSBNetworkManager.cs | 88 +++---- QSB/QSBSceneManager.cs | 48 ++-- QSB/SectorSync/QSBSectorManager.cs | 4 +- QSB/SectorSync/SectorSync.cs | 8 +- QSB/TimeSync/Events/ServerTimeEvent.cs | 6 +- QSB/TimeSync/TimeSyncUI.cs | 4 +- QSB/Tools/Events/PlayerFlashlightEvent.cs | 6 +- QSB/Tools/Events/PlayerProbeEvent.cs | 6 +- QSB/Tools/Events/PlayerProbeLauncherEvent.cs | 6 +- QSB/Tools/Events/PlayerSignalscopeEvent.cs | 6 +- QSB/Tools/Events/PlayerTranslatorEvent.cs | 6 +- QSB/Tools/PlayerToolsManager.cs | 14 +- QSB/Tools/QSBTool.cs | 2 +- QSB/TransformSync/PlayerProbeSync.cs | 126 ++++----- QSB/TransformSync/PlayerTransformSync.cs | 78 +++--- QSB/TransformSync/ShipTransformSync.cs | 6 +- QSB/TransformSync/TransformSync.cs | 6 +- QSB/Utility/DebugLog.cs | 2 +- QSB/Utility/GOExtensions.cs | 6 +- QSB/WorldSync/QSBWorldSync.cs | 4 +- 38 files changed, 493 insertions(+), 493 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index f20b82436..77614e787 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -40,8 +40,8 @@ protected void Awake() QSBSceneManager.OnUniverseSceneLoaded += OnUniverseSceneLoaded; } - - protected override void OnDestroy() + + protected override void OnDestroy() { base.OnDestroy(); if (_playerController == null) @@ -52,12 +52,12 @@ protected override void OnDestroy() _playerController.OnBecomeGrounded -= OnBecomeGrounded; _playerController.OnBecomeUngrounded -= OnBecomeUngrounded; - QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoaded; - } + QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoaded; + } - private void OnUniverseSceneLoaded(OWScene obj) => LoadControllers(); + private void OnUniverseSceneLoaded(OWScene obj) => LoadControllers(); - private void LoadControllers() + private void LoadControllers() { var bundle = QSBCore.InstrumentAssetBundle; _chertController = bundle.LoadAsset("assets/Chert/Traveller_Chert.controller") as RuntimeAnimatorController; diff --git a/QSB/ConversationSync/ConversationManager.cs b/QSB/ConversationSync/ConversationManager.cs index 2c5d25d57..b4c7dded6 100644 --- a/QSB/ConversationSync/ConversationManager.cs +++ b/QSB/ConversationSync/ConversationManager.cs @@ -11,126 +11,126 @@ namespace QSB.ConversationSync { - public class ConversationManager : MonoBehaviour - { - public static ConversationManager Instance { get; private set; } - public AssetBundle ConversationAssetBundle { get; private set; } - public Dictionary BoxMappings { get; } = new Dictionary(); - - private GameObject _boxPrefab; - - public void Start() - { - Instance = this; - - ConversationAssetBundle = QSBCore.Helper.Assets.LoadBundle("assets/conversation"); - - _boxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); - // TODO : make dynamic so it can be different sizes! - var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); - if (font == null) - { - DebugLog.ToConsole("Error - Font is null!", MessageType.Error); - } - _boxPrefab.GetComponent().font = font; - _boxPrefab.GetComponent().color = Color.white; - } - - public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) - { - var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree); - return QSBPlayerManager.PlayerList.All(x => x.CurrentDialogueID != treeIndex) - ? uint.MaxValue - : QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; - } - - public void SendPlayerOption(string text) => - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); - - public void SendCharacterDialogue(int id, string text) - { - if (id == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); - } - - public void CloseBoxPlayer() => - GlobalMessenger - .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); - - public void CloseBoxCharacter(int id) => - GlobalMessenger - .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); - - public void SendConvState(int charId, bool state) - { - if (charId == -1) - { - DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); - return; - } - GlobalMessenger - .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); - } - - public void DisplayPlayerConversationBox(uint playerId, string text) - { - if (playerId == QSBPlayerManager.LocalPlayerId) - { - DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); - return; - } - - var player = QSBPlayerManager.GetPlayer(playerId); - - // Destroy old box if it exists - var playerBox = player.CurrentDialogueBox; - if (playerBox != null) - { - Destroy(playerBox); - } - - QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); - } - - public void DisplayCharacterConversationBox(int index, string text) - { - if (QSBWorldSync.OldDialogueTrees.ElementAtOrDefault(index) == null) - { - DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); - return; - } - - // Remove old box if it exists - var oldDialogueTree = QSBWorldSync.OldDialogueTrees[index]; - if (BoxMappings.ContainsKey(oldDialogueTree)) - { - Destroy(BoxMappings[oldDialogueTree]); - BoxMappings.Remove(oldDialogueTree); - } - - BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); - } - - private GameObject CreateBox(Transform parent, float vertOffset, string text) - { - var newBox = Instantiate(_boxPrefab); - newBox.SetActive(false); - newBox.transform.parent = parent; - newBox.transform.localPosition = new Vector3(0, vertOffset, 0); - newBox.transform.rotation = parent.rotation; - var lookAt = newBox.AddComponent(); - lookAt.SetValue("_useLookAt", false); - lookAt.SetValue("_localFacingVector", Vector3.back); - lookAt.SetValue("_localRotationAxis", Vector3.up); - newBox.GetComponent().text = text; - newBox.SetActive(true); - return newBox; - } - } + public class ConversationManager : MonoBehaviour + { + public static ConversationManager Instance { get; private set; } + public AssetBundle ConversationAssetBundle { get; private set; } + public Dictionary BoxMappings { get; } = new Dictionary(); + + private GameObject _boxPrefab; + + public void Start() + { + Instance = this; + + ConversationAssetBundle = QSBCore.Helper.Assets.LoadBundle("assets/conversation"); + + _boxPrefab = ConversationAssetBundle.LoadAsset("assets/dialoguebubble.prefab"); + // TODO : make dynamic so it can be different sizes! + var font = (Font)Resources.Load(@"fonts\english - latin\spacemono-bold"); + if (font == null) + { + DebugLog.ToConsole("Error - Font is null!", MessageType.Error); + } + _boxPrefab.GetComponent().font = font; + _boxPrefab.GetComponent().color = Color.white; + } + + public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) + { + var treeIndex = QSBWorldSync.OldDialogueTrees.IndexOf(tree); + return QSBPlayerManager.PlayerList.All(x => x.CurrentDialogueID != treeIndex) + ? uint.MaxValue + : QSBPlayerManager.PlayerList.First(x => x.CurrentDialogueID == treeIndex).PlayerId; + } + + public void SendPlayerOption(string text) => + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, text, ConversationType.Player); + + public void SendCharacterDialogue(int id, string text) + { + if (id == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, text, ConversationType.Character); + } + + public void CloseBoxPlayer() => + GlobalMessenger + .FireEvent(EventNames.QSBConversation, QSBPlayerManager.LocalPlayerId, "", ConversationType.ClosePlayer); + + public void CloseBoxCharacter(int id) => + GlobalMessenger + .FireEvent(EventNames.QSBConversation, (uint)id, "", ConversationType.CloseCharacter); + + public void SendConvState(int charId, bool state) + { + if (charId == -1) + { + DebugLog.ToConsole("Warning - Tried to send conv. start/end event with char id -1.", MessageType.Warning); + return; + } + GlobalMessenger + .FireEvent(EventNames.QSBConversationStartEnd, charId, QSBPlayerManager.LocalPlayerId, state); + } + + public void DisplayPlayerConversationBox(uint playerId, string text) + { + if (playerId == QSBPlayerManager.LocalPlayerId) + { + DebugLog.ToConsole("Error - Cannot display conversation box for local player!", MessageType.Error); + return; + } + + var player = QSBPlayerManager.GetPlayer(playerId); + + // Destroy old box if it exists + var playerBox = player.CurrentDialogueBox; + if (playerBox != null) + { + Destroy(playerBox); + } + + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueBox = CreateBox(player.Body.transform, 25, text); + } + + public void DisplayCharacterConversationBox(int index, string text) + { + if (QSBWorldSync.OldDialogueTrees.ElementAtOrDefault(index) == null) + { + DebugLog.ToConsole($"Error - Tried to display character conversation box for id {index}! (Doesn't exist!)", MessageType.Error); + return; + } + + // Remove old box if it exists + var oldDialogueTree = QSBWorldSync.OldDialogueTrees[index]; + if (BoxMappings.ContainsKey(oldDialogueTree)) + { + Destroy(BoxMappings[oldDialogueTree]); + BoxMappings.Remove(oldDialogueTree); + } + + BoxMappings.Add(oldDialogueTree, CreateBox(oldDialogueTree.gameObject.transform, 2, text)); + } + + private GameObject CreateBox(Transform parent, float vertOffset, string text) + { + var newBox = Instantiate(_boxPrefab); + newBox.SetActive(false); + newBox.transform.parent = parent; + newBox.transform.localPosition = new Vector3(0, vertOffset, 0); + newBox.transform.rotation = parent.rotation; + var lookAt = newBox.AddComponent(); + lookAt.SetValue("_useLookAt", false); + lookAt.SetValue("_localFacingVector", Vector3.back); + lookAt.SetValue("_localRotationAxis", Vector3.up); + newBox.GetComponent().text = text; + newBox.SetActive(true); + return newBox; + } + } } \ No newline at end of file diff --git a/QSB/ConversationSync/ConversationPatches.cs b/QSB/ConversationSync/ConversationPatches.cs index 6675f6ba2..9264785c5 100644 --- a/QSB/ConversationSync/ConversationPatches.cs +++ b/QSB/ConversationSync/ConversationPatches.cs @@ -1,9 +1,9 @@ using OWML.Common; +using QSB.Patches; using QSB.Player; using QSB.Utility; using QSB.WorldSync; using System.Collections.Generic; -using QSB.Patches; using UnityEngine; namespace QSB.ConversationSync @@ -74,12 +74,12 @@ public static bool OnAnimatorIK(float ___headTrackingWeight, CharacterDialogueTree ____dialogueTree) { var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); - var position = playerId == uint.MaxValue - ? Locator.GetActiveCamera().transform.position - : QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; - var b = ___headTrackingWeight * Mathf.Min(1, !___lookOnlyWhenTalking - ? !____playerInHeadZone ? 0 : 1 - : !____inConversation || !____playerInHeadZone ? 0 : 1); + var position = playerId == uint.MaxValue + ? Locator.GetActiveCamera().transform.position + : QSBPlayerManager.GetPlayer(playerId).Camera.transform.position; + var b = ___headTrackingWeight * Mathf.Min(1, !___lookOnlyWhenTalking + ? !____playerInHeadZone ? 0 : 1 + : !____inConversation || !____playerInHeadZone ? 0 : 1); ____currentLookWeight = Mathf.Lerp(____currentLookWeight, b, Time.deltaTime * 2f); ____currentLookTarget = ___lookSpring.Update(____currentLookTarget, position, Time.deltaTime); ____animator.SetLookAtPosition(____currentLookTarget); @@ -91,7 +91,7 @@ public static bool OnZoneExit(CharacterDialogueTree ____dialogueTree) { var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(____dialogueTree); return playerId == uint.MaxValue; - } + } public override void DoPatches() { diff --git a/QSB/DeathSync/DeathPatches.cs b/QSB/DeathSync/DeathPatches.cs index 528568ecd..359bf8746 100644 --- a/QSB/DeathSync/DeathPatches.cs +++ b/QSB/DeathSync/DeathPatches.cs @@ -1,6 +1,6 @@ using QSB.Events; -using System.Linq; using QSB.Patches; +using System.Linq; namespace QSB.DeathSync { diff --git a/QSB/DeathSync/Necronomicon.cs b/QSB/DeathSync/Necronomicon.cs index 86bca2177..9f8a56f35 100644 --- a/QSB/DeathSync/Necronomicon.cs +++ b/QSB/DeathSync/Necronomicon.cs @@ -95,7 +95,7 @@ public static class Necronomicon } } }; - public static string GetPhrase(DeathType deathType) => - DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); - } + public static string GetPhrase(DeathType deathType) => + DeathDictionary[deathType].OrderBy(x => Guid.NewGuid()).First(); + } } \ No newline at end of file diff --git a/QSB/DeathSync/RespawnOnDeath.cs b/QSB/DeathSync/RespawnOnDeath.cs index a6fc26024..7d1e9513b 100644 --- a/QSB/DeathSync/RespawnOnDeath.cs +++ b/QSB/DeathSync/RespawnOnDeath.cs @@ -127,8 +127,8 @@ public void ResetPlayer() } private SpawnPoint GetSpawnPoint(bool isShip = false) => - _playerSpawner - .GetValue("_spawnList") - .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); - } + _playerSpawner + .GetValue("_spawnList") + .FirstOrDefault(spawnPoint => spawnPoint.GetSpawnLocation() == SpawnLocation.TimberHearth && spawnPoint.IsShipSpawn() == isShip); + } } \ No newline at end of file diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index ebb824e96..31c352e07 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -19,7 +19,7 @@ public void Awake() public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - private void OnSceneLoaded(OWScene scene, bool isInUniverse) + private void OnSceneLoaded(OWScene scene, bool isInUniverse) { _elevators = Resources.FindObjectsOfTypeAll().ToList(); for (var id = 0; id < _elevators.Count; id++) diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index 0cc9db00d..a186fab86 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -8,7 +8,7 @@ namespace QSB.Events public abstract class QSBEvent : IQSBEvent where T : PlayerMessage, new() { public abstract EventType Type { get; } - public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; + public uint LocalPlayerId => QSBPlayerManager.LocalPlayerId; private readonly MessageHandler _eventHandler; diff --git a/QSB/GeyserSync/GeyserManager.cs b/QSB/GeyserSync/GeyserManager.cs index d535cc0df..ceb4d1db6 100644 --- a/QSB/GeyserSync/GeyserManager.cs +++ b/QSB/GeyserSync/GeyserManager.cs @@ -12,7 +12,7 @@ public void Awake() QSBPatchManager.OnPatchType += OnPatchType; } - public void OnDestroy() + public void OnDestroy() { QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; QSBPatchManager.OnPatchType -= OnPatchType; diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index b91f12dbf..4c834078b 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -49,14 +49,14 @@ protected override void OnDestroy() QSBInputManager.RiebeckTaunt -= OnRiebeckTaunt; QSBInputManager.ExitTaunt -= ReturnToPlayer; } - - private void OnChertTaunt() => StartInstrument(AnimationType.Chert); - private void OnEskerTaunt() => StartInstrument(AnimationType.Esker); - private void OnFeldsparTaunt() => StartInstrument(AnimationType.Feldspar); - private void OnGabbroTaunt() => StartInstrument(AnimationType.Gabbro); - private void OnRiebeckTaunt() => StartInstrument(AnimationType.Riebeck); - private void SetupInstruments() + private void OnChertTaunt() => StartInstrument(AnimationType.Chert); + private void OnEskerTaunt() => StartInstrument(AnimationType.Esker); + private void OnFeldsparTaunt() => StartInstrument(AnimationType.Feldspar); + private void OnGabbroTaunt() => StartInstrument(AnimationType.Gabbro); + private void OnRiebeckTaunt() => StartInstrument(AnimationType.Riebeck); + + private void SetupInstruments() { var bundle = QSBCore.InstrumentAssetBundle; _chertDrum = MakeChertDrum(bundle); diff --git a/QSB/Instruments/QSBCamera/CameraController.cs b/QSB/Instruments/QSBCamera/CameraController.cs index 146006325..6f3eec89a 100644 --- a/QSB/Instruments/QSBCamera/CameraController.cs +++ b/QSB/Instruments/QSBCamera/CameraController.cs @@ -3,10 +3,10 @@ namespace QSB.Instruments.QSBCamera { internal class CameraController : MonoBehaviour - { - public GameObject CameraObject { get; set; } + { + public GameObject CameraObject { get; set; } - private float _degreesX; + private float _degreesX; private float _degreesY; private Quaternion _rotationX; private Quaternion _rotationY; @@ -45,9 +45,9 @@ private void UpdatePosition() } var targetDistance = Vector3.Distance(origin, transform.TransformPoint(localTargetPoint)); var currentDistance = Vector3.Distance(origin, CameraObject.transform.position); - var movement = targetDistance < currentDistance - ? localTargetPoint - : Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); + var movement = targetDistance < currentDistance + ? localTargetPoint + : Vector3.MoveTowards(CameraObject.transform.localPosition, localTargetPoint, Time.fixedDeltaTime * 2f); CameraObject.transform.localPosition = movement; } diff --git a/QSB/Instruments/QSBCamera/CameraManager.cs b/QSB/Instruments/QSBCamera/CameraManager.cs index 781ad57b7..85e54fb1d 100644 --- a/QSB/Instruments/QSBCamera/CameraManager.cs +++ b/QSB/Instruments/QSBCamera/CameraManager.cs @@ -13,12 +13,12 @@ public class CameraManager : MonoBehaviour public bool IsSetUp { get; private set; } public CameraMode Mode { get; private set; } - private GameObject _cameraBase; - private GameObject _cameraObj; - private Camera _camera; - private OWCamera _owCamera; + private GameObject _cameraBase; + private GameObject _cameraObj; + private Camera _camera; + private OWCamera _owCamera; - public void Start() + public void Start() { Instance = this; SetupCamera(); diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index e2cee4133..f3b6bb5d2 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -25,62 +25,62 @@ public class OrbUserEvent : QSBEvent }; public override void OnReceiveRemote(bool server, WorldObjectMessage message) - { - if (server) - { - HandleServer(message); - } - else - { - HandleClient(message); - } - } + { + if (server) + { + HandleServer(message); + } + else + { + HandleClient(message); + } + } - private static void HandleServer(WorldObjectMessage message) - { - var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); - if (QSBWorldSync.OrbSyncList.Count == 0) - { - DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (fromPlayer == null) - { - DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); - } - var orbSync = QSBWorldSync.OrbSyncList - .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); - if (orbSync == null) - { - DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); - return; - } - var orbIdentity = orbSync.GetComponent(); - if (orbIdentity == null) - { - DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); - return; - } - if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) - { - orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); - } - orbIdentity.AssignClientAuthority(fromPlayer); - orbSync.enabled = true; - } + private static void HandleServer(WorldObjectMessage message) + { + var fromPlayer = QSBNetworkServer.connections.First(x => x.GetPlayer().PlayerId == message.FromId); + if (QSBWorldSync.OrbSyncList.Count == 0) + { + DebugLog.ToConsole($"Error - OrbSyncList is empty. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (fromPlayer == null) + { + DebugLog.DebugWrite("Error - FromPlayer is null!", MessageType.Error); + } + var orbSync = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); + if (orbSync == null) + { + DebugLog.ToConsole($"Error - No orb found for user event. (ID {message.ObjectId})", MessageType.Error); + return; + } + var orbIdentity = orbSync.GetComponent(); + if (orbIdentity == null) + { + DebugLog.ToConsole($"Error - Orb identity is null. (ID {message.ObjectId})", MessageType.Error); + return; + } + if (orbIdentity.ClientAuthorityOwner != null && orbIdentity.ClientAuthorityOwner != fromPlayer) + { + orbIdentity.RemoveClientAuthority(orbIdentity.ClientAuthorityOwner); + } + orbIdentity.AssignClientAuthority(fromPlayer); + orbSync.enabled = true; + } - private static void HandleClient(WorldObjectMessage message) - { - if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) - { - DebugLog.DebugWrite( - $"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", - MessageType.Error); - return; - } - var orb = QSBWorldSync.OrbSyncList - .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); - orb.enabled = true; - } - } + private static void HandleClient(WorldObjectMessage message) + { + if (QSBWorldSync.OrbSyncList.Count < message.ObjectId) + { + DebugLog.DebugWrite( + $"Error - Orb id {message.ObjectId} out of range of orb sync list {QSBWorldSync.OrbSyncList.Count}.", + MessageType.Error); + return; + } + var orb = QSBWorldSync.OrbSyncList + .First(x => x.AttachedOrb == QSBWorldSync.OldOrbList[message.ObjectId]); + orb.enabled = true; + } + } } \ No newline at end of file diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 960e28979..80c77fcea 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -17,9 +17,9 @@ public static class QSBPatchManager { public static event PatchEvent OnPatchType; - private static List _patchList = new List(); + private static List _patchList = new List(); - public static void Init() + public static void Init() { _patchList = new List { diff --git a/QSB/Player/Events/PlayerReadyEvent.cs b/QSB/Player/Events/PlayerReadyEvent.cs index 78dc2ab99..c6f73ae54 100644 --- a/QSB/Player/Events/PlayerReadyEvent.cs +++ b/QSB/Player/Events/PlayerReadyEvent.cs @@ -23,39 +23,39 @@ public class PlayerReadyEvent : QSBEvent }; public override void OnReceiveRemote(bool server, ToggleMessage message) - { - if (server) - { - HandleServer(message); - } - else - { - HandleClient(message); - } - } + { + if (server) + { + HandleServer(message); + } + else + { + HandleClient(message); + } + } - private static void HandleServer(ToggleMessage message) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; - GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); - } + private static void HandleServer(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue; + GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); + } - private void HandleClient(ToggleMessage message) - { - DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); - if (!QSBPlayerManager.PlayerExists(message.FromId)) - { - DebugLog.ToConsole( - "Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", - MessageType.Error); - return; - } - foreach (var item in QSBPlayerManager.GetSyncObjects() - .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) - { - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); - } - } - } + private void HandleClient(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + if (!QSBPlayerManager.PlayerExists(message.FromId)) + { + DebugLog.ToConsole( + "Error - Got ready event for non-existent player! Did we not send a PlayerStatesRequestEvent? Or was it not handled?", + MessageType.Error); + return; + } + foreach (var item in QSBPlayerManager.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); + } + } + } } \ No newline at end of file diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 3dceee539..94b82f067 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -44,26 +44,26 @@ public static void RemoveAllPlayers() PlayerList.Clear(); } - public static bool PlayerExists(uint id) => - id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); + public static bool PlayerExists(uint id) => + id != uint.MaxValue && PlayerList.Any(x => x.PlayerId == id); - public static void HandleFullStateMessage(PlayerStateMessage message) - { - var player = GetPlayer(message.AboutId); - player.Name = message.PlayerName; - player.IsReady = message.PlayerReady; - player.State = message.PlayerState; - if (LocalPlayer.IsReady) - { - player.UpdateStateObjects(); - } - } + public static void HandleFullStateMessage(PlayerStateMessage message) + { + var player = GetPlayer(message.AboutId); + player.Name = message.PlayerName; + player.IsReady = message.PlayerReady; + player.State = message.PlayerState; + if (LocalPlayer.IsReady) + { + player.UpdateStateObjects(); + } + } - public static IEnumerable GetSyncObjects() where T : PlayerSyncObject => - PlayerSyncObjects.OfType().Where(x => x != null); + public static IEnumerable GetSyncObjects() where T : PlayerSyncObject => + PlayerSyncObjects.OfType().Where(x => x != null); - public static T GetSyncObject(uint id) where T : PlayerSyncObject => - GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); + public static T GetSyncObject(uint id) where T : PlayerSyncObject => + GetSyncObjects().FirstOrDefault(x => x != null && x.AttachedNetId == id); public static void AddSyncObject(PlayerSyncObject obj) { diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 2a29dd115..f6b521c4f 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -68,10 +68,10 @@ public void Start() Helper.HarmonyHelper.EmptyMethod(typeof(OWTime).GetMethod("Pause")); } - public void Update() => - QSBNetworkIdentity.UNetStaticUpdate(); + public void Update() => + QSBNetworkIdentity.UNetStaticUpdate(); - public override void Configure(IModConfig config) + public override void Configure(IModConfig config) { DefaultServerIP = config.GetSettingsValue("defaultServerIP"); Port = config.GetSettingsValue("port"); diff --git a/QSB/QSBNetworkLobby.cs b/QSB/QSBNetworkLobby.cs index 1f90c3b14..a2bb51da2 100644 --- a/QSB/QSBNetworkLobby.cs +++ b/QSB/QSBNetworkLobby.cs @@ -54,7 +54,7 @@ private string GetPlayerName() : _defaultNames.OrderBy(x => Guid.NewGuid()).First(); } - public void OnGUI() + public void OnGUI() { GUI.Label(new Rect(10, 10, 200f, 20f), "Name:"); if (CanEditName) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 789a8418c..2aca29fe8 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -25,17 +25,17 @@ namespace QSB { public class QSBNetworkManager : QSBNetworkManagerUNET { - public static QSBNetworkManager Instance { get; private set; } + public static QSBNetworkManager Instance { get; private set; } - public event Action OnNetworkManagerReady; + public event Action OnNetworkManagerReady; - public bool IsReady { get; private set; } - public GameObject OrbPrefab { get; set; } + public bool IsReady { get; private set; } + public GameObject OrbPrefab { get; set; } - private const int MaxConnections = 128; - private const int MaxBufferedPackets = 64; + private const int MaxConnections = 128; + private const int MaxBufferedPackets = 64; - private QSBNetworkLobby _lobby; + private QSBNetworkLobby _lobby; private AssetBundle _assetBundle; private GameObject _shipPrefab; private GameObject _cameraPrefab; @@ -49,68 +49,68 @@ public void Awake() _assetBundle = QSBCore.NetworkAssetBundle; playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - SetupNetworkId(playerPrefab); - Destroy(playerPrefab.GetComponent()); + SetupNetworkId(playerPrefab); + Destroy(playerPrefab.GetComponent()); Destroy(playerPrefab.GetComponent()); - SetupNetworkTransform(playerPrefab); - playerPrefab.AddComponent(); + SetupNetworkTransform(playerPrefab); + playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); playerPrefab.AddComponent(); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); - SetupNetworkId(_shipPrefab); - Destroy(_shipPrefab.GetComponent()); + SetupNetworkId(_shipPrefab); + Destroy(_shipPrefab.GetComponent()); Destroy(_shipPrefab.GetComponent()); - SetupNetworkTransform(_shipPrefab); - _shipPrefab.AddComponent(); + SetupNetworkTransform(_shipPrefab); + _shipPrefab.AddComponent(); spawnPrefabs.Add(_shipPrefab); _cameraPrefab = _assetBundle.LoadAsset("assets/networkcameraroot.prefab"); - SetupNetworkId(_cameraPrefab); - Destroy(_cameraPrefab.GetComponent()); + SetupNetworkId(_cameraPrefab); + Destroy(_cameraPrefab.GetComponent()); Destroy(_cameraPrefab.GetComponent()); - SetupNetworkTransform(_cameraPrefab); - _cameraPrefab.AddComponent(); + SetupNetworkTransform(_cameraPrefab); + _cameraPrefab.AddComponent(); spawnPrefabs.Add(_cameraPrefab); _probePrefab = _assetBundle.LoadAsset("assets/networkprobe.prefab"); - SetupNetworkId(_probePrefab); - Destroy(_probePrefab.GetComponent()); + SetupNetworkId(_probePrefab); + Destroy(_probePrefab.GetComponent()); Destroy(_probePrefab.GetComponent()); - SetupNetworkTransform(_probePrefab); - _probePrefab.AddComponent(); + SetupNetworkTransform(_probePrefab); + _probePrefab.AddComponent(); spawnPrefabs.Add(_probePrefab); OrbPrefab = _assetBundle.LoadAsset("assets/networkorb.prefab"); - SetupNetworkId(OrbPrefab); - Destroy(OrbPrefab.GetComponent()); + SetupNetworkId(OrbPrefab); + Destroy(OrbPrefab.GetComponent()); Destroy(OrbPrefab.GetComponent()); - SetupNetworkTransform(OrbPrefab); - OrbPrefab.AddComponent(); + SetupNetworkTransform(OrbPrefab); + OrbPrefab.AddComponent(); spawnPrefabs.Add(OrbPrefab); ConfigureNetworkManager(); QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - private void SetupNetworkId(GameObject go) - { - var ident = go.AddComponent(); - ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); - } - - private void SetupNetworkTransform(GameObject go) - { - var trans = go.AddComponent(); - trans.SendInterval = 0.1f; - trans.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; - } - - public void OnDestroy() => - QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; + private void SetupNetworkId(GameObject go) + { + var ident = go.AddComponent(); + ident.LocalPlayerAuthority = true; + ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); + } + + private void SetupNetworkTransform(GameObject go) + { + var trans = go.AddComponent(); + trans.SendInterval = 0.1f; + trans.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; + } + + public void OnDestroy() => + QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; private void OnSceneLoaded(OWScene scene) { diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 1b72fbca6..42f31a7ae 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -4,34 +4,34 @@ namespace QSB { - public static class QSBSceneManager - { - public static OWScene CurrentScene => LoadManager.GetCurrentScene(); + public static class QSBSceneManager + { + public static OWScene CurrentScene => LoadManager.GetCurrentScene(); - public static bool IsInUniverse => InUniverse(CurrentScene); + public static bool IsInUniverse => InUniverse(CurrentScene); - public static event Action OnSceneLoaded; + public static event Action OnSceneLoaded; - public static event Action OnUniverseSceneLoaded; + public static event Action OnUniverseSceneLoaded; - static QSBSceneManager() - { - LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; - DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); - } + static QSBSceneManager() + { + LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad; + DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); + } - private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) - { - DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); - var universe = InUniverse(newScene); - OnSceneLoaded?.Invoke(newScene, universe); - if (universe) - { - OnUniverseSceneLoaded?.Invoke(newScene); - } - } + private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene) + { + DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info); + var universe = InUniverse(newScene); + OnSceneLoaded?.Invoke(newScene, universe); + if (universe) + { + OnUniverseSceneLoaded?.Invoke(newScene); + } + } - private static bool InUniverse(OWScene scene) => - scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; - } + private static bool InUniverse(OWScene scene) => + scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse; + } } \ No newline at end of file diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index ec891393c..55a13380f 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -24,7 +24,7 @@ public void Awake() DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } - public void OnDestroy() + public void OnDestroy() { QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); } @@ -44,7 +44,7 @@ public void RebuildSectors() } public QSBSector GetClosestSector(Transform trans) // trans rights \o/ - { + { return QSBWorldSync.GetWorldObjects() .Where(sector => sector.Sector != null && !_sectorBlacklist.Contains(sector.Type)) .OrderBy(sector => Vector3.Distance(sector.Position, trans.position)) diff --git a/QSB/SectorSync/SectorSync.cs b/QSB/SectorSync/SectorSync.cs index d4bfbdd70..f0650b807 100644 --- a/QSB/SectorSync/SectorSync.cs +++ b/QSB/SectorSync/SectorSync.cs @@ -22,7 +22,7 @@ private void Update() return; } QSBPlayerManager.GetSyncObjects() - .Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); + .Where(x => x.HasAuthority).ToList().ForEach(CheckTransformSyncSector); _checkTimer = 0; } @@ -42,7 +42,7 @@ private void CheckTransformSyncSector(TransformSync.TransformSync transformSync) SendSector(transformSync.NetId.Value, closestSector); } - private void SendSector(uint id, QSBSector sector) => - GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); - } + private void SendSector(uint id, QSBSector sector) => + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, id, sector); + } } \ No newline at end of file diff --git a/QSB/TimeSync/Events/ServerTimeEvent.cs b/QSB/TimeSync/Events/ServerTimeEvent.cs index 530d8ae7c..cde7c7bc2 100644 --- a/QSB/TimeSync/Events/ServerTimeEvent.cs +++ b/QSB/TimeSync/Events/ServerTimeEvent.cs @@ -18,7 +18,7 @@ public class ServerTimeEvent : QSBEvent LoopCount = count }; - public override void OnReceiveRemote(bool server, ServerTimeMessage message) => - WakeUpSync.LocalInstance.OnClientReceiveMessage(message); - } + public override void OnReceiveRemote(bool server, ServerTimeMessage message) => + WakeUpSync.LocalInstance.OnClientReceiveMessage(message); + } } \ No newline at end of file diff --git a/QSB/TimeSync/TimeSyncUI.cs b/QSB/TimeSync/TimeSyncUI.cs index 1faeaf7ff..c85b0ae02 100644 --- a/QSB/TimeSync/TimeSyncUI.cs +++ b/QSB/TimeSync/TimeSyncUI.cs @@ -42,10 +42,10 @@ public void OnDestroy() } public static void Start(TimeSyncType type) => - QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); + QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.StartTimeSync(type)); public static void Stop() => - QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); + QSBCore.Helper.Events.Unity.RunWhen(() => Instance._isSetUp, () => Instance.EndTimeSync()); private void StartTimeSync(TimeSyncType type) { diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/Events/PlayerFlashlightEvent.cs index 293fa3ac4..0e6367ce9 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/Events/PlayerFlashlightEvent.cs @@ -36,7 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.FlashLight?.UpdateState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) => - QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.Flashlight, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerProbeEvent.cs b/QSB/Tools/Events/PlayerProbeEvent.cs index d572db543..bda5b5163 100644 --- a/QSB/Tools/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/Events/PlayerProbeEvent.cs @@ -36,7 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.Probe?.SetState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) => - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeActive, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs index fde92dfb1..d744b1917 100644 --- a/QSB/Tools/Events/PlayerProbeLauncherEvent.cs +++ b/QSB/Tools/Events/PlayerProbeLauncherEvent.cs @@ -36,7 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.ProbeLauncher?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) => - QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.ProbeLauncher, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/Events/PlayerSignalscopeEvent.cs index 10519c02a..424e00465 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/Events/PlayerSignalscopeEvent.cs @@ -36,7 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.Signalscope?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) => - QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.Signalscope, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/Events/PlayerTranslatorEvent.cs index 72f721602..10c9fe826 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/Events/PlayerTranslatorEvent.cs @@ -36,7 +36,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) player.Translator?.ChangeEquipState(message.ToggleValue); } - public override void OnReceiveLocal(bool server, ToggleMessage message) => - QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); - } + public override void OnReceiveLocal(bool server, ToggleMessage message) => + QSBPlayerManager.LocalPlayer.UpdateState(State.Translator, message.ToggleValue); + } } \ No newline at end of file diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 006585ab7..227ce4949 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -72,7 +72,7 @@ private static void CreateFlashlight(Transform cameraBody) flashlightRoot.transform.parent = cameraBody; flashlightRoot.transform.localPosition = FlashlightOffset; flashlightRoot.SetActive(true); - } + } private static void CreateSignalscope(Transform cameraBody) { @@ -99,7 +99,7 @@ private static void CreateSignalscope(Transform cameraBody) signalscopeRoot.transform.localPosition = Vector3.zero; signalscopeRoot.transform.localScale = SignalscopeScale; signalscopeRoot.SetActive(true); - } + } private static void CreateTranslator(Transform cameraBody) { @@ -138,7 +138,7 @@ private static void CreateTranslator(Transform cameraBody) translatorRoot.transform.localPosition = Vector3.zero; translatorRoot.transform.localScale = TranslatorScale; QSBCore.Helper.Events.Unity.FireOnNextUpdate(() => translatorRoot.SetActive(true)); - } + } private static void CreateProbeLauncher(Transform cameraBody) { @@ -176,9 +176,9 @@ private static void CreateProbeLauncher(Transform cameraBody) launcherRoot.transform.parent = cameraBody; launcherRoot.transform.localPosition = ProbeLauncherOffset; launcherRoot.SetActive(true); - } + } - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) => - root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); - } + private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) => + root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); + } } \ No newline at end of file diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index fd4067858..4a074fa84 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -32,7 +32,7 @@ public float ArrivalDegrees } public void OnEnable() => ToolGameObject?.SetActive(true); - public void OnDisable() => ToolGameObject?.SetActive(false); + public void OnDisable() => ToolGameObject?.SetActive(false); public void ChangeEquipState(bool equipState) { diff --git a/QSB/TransformSync/PlayerProbeSync.cs b/QSB/TransformSync/PlayerProbeSync.cs index 6d218a9d8..97c508458 100644 --- a/QSB/TransformSync/PlayerProbeSync.cs +++ b/QSB/TransformSync/PlayerProbeSync.cs @@ -6,82 +6,82 @@ namespace QSB.TransformSync { - public class PlayerProbeSync : TransformSync - { - private Transform _disabledSocket; + public class PlayerProbeSync : TransformSync + { + private Transform _disabledSocket; private Transform GetProbe() => - Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); + Locator.GetProbe().transform.Find("CameraPivot").Find("Geometry"); - protected override Transform InitLocalTransform() - { - var body = GetProbe(); + protected override Transform InitLocalTransform() + { + var body = GetProbe(); - SetSocket(Player.Camera.transform); - Player.ProbeBody = body.gameObject; + SetSocket(Player.Camera.transform); + Player.ProbeBody = body.gameObject; - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var probe = GetProbe(); + protected override Transform InitRemoteTransform() + { + var probe = GetProbe(); - if (probe == null) - { - DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); - return default; - } + if (probe == null) + { + DebugLog.ToConsole("Error - Probe is null!", MessageType.Error); + return default; + } - var body = probe.InstantiateInactive(); - body.name = "RemoteProbeTransform"; + var body = probe.InstantiateInactive(); + body.name = "RemoteProbeTransform"; - Destroy(body.GetComponentInChildren()); + Destroy(body.GetComponentInChildren()); - PlayerToolsManager.CreateProbe(body, Player); + PlayerToolsManager.CreateProbe(body, Player); - QSBCore.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); - Player.ProbeBody = body.gameObject; + QSBCore.Helper.Events.Unity.RunWhen(() => (Player.ProbeLauncher != null), () => SetSocket(Player.ProbeLauncher.ToolGameObject.transform)); + Player.ProbeBody = body.gameObject; - return body; - } + return body; + } - private void SetSocket(Transform socket) => _disabledSocket = socket; + private void SetSocket(Transform socket) => _disabledSocket = socket; - protected override void UpdateTransform() - { - base.UpdateTransform(); - if (Player == null) - { - DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); - return; - } - if (_disabledSocket == null) - { - DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); - return; - } - if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) - { - return; - } - if (HasAuthority) - { - transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - return; - } - if (SyncedTransform.position == Vector3.zero) - { - return; - } - SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); - } + protected override void UpdateTransform() + { + base.UpdateTransform(); + if (Player == null) + { + DebugLog.ToConsole($"Player is null for {AttachedNetId}!", MessageType.Error); + return; + } + if (_disabledSocket == null) + { + DebugLog.ToConsole($"DisabledSocket is null for {AttachedNetId}! (ProbeLauncher null? : {Player.ProbeLauncher == null})", MessageType.Error); + return; + } + if (Player.GetState(State.ProbeActive) || ReferenceSector?.Sector == null) + { + return; + } + if (HasAuthority) + { + transform.position = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + return; + } + if (SyncedTransform.position == Vector3.zero) + { + return; + } + SyncedTransform.localPosition = ReferenceSector.Transform.InverseTransformPoint(_disabledSocket.position); + } - public override bool IsReady => Locator.GetProbe() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public override bool IsReady => Locator.GetProbe() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } \ No newline at end of file diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index 38ccaedbe..a63b99532 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -5,57 +5,57 @@ namespace QSB.TransformSync { - public class PlayerTransformSync : TransformSync - { - public static PlayerTransformSync LocalInstance { get; private set; } + public class PlayerTransformSync : TransformSync + { + public static PlayerTransformSync LocalInstance { get; private set; } - static PlayerTransformSync() => AnimControllerPatch.Init(); + static PlayerTransformSync() => AnimControllerPatch.Init(); - public override void OnStartLocalPlayer() => - LocalInstance = this; + public override void OnStartLocalPlayer() => + LocalInstance = this; - protected override void OnDestroy() - { - base.OnDestroy(); - Player.HudMarker?.Remove(); - QSBPlayerManager.RemovePlayer(PlayerId); - } + protected override void OnDestroy() + { + base.OnDestroy(); + Player.HudMarker?.Remove(); + QSBPlayerManager.RemovePlayer(PlayerId); + } - private Transform GetPlayerModel() => - Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); + private Transform GetPlayerModel() => + Locator.GetPlayerTransform().Find("Traveller_HEA_Player_v2"); - protected override Transform InitLocalTransform() - { - var body = GetPlayerModel(); + protected override Transform InitLocalTransform() + { + var body = GetPlayerModel(); - GetComponent().InitLocal(body); - GetComponent().InitLocal(body); + GetComponent().InitLocal(body); + GetComponent().InitLocal(body); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - protected override Transform InitRemoteTransform() - { - var body = Instantiate(GetPlayerModel()); + protected override Transform InitRemoteTransform() + { + var body = Instantiate(GetPlayerModel()); - GetComponent().InitRemote(body); - GetComponent().InitRemote(body); + GetComponent().InitRemote(body); + GetComponent().InitRemote(body); - var marker = body.gameObject.AddComponent(); - marker.Init(Player); + var marker = body.gameObject.AddComponent(); + marker.Init(Player); - Player.Body = body.gameObject; + Player.Body = body.gameObject; - return body; - } + return body; + } - public override bool IsReady => Locator.GetPlayerTransform() != null - && Player != null - && QSBPlayerManager.PlayerExists(Player.PlayerId) - && Player.IsReady - && NetId.Value != uint.MaxValue - && NetId.Value != 0U; - } + public override bool IsReady => Locator.GetPlayerTransform() != null + && Player != null + && QSBPlayerManager.PlayerExists(Player.PlayerId) + && Player.IsReady + && NetId.Value != uint.MaxValue + && NetId.Value != 0U; + } } \ No newline at end of file diff --git a/QSB/TransformSync/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs index 9abfb7814..85782447a 100644 --- a/QSB/TransformSync/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -7,10 +7,10 @@ public class ShipTransformSync : TransformSync { private Transform GetShipModel() => Locator.GetShipTransform(); - protected override Transform InitLocalTransform() => - GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); + protected override Transform InitLocalTransform() => + GetShipModel().Find("Module_Cockpit/Geo_Cockpit/Cockpit_Geometry/Cockpit_Exterior"); - protected override Transform InitRemoteTransform() + protected override Transform InitRemoteTransform() { var shipModel = GetShipModel(); diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index eb9ac9465..82ab08e3c 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -43,10 +43,10 @@ protected override void OnDestroy() QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; } - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => - _isInitialized = false; + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => + _isInitialized = false; - protected void Init() + protected void Init() { SyncedTransform = HasAuthority ? InitLocalTransform() : InitRemoteTransform(); SetReferenceSector(QSBSectorManager.Instance.GetClosestSector(SyncedTransform)); diff --git a/QSB/Utility/DebugLog.cs b/QSB/Utility/DebugLog.cs index dede3f902..0802e4afa 100644 --- a/QSB/Utility/DebugLog.cs +++ b/QSB/Utility/DebugLog.cs @@ -11,7 +11,7 @@ public static void ToConsole(string message, MessageType type = MessageType.Mess { // make custom method name in owml log. // i wrote the owml code for this so this is fine?? shut up i dont want to change owml - var console = (ModSocketOutput)QSBCore.Helper.Console; + var console = (ModSocketOutput)QSBCore.Helper.Console; var method = console.GetType() .GetMethods(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) .Last(x => x.Name == "WriteLine"); diff --git a/QSB/Utility/GOExtensions.cs b/QSB/Utility/GOExtensions.cs index c68b1a662..8d40b8c85 100644 --- a/QSB/Utility/GOExtensions.cs +++ b/QSB/Utility/GOExtensions.cs @@ -25,7 +25,7 @@ public static GameObject InstantiateInactive(this GameObject original) return copy; } - public static Transform InstantiateInactive(this Transform original) => - original.gameObject.InstantiateInactive().transform; - } + public static Transform InstantiateInactive(this Transform original) => + original.gameObject.InstantiateInactive().transform; + } } \ No newline at end of file diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index b231fe310..1399849da 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -16,9 +16,9 @@ public static class QSBWorldSync public static List OldDialogueTrees { get; set; } = new List(); public static Dictionary DialogueConditions { get; } = new Dictionary(); - private static readonly List WorldObjects = new List(); + private static readonly List WorldObjects = new List(); - public static void AddWorldObject(WorldObject worldObject) + public static void AddWorldObject(WorldObject worldObject) { if (WorldObjects.Contains(worldObject)) { From ee12bfebbccaef4174445b0b2e93b7e19c446795 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 21:38:30 +0000 Subject: [PATCH 169/207] Update InstrumentsManager.cs --- QSB/Instruments/InstrumentsManager.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 4c834078b..ea89be2ef 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -19,11 +19,11 @@ public void InitLocal(Transform root) _rootObj = root; gameObject.AddComponent(); - QSBInputManager.ChertTaunt += () => StartInstrument(AnimationType.Chert); - QSBInputManager.EskerTaunt += () => StartInstrument(AnimationType.Esker); - QSBInputManager.FeldsparTaunt += () => StartInstrument(AnimationType.Feldspar); - QSBInputManager.GabbroTaunt += () => StartInstrument(AnimationType.Gabbro); - QSBInputManager.RiebeckTaunt += () => StartInstrument(AnimationType.Riebeck); + QSBInputManager.ChertTaunt += OnChertTaunt; + QSBInputManager.EskerTaunt += OnEskerTaunt; + QSBInputManager.FeldsparTaunt += OnFeldsparTaunt; + QSBInputManager.GabbroTaunt += OnGabbroTaunt; + QSBInputManager.RiebeckTaunt += OnRiebeckTaunt; QSBInputManager.ExitTaunt += ReturnToPlayer; QSBCore.Helper.Events.Unity.RunWhen(() => Locator.GetPlayerBody() != null, SetupInstruments); From 77c92887ad31338d407c7a8c2f71d2b6551cf58c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 21:58:00 +0000 Subject: [PATCH 170/207] cleanup --- QuantumUNET/Components/QSBNetworkAnimator.cs | 51 ++- QuantumUNET/Components/QSBNetworkIdentity.cs | 58 +-- .../Components/QSBNetworkManagerHUD.cs | 5 +- .../Components/QSBNetworkManagerUNET.cs | 47 +- QuantumUNET/Components/QSBNetworkTransform.cs | 91 +--- QuantumUNET/Messages/QSBErrorMessage.cs | 10 +- QuantumUNET/Messages/QSBMsgType.cs | 2 +- QuantumUNET/Messages/QSBNetworkMessage.cs | 5 +- .../Messages/QSBObjectDestroyMessage.cs | 10 +- .../Messages/QSBObjectSpawnFinishedMessage.cs | 10 +- QuantumUNET/Messages/QSBPeerInfoMessage.cs | 48 +- .../Messages/QSBRemovePlayerMessage.cs | 10 +- QuantumUNET/Messages/QSBStringMessage.cs | 12 +- QuantumUNET/QSBChannelPacket.cs | 40 +- QuantumUNET/QSBClientScene.cs | 66 +-- QuantumUNET/QSBLocalClient.cs | 14 +- QuantumUNET/QSBNetBuffer.cs | 124 +++--- QuantumUNET/QSBNetworkBehaviour.cs | 4 +- QuantumUNET/QSBNetworkCRC.cs | 51 +-- QuantumUNET/QSBNetworkClient.cs | 322 +++++--------- QuantumUNET/QSBNetworkConnection.cs | 25 +- QuantumUNET/QSBNetworkScene.cs | 24 +- QuantumUNET/QSBNetworkServer.cs | 309 ++++--------- QuantumUNET/QSBNetworkServerSimple.cs | 332 +++++--------- QuantumUNET/QSBNetworkWriter.cs | 414 ++++++++---------- QuantumUNET/QSBULocalConnectionToServer.cs | 20 +- 26 files changed, 727 insertions(+), 1377 deletions(-) diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index 4cfacf722..c124f646e 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -32,22 +32,22 @@ public Animator animator public void SetParameterAutoSend(int index, bool value) { if (value) + { m_ParameterSendBits |= (uint)(1 << index); + } else + { m_ParameterSendBits &= (uint)~(1 << index); + } } - public bool GetParameterAutoSend(int index) - { - return ((int)m_ParameterSendBits & 1 << index) != 0; - } + public bool GetParameterAutoSend(int index) => + ((int)m_ParameterSendBits & (1 << index)) != 0; - public override void OnStartAuthority() - { + public override void OnStartAuthority() => m_ParameterWriter = new QSBNetworkWriter(); - } - private void FixedUpdate() + public void FixedUpdate() { if (m_ParameterWriter == null) { @@ -134,7 +134,10 @@ private void CheckSendRate() else { if (!IsServer || LocalPlayerAuthority) + { return; + } + QSBNetworkServer.SendToReady(gameObject, 41, parametersMessage); } } @@ -161,14 +164,11 @@ internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, QSBNetworkR ReadParameters(reader, true); } - internal void HandleAnimTriggerMsg(int hash) - { - m_Animator.SetTrigger(hash); - } + internal void HandleAnimTriggerMsg(int hash) => m_Animator.SetTrigger(hash); private void WriteParameters(QSBNetworkWriter writer, bool autoSend) { - for (int index = 0; index < m_Animator.parameters.Length; ++index) + for (var index = 0; index < m_Animator.parameters.Length; ++index) { if (!autoSend || GetParameterAutoSend(index)) { @@ -193,7 +193,7 @@ private void WriteParameters(QSBNetworkWriter writer, bool autoSend) private void ReadParameters(QSBNetworkReader reader, bool autoSend) { - for (int index = 0; index < m_Animator.parameters.Length; ++index) + for (var index = 0; index < m_Animator.parameters.Length; ++index) { if (!autoSend || GetParameterAutoSend(index)) { @@ -257,10 +257,7 @@ public override void OnDeserialize(QSBNetworkReader reader, bool initialState) m_Animator.Play(stateNameHash, 0, normalizedTime); } - public void SetTrigger(string triggerName) - { - SetTrigger(Animator.StringToHash(triggerName)); - } + public void SetTrigger(string triggerName) => SetTrigger(Animator.StringToHash(triggerName)); public void SetTrigger(int hash) { @@ -338,10 +335,16 @@ internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) netMsg.ReadMessage(AnimationMessage); var localObject = QSBClientScene.FindLocalObject(AnimationMessage.netId); if (localObject == null) + { return; + } + var component = localObject.GetComponent(); if (component == null) + { return; + } + var reader = new QSBNetworkReader(AnimationMessage.parameters); component.HandleAnimMsg(AnimationMessage, reader); } @@ -351,10 +354,16 @@ internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg netMsg.ReadMessage(ParametersMessage); var localObject = QSBClientScene.FindLocalObject(ParametersMessage.netId); if (localObject == null) + { return; + } + var component = localObject.GetComponent(); if (component == null) + { return; + } + var reader = new QSBNetworkReader(ParametersMessage.parameters); component.HandleAnimParamsMsg(ParametersMessage, reader); } @@ -364,10 +373,16 @@ internal static void OnAnimationTriggerClientMessage(QSBNetworkMessage netMsg) netMsg.ReadMessage(TriggersMessage); var localObject = QSBClientScene.FindLocalObject(TriggersMessage.netId); if (localObject == null) + { return; + } + var component = localObject.GetComponent(); if (component == null) + { return; + } + component.HandleAnimTriggerMsg(TriggersMessage.hash); } } diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 28324cc40..c6b2860f5 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -132,7 +132,7 @@ private void CacheBehaviours() { if (m_NetworkBehaviours == null) { - m_NetworkBehaviours = base.GetComponents(); + m_NetworkBehaviours = GetComponents(); } } @@ -179,11 +179,11 @@ internal void RemoveObserverInternal(QSBNetworkConnection conn) } } - private void OnDestroy() + public void OnDestroy() { if (m_IsServer && QSBNetworkServer.active) { - QSBNetworkServer.Destroy(base.gameObject); + QSBNetworkServer.Destroy(gameObject); } } @@ -233,7 +233,7 @@ internal void OnStartServer(bool allowNonZeroNetId) } if (QSBNetworkClient.active && QSBNetworkServer.localClientActive) { - QSBClientScene.SetLocalObject(NetId, base.gameObject); + QSBClientScene.SetLocalObject(NetId, gameObject); OnStartClient(); } if (HasAuthority) @@ -253,7 +253,7 @@ internal void OnStartClient() Debug.Log(string.Concat(new object[] { "OnStartClient ", - base.gameObject, + gameObject, " GUID:", NetId, " localPlayerAuthority:", @@ -355,7 +355,7 @@ internal void HandleClientAuthority(bool authority) { if (!LocalPlayerAuthority) { - Debug.LogError("HandleClientAuthority " + base.gameObject + " does not have localPlayerAuthority"); + Debug.LogError("HandleClientAuthority " + gameObject + " does not have localPlayerAuthority"); } else { @@ -384,7 +384,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh "Found no behaviour for incoming [", cmdHashHandlerName, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -402,7 +402,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -422,7 +422,7 @@ internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -448,7 +448,7 @@ internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -468,7 +468,7 @@ internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -494,7 +494,7 @@ internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) internal void HandleCommand(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -514,7 +514,7 @@ internal void HandleCommand(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -540,7 +540,7 @@ internal void HandleCommand(int cmdHash, QSBNetworkReader reader) internal void HandleRPC(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -560,7 +560,7 @@ internal void HandleRPC(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -627,7 +627,7 @@ internal void UNetUpdate() Debug.LogWarning(string.Concat(new object[] { "Large state update of ", - (int)(s_UpdateWriter.Position - position), + s_UpdateWriter.Position - position, " bytes for netId:", NetId, " from script:", @@ -639,7 +639,7 @@ internal void UNetUpdate() if (flag) { s_UpdateWriter.FinishMessage(); - QSBNetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); + QSBNetworkServer.SendWriterToReady(gameObject, s_UpdateWriter, j); } } IL_197: @@ -654,7 +654,7 @@ internal void OnUpdateVars(QSBNetworkReader reader, bool initialState) { if (initialState && m_NetworkBehaviours == null) { - m_NetworkBehaviours = base.GetComponents(); + m_NetworkBehaviours = GetComponents(); } for (var i = 0; i < m_NetworkBehaviours.Length; i++) { @@ -668,7 +668,7 @@ internal void SetLocalPlayer(short localPlayerControllerId) ModConsole.OwmlConsole.WriteLine($"SetLocalPlayer {localPlayerControllerId}"); IsLocalPlayer = true; PlayerControllerId = localPlayerControllerId; - var hasAuthority = this.HasAuthority; + var hasAuthority = HasAuthority; if (LocalPlayerAuthority) { HasAuthority = true; @@ -723,7 +723,7 @@ internal void AddObserver(QSBNetworkConnection conn) { if (m_Observers == null) { - Debug.LogError("AddObserver for " + base.gameObject + " observer list is null"); + Debug.LogError("AddObserver for " + gameObject + " observer list is null"); } else if (m_ObserverConnections.Contains(conn.connectionId)) { @@ -732,7 +732,7 @@ internal void AddObserver(QSBNetworkConnection conn) "Duplicate observer ", conn.address, " added for ", - base.gameObject + gameObject })); } else @@ -742,7 +742,7 @@ internal void AddObserver(QSBNetworkConnection conn) "Added observer ", conn.address, " added for ", - base.gameObject + gameObject })); m_Observers.Add(conn); m_ObserverConnections.Add(conn.connectionId); @@ -812,7 +812,7 @@ public void RebuildObservers(bool initialize) Debug.LogWarning(string.Concat(new object[] { "Observer is not ready for ", - base.gameObject, + gameObject, " ", networkConnection3 })); @@ -823,7 +823,7 @@ public void RebuildObservers(bool initialize) Debug.Log(string.Concat(new object[] { "New Observer for ", - base.gameObject, + gameObject, " ", networkConnection3 })); @@ -839,7 +839,7 @@ public void RebuildObservers(bool initialize) Debug.Log(string.Concat(new object[] { "Removed Observer for ", - base.gameObject, + gameObject, " ", networkConnection4 })); @@ -883,12 +883,12 @@ public bool RemoveClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner == null) { - Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has no clientAuthority owner."); + Debug.LogError("RemoveClientAuthority for " + gameObject + " has no clientAuthority owner."); return false; } else if (ClientAuthorityOwner != conn) { - Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has different owner."); + Debug.LogError("RemoveClientAuthority for " + gameObject + " has different owner."); return false; } ClientAuthorityOwner.RemoveOwnedObject(this); @@ -917,12 +917,12 @@ public bool AssignClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) { - ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + gameObject + " already has an owner. Use RemoveClientAuthority() first."); return false; } else if (conn == null) { - ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); return false; } ClientAuthorityOwner = conn; diff --git a/QuantumUNET/Components/QSBNetworkManagerHUD.cs b/QuantumUNET/Components/QSBNetworkManagerHUD.cs index 6541f612c..a59376a2f 100644 --- a/QuantumUNET/Components/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/Components/QSBNetworkManagerHUD.cs @@ -9,10 +9,7 @@ public class QSBNetworkManagerHUD : MonoBehaviour public int offsetX; public int offsetY; - private void Awake() - { - manager = GetComponent(); - } + private void Awake() => manager = GetComponent(); private void OnGUI() { diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index 2e6899da2..ebf6da9d3 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -50,13 +50,7 @@ public class QSBNetworkManagerUNET : MonoBehaviour private static QSBNetworkConnection s_ClientReadyConnection; private static string s_Address; - public List startPositions - { - get - { - return s_StartPositions; - } - } + public List startPositions => s_StartPositions; public bool customConfig { get; set; } @@ -107,10 +101,7 @@ public int numPlayers } } - private void Awake() - { - InitializeSingleton(); - } + public void Awake() => InitializeSingleton(); private void InitializeSingleton() { @@ -121,14 +112,14 @@ private void InitializeSingleton() if (singleton != null) { Debug.Log("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used."); - Destroy(base.gameObject); + Destroy(gameObject); return; } Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)"); singleton = this; if (Application.isPlaying) { - DontDestroyOnLoad(base.gameObject); + DontDestroyOnLoad(gameObject); } } else @@ -157,10 +148,7 @@ internal void RegisterServerMessages() QSBNetworkServer.RegisterHandler(QSBMsgType.Error, new QSBNetworkMessageDelegate(OnServerErrorInternal)); } - public bool StartServer() - { - return StartServer(null, -1); - } + public bool StartServer() => StartServer(null, -1); private bool StartServer(ConnectionConfig config, int maxConnections) { @@ -339,15 +327,9 @@ public QSBNetworkClient StartClient(ConnectionConfig config, int hostPort) return client; } - public QSBNetworkClient StartClient() - { - return StartClient(null); - } + public QSBNetworkClient StartClient() => StartClient(null); - public QSBNetworkClient StartClient(ConnectionConfig config) - { - return StartClient(config, 0); - } + public QSBNetworkClient StartClient(ConnectionConfig config) => StartClient(config, 0); public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnections) { @@ -579,10 +561,7 @@ public static void UnRegisterStartPosition(Transform start) s_StartPositions.Remove(start); } - public bool IsClientConnected() - { - return client != null && client.isConnected; - } + public bool IsClientConnected() => client != null && client.isConnected; public static void Shutdown() { @@ -776,15 +755,9 @@ public virtual void OnServerReady(QSBNetworkConnection conn) QSBNetworkServer.SetClientReady(conn); } - public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) - { - OnServerAddPlayerInternal(conn, playerControllerId); - } + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) => OnServerAddPlayerInternal(conn, playerControllerId); - public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) - { - OnServerAddPlayerInternal(conn, playerControllerId); - } + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) => OnServerAddPlayerInternal(conn, playerControllerId); private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerControllerId) { diff --git a/QuantumUNET/Components/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs index 66de6f112..7c6c0a66b 100644 --- a/QuantumUNET/Components/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -29,65 +29,15 @@ public class QSBNetworkTransform : QSBNetworkBehaviour public float LastSyncTime { get; private set; } - public Vector3 TargetSyncPosition - { - get - { - return m_TargetSyncPosition; - } - } + public Vector3 TargetSyncPosition => m_TargetSyncPosition; - public Vector3 targetSyncVelocity - { - get - { - return m_TargetSyncVelocity; - } - } + public Vector3 targetSyncVelocity => m_TargetSyncVelocity; - public Quaternion targetSyncRotation3D - { - get - { - return m_TargetSyncRotation3D; - } - } + public Quaternion targetSyncRotation3D => m_TargetSyncRotation3D; public bool Grounded { get; set; } = true; - private void OnValidate() - { - if (SendInterval < 0f) - { - SendInterval = 0f; - } - if (SyncRotationAxis < AxisSyncMode.None || SyncRotationAxis > AxisSyncMode.AxisXYZ) - { - SyncRotationAxis = AxisSyncMode.None; - } - if (MovementTheshold < 0f) - { - MovementTheshold = 0f; - } - if (velocityThreshold < 0f) - { - velocityThreshold = 0f; - } - if (SnapThreshold < 0f) - { - SnapThreshold = 0.01f; - } - if (InterpolateRotation < 0f) - { - InterpolateRotation = 0.01f; - } - if (InterpolateMovement < 0f) - { - InterpolateMovement = 0.01f; - } - } - - private void Awake() + public void Awake() { m_PrevPosition = transform.position; m_PrevRotation = transform.rotation; @@ -97,10 +47,7 @@ private void Awake() } } - public override void OnStartServer() - { - LastSyncTime = 0f; - } + public override void OnStartServer() => LastSyncTime = 0f; public override bool OnSerialize(QSBNetworkWriter writer, bool initialState) { @@ -336,12 +283,12 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp } else { - result = (float)reader.ReadInt16(); + result = reader.ReadInt16(); } } else { - result = (float)reader.ReadInt16(); + result = reader.ReadInt16(); } } else @@ -351,10 +298,8 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp return result; } - public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) - { + public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) => writer.Write(velocity); - } public static void SerializeRotation3D(QSBNetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) { @@ -434,10 +379,7 @@ public static void SerializeSpin3D(QSBNetworkWriter writer, Vector3 angularVeloc } } - public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) - { - return reader.ReadVector3(); - } + public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) => reader.ReadVector3(); public static Quaternion UnserializeRotation3D(QSBNetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) { @@ -519,20 +461,11 @@ public static Vector3 UnserializeSpin3D(QSBNetworkReader reader, AxisSyncMode mo return zero; } - public override int GetNetworkChannel() - { - return 1; - } + public override int GetNetworkChannel() => 1; - public override float GetNetworkSendInterval() - { - return SendInterval; - } + public override float GetNetworkSendInterval() => SendInterval; - public override void OnStartAuthority() - { - LastSyncTime = 0f; - } + public override void OnStartAuthority() => LastSyncTime = 0f; private Vector3 m_TargetSyncPosition; diff --git a/QuantumUNET/Messages/QSBErrorMessage.cs b/QuantumUNET/Messages/QSBErrorMessage.cs index 3a55c670a..67951c84e 100644 --- a/QuantumUNET/Messages/QSBErrorMessage.cs +++ b/QuantumUNET/Messages/QSBErrorMessage.cs @@ -2,15 +2,9 @@ { public class QSBErrorMessage : QSBMessageBase { - public override void Deserialize(QSBNetworkReader reader) - { - this.errorCode = (int)reader.ReadUInt16(); - } + public override void Deserialize(QSBNetworkReader reader) => errorCode = reader.ReadUInt16(); - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write((ushort)this.errorCode); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)errorCode); public int errorCode; } diff --git a/QuantumUNET/Messages/QSBMsgType.cs b/QuantumUNET/Messages/QSBMsgType.cs index 724bb9c30..763aaaff7 100644 --- a/QuantumUNET/Messages/QSBMsgType.cs +++ b/QuantumUNET/Messages/QSBMsgType.cs @@ -11,7 +11,7 @@ public static string MsgTypeToString(short value) } else { - string text = msgLabels[(int)value]; + var text = msgLabels[value]; if (string.IsNullOrEmpty(text)) { text = "[" + value + "]"; diff --git a/QuantumUNET/Messages/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs index f5b68c0df..b9de59992 100644 --- a/QuantumUNET/Messages/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -17,9 +17,6 @@ public class QSBNetworkMessage return result; } - public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase - { - msg.Deserialize(Reader); - } + public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase => msg.Deserialize(Reader); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 62a641c12..3f483e49f 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -6,14 +6,8 @@ internal class QSBObjectDestroyMessage : QSBMessageBase { public NetworkInstanceId NetId; - public override void Deserialize(QSBNetworkReader reader) - { - NetId = reader.ReadNetworkId(); - } + public override void Deserialize(QSBNetworkReader reader) => NetId = reader.ReadNetworkId(); - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write(NetId); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs index 66f1c1921..ebb68d39a 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs @@ -4,14 +4,8 @@ internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { public uint State; - public override void Deserialize(QSBNetworkReader reader) - { - State = reader.ReadPackedUInt32(); - } + public override void Deserialize(QSBNetworkReader reader) => State = reader.ReadPackedUInt32(); - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32(State); - } + public override void Serialize(QSBNetworkWriter writer) => writer.WritePackedUInt32(State); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBPeerInfoMessage.cs b/QuantumUNET/Messages/QSBPeerInfoMessage.cs index a876df834..a38a00f0a 100644 --- a/QuantumUNET/Messages/QSBPeerInfoMessage.cs +++ b/QuantumUNET/Messages/QSBPeerInfoMessage.cs @@ -6,44 +6,44 @@ public class QSBPeerInfoMessage : QSBMessageBase { public override void Deserialize(QSBNetworkReader reader) { - this.connectionId = (int)reader.ReadPackedUInt32(); - this.address = reader.ReadString(); - this.port = (int)reader.ReadPackedUInt32(); - this.isHost = reader.ReadBoolean(); - this.isYou = reader.ReadBoolean(); - uint num = reader.ReadPackedUInt32(); + connectionId = (int)reader.ReadPackedUInt32(); + address = reader.ReadString(); + port = (int)reader.ReadPackedUInt32(); + isHost = reader.ReadBoolean(); + isYou = reader.ReadBoolean(); + var num = reader.ReadPackedUInt32(); if (num > 0U) { - List list = new List(); - for (uint num2 = 0U; num2 < num; num2 += 1U) + var list = new List(); + for (var num2 = 0U; num2 < num; num2 += 1U) { QSBPeerInfoPlayer item; item.netId = reader.ReadNetworkId(); item.playerControllerId = (short)reader.ReadPackedUInt32(); list.Add(item); } - this.playerIds = list.ToArray(); + playerIds = list.ToArray(); } } public override void Serialize(QSBNetworkWriter writer) { - writer.WritePackedUInt32((uint)this.connectionId); - writer.Write(this.address); - writer.WritePackedUInt32((uint)this.port); - writer.Write(this.isHost); - writer.Write(this.isYou); - if (this.playerIds == null) + writer.WritePackedUInt32((uint)connectionId); + writer.Write(address); + writer.WritePackedUInt32((uint)port); + writer.Write(isHost); + writer.Write(isYou); + if (playerIds == null) { writer.WritePackedUInt32(0U); } else { - writer.WritePackedUInt32((uint)this.playerIds.Length); - for (int i = 0; i < this.playerIds.Length; i++) + writer.WritePackedUInt32((uint)playerIds.Length); + for (var i = 0; i < playerIds.Length; i++) { - writer.Write(this.playerIds[i].netId); - writer.WritePackedUInt32((uint)this.playerIds[i].playerControllerId); + writer.Write(playerIds[i].netId); + writer.WritePackedUInt32((uint)playerIds[i].playerControllerId); } } } @@ -53,15 +53,15 @@ public override string ToString() return string.Concat(new object[] { "PeerInfo conn:", - this.connectionId, + connectionId, " addr:", - this.address, + address, ":", - this.port, + port, " host:", - this.isHost, + isHost, " isYou:", - this.isYou + isYou }); } diff --git a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs index 59d1d3075..50190b797 100644 --- a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs @@ -4,14 +4,8 @@ public class QSBRemovePlayerMessage : QSBMessageBase { public short PlayerControllerId; - public override void Deserialize(QSBNetworkReader reader) - { - PlayerControllerId = (short)reader.ReadUInt16(); - } + public override void Deserialize(QSBNetworkReader reader) => PlayerControllerId = (short)reader.ReadUInt16(); - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write((ushort)PlayerControllerId); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)PlayerControllerId); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBStringMessage.cs b/QuantumUNET/Messages/QSBStringMessage.cs index 74dd198d0..98c5ad078 100644 --- a/QuantumUNET/Messages/QSBStringMessage.cs +++ b/QuantumUNET/Messages/QSBStringMessage.cs @@ -8,18 +8,12 @@ public QSBStringMessage() public QSBStringMessage(string v) { - this.value = v; + value = v; } - public override void Deserialize(QSBNetworkReader reader) - { - this.value = reader.ReadString(); - } + public override void Deserialize(QSBNetworkReader reader) => value = reader.ReadString(); - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(this.value); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write(value); public string value; } diff --git a/QuantumUNET/QSBChannelPacket.cs b/QuantumUNET/QSBChannelPacket.cs index f6001ad63..32e55a620 100644 --- a/QuantumUNET/QSBChannelPacket.cs +++ b/QuantumUNET/QSBChannelPacket.cs @@ -8,53 +8,43 @@ internal struct QSBChannelPacket { public QSBChannelPacket(int packetSize, bool isReliable) { - this.m_Position = 0; - this.m_Buffer = new byte[packetSize]; - this.m_IsReliable = isReliable; + m_Position = 0; + m_Buffer = new byte[packetSize]; + m_IsReliable = isReliable; } - public void Reset() - { - this.m_Position = 0; - } + public void Reset() => m_Position = 0; - public bool IsEmpty() - { - return this.m_Position == 0; - } + public bool IsEmpty() => m_Position == 0; public void Write(byte[] bytes, int numBytes) { - Array.Copy(bytes, 0, this.m_Buffer, this.m_Position, numBytes); - this.m_Position += numBytes; + Array.Copy(bytes, 0, m_Buffer, m_Position, numBytes); + m_Position += numBytes; } - public bool HasSpace(int numBytes) - { - return this.m_Position + numBytes <= this.m_Buffer.Length; - } + public bool HasSpace(int numBytes) => m_Position + numBytes <= m_Buffer.Length; public bool SendToTransport(QSBNetworkConnection conn, int channelId) { - bool result = true; - byte b; - if (!conn.TransportSend(this.m_Buffer, (int)((ushort)this.m_Position), channelId, out b)) + var result = true; + if (!conn.TransportSend(m_Buffer, (ushort)m_Position, channelId, out var b)) { - if (!this.m_IsReliable || b != 4) + if (!m_IsReliable || b != 4) { Debug.LogError(string.Concat(new object[] { "Failed to send internal buffer channel:", channelId, " bytesToSend:", - this.m_Position + m_Position })); result = false; } } if (b != 0) { - if (this.m_IsReliable && b == 4) + if (m_IsReliable && b == 4) { return false; } @@ -65,11 +55,11 @@ public bool SendToTransport(QSBNetworkConnection conn, int channelId) " channel:", channelId, " bytesToSend:", - this.m_Position + m_Position })); result = false; } - this.m_Position = 0; + m_Position = 0; return result; } diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 0973f254c..b9a73353e 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -54,7 +54,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer { player = null; bool result; - if ((int)playerControllerId >= localPlayers.Count) + if (playerControllerId >= localPlayers.Count) { if (LogFilter.logWarn) { @@ -62,7 +62,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer } result = false; } - else if (localPlayers[(int)playerControllerId] == null) + else if (localPlayers[playerControllerId] == null) { if (LogFilter.logWarn) { @@ -72,7 +72,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer } else { - player = localPlayers[(int)playerControllerId]; + player = localPlayers[playerControllerId]; result = (player.Gameobject != null); } return result; @@ -84,13 +84,13 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont { Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId); } - if ((int)playerControllerId >= localPlayers.Count) + if (playerControllerId >= localPlayers.Count) { if (LogFilter.logWarn) { Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId); } - while ((int)playerControllerId >= localPlayers.Count) + while (playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); } @@ -101,7 +101,7 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont PlayerControllerId = playerControllerId, UnetView = view }; - localPlayers[(int)playerControllerId] = playerController; + localPlayers[playerControllerId] = playerController; readyConnection.SetPlayerController(playerController); } @@ -143,7 +143,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); } } - while ((int)playerControllerId >= localPlayers.Count) + while (playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); } @@ -194,7 +194,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl var networkWriter = new QSBNetworkWriter(); extraMessage.Serialize(networkWriter); addPlayerMessage.msgData = networkWriter.ToArray(); - addPlayerMessage.msgSize = (int)networkWriter.Position; + addPlayerMessage.msgSize = networkWriter.Position; } readyConnection.Send(37, addPlayerMessage); result = true; @@ -224,8 +224,8 @@ public static bool RemovePlayer(short playerControllerId) }; readyConnection.Send(38, removePlayerMessage); readyConnection.RemovePlayerController(playerControllerId); - localPlayers[(int)playerControllerId] = new QSBPlayerController(); - UnityEngine.Object.Destroy(playerController.Gameobject); + localPlayers[playerControllerId] = new QSBPlayerController(); + Object.Destroy(playerController.Gameobject); result = true; } else @@ -346,29 +346,29 @@ internal static void RegisterSystemHandlers(QSBNetworkClient client, bool localC { if (localClient) { - client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); - client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); - client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); - client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); - client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); + client.RegisterHandlerSafe(1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); + client.RegisterHandlerSafe(13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); + client.RegisterHandlerSafe(3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); + client.RegisterHandlerSafe(10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); + client.RegisterHandlerSafe(15, new QSBNetworkMessageDelegate(OnClientAuthority)); } else { - client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnObjectSpawn)); - client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); - client.RegisterHandlerSafe((short)12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); - client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnObjectDestroy)); - client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnObjectDestroy)); - client.RegisterHandlerSafe((short)8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); - client.RegisterHandlerSafe((short)4, new QSBNetworkMessageDelegate(OnOwnerMessage)); - client.RegisterHandlerSafe((short)9, new QSBNetworkMessageDelegate(OnSyncListMessage)); - client.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - client.RegisterHandlerSafe((short)41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); - client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); - } - client.RegisterHandlerSafe((short)2, new QSBNetworkMessageDelegate(OnRPCMessage)); - client.RegisterHandlerSafe((short)7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); - client.RegisterHandlerSafe((short)42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + client.RegisterHandlerSafe(3, new QSBNetworkMessageDelegate(OnObjectSpawn)); + client.RegisterHandlerSafe(10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); + client.RegisterHandlerSafe(12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); + client.RegisterHandlerSafe(1, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe(13, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe(8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); + client.RegisterHandlerSafe(4, new QSBNetworkMessageDelegate(OnOwnerMessage)); + client.RegisterHandlerSafe(9, new QSBNetworkMessageDelegate(OnSyncListMessage)); + client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + client.RegisterHandlerSafe(15, new QSBNetworkMessageDelegate(OnClientAuthority)); + } + client.RegisterHandlerSafe(2, new QSBNetworkMessageDelegate(OnRPCMessage)); + client.RegisterHandlerSafe(7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); + client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); } internal static string GetStringForAssetId(NetworkHash128 assetId) @@ -449,7 +449,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) } else if (QSBNetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out var original)) { - GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); + var gameObject = Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); component = gameObject.GetComponent(); if (component == null) { @@ -572,7 +572,7 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) { if (networkIdentity.SceneId.IsEmpty()) { - UnityEngine.Object.Destroy(networkIdentity.gameObject); + Object.Destroy(networkIdentity.gameObject); } else { @@ -663,7 +663,7 @@ private static void OnRPCMessage(QSBNetworkMessage netMsg) } else if (LogFilter.logWarn) { - string cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", new object[] { networkInstanceId, diff --git a/QuantumUNET/QSBLocalClient.cs b/QuantumUNET/QSBLocalClient.cs index ce65e1230..98455474d 100644 --- a/QuantumUNET/QSBLocalClient.cs +++ b/QuantumUNET/QSBLocalClient.cs @@ -14,7 +14,7 @@ public override void Disconnect() PostInternalMessage(33); m_Connected = false; } - m_AsyncConnect = QSBNetworkClient.ConnectState.Disconnected; + m_AsyncConnect = ConnectState.Disconnected; m_LocalServer.RemoveLocalClient(m_Connection); } @@ -31,11 +31,11 @@ internal void InternalConnectLocalServer(bool generateConnectMsg) } m_LocalServer = QSBNetworkServer.instance; m_Connection = new QSBULocalConnectionToServer(m_LocalServer); - base.SetHandlers(m_Connection); + SetHandlers(m_Connection); m_Connection.connectionId = m_LocalServer.AddLocalClient(this); - m_AsyncConnect = QSBNetworkClient.ConnectState.Connected; - QSBNetworkClient.SetActive(true); - base.RegisterSystemHandlers(true); + m_AsyncConnect = ConnectState.Connected; + SetActive(true); + RegisterSystemHandlers(true); if (generateConnectMsg) { PostInternalMessage(32); @@ -108,11 +108,11 @@ private void ProcessInternalMessages() } s_InternalMessage.Reader.ReadInt16(); s_InternalMessage.ChannelId = t.channelId; - s_InternalMessage.Connection = base.connection; + s_InternalMessage.Connection = connection; s_InternalMessage.MsgType = s_InternalMessage.Reader.ReadInt16(); m_Connection.InvokeHandler(s_InternalMessage); m_FreeMessages.Push(t); - base.connection.lastMessageTime = Time.time; + connection.lastMessageTime = Time.time; } m_InternalMsgs = internalMsgs; m_InternalMsgs.Clear(); diff --git a/QuantumUNET/QSBNetBuffer.cs b/QuantumUNET/QSBNetBuffer.cs index 8f879800a..2c6961593 100644 --- a/QuantumUNET/QSBNetBuffer.cs +++ b/QuantumUNET/QSBNetBuffer.cs @@ -15,34 +15,22 @@ public QSBNetBuffer(byte[] buffer) m_Buffer = buffer; } - public uint Position - { - get - { - return m_Pos; - } - } + public uint Position { get; private set; } - public int Length - { - get - { - return m_Buffer.Length; - } - } + public int Length => m_Buffer.Length; public byte ReadByte() { - if ((ulong)m_Pos >= (ulong)((long)m_Buffer.Length)) + if (Position >= (ulong)m_Buffer.Length) { throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + ToString()); } - return m_Buffer[(int)((UIntPtr)(m_Pos++))]; + return m_Buffer[(int)((UIntPtr)(Position++))]; } public void ReadBytes(byte[] buffer, uint count) { - if ((ulong)(m_Pos + count) > (ulong)((long)m_Buffer.Length)) + if (Position + count > (ulong)m_Buffer.Length) { throw new IndexOutOfRangeException(string.Concat(new object[] { @@ -53,110 +41,107 @@ public void ReadBytes(byte[] buffer, uint count) })); } ushort num = 0; - while ((uint)num < count) + while (num < count) { - buffer[(int)num] = m_Buffer[(int)((UIntPtr)(m_Pos + (uint)num))]; + buffer[num] = m_Buffer[(int)((UIntPtr)(Position + num))]; num += 1; } - m_Pos += count; + Position += count; } - internal ArraySegment AsArraySegment() - { - return new ArraySegment(m_Buffer, 0, (int)m_Pos); - } + internal ArraySegment AsArraySegment() => new ArraySegment(m_Buffer, 0, (int)Position); public void WriteByte(byte value) { WriteCheckForSpace(1); - m_Buffer[(int)((UIntPtr)m_Pos)] = value; - m_Pos += 1U; + m_Buffer[(int)((UIntPtr)Position)] = value; + Position += 1U; } public void WriteByte2(byte value0, byte value1) { WriteCheckForSpace(2); - m_Buffer[(int)((UIntPtr)m_Pos)] = value0; - m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; - m_Pos += 2U; + m_Buffer[(int)((UIntPtr)Position)] = value0; + m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; + Position += 2U; } public void WriteByte4(byte value0, byte value1, byte value2, byte value3) { WriteCheckForSpace(4); - m_Buffer[(int)((UIntPtr)m_Pos)] = value0; - m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; - m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; - m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; - m_Pos += 4U; + m_Buffer[(int)((UIntPtr)Position)] = value0; + m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(Position + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(Position + 3U))] = value3; + Position += 4U; } public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7) { WriteCheckForSpace(8); - m_Buffer[(int)((UIntPtr)m_Pos)] = value0; - m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; - m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; - m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; - m_Buffer[(int)((UIntPtr)(m_Pos + 4U))] = value4; - m_Buffer[(int)((UIntPtr)(m_Pos + 5U))] = value5; - m_Buffer[(int)((UIntPtr)(m_Pos + 6U))] = value6; - m_Buffer[(int)((UIntPtr)(m_Pos + 7U))] = value7; - m_Pos += 8U; + m_Buffer[(int)((UIntPtr)Position)] = value0; + m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(Position + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(Position + 3U))] = value3; + m_Buffer[(int)((UIntPtr)(Position + 4U))] = value4; + m_Buffer[(int)((UIntPtr)(Position + 5U))] = value5; + m_Buffer[(int)((UIntPtr)(Position + 6U))] = value6; + m_Buffer[(int)((UIntPtr)(Position + 7U))] = value7; + Position += 8U; } public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count) { - uint num = (uint)(count + targetOffset); + var num = (uint)(count + targetOffset); WriteCheckForSpace((ushort)num); - if (targetOffset == 0 && (int)count == buffer.Length) + if (targetOffset == 0 && count == buffer.Length) { - buffer.CopyTo(m_Buffer, (int)m_Pos); + buffer.CopyTo(m_Buffer, (int)Position); } else { - for (int i = 0; i < (int)count; i++) + for (var i = 0; i < count; i++) { - m_Buffer[(int)targetOffset + i] = buffer[i]; + m_Buffer[targetOffset + i] = buffer[i]; } } - if (num > m_Pos) + if (num > Position) { - m_Pos = num; + Position = num; } } public void WriteBytes(byte[] buffer, ushort count) { WriteCheckForSpace(count); - if ((int)count == buffer.Length) + if (count == buffer.Length) { - buffer.CopyTo(m_Buffer, (int)m_Pos); + buffer.CopyTo(m_Buffer, (int)Position); } else { - for (int i = 0; i < (int)count; i++) + for (var i = 0; i < count; i++) { - m_Buffer[(int)(checked((IntPtr)(unchecked((ulong)m_Pos + (ulong)((long)i)))))] = buffer[i]; + m_Buffer[(int)(checked((IntPtr)(unchecked(Position + (ulong)i))))] = buffer[i]; } } - m_Pos += (uint)count; + Position += count; } private void WriteCheckForSpace(ushort count) { - if ((ulong)(m_Pos + (uint)count) >= (ulong)((long)m_Buffer.Length)) + if (Position + count >= (ulong)m_Buffer.Length) { - int num = (int)Math.Ceiling((double)((float)m_Buffer.Length * 1.5f)); - while ((ulong)(m_Pos + (uint)count) >= (ulong)((long)num)) + var num = (int)Math.Ceiling(m_Buffer.Length * 1.5f); + while (Position + count >= (ulong)num) { - num = (int)Math.Ceiling((double)((float)num * 1.5f)); + num = (int)Math.Ceiling(num * 1.5f); if (num > 134217728) { Debug.LogWarning("NetworkBuffer size is " + num + " bytes!"); } } - byte[] array = new byte[num]; + var array = new byte[num]; m_Buffer.CopyTo(array, 0); m_Buffer = array; } @@ -164,31 +149,22 @@ private void WriteCheckForSpace(ushort count) public void FinishMessage() { - ushort num = (ushort)(m_Pos - 4U); + var num = (ushort)(Position - 4U); m_Buffer[0] = (byte)(num & 255); - m_Buffer[1] = (byte)(num >> 8 & 255); + m_Buffer[1] = (byte)((num >> 8) & 255); } - public void SeekZero() - { - m_Pos = 0U; - } + public void SeekZero() => Position = 0U; public void Replace(byte[] buffer) { m_Buffer = buffer; - m_Pos = 0U; + Position = 0U; } - public override string ToString() - { - return string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, m_Pos); - } + public override string ToString() => string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, Position); private byte[] m_Buffer; - - private uint m_Pos; - private const int k_InitialSize = 64; private const float k_GrowthFactor = 1.5f; diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 202910c1f..c243ce373 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -77,7 +77,7 @@ protected void SendRPCInternal(QSBNetworkWriter writer, int channelId, string rp } } writer.FinishMessage(); - QSBNetworkServer.SendWriterToReady(base.gameObject, writer, channelId); + QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); } protected void SendTargetRPCInternal(QSBNetworkConnection conn, QSBNetworkWriter writer, int channelId, string rpcName) @@ -434,7 +434,7 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam Debug.Log(string.Concat(new object[] { "SetSyncVar GameObject ", - base.GetType().Name, + GetType().Name, " bit [", dirtyBit, "] netfieldId:", diff --git a/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs index 0bf0643f6..5f0e8938e 100644 --- a/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -20,13 +20,7 @@ internal static QSBNetworkCRC singleton } } - public Dictionary scripts - { - get - { - return this.m_Scripts; - } - } + public Dictionary scripts { get; } = new Dictionary(); public static bool scriptCRCCheck { @@ -42,12 +36,12 @@ public static bool scriptCRCCheck public static void ReinitializeScriptCRCs(Assembly callingAssembly) { - singleton.m_Scripts.Clear(); - foreach (Type type in callingAssembly.GetTypes()) + singleton.scripts.Clear(); + foreach (var type in callingAssembly.GetTypes()) { if (type.GetBaseType() == typeof(QSBNetworkBehaviour)) { - MethodInfo method = type.GetMethod(".cctor", BindingFlags.Static); + var method = type.GetMethod(".cctor", BindingFlags.Static); if (method != null) { method.Invoke(null, new object[0]); @@ -56,31 +50,25 @@ public static void ReinitializeScriptCRCs(Assembly callingAssembly) } } - public static void RegisterBehaviour(string name, int channel) - { - singleton.m_Scripts[name] = channel; - } + public static void RegisterBehaviour(string name, int channel) => singleton.scripts[name] = channel; - internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) - { - return singleton.ValidateInternal(scripts, numChannels); - } + internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) => singleton.ValidateInternal(scripts, numChannels); private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannels) { bool result; - if (this.m_Scripts.Count != remoteScripts.Length) + if (scripts.Count != remoteScripts.Length) { if (LogFilter.logWarn) { Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); } - this.Dump(remoteScripts); + Dump(remoteScripts); result = false; } else { - foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) + foreach (var crcmessageEntry in remoteScripts) { if (LogFilter.logDebug) { @@ -92,10 +80,10 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel crcmessageEntry.channel })); } - if (this.m_Scripts.ContainsKey(crcmessageEntry.name)) + if (scripts.ContainsKey(crcmessageEntry.name)) { - int num = this.m_Scripts[crcmessageEntry.name]; - if (num != (int)crcmessageEntry.channel) + var num = scripts[crcmessageEntry.name]; + if (num != crcmessageEntry.channel) { if (LogFilter.logError) { @@ -109,11 +97,11 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel crcmessageEntry.channel })); } - this.Dump(remoteScripts); + Dump(remoteScripts); return false; } } - if ((int)crcmessageEntry.channel >= numChannels) + if (crcmessageEntry.channel >= numChannels) { if (LogFilter.logError) { @@ -125,7 +113,7 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel crcmessageEntry.channel })); } - this.Dump(remoteScripts); + Dump(remoteScripts); return false; } } @@ -136,17 +124,17 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel private void Dump(QSBCRCMessageEntry[] remoteScripts) { - foreach (string text in this.m_Scripts.Keys) + foreach (var text in scripts.Keys) { Debug.Log(string.Concat(new object[] { "CRC Local Dump ", text, " : ", - this.m_Scripts[text] + scripts[text] })); } - foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) + foreach (var crcmessageEntry in remoteScripts) { Debug.Log(string.Concat(new object[] { @@ -159,9 +147,6 @@ private void Dump(QSBCRCMessageEntry[] remoteScripts) } internal static QSBNetworkCRC s_Singleton; - - private Dictionary m_Scripts = new Dictionary(); - private bool m_ScriptCRCCheck; } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 04a5169c1..8b4ee136b 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -30,82 +30,25 @@ public QSBNetworkClient(QSBNetworkConnection conn) RegisterSystemHandlers(false); } - public static List allClients - { - get - { - return s_Clients; - } - } + public static List allClients { get; private set; } = new List(); - public static bool active - { - get - { - return s_IsActive; - } - } + public static bool active { get; private set; } - internal void SetHandlers(QSBNetworkConnection conn) - { - conn.SetHandlers(m_MessageHandlers); - } + internal void SetHandlers(QSBNetworkConnection conn) => conn.SetHandlers(m_MessageHandlers); - public string serverIp - { - get - { - return m_ServerIp; - } - } + public string serverIp { get; private set; } = ""; - public int serverPort - { - get - { - return m_ServerPort; - } - } + public int serverPort { get; private set; } - public QSBNetworkConnection connection - { - get - { - return m_Connection; - } - } + public QSBNetworkConnection connection => m_Connection; - internal int hostId - { - get - { - return m_ClientId; - } - } + internal int hostId { get; private set; } = -1; - public Dictionary handlers - { - get - { - return m_MessageHandlers.GetHandlers(); - } - } + public Dictionary handlers => m_MessageHandlers.GetHandlers(); - public int numChannels - { - get - { - return m_HostTopology.DefaultConfig.ChannelCount; - } - } + public int numChannels => hostTopology.DefaultConfig.ChannelCount; - public HostTopology hostTopology - { - get - { - return m_HostTopology; - } - } + public HostTopology hostTopology { get; private set; } public int hostPort { @@ -127,36 +70,21 @@ public int hostPort } } - public bool isConnected - { - get - { - return m_AsyncConnect == ConnectState.Connected; - } - } + public bool isConnected => m_AsyncConnect == ConnectState.Connected; - public Type networkConnectionClass - { - get - { - return m_NetworkConnectionClass; - } - } + public Type networkConnectionClass { get; private set; } = typeof(QSBNetworkConnection); - public void SetNetworkConnectionClass() where T : QSBNetworkConnection - { - m_NetworkConnectionClass = typeof(T); - } + public void SetNetworkConnectionClass() where T : QSBNetworkConnection => networkConnectionClass = typeof(T); public bool Configure(ConnectionConfig config, int maxConnections) { - HostTopology topology = new HostTopology(config, maxConnections); + var topology = new HostTopology(config, maxConnections); return Configure(topology); } public bool Configure(HostTopology topology) { - m_HostTopology = topology; + hostTopology = topology; return true; } @@ -195,16 +123,16 @@ public bool ReconnectToNewHost(string serverIp, int serverPort) QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; - m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); - m_ServerPort = serverPort; + hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); + this.serverPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { - m_ServerIp = serverIp; + this.serverIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { - m_ServerIp = "127.0.0.1"; + this.serverIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else @@ -250,7 +178,7 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; - m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); if (secureTunnelEndPoint == null) { if (LogFilter.logError) @@ -271,11 +199,11 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - string fullName = secureTunnelEndPoint.GetType().FullName; + var fullName = secureTunnelEndPoint.GetType().FullName; if (fullName == "System.Net.IPEndPoint") { - IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; - this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + var ipendPoint = (IPEndPoint)secureTunnelEndPoint; + Connect(ipendPoint.Address.ToString(), ipendPoint.Port); result = (m_AsyncConnect != ConnectState.Failed); } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint") @@ -289,12 +217,12 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - byte b = 0; m_RemoteEndPoint = secureTunnelEndPoint; m_AsyncConnect = ConnectState.Connecting; + byte b; try { - m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(hostId, m_RemoteEndPoint, 0, out b); } catch (Exception arg) { @@ -316,9 +244,9 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); result = true; } } @@ -337,7 +265,7 @@ public void ConnectWithSimulator(string serverIp, int serverPort, int latency, f private static bool IsValidIpV6(string address) { - foreach (char c in address) + foreach (var c in address) { if (c != ':' && (c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F')) { @@ -357,20 +285,20 @@ public void Connect(string serverIp, int serverPort) ":", serverPort })); - m_ServerPort = serverPort; + this.serverPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { - m_ServerIp = serverIp; + this.serverIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { - m_ServerIp = "127.0.0.1"; + this.serverIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.IndexOf(":") != -1 && IsValidIpV6(serverIp)) { - m_ServerIp = serverIp; + this.serverIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else @@ -385,7 +313,7 @@ public void Connect(string serverIp, int serverPort) public void Connect(EndPoint secureTunnelEndPoint) { //bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); - bool usePlatformSpecificProtocols = false; + var usePlatformSpecificProtocols = false; PrepareForConnect(usePlatformSpecificProtocols); if (LogFilter.logDebug) { @@ -409,11 +337,11 @@ public void Connect(EndPoint secureTunnelEndPoint) } else { - string fullName = secureTunnelEndPoint.GetType().FullName; + var fullName = secureTunnelEndPoint.GetType().FullName; if (fullName == "System.Net.IPEndPoint") { - IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; - this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + var ipendPoint = (IPEndPoint)secureTunnelEndPoint; + Connect(ipendPoint.Address.ToString(), ipendPoint.Port); } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint" && fullName != "UnityEngine.PSVita.SceEndPoint") { @@ -430,7 +358,7 @@ public void Connect(EndPoint secureTunnelEndPoint) m_AsyncConnect = ConnectState.Connecting; try { - m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(hostId, m_RemoteEndPoint, 0, out b); } catch (Exception arg) { @@ -451,39 +379,36 @@ public void Connect(EndPoint secureTunnelEndPoint) } else { - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); } } } } - private void PrepareForConnect() - { - PrepareForConnect(false); - } + private void PrepareForConnect() => PrepareForConnect(false); private void PrepareForConnect(bool usePlatformSpecificProtocols) { SetActive(true); RegisterSystemHandlers(false); - if (m_HostTopology == null) + if (hostTopology == null) { - ConnectionConfig connectionConfig = new ConnectionConfig(); + var connectionConfig = new ConnectionConfig(); connectionConfig.AddChannel(QosType.ReliableSequenced); connectionConfig.AddChannel(QosType.Unreliable); connectionConfig.UsePlatformSpecificProtocols = usePlatformSpecificProtocols; - m_HostTopology = new HostTopology(connectionConfig, 8); + hostTopology = new HostTopology(connectionConfig, 8); } if (m_UseSimulator) { - int num = m_SimulatedLatency / 3 - 1; + var num = (m_SimulatedLatency / 3) - 1; if (num < 1) { num = 1; } - int num2 = m_SimulatedLatency * 3; + var num2 = m_SimulatedLatency * 3; ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "AddHost Using Simulator ", @@ -491,11 +416,11 @@ private void PrepareForConnect(bool usePlatformSpecificProtocols) "/", num2 })); - m_ClientId = NetworkTransport.AddHostWithSimulator(m_HostTopology, num, num2, m_HostPort); + hostId = NetworkTransport.AddHostWithSimulator(hostTopology, num, num2, m_HostPort); } else { - m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); } } @@ -503,8 +428,8 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) { try { - IPAddress[] array = Dns.EndGetHostAddresses(ar); - QSBNetworkClient networkClient = (QSBNetworkClient)ar.AsyncState; + var array = Dns.EndGetHostAddresses(ar); + var networkClient = (QSBNetworkClient)ar.AsyncState; if (array.Length == 0) { Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost); @@ -512,22 +437,22 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) } else { - networkClient.m_ServerIp = array[0].ToString(); + networkClient.serverIp = array[0].ToString(); networkClient.m_AsyncConnect = ConnectState.Resolved; Debug.Log(string.Concat(new string[] { "Async DNS Result:", - networkClient.m_ServerIp, + networkClient.serverIp, " for ", networkClient.m_RequestedServerHost, ": ", - networkClient.m_ServerIp + networkClient.serverIp })); } } catch (SocketException ex) { - QSBNetworkClient networkClient2 = (QSBNetworkClient)ar.AsyncState; + var networkClient2 = (QSBNetworkClient)ar.AsyncState; Debug.LogError("DNS resolution failed: " + ex.GetErrorCode()); Debug.LogError("Exception:" + ex); networkClient2.m_AsyncConnect = ConnectState.Failed; @@ -538,7 +463,7 @@ internal void ContinueConnect() { if (m_UseSimulator) { - int num = m_SimulatedLatency / 3; + var num = m_SimulatedLatency / 3; if (num < 1) { num = 1; @@ -550,18 +475,16 @@ internal void ContinueConnect() "/", m_SimulatedLatency })); - ConnectionSimulatorConfig conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); - byte b; - m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(m_ClientId, m_ServerIp, m_ServerPort, 0, out b, conf); + var conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); + m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(hostId, serverIp, serverPort, 0, out var b, conf); } else { - byte b; - m_ClientConnectionId = NetworkTransport.Connect(m_ClientId, m_ServerIp, m_ServerPort, 0, out b); + m_ClientConnectionId = NetworkTransport.Connect(hostId, serverIp, serverPort, 0, out var b); } - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); } public virtual void Disconnect() @@ -573,10 +496,10 @@ public virtual void Disconnect() m_Connection.Disconnect(); m_Connection.Dispose(); m_Connection = null; - if (m_ClientId != -1) + if (hostId != -1) { - NetworkTransport.RemoveHost(m_ClientId); - m_ClientId = -1; + NetworkTransport.RemoveHost(hostId); + hostId = -1; } } } @@ -745,15 +668,15 @@ public void Shutdown() { if (LogFilter.logDebug) { - Debug.Log("Shutting down client " + m_ClientId); + Debug.Log("Shutting down client " + hostId); } - if (m_ClientId != -1) + if (hostId != -1) { - NetworkTransport.RemoveHost(m_ClientId); - m_ClientId = -1; + NetworkTransport.RemoveHost(hostId); + hostId = -1; } RemoveClient(this); - if (s_Clients.Count == 0) + if (allClients.Count == 0) { SetActive(false); } @@ -761,7 +684,7 @@ public void Shutdown() internal virtual void Update() { - if (m_ClientId != -1) + if (hostId != -1) { switch (m_AsyncConnect) { @@ -788,14 +711,11 @@ internal virtual void Update() m_StatResetTime = (int)Time.time; } } - int num = 0; + var num = 0; byte b; for (; ; ) { - int num2; - int channelId; - int numBytes; - NetworkEventType networkEventType = NetworkTransport.ReceiveFromHost(m_ClientId, out num2, out channelId, m_MsgBuffer, (int)((ushort)m_MsgBuffer.Length), out numBytes, out b); + var networkEventType = NetworkTransport.ReceiveFromHost(hostId, out var num2, out var channelId, m_MsgBuffer, (ushort)m_MsgBuffer.Length, out var numBytes, out b); if (m_Connection != null) { m_Connection.LastError = (NetworkError)b; @@ -834,7 +754,7 @@ internal virtual void Update() { if (b != 6) { - GenerateDisconnectError((int)b); + GenerateDisconnectError(b); } } QSBClientScene.HandleClientDisconnect(m_Connection); @@ -858,7 +778,7 @@ internal virtual void Update() { goto Block_17; } - if (m_ClientId == -1) + if (hostId == -1) { goto Block_19; } @@ -868,10 +788,10 @@ internal virtual void Update() } } Block_10: - GenerateConnectError((int)b); + GenerateConnectError(b); return; Block_11: - GenerateDataError((int)b); + GenerateDataError(b); return; Block_17: if (LogFilter.logDebug) @@ -916,19 +836,21 @@ private void GenerateDisconnectError(int error) private void GenerateError(int error) { - QSBNetworkMessageDelegate handler = m_MessageHandlers.GetHandler(34); + var handler = m_MessageHandlers.GetHandler(34); if (handler == null) { handler = m_MessageHandlers.GetHandler(34); } if (handler != null) { - QSBErrorMessage errorMessage = new QSBErrorMessage(); - errorMessage.errorCode = error; - byte[] buffer = new byte[200]; - QSBNetworkWriter writer = new QSBNetworkWriter(buffer); + var errorMessage = new QSBErrorMessage + { + errorCode = error + }; + var buffer = new byte[200]; + var writer = new QSBNetworkWriter(buffer); errorMessage.Serialize(writer); - QSBNetworkReader reader = new QSBNetworkReader(buffer); + var reader = new QSBNetworkReader(buffer); handler(new QSBNetworkMessage { MsgType = 34, @@ -986,14 +908,13 @@ public void ResetConnectionStats() public int GetRTT() { int result; - if (m_ClientId == -1) + if (hostId == -1) { result = 0; } else { - byte b; - result = NetworkTransport.GetCurrentRTT(m_ClientId, m_ClientConnectionId, out b); + result = NetworkTransport.GetCurrentRTT(hostId, m_ClientConnectionId, out var b); } return result; } @@ -1001,7 +922,7 @@ public int GetRTT() internal void RegisterSystemHandlers(bool localClient) { QSBClientScene.RegisterSystemHandlers(this, localClient); - this.RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); + RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); } private void OnCRC(QSBNetworkMessage netMsg) @@ -1010,33 +931,24 @@ private void OnCRC(QSBNetworkMessage netMsg) QSBNetworkCRC.Validate(s_CRCMessage.scripts, numChannels); } - public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) - { - m_MessageHandlers.RegisterHandler(msgType, handler); - } + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); - public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) - { - m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - } + public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - public void UnregisterHandler(short msgType) - { - m_MessageHandlers.UnregisterHandler(msgType); - } + public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); public static Dictionary GetTotalConnectionStats() { - Dictionary dictionary = new Dictionary(); - for (int i = 0; i < s_Clients.Count; i++) + var dictionary = new Dictionary(); + for (var i = 0; i < allClients.Count; i++) { - QSBNetworkClient networkClient = s_Clients[i]; - Dictionary connectionStats = networkClient.GetConnectionStats(); - foreach (short key in connectionStats.Keys) + var networkClient = allClients[i]; + var connectionStats = networkClient.GetConnectionStats(); + foreach (var key in connectionStats.Keys) { if (dictionary.ContainsKey(key)) { - QSBNetworkConnection.PacketStat packetStat = dictionary[key]; + var packetStat = dictionary[key]; packetStat.count += connectionStats[key].count; packetStat.bytes += connectionStats[key].bytes; dictionary[key] = packetStat; @@ -1050,61 +962,46 @@ public void UnregisterHandler(short msgType) return dictionary; } - internal static void AddClient(QSBNetworkClient client) - { - s_Clients.Add(client); - } + internal static void AddClient(QSBNetworkClient client) => allClients.Add(client); - internal static bool RemoveClient(QSBNetworkClient client) - { - return s_Clients.Remove(client); - } + internal static bool RemoveClient(QSBNetworkClient client) => allClients.Remove(client); internal static void UpdateClients() { - for (int i = 0; i < s_Clients.Count; i++) + for (var i = 0; i < allClients.Count; i++) { - if (s_Clients[i] != null) + if (allClients[i] != null) { - s_Clients[i].Update(); + allClients[i].Update(); } else { - s_Clients.RemoveAt(i); + allClients.RemoveAt(i); } } } public static void ShutdownAll() { - while (s_Clients.Count != 0) + while (allClients.Count != 0) { - s_Clients[0].Shutdown(); + allClients[0].Shutdown(); } - s_Clients = new List(); - s_IsActive = false; + allClients = new List(); + active = false; QSBClientScene.Shutdown(); } internal static void SetActive(bool state) { - if (!s_IsActive && state) + if (!active && state) { NetworkTransport.Init(); } - s_IsActive = state; + active = state; } - private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); - private const int k_MaxEventsPerFrame = 500; - - private static List s_Clients = new List(); - - private static bool s_IsActive; - - private HostTopology m_HostTopology; - private int m_HostPort; private bool m_UseSimulator; @@ -1112,13 +1009,6 @@ internal static void SetActive(bool state) private int m_SimulatedLatency; private float m_PacketLoss; - - private string m_ServerIp = ""; - - private int m_ServerPort; - - private int m_ClientId = -1; - private int m_ClientConnectionId = -1; private int m_StatResetTime; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 8f9101c75..b74794ee7 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -47,7 +47,7 @@ public virtual void Initialize(string networkAddress, int networkHostId, int net var bufferSize = packetSize; if (channelQOS.QOS == QosType.ReliableFragmented || channelQOS.QOS == QosType.UnreliableFragmented) { - bufferSize = (int)(hostTopology.DefaultConfig.FragmentSize * 128); + bufferSize = hostTopology.DefaultConfig.FragmentSize * 128; } m_Channels[i] = new QSBChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS)); } @@ -102,8 +102,7 @@ public void Disconnect() QSBClientScene.HandleClientDisconnect(this); if (hostId != -1) { - byte b; - NetworkTransport.Disconnect(hostId, connectionId, out b); + NetworkTransport.Disconnect(hostId, connectionId, out var b); RemoveObservers(); } } @@ -182,18 +181,18 @@ internal void HandleFragment(QSBNetworkReader reader, int channelId) internal void SetPlayerController(QSBPlayerController player) { - while ((int)player.PlayerControllerId >= PlayerControllers.Count) + while (player.PlayerControllerId >= PlayerControllers.Count) { PlayerControllers.Add(new QSBPlayerController()); } - PlayerControllers[(int)player.PlayerControllerId] = player; + PlayerControllers[player.PlayerControllerId] = player; } internal void RemovePlayerController(short playerControllerId) { for (var i = PlayerControllers.Count; i >= 0; i--) { - if ((int)playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) + if (playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) { PlayerControllers[i] = new QSBPlayerController(); return; @@ -263,15 +262,9 @@ public virtual bool SendByChannel(short msgType, QSBMessageBase msg, int channel return SendWriter(m_Writer, channelId); } - public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) - { - return CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); - } + public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) => CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); - public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) - { - return CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); - } + public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) => CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); private void LogSend(byte[] bytes) { @@ -279,7 +272,7 @@ private void LogSend(byte[] bytes) var num = networkReader.ReadUInt16(); var num2 = networkReader.ReadUInt16(); var stringBuilder = new StringBuilder(); - for (var i = 4; i < (int)(4 + num); i++) + for (var i = 4; i < 4 + num; i++) { stringBuilder.AppendFormat("{0:X2}", bytes[i]); if (i > 150) @@ -348,7 +341,7 @@ protected void HandleReader(QSBNetworkReader reader, int receivedSize, int chann { var num = reader.ReadUInt16(); var num2 = reader.ReadInt16(); - var array = reader.ReadBytes((int)num); + var array = reader.ReadBytes(num); var reader2 = new QSBNetworkReader(array); QSBNetworkMessageDelegate networkMessageDelegate = null; if (m_MessageHandlersDict.ContainsKey(num2)) diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index d3d94d173..782a84361 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -7,21 +7,13 @@ namespace QuantumUNET { internal class QSBNetworkScene { - private Dictionary m_LocalObjects = new Dictionary(); - internal static Dictionary guidToPrefab { get; } = new Dictionary(); internal static Dictionary spawnHandlers { get; } = new Dictionary(); internal static Dictionary unspawnHandlers { get; } = new Dictionary(); - internal Dictionary localObjects - { - get - { - return m_LocalObjects; - } - } + internal Dictionary localObjects { get; } = new Dictionary(); internal void Shutdown() { @@ -80,10 +72,7 @@ internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity return result; } - internal bool RemoveLocalObject(NetworkInstanceId netId) - { - return localObjects.Remove(netId); - } + internal bool RemoveLocalObject(NetworkInstanceId netId) => localObjects.Remove(netId); internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) { @@ -91,7 +80,7 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) if (localObjects.ContainsKey(netId)) { var networkIdentity = localObjects[netId]; - UnityEngine.Object.Destroy(networkIdentity.gameObject); + Object.Destroy(networkIdentity.gameObject); result = localObjects.Remove(netId); } else @@ -101,10 +90,7 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) return result; } - internal void ClearLocalObjects() - { - localObjects.Clear(); - } + internal void ClearLocalObjects() => localObjects.Clear(); internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) { @@ -273,7 +259,7 @@ internal void DestroyAllClientObjects() { if (networkIdentity.SceneId.IsEmpty()) { - UnityEngine.Object.Destroy(networkIdentity.gameObject); + Object.Destroy(networkIdentity.gameObject); } else { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 313e6e9d3..702a465c0 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -21,61 +21,19 @@ private QSBNetworkServer() m_SimpleServerSimple = new ServerSimpleWrapper(this); } - public static List localConnections - { - get - { - return instance.m_LocalConnectionsFakeList; - } - } + public static List localConnections => instance.m_LocalConnectionsFakeList; - public static int listenPort - { - get - { - return instance.m_SimpleServerSimple.listenPort; - } - } + public static int listenPort => instance.m_SimpleServerSimple.listenPort; - public static int serverHostId - { - get - { - return instance.m_SimpleServerSimple.serverHostId; - } - } + public static int serverHostId => instance.m_SimpleServerSimple.serverHostId; - public static ReadOnlyCollection connections - { - get - { - return instance.m_SimpleServerSimple.connections; - } - } + public static ReadOnlyCollection connections => instance.m_SimpleServerSimple.connections; - public static Dictionary handlers - { - get - { - return instance.m_SimpleServerSimple.handlers; - } - } + public static Dictionary handlers => instance.m_SimpleServerSimple.handlers; - public static HostTopology hostTopology - { - get - { - return instance.m_SimpleServerSimple.hostTopology; - } - } + public static HostTopology hostTopology => instance.m_SimpleServerSimple.hostTopology; - public static Dictionary objects - { - get - { - return instance.m_NetworkScene.localObjects; - } - } + public static Dictionary objects => instance.m_NetworkScene.localObjects; public static bool dontListen { get; set; } @@ -112,21 +70,9 @@ internal static QSBNetworkServer instance public static bool active { get; private set; } - public static bool localClientActive - { - get - { - return instance.m_LocalClientActive; - } - } + public static bool localClientActive => instance.m_LocalClientActive; - public static int numChannels - { - get - { - return instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; - } - } + public static int numChannels => instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; public static float maxDelay { @@ -140,28 +86,13 @@ public static float maxDelay } } - public static Type networkConnectionClass - { - get - { - return instance.m_SimpleServerSimple.networkConnectionClass; - } - } + public static Type networkConnectionClass => instance.m_SimpleServerSimple.networkConnectionClass; - public static void SetNetworkConnectionClass() where T : QSBNetworkConnection - { - instance.m_SimpleServerSimple.SetNetworkConnectionClass(); - } + public static void SetNetworkConnectionClass() where T : QSBNetworkConnection => instance.m_SimpleServerSimple.SetNetworkConnectionClass(); - public static bool Configure(ConnectionConfig config, int maxConnections) - { - return instance.m_SimpleServerSimple.Configure(config, maxConnections); - } + public static bool Configure(ConnectionConfig config, int maxConnections) => instance.m_SimpleServerSimple.Configure(config, maxConnections); - public static bool Configure(HostTopology topology) - { - return instance.m_SimpleServerSimple.Configure(topology); - } + public static bool Configure(HostTopology topology) => instance.m_SimpleServerSimple.Configure(topology); public static void Reset() { @@ -200,10 +131,7 @@ internal void RegisterMessageHandlers() maxPacketSize = hostTopology.DefaultConfig.PacketSize; } - public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) - { - instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); - } + public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) => instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { @@ -212,15 +140,9 @@ private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGui RegisterMessageHandlers(); } - public static bool Listen(int serverPort) - { - return instance.InternalListen(null, serverPort); - } + public static bool Listen(int serverPort) => instance.InternalListen(null, serverPort); - public static bool Listen(string ipAddress, int serverPort) - { - return instance.InternalListen(ipAddress, serverPort); - } + public static bool Listen(string ipAddress, int serverPort) => instance.InternalListen(ipAddress, serverPort); internal bool InternalListen(string ipAddress, int serverPort) { @@ -585,10 +507,7 @@ public static bool SendByChannelToReady(GameObject contextObj, short msgType, QS return result; } - public static void DisconnectAll() - { - instance.InternalDisconnectAll(); - } + public static void DisconnectAll() => instance.InternalDisconnectAll(); internal void InternalDisconnectAll() { @@ -690,10 +609,7 @@ private void OnDisconnected(QSBNetworkConnection conn) conn.Dispose(); } - private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) - { - conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); - } + private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); private void GenerateConnectError(int error) { @@ -734,8 +650,10 @@ private void GenerateError(QSBNetworkConnection conn, int error) { if (handlers.ContainsKey(34)) { - var errorMessage = new QSBErrorMessage(); - errorMessage.errorCode = error; + var errorMessage = new QSBErrorMessage + { + errorCode = error + }; var writer = new QSBNetworkWriter(); errorMessage.Serialize(writer); var reader = new QSBNetworkReader(writer); @@ -743,25 +661,13 @@ private void GenerateError(QSBNetworkConnection conn, int error) } } - public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) - { - instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); - } + public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); - public static void UnregisterHandler(short msgType) - { - instance.m_SimpleServerSimple.UnregisterHandler(msgType); - } + public static void UnregisterHandler(short msgType) => instance.m_SimpleServerSimple.UnregisterHandler(msgType); - public static void ClearHandlers() - { - instance.m_SimpleServerSimple.ClearHandlers(); - } + public static void ClearHandlers() => instance.m_SimpleServerSimple.ClearHandlers(); - public static void ClearSpawners() - { - QSBNetworkScene.ClearSpawners(); - } + public static void ClearSpawners() => QSBNetworkScene.ClearSpawners(); public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { @@ -774,11 +680,7 @@ public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int var networkConnection = connections[i]; if (networkConnection != null) { - int num; - int num2; - int num3; - int num4; - networkConnection.GetStatsOut(out num, out num2, out num3, out num4); + networkConnection.GetStatsOut(out var num, out var num2, out var num3, out var num4); numMsgs += num; numBufferedMsgs += num2; numBytes += num3; @@ -796,9 +698,7 @@ public static void GetStatsIn(out int numMsgs, out int numBytes) var networkConnection = connections[i]; if (networkConnection != null) { - int num; - int num2; - networkConnection.GetStatsIn(out num, out num2); + networkConnection.GetStatsIn(out var num, out var num2); numMsgs += num; numBytes += num2; } @@ -846,16 +746,12 @@ public static void SendToClient(int connectionId, short msgType, QSBMessageBase } } - public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) - { - return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); - } + public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) => instance.InternalAddPlayerForConnection(conn, player, playerControllerId); internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { - QSBNetworkIdentity networkIdentity; bool result; - if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) { if (LogFilter.logError) { @@ -872,9 +768,8 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje } else { - QSBPlayerController playerController = null; GameObject x = null; - if (conn.GetPlayerController(playerControllerId, out playerController)) + if (conn.GetPlayerController(playerControllerId, out var playerController)) { x = playerController.Gameobject; } @@ -963,9 +858,8 @@ private static bool CheckPlayerControllerIdForConnection(QSBNetworkConnection co private bool SetupLocalPlayerForConnection(QSBNetworkConnection conn, QSBNetworkIdentity uv, QSBPlayerController newPlayerController) { Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.NetId); - var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; bool result; - if (ulocalConnectionToClient != null) + if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) { Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); if (uv.NetId.IsEmpty()) @@ -1002,9 +896,8 @@ private static void FinishPlayerForConnection(QSBNetworkConnection conn, QSBNetw internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { - QSBNetworkIdentity networkIdentity; bool result; - if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) { if (LogFilter.logError) { @@ -1019,8 +912,7 @@ internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, Game else { Debug.Log("NetworkServer ReplacePlayer"); - QSBPlayerController playerController; - if (conn.GetPlayerController(playerControllerId, out playerController)) + if (conn.GetPlayerController(playerControllerId, out var playerController)) { playerController.UnetView.SetNotLocalPlayer(); playerController.UnetView.ClearClientOwner(); @@ -1072,10 +964,7 @@ private static bool GetNetworkIdentity(GameObject go, out QSBNetworkIdentity vie return result; } - public static void SetClientReady(QSBNetworkConnection conn) - { - instance.SetClientReadyInternal(conn); - } + public static void SetClientReady(QSBNetworkConnection conn) => instance.SetClientReadyInternal(conn); internal void SetClientReadyInternal(QSBNetworkConnection conn) { @@ -1100,15 +989,14 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) } } conn.isReady = true; - var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; - if (ulocalConnectionToClient != null) + if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) { Debug.Log("NetworkServer Ready handling ULocalConnectionToClient"); foreach (var networkIdentity in objects.Values) { if (networkIdentity != null && networkIdentity.gameObject != null) { - bool flag = networkIdentity.OnCheckObserver(conn); + var flag = networkIdentity.OnCheckObserver(conn); if (flag) { networkIdentity.AddObserver(conn); @@ -1133,8 +1021,10 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) conn.connectionId })); } - var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); - objectSpawnFinishedMessage.State = 0U; + var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage + { + State = 0U + }; conn.Send(12, objectSpawnFinishedMessage); foreach (var networkIdentity2 in objects.Values) { @@ -1157,7 +1047,7 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) networkIdentity2.NetId })); } - bool flag2 = networkIdentity2.OnCheckObserver(conn); + var flag2 = networkIdentity2.OnCheckObserver(conn); if (flag2) { networkIdentity2.AddObserver(conn); @@ -1198,10 +1088,7 @@ public static void SetAllClientsNotReady() } } - public static void SetClientNotReady(QSBNetworkConnection conn) - { - instance.InternalSetClientNotReady(conn); - } + public static void SetClientNotReady(QSBNetworkConnection conn) => instance.InternalSetClientNotReady(conn); internal void InternalSetClientNotReady(QSBNetworkConnection conn) { @@ -1230,8 +1117,7 @@ private static void OnClientReadyMessage(QSBNetworkMessage netMsg) private static void OnRemovePlayerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_RemovePlayerMessage); - QSBPlayerController playerController = null; - netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out playerController); + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var playerController); if (playerController != null) { netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); @@ -1302,12 +1188,11 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) internal void SpawnObject(GameObject obj) { - QSBNetworkIdentity networkIdentity; if (!active) { ModConsole.OwmlConsole.WriteLine("Error - SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); } - else if (!GetNetworkIdentity(obj, out networkIdentity)) + else if (!GetNetworkIdentity(obj, out var networkIdentity)) { Debug.LogError(string.Concat(new object[] { @@ -1331,11 +1216,13 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) { if (uv.SceneId.IsEmpty()) { - var objectSpawnMessage = new QSBObjectSpawnMessage(); - objectSpawnMessage.NetId = uv.NetId; - objectSpawnMessage.assetId = uv.AssetId; - objectSpawnMessage.Position = uv.transform.position; - objectSpawnMessage.Rotation = uv.transform.rotation; + var objectSpawnMessage = new QSBObjectSpawnMessage + { + NetId = uv.NetId, + assetId = uv.AssetId, + Position = uv.transform.position, + Rotation = uv.transform.rotation + }; var networkWriter = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter); if (networkWriter.Position > 0) @@ -1353,10 +1240,12 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) } else { - var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); - objectSpawnSceneMessage.NetId = uv.NetId; - objectSpawnSceneMessage.SceneId = uv.SceneId; - objectSpawnSceneMessage.Position = uv.transform.position; + var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage + { + NetId = uv.NetId, + SceneId = uv.SceneId, + Position = uv.transform.position + }; var networkWriter2 = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter2); if (networkWriter2.Position > 0) @@ -1416,30 +1305,25 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) private static void UnSpawnObject(GameObject obj) { - QSBNetworkIdentity uv; if (obj == null) { Debug.Log("NetworkServer UnspawnObject is null"); } - else if (GetNetworkIdentity(obj, out uv)) + else if (GetNetworkIdentity(obj, out var uv)) { UnSpawnObject(uv); } } - private static void UnSpawnObject(QSBNetworkIdentity uv) - { - DestroyObject(uv, false); - } + private static void UnSpawnObject(QSBNetworkIdentity uv) => DestroyObject(uv, false); private static void DestroyObject(GameObject obj) { - QSBNetworkIdentity uv; if (obj == null) { Debug.Log("NetworkServer DestroyObject is null"); } - else if (GetNetworkIdentity(obj, out uv)) + else if (GetNetworkIdentity(obj, out var uv)) { DestroyObject(uv, true); } @@ -1459,8 +1343,10 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec { uv.ClientAuthorityOwner.RemoveOwnedObject(uv); } - var objectDestroyMessage = new QSBObjectDestroyMessage(); - objectDestroyMessage.NetId = uv.NetId; + var objectDestroyMessage = new QSBObjectDestroyMessage + { + NetId = uv.NetId + }; SendToObservers(uv.gameObject, 1, objectDestroyMessage); uv.ClearObservers(); if (QSBNetworkClient.active && instance.m_LocalClientActive) @@ -1475,10 +1361,7 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec uv.MarkForReset(); } - public static void ClearLocalObjects() - { - objects.Clear(); - } + public static void ClearLocalObjects() => objects.Clear(); public static void Spawn(GameObject obj) { @@ -1488,10 +1371,7 @@ public static void Spawn(GameObject obj) } } - private static bool CheckForPrefab(GameObject obj) - { - return false; - } + private static bool CheckForPrefab(GameObject obj) => false; private static bool VerifyCanSpawn(GameObject obj) { @@ -1560,8 +1440,7 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) { if (VerifyCanSpawn(obj)) { - QSBNetworkIdentity networkIdentity; - if (GetNetworkIdentity(obj, out networkIdentity)) + if (GetNetworkIdentity(obj, out var networkIdentity)) { networkIdentity.SetDynamicAssetId(assetId); } @@ -1569,15 +1448,9 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) } } - public static void Destroy(GameObject obj) - { - DestroyObject(obj); - } + public static void Destroy(GameObject obj) => DestroyObject(obj); - public static void UnSpawn(GameObject obj) - { - UnSpawnObject(obj); - } + public static void UnSpawn(GameObject obj) => UnSpawnObject(obj); internal bool InvokeBytes(QSBULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { @@ -1625,15 +1498,9 @@ internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgT return result; } - public static GameObject FindLocalObject(NetworkInstanceId netId) - { - return instance.m_NetworkScene.FindLocalObject(netId); - } + public static GameObject FindLocalObject(NetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); - private static bool ValidateSceneObject(QSBNetworkIdentity netId) - { - return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); - } + private static bool ValidateSceneObject(QSBNetworkIdentity netId) => netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); public static bool SpawnObjects() { @@ -1684,7 +1551,7 @@ private static void SendCrc(QSBNetworkConnection targetConnection) { var crcmessage = new QSBCRCMessage(); var list = new List(); - foreach (string text in QSBNetworkCRC.singleton.scripts.Keys) + foreach (var text in QSBNetworkCRC.singleton.scripts.Keys) { list.Add(new QSBCRCMessageEntry { @@ -1733,35 +1600,17 @@ public ServerSimpleWrapper(QSBNetworkServer server) m_Server = server; } - public override void OnConnectError(int connectionId, byte error) - { - m_Server.GenerateConnectError((int)error); - } + public override void OnConnectError(int connectionId, byte error) => m_Server.GenerateConnectError(error); - public override void OnDataError(QSBNetworkConnection conn, byte error) - { - m_Server.GenerateDataError(conn, (int)error); - } + public override void OnDataError(QSBNetworkConnection conn, byte error) => m_Server.GenerateDataError(conn, error); - public override void OnDisconnectError(QSBNetworkConnection conn, byte error) - { - m_Server.GenerateDisconnectError(conn, (int)error); - } + public override void OnDisconnectError(QSBNetworkConnection conn, byte error) => m_Server.GenerateDisconnectError(conn, error); - public override void OnConnected(QSBNetworkConnection conn) - { - m_Server.OnConnected(conn); - } + public override void OnConnected(QSBNetworkConnection conn) => m_Server.OnConnected(conn); - public override void OnDisconnected(QSBNetworkConnection conn) - { - m_Server.OnDisconnected(conn); - } + public override void OnDisconnected(QSBNetworkConnection conn) => m_Server.OnDisconnected(conn); - public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) - { - m_Server.OnData(conn, receivedSize, channelId); - } + public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => m_Server.OnData(conn, receivedSize, channelId); private QSBNetworkServer m_Server; } diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index 5d9a15455..7a6507238 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -12,112 +12,43 @@ public class QSBNetworkServerSimple { public QSBNetworkServerSimple() { - this.m_ConnectionsReadOnly = new ReadOnlyCollection(this.m_Connections); + connections = new ReadOnlyCollection(m_Connections); } - public int listenPort - { - get - { - return this.m_ListenPort; - } - set - { - this.m_ListenPort = value; - } - } + public int listenPort { get; set; } - public int serverHostId - { - get - { - return this.m_ServerHostId; - } - set - { - this.m_ServerHostId = value; - } - } + public int serverHostId { get; set; } = -1; - public HostTopology hostTopology - { - get - { - return this.m_HostTopology; - } - } + public HostTopology hostTopology { get; private set; } - public bool useWebSockets - { - get - { - return this.m_UseWebSockets; - } - set - { - this.m_UseWebSockets = value; - } - } + public bool useWebSockets { get; set; } - public ReadOnlyCollection connections - { - get - { - return this.m_ConnectionsReadOnly; - } - } + public ReadOnlyCollection connections { get; } - public Dictionary handlers - { - get - { - return this.m_MessageHandlers.GetHandlers(); - } - } + public Dictionary handlers => m_MessageHandlers.GetHandlers(); - public byte[] messageBuffer - { - get - { - return this.m_MsgBuffer; - } - } + public byte[] messageBuffer { get; private set; } = null; - public NetworkReader messageReader - { - get - { - return this.m_MsgReader; - } - } + public NetworkReader messageReader { get; private set; } = null; - public Type networkConnectionClass - { - get - { - return this.m_NetworkConnectionClass; - } - } + public Type networkConnectionClass { get; private set; } = typeof(QSBNetworkConnection); - public void SetNetworkConnectionClass() where T : QSBNetworkConnection - { - this.m_NetworkConnectionClass = typeof(T); - } + public void SetNetworkConnectionClass() where T : QSBNetworkConnection => networkConnectionClass = typeof(T); public virtual void Initialize() { - if (!this.m_Initialized) + if (!m_Initialized) { - this.m_Initialized = true; + m_Initialized = true; NetworkTransport.Init(); - this.m_MsgBuffer = new byte[65535]; - this.m_MsgReader = new NetworkReader(this.m_MsgBuffer); - if (this.m_HostTopology == null) + messageBuffer = new byte[65535]; + messageReader = new NetworkReader(messageBuffer); + if (hostTopology == null) { - ConnectionConfig connectionConfig = new ConnectionConfig(); + var connectionConfig = new ConnectionConfig(); connectionConfig.AddChannel(QosType.ReliableSequenced); connectionConfig.AddChannel(QosType.Unreliable); - this.m_HostTopology = new HostTopology(connectionConfig, 8); + hostTopology = new HostTopology(connectionConfig, 8); } if (LogFilter.logDebug) { @@ -128,30 +59,30 @@ public virtual void Initialize() public bool Configure(ConnectionConfig config, int maxConnections) { - HostTopology topology = new HostTopology(config, maxConnections); - return this.Configure(topology); + var topology = new HostTopology(config, maxConnections); + return Configure(topology); } public bool Configure(HostTopology topology) { - this.m_HostTopology = topology; + hostTopology = topology; return true; } public bool Listen(string ipAddress, int serverListenPort) { - this.Initialize(); - this.m_ListenPort = serverListenPort; - if (this.m_UseWebSockets) + Initialize(); + listenPort = serverListenPort; + if (useWebSockets) { - this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort, ipAddress); + serverHostId = NetworkTransport.AddWebsocketHost(hostTopology, serverListenPort, ipAddress); } else { - this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort, ipAddress); + serverHostId = NetworkTransport.AddHost(hostTopology, serverListenPort, ipAddress); } bool result; - if (this.m_ServerHostId == -1) + if (serverHostId == -1) { result = false; } @@ -164,7 +95,7 @@ public bool Listen(string ipAddress, int serverListenPort) "NetworkServerSimple listen: ", ipAddress, ":", - this.m_ListenPort + listenPort })); } result = true; @@ -172,26 +103,23 @@ public bool Listen(string ipAddress, int serverListenPort) return result; } - public bool Listen(int serverListenPort) - { - return this.Listen(serverListenPort, this.m_HostTopology); - } + public bool Listen(int serverListenPort) => Listen(serverListenPort, hostTopology); public bool Listen(int serverListenPort, HostTopology topology) { - this.m_HostTopology = topology; - this.Initialize(); - this.m_ListenPort = serverListenPort; - if (this.m_UseWebSockets) + hostTopology = topology; + Initialize(); + listenPort = serverListenPort; + if (useWebSockets) { - this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort); + serverHostId = NetworkTransport.AddWebsocketHost(hostTopology, serverListenPort); } else { - this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort); + serverHostId = NetworkTransport.AddHost(hostTopology, serverListenPort); } bool result; - if (this.m_ServerHostId == -1) + if (serverHostId == -1) { result = false; } @@ -199,7 +127,7 @@ public bool Listen(int serverListenPort, HostTopology topology) { if (LogFilter.logDebug) { - Debug.Log("NetworkServerSimple listen " + this.m_ListenPort); + Debug.Log("NetworkServerSimple listen " + listenPort); } result = true; } @@ -208,19 +136,18 @@ public bool Listen(int serverListenPort, HostTopology topology) public void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { - this.Initialize(); - this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, this.listenPort); + Initialize(); + serverHostId = NetworkTransport.AddHost(hostTopology, listenPort); if (LogFilter.logDebug) { - Debug.Log("Server Host Slot Id: " + this.m_ServerHostId); + Debug.Log("Server Host Slot Id: " + serverHostId); } - this.Update(); - byte b; - NetworkTransport.ConnectAsNetworkHost(this.m_ServerHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out b); - this.m_RelaySlotId = 0; + Update(); + NetworkTransport.ConnectAsNetworkHost(serverHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out var b); + m_RelaySlotId = 0; if (LogFilter.logDebug) { - Debug.Log("Relay Slot Id: " + this.m_RelaySlotId); + Debug.Log("Relay Slot Id: " + m_RelaySlotId); } } @@ -230,35 +157,23 @@ public void Stop() { Debug.Log("NetworkServerSimple stop "); } - NetworkTransport.RemoveHost(this.m_ServerHostId); - this.m_ServerHostId = -1; + NetworkTransport.RemoveHost(serverHostId); + serverHostId = -1; } - internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) - { - m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - } + internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) - { - this.m_MessageHandlers.RegisterHandler(msgType, handler); - } + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); - public void UnregisterHandler(short msgType) - { - this.m_MessageHandlers.UnregisterHandler(msgType); - } + public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); - public void ClearHandlers() - { - this.m_MessageHandlers.ClearMessageHandlers(); - } + public void ClearHandlers() => m_MessageHandlers.ClearMessageHandlers(); public void UpdateConnections() { - for (int i = 0; i < this.m_Connections.Count; i++) + for (var i = 0; i < m_Connections.Count; i++) { - QSBNetworkConnection networkConnection = this.m_Connections[i]; + var networkConnection = m_Connections[i]; if (networkConnection != null) { networkConnection.FlushChannels(); @@ -268,13 +183,12 @@ public void UpdateConnections() public void Update() { - if (this.m_ServerHostId != -1) + if (serverHostId != -1) { NetworkEventType networkEventType; - if (this.m_RelaySlotId != -1) + if (m_RelaySlotId != -1) { - byte b; - networkEventType = NetworkTransport.ReceiveRelayEventFromHost(this.m_ServerHostId, out b); + networkEventType = NetworkTransport.ReceiveRelayEventFromHost(serverHostId, out var b); if (networkEventType != NetworkEventType.Nothing) { if (LogFilter.logDebug) @@ -299,17 +213,13 @@ public void Update() } do { - byte b; - int connectionId; - int channelId; - int receivedSize; - networkEventType = NetworkTransport.ReceiveFromHost(this.m_ServerHostId, out connectionId, out channelId, this.m_MsgBuffer, this.m_MsgBuffer.Length, out receivedSize, out b); + networkEventType = NetworkTransport.ReceiveFromHost(serverHostId, out var connectionId, out var channelId, messageBuffer, messageBuffer.Length, out var receivedSize, out var b); if (networkEventType != NetworkEventType.Nothing) { Debug.Log(string.Concat(new object[] { "Server event: host=", - this.m_ServerHostId, + serverHostId, " event=", networkEventType, " error=", @@ -319,15 +229,15 @@ public void Update() switch (networkEventType) { case NetworkEventType.DataEvent: - this.HandleData(connectionId, channelId, receivedSize, b); + HandleData(connectionId, channelId, receivedSize, b); break; case NetworkEventType.ConnectEvent: - this.HandleConnect(connectionId, b); + HandleConnect(connectionId, b); break; case NetworkEventType.DisconnectEvent: - this.HandleDisconnect(connectionId, b); + HandleDisconnect(connectionId, b); break; case NetworkEventType.Nothing: @@ -342,39 +252,39 @@ public void Update() } } while (networkEventType != NetworkEventType.Nothing); - this.UpdateConnections(); + UpdateConnections(); } } public QSBNetworkConnection FindConnection(int connectionId) { QSBNetworkConnection result; - if (connectionId < 0 || connectionId >= this.m_Connections.Count) + if (connectionId < 0 || connectionId >= m_Connections.Count) { result = null; } else { - result = this.m_Connections[connectionId]; + result = m_Connections[connectionId]; } return result; } public bool SetConnectionAtIndex(QSBNetworkConnection conn) { - while (this.m_Connections.Count <= conn.connectionId) + while (m_Connections.Count <= conn.connectionId) { - this.m_Connections.Add(null); + m_Connections.Add(null); } bool result; - if (this.m_Connections[conn.connectionId] != null) + if (m_Connections[conn.connectionId] != null) { result = false; } else { - this.m_Connections[conn.connectionId] = conn; - conn.SetHandlers(this.m_MessageHandlers); + m_Connections[conn.connectionId] = conn; + conn.SetHandlers(m_MessageHandlers); result = true; } return result; @@ -383,13 +293,13 @@ public bool SetConnectionAtIndex(QSBNetworkConnection conn) public bool RemoveConnectionAtIndex(int connectionId) { bool result; - if (connectionId < 0 || connectionId >= this.m_Connections.Count) + if (connectionId < 0 || connectionId >= m_Connections.Count) { result = false; } else { - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; result = true; } return result; @@ -403,26 +313,21 @@ private void HandleConnect(int connectionId, byte error) } if (error != 0) { - this.OnConnectError(connectionId, error); + OnConnectError(connectionId, error); } else { - string networkAddress; - int num; - NetworkID networkID; - NodeID nodeID; - byte lastError; - NetworkTransport.GetConnectionInfo(this.m_ServerHostId, connectionId, out networkAddress, out num, out networkID, out nodeID, out lastError); - QSBNetworkConnection networkConnection = (QSBNetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass); - networkConnection.SetHandlers(this.m_MessageHandlers); - networkConnection.Initialize(networkAddress, this.m_ServerHostId, connectionId, this.m_HostTopology); + NetworkTransport.GetConnectionInfo(serverHostId, connectionId, out var networkAddress, out var num, out var networkID, out var nodeID, out var lastError); + var networkConnection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); + networkConnection.SetHandlers(m_MessageHandlers); + networkConnection.Initialize(networkAddress, serverHostId, connectionId, hostTopology); networkConnection.LastError = (NetworkError)lastError; - while (this.m_Connections.Count <= connectionId) + while (m_Connections.Count <= connectionId) { - this.m_Connections.Add(null); + m_Connections.Add(null); } - this.m_Connections[connectionId] = networkConnection; - this.OnConnected(networkConnection); + m_Connections[connectionId] = networkConnection; + OnConnected(networkConnection); } } @@ -432,7 +337,7 @@ private void HandleDisconnect(int connectionId, byte error) { Debug.Log("NetworkServerSimple disconnect client:" + connectionId); } - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.LastError = (NetworkError)error; @@ -440,7 +345,7 @@ private void HandleDisconnect(int connectionId, byte error) { if (error != 6) { - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; if (LogFilter.logError) { Debug.LogError(string.Concat(new object[] @@ -451,23 +356,23 @@ private void HandleDisconnect(int connectionId, byte error) (NetworkError)error })); } - this.OnDisconnectError(networkConnection, error); + OnDisconnectError(networkConnection, error); return; } } networkConnection.Disconnect(); - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; if (LogFilter.logDebug) { Debug.Log("Server lost client:" + connectionId); } - this.OnDisconnected(networkConnection); + OnDisconnected(networkConnection); } } private void HandleData(int connectionId, int channelId, int receivedSize, byte error) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection == null) { if (LogFilter.logError) @@ -480,19 +385,19 @@ private void HandleData(int connectionId, int channelId, int receivedSize, byte networkConnection.LastError = (NetworkError)error; if (error != 0) { - this.OnDataError(networkConnection, error); + OnDataError(networkConnection, error); } else { - this.m_MsgReader.SeekZero(); - this.OnData(networkConnection, receivedSize, channelId); + messageReader.SeekZero(); + OnData(networkConnection, receivedSize, channelId); } } } public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channelId) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.SendBytes(bytes, numBytes, channelId); @@ -501,7 +406,7 @@ public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channe public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelId) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.SendWriter(writer, channelId); @@ -510,19 +415,19 @@ public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelI public void Disconnect(int connectionId) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.Disconnect(); - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; } } public void DisconnectAllConnections() { - for (int i = 0; i < this.m_Connections.Count; i++) + for (var i = 0; i < m_Connections.Count; i++) { - QSBNetworkConnection networkConnection = this.m_Connections[i]; + var networkConnection = m_Connections[i]; if (networkConnection != null) { networkConnection.Disconnect(); @@ -531,58 +436,21 @@ public void DisconnectAllConnections() } } - public virtual void OnConnectError(int connectionId, byte error) - { - Debug.LogError("OnConnectError error:" + error); - } + public virtual void OnConnectError(int connectionId, byte error) => Debug.LogError("OnConnectError error:" + error); - public virtual void OnDataError(QSBNetworkConnection conn, byte error) - { - Debug.LogError("OnDataError error:" + error); - } + public virtual void OnDataError(QSBNetworkConnection conn, byte error) => Debug.LogError("OnDataError error:" + error); - public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) - { - Debug.LogError("OnDisconnectError error:" + error); - } + public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) => Debug.LogError("OnDisconnectError error:" + error); - public virtual void OnConnected(QSBNetworkConnection conn) - { - conn.InvokeHandlerNoData(32); - } + public virtual void OnConnected(QSBNetworkConnection conn) => conn.InvokeHandlerNoData(32); - public virtual void OnDisconnected(QSBNetworkConnection conn) - { - conn.InvokeHandlerNoData(33); - } + public virtual void OnDisconnected(QSBNetworkConnection conn) => conn.InvokeHandlerNoData(33); - public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) - { - conn.TransportReceive(this.m_MsgBuffer, receivedSize, channelId); - } + public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => conn.TransportReceive(messageBuffer, receivedSize, channelId); private bool m_Initialized = false; - - private int m_ListenPort; - - private int m_ServerHostId = -1; - private int m_RelaySlotId = -1; - - private bool m_UseWebSockets; - - private byte[] m_MsgBuffer = null; - - private NetworkReader m_MsgReader = null; - - private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); - - private HostTopology m_HostTopology; - private List m_Connections = new List(); - - private ReadOnlyCollection m_ConnectionsReadOnly; - private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/QSBNetworkWriter.cs index 86a951781..0256d3a8a 100644 --- a/QuantumUNET/QSBNetworkWriter.cs +++ b/QuantumUNET/QSBNetworkWriter.cs @@ -11,7 +11,7 @@ public class QSBNetworkWriter { public QSBNetworkWriter() { - this.m_Buffer = new QSBNetBuffer(); + m_Buffer = new QSBNetBuffer(); if (s_Encoding == null) { s_Encoding = new UTF8Encoding(); @@ -21,7 +21,7 @@ public QSBNetworkWriter() public QSBNetworkWriter(byte[] buffer) { - this.m_Buffer = new QSBNetBuffer(buffer); + m_Buffer = new QSBNetBuffer(buffer); if (s_Encoding == null) { s_Encoding = new UTF8Encoding(); @@ -29,62 +29,50 @@ public QSBNetworkWriter(byte[] buffer) } } - public short Position - { - get - { - return (short)this.m_Buffer.Position; - } - } + public short Position => (short)m_Buffer.Position; public byte[] ToArray() { - byte[] array = new byte[this.m_Buffer.AsArraySegment().Count]; - Array.Copy(this.m_Buffer.AsArraySegment().Array, array, this.m_Buffer.AsArraySegment().Count); + var array = new byte[m_Buffer.AsArraySegment().Count]; + Array.Copy(m_Buffer.AsArraySegment().Array, array, m_Buffer.AsArraySegment().Count); return array; } - public byte[] AsArray() - { - return this.AsArraySegment().Array; - } + public byte[] AsArray() => AsArraySegment().Array; - internal ArraySegment AsArraySegment() - { - return this.m_Buffer.AsArraySegment(); - } + internal ArraySegment AsArraySegment() => m_Buffer.AsArraySegment(); public void WritePackedUInt32(uint value) { if (value <= 240U) { - this.Write((byte)value); + Write((byte)value); } else if (value <= 2287U) { - this.Write((byte)((value - 240U) / 256U + 241U)); - this.Write((byte)((value - 240U) % 256U)); + Write((byte)(((value - 240U) / 256U) + 241U)); + Write((byte)((value - 240U) % 256U)); } else if (value <= 67823U) { - this.Write(249); - this.Write((byte)((value - 2288U) / 256U)); - this.Write((byte)((value - 2288U) % 256U)); + Write(249); + Write((byte)((value - 2288U) / 256U)); + Write((byte)((value - 2288U) % 256U)); } else if (value <= 16777215U) { - this.Write(250); - this.Write((byte)(value & 255U)); - this.Write((byte)(value >> 8 & 255U)); - this.Write((byte)(value >> 16 & 255U)); + Write(250); + Write((byte)(value & 255U)); + Write((byte)((value >> 8) & 255U)); + Write((byte)((value >> 16) & 255U)); } else { - this.Write(251); - this.Write((byte)(value & 255U)); - this.Write((byte)(value >> 8 & 255U)); - this.Write((byte)(value >> 16 & 255U)); - this.Write((byte)(value >> 24 & 255U)); + Write(251); + Write((byte)(value & 255U)); + Write((byte)((value >> 8) & 255U)); + Write((byte)((value >> 16) & 255U)); + Write((byte)((value >> 24) & 255U)); } } @@ -92,168 +80,129 @@ public void WritePackedUInt64(ulong value) { if (value <= 240UL) { - this.Write((byte)value); + Write((byte)value); } else if (value <= 2287UL) { - this.Write((byte)((value - 240UL) / 256UL + 241UL)); - this.Write((byte)((value - 240UL) % 256UL)); + Write((byte)(((value - 240UL) / 256UL) + 241UL)); + Write((byte)((value - 240UL) % 256UL)); } else if (value <= 67823UL) { - this.Write(249); - this.Write((byte)((value - 2288UL) / 256UL)); - this.Write((byte)((value - 2288UL) % 256UL)); + Write(249); + Write((byte)((value - 2288UL) / 256UL)); + Write((byte)((value - 2288UL) % 256UL)); } else if (value <= 16777215UL) { - this.Write(250); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); + Write(250); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); } else if (value <= uint.MaxValue) { - this.Write(251); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); + Write(251); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); } else if (value <= 1099511627775UL) { - this.Write(252); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); + Write(252); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); } else if (value <= 281474976710655UL) { - this.Write(253); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - this.Write((byte)(value >> 40 & 255UL)); + Write(253); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + Write((byte)((value >> 40) & 255UL)); } else if (value <= 72057594037927935UL) { - this.Write(254); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - this.Write((byte)(value >> 40 & 255UL)); - this.Write((byte)(value >> 48 & 255UL)); + Write(254); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + Write((byte)((value >> 40) & 255UL)); + Write((byte)((value >> 48) & 255UL)); } else { - this.Write(byte.MaxValue); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - this.Write((byte)(value >> 40 & 255UL)); - this.Write((byte)(value >> 48 & 255UL)); - this.Write((byte)(value >> 56 & 255UL)); + Write(byte.MaxValue); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + Write((byte)((value >> 40) & 255UL)); + Write((byte)((value >> 48) & 255UL)); + Write((byte)((value >> 56) & 255UL)); } } - public void Write(NetworkInstanceId value) - { - this.WritePackedUInt32(value.Value); - } + public void Write(NetworkInstanceId value) => WritePackedUInt32(value.Value); - public void Write(NetworkSceneId value) - { - this.WritePackedUInt32(value.Value); - } + public void Write(NetworkSceneId value) => WritePackedUInt32(value.Value); - public void Write(char value) - { - this.m_Buffer.WriteByte((byte)value); - } + public void Write(char value) => m_Buffer.WriteByte((byte)value); - public void Write(byte value) - { - this.m_Buffer.WriteByte(value); - } + public void Write(byte value) => m_Buffer.WriteByte(value); - public void Write(sbyte value) - { - this.m_Buffer.WriteByte((byte)value); - } + public void Write(sbyte value) => m_Buffer.WriteByte((byte)value); - public void Write(short value) - { - this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); - } + public void Write(short value) => m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255)); - public void Write(ushort value) - { - this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); - } + public void Write(ushort value) => m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255)); - public void Write(int value) - { - this.m_Buffer.WriteByte4((byte)(value & 255), (byte)(value >> 8 & 255), (byte)(value >> 16 & 255), (byte)(value >> 24 & 255)); - } + public void Write(int value) => m_Buffer.WriteByte4((byte)(value & 255), (byte)((value >> 8) & 255), (byte)((value >> 16) & 255), (byte)((value >> 24) & 255)); - public void Write(uint value) - { - this.m_Buffer.WriteByte4((byte)(value & 255U), (byte)(value >> 8 & 255U), (byte)(value >> 16 & 255U), (byte)(value >> 24 & 255U)); - } + public void Write(uint value) => m_Buffer.WriteByte4((byte)(value & 255U), (byte)((value >> 8) & 255U), (byte)((value >> 16) & 255U), (byte)((value >> 24) & 255U)); - public void Write(long value) - { - this.m_Buffer.WriteByte8((byte)(value & 255L), (byte)(value >> 8 & 255L), (byte)(value >> 16 & 255L), (byte)(value >> 24 & 255L), (byte)(value >> 32 & 255L), (byte)(value >> 40 & 255L), (byte)(value >> 48 & 255L), (byte)(value >> 56 & 255L)); - } + public void Write(long value) => m_Buffer.WriteByte8((byte)(value & 255L), (byte)((value >> 8) & 255L), (byte)((value >> 16) & 255L), (byte)((value >> 24) & 255L), (byte)((value >> 32) & 255L), (byte)((value >> 40) & 255L), (byte)((value >> 48) & 255L), (byte)((value >> 56) & 255L)); - public void Write(ulong value) - { - this.m_Buffer.WriteByte8((byte)(value & 255UL), (byte)(value >> 8 & 255UL), (byte)(value >> 16 & 255UL), (byte)(value >> 24 & 255UL), (byte)(value >> 32 & 255UL), (byte)(value >> 40 & 255UL), (byte)(value >> 48 & 255UL), (byte)(value >> 56 & 255UL)); - } + public void Write(ulong value) => m_Buffer.WriteByte8((byte)(value & 255UL), (byte)((value >> 8) & 255UL), (byte)((value >> 16) & 255UL), (byte)((value >> 24) & 255UL), (byte)((value >> 32) & 255UL), (byte)((value >> 40) & 255UL), (byte)((value >> 48) & 255UL), (byte)((value >> 56) & 255UL)); - public void Write(float value) - { - m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); - } + public void Write(float value) => m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); - public void Write(double value) - { - m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); - } + public void Write(double value) => m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); public void Write(decimal value) { - int[] bits = decimal.GetBits(value); - this.Write(bits[0]); - this.Write(bits[1]); - this.Write(bits[2]); - this.Write(bits[3]); + var bits = decimal.GetBits(value); + Write(bits[0]); + Write(bits[1]); + Write(bits[2]); + Write(bits[3]); } public void Write(string value) { if (value == null) { - this.m_Buffer.WriteByte2(0, 0); + m_Buffer.WriteByte2(0, 0); } else { - int byteCount = s_Encoding.GetByteCount(value); + var byteCount = s_Encoding.GetByteCount(value); if (byteCount >= 32768) { throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length); } - this.Write((ushort)byteCount); - int bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); - this.m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); + Write((ushort)byteCount); + var bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); + m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); } } @@ -261,11 +210,11 @@ public void Write(bool value) { if (value) { - this.m_Buffer.WriteByte(1); + m_Buffer.WriteByte(1); } else { - this.m_Buffer.WriteByte(0); + m_Buffer.WriteByte(0); } } @@ -280,7 +229,7 @@ public void Write(byte[] buffer, int count) } else { - this.m_Buffer.WriteBytes(buffer, (ushort)count); + m_Buffer.WriteBytes(buffer, (ushort)count); } } @@ -295,7 +244,7 @@ public void Write(byte[] buffer, int offset, int count) } else { - this.m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); + m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); } } @@ -303,7 +252,7 @@ public void WriteBytesAndSize(byte[] buffer, int count) { if (buffer == null || count == 0) { - this.Write(0); + Write(0); } else if (count > 65535) { @@ -314,8 +263,8 @@ public void WriteBytesAndSize(byte[] buffer, int count) } else { - this.Write((ushort)count); - this.m_Buffer.WriteBytes(buffer, (ushort)count); + Write((ushort)count); + m_Buffer.WriteBytes(buffer, (ushort)count); } } @@ -323,7 +272,7 @@ public void WriteBytesFull(byte[] buffer) { if (buffer == null) { - this.Write(0); + Write(0); } else if (buffer.Length > 65535) { @@ -334,125 +283,125 @@ public void WriteBytesFull(byte[] buffer) } else { - this.Write((ushort)buffer.Length); - this.m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); + Write((ushort)buffer.Length); + m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); } } public void Write(Vector2 value) { - this.Write(value.x); - this.Write(value.y); + Write(value.x); + Write(value.y); } public void Write(Vector3 value) { - this.Write(value.x); - this.Write(value.y); - this.Write(value.z); + Write(value.x); + Write(value.y); + Write(value.z); } public void Write(Vector4 value) { - this.Write(value.x); - this.Write(value.y); - this.Write(value.z); - this.Write(value.w); + Write(value.x); + Write(value.y); + Write(value.z); + Write(value.w); } public void Write(Color value) { - this.Write(value.r); - this.Write(value.g); - this.Write(value.b); - this.Write(value.a); + Write(value.r); + Write(value.g); + Write(value.b); + Write(value.a); } public void Write(Color32 value) { - this.Write(value.r); - this.Write(value.g); - this.Write(value.b); - this.Write(value.a); + Write(value.r); + Write(value.g); + Write(value.b); + Write(value.a); } public void Write(Quaternion value) { - this.Write(value.x); - this.Write(value.y); - this.Write(value.z); - this.Write(value.w); + Write(value.x); + Write(value.y); + Write(value.z); + Write(value.w); } public void Write(Rect value) { - this.Write(value.xMin); - this.Write(value.yMin); - this.Write(value.width); - this.Write(value.height); + Write(value.xMin); + Write(value.yMin); + Write(value.width); + Write(value.height); } public void Write(Plane value) { - this.Write(value.normal); - this.Write(value.distance); + Write(value.normal); + Write(value.distance); } public void Write(Ray value) { - this.Write(value.direction); - this.Write(value.origin); + Write(value.direction); + Write(value.origin); } public void Write(Matrix4x4 value) { - this.Write(value.m00); - this.Write(value.m01); - this.Write(value.m02); - this.Write(value.m03); - this.Write(value.m10); - this.Write(value.m11); - this.Write(value.m12); - this.Write(value.m13); - this.Write(value.m20); - this.Write(value.m21); - this.Write(value.m22); - this.Write(value.m23); - this.Write(value.m30); - this.Write(value.m31); - this.Write(value.m32); - this.Write(value.m33); + Write(value.m00); + Write(value.m01); + Write(value.m02); + Write(value.m03); + Write(value.m10); + Write(value.m11); + Write(value.m12); + Write(value.m13); + Write(value.m20); + Write(value.m21); + Write(value.m22); + Write(value.m23); + Write(value.m30); + Write(value.m31); + Write(value.m32); + Write(value.m33); } public void Write(NetworkHash128 value) { - this.Write(value.i0); - this.Write(value.i1); - this.Write(value.i2); - this.Write(value.i3); - this.Write(value.i4); - this.Write(value.i5); - this.Write(value.i6); - this.Write(value.i7); - this.Write(value.i8); - this.Write(value.i9); - this.Write(value.i10); - this.Write(value.i11); - this.Write(value.i12); - this.Write(value.i13); - this.Write(value.i14); - this.Write(value.i15); + Write(value.i0); + Write(value.i1); + Write(value.i2); + Write(value.i3); + Write(value.i4); + Write(value.i5); + Write(value.i6); + Write(value.i7); + Write(value.i8); + Write(value.i9); + Write(value.i10); + Write(value.i11); + Write(value.i12); + Write(value.i13); + Write(value.i14); + Write(value.i15); } public void Write(NetworkIdentity value) { if (value == null) { - this.WritePackedUInt32(0U); + WritePackedUInt32(0U); } else { - this.Write(value.netId); + Write(value.netId); } } @@ -460,14 +409,14 @@ public void Write(Transform value) { if (value == null || value.gameObject == null) { - this.WritePackedUInt32(0U); + WritePackedUInt32(0U); } else { - NetworkIdentity component = value.gameObject.GetComponent(); + var component = value.gameObject.GetComponent(); if (component != null) { - this.Write(component.netId); + Write(component.netId); } else { @@ -475,7 +424,7 @@ public void Write(Transform value) { Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); } - this.WritePackedUInt32(0U); + WritePackedUInt32(0U); } } } @@ -484,14 +433,14 @@ public void Write(GameObject value) { if (value == null) { - this.WritePackedUInt32(0U); + WritePackedUInt32(0U); } else { - QSBNetworkIdentity component = value.GetComponent(); + var component = value.GetComponent(); if (component != null) { - this.Write(component.NetId); + Write(component.NetId); } else { @@ -499,32 +448,23 @@ public void Write(GameObject value) { Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); } - this.WritePackedUInt32(0U); + WritePackedUInt32(0U); } } } - public void Write(QSBMessageBase msg) - { - msg.Serialize(this); - } + public void Write(QSBMessageBase msg) => msg.Serialize(this); - public void SeekZero() - { - this.m_Buffer.SeekZero(); - } + public void SeekZero() => m_Buffer.SeekZero(); public void StartMessage(short msgType) { - this.SeekZero(); - this.m_Buffer.WriteByte2(0, 0); - this.Write(msgType); + SeekZero(); + m_Buffer.WriteByte2(0, 0); + Write(msgType); } - public void FinishMessage() - { - this.m_Buffer.FinishMessage(); - } + public void FinishMessage() => m_Buffer.FinishMessage(); private const int k_MaxStringLength = 32768; diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index 51d2d4db7..09511661d 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -12,20 +12,11 @@ public QSBULocalConnectionToServer(QSBNetworkServer localServer) m_LocalServer = localServer; } - public override bool Send(short msgType, QSBMessageBase msg) - { - return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); - } + public override bool Send(short msgType, QSBMessageBase msg) => m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); - public override bool SendUnreliable(short msgType, QSBMessageBase msg) - { - return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); - } + public override bool SendUnreliable(short msgType, QSBMessageBase msg) => m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); - public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) - { - return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); - } + public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) => m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); public override bool SendBytes(byte[] bytes, int numBytes, int channelId) { @@ -45,10 +36,7 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) return result; } - public override bool SendWriter(QSBNetworkWriter writer, int channelId) - { - return m_LocalServer.InvokeBytes(this, writer.AsArray(), (int)((short)writer.AsArray().Length), channelId); - } + public override bool SendWriter(QSBNetworkWriter writer, int channelId) => m_LocalServer.InvokeBytes(this, writer.AsArray(), (short)writer.AsArray().Length, channelId); public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { From 89a9a5247c73809cfa9ec790bf44d5b8fdf24050 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 21:59:39 +0000 Subject: [PATCH 171/207] clean --- QuantumUNET/Components/QSBNetworkAnimator.cs | 2 +- QuantumUNET/Components/QSBNetworkTransform.cs | 2 +- QuantumUNET/QSBNetworkCRC.cs | 3 +-- QuantumUNET/QSBUtility.cs | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index c124f646e..81cd6fccc 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -41,7 +41,7 @@ public void SetParameterAutoSend(int index, bool value) } } - public bool GetParameterAutoSend(int index) => + public bool GetParameterAutoSend(int index) => ((int)m_ParameterSendBits & (1 << index)) != 0; public override void OnStartAuthority() => diff --git a/QuantumUNET/Components/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs index 7c6c0a66b..099a81e79 100644 --- a/QuantumUNET/Components/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -298,7 +298,7 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp return result; } - public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) => + public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) => writer.Write(velocity); public static void SerializeRotation3D(QSBNetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) diff --git a/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs index 5f0e8938e..276200bad 100644 --- a/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QSBUtility.cs b/QuantumUNET/QSBUtility.cs index 57c806098..0bf047292 100644 --- a/QuantumUNET/QSBUtility.cs +++ b/QuantumUNET/QSBUtility.cs @@ -8,8 +8,8 @@ public class QSBUtility { private static readonly Dictionary _dictTokens = new Dictionary(); - public static SourceID GetSourceID() - => (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); + public static SourceID GetSourceID() => + (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) { From 4c466dbe24511dcdbf674ed0e502792b2bdc802f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 22:07:21 +0000 Subject: [PATCH 172/207] cleanup --- QuantumUNET/Messages/QSBAddPlayerMessage.cs | 12 +-- QuantumUNET/Messages/QSBErrorMessage.cs | 4 +- QuantumUNET/Messages/QSBMessageBase.cs | 8 +- QuantumUNET/Messages/QSBNetworkMessage.cs | 3 +- QuantumUNET/Messages/QSBPeerInfoMessage.cs | 80 ------------------- .../Messages/QSBRemovePlayerMessage.cs | 4 +- QuantumUNET/Messages/QSBStringMessage.cs | 8 +- QuantumUNET/QSBClientScene.cs | 14 ---- QuantumUNET/QSBNetBuffer.cs | 9 +-- QuantumUNET/QSBPeerInfoPlayer.cs | 11 --- QuantumUNET/QSBPlayerController.cs | 3 +- QuantumUNET/QSBULocalConnectionToServer.cs | 12 ++- QuantumUNET/QuantumUNET.csproj | 2 - 13 files changed, 27 insertions(+), 143 deletions(-) delete mode 100644 QuantumUNET/Messages/QSBPeerInfoMessage.cs delete mode 100644 QuantumUNET/QSBPeerInfoPlayer.cs diff --git a/QuantumUNET/Messages/QSBAddPlayerMessage.cs b/QuantumUNET/Messages/QSBAddPlayerMessage.cs index 34d65148a..369208060 100644 --- a/QuantumUNET/Messages/QSBAddPlayerMessage.cs +++ b/QuantumUNET/Messages/QSBAddPlayerMessage.cs @@ -6,6 +6,12 @@ internal class QSBAddPlayerMessage : QSBMessageBase public int msgSize; public byte[] msgData; + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(playerControllerId); + writer.WriteBytesAndSize(msgData, msgSize); + } + public override void Deserialize(QSBNetworkReader reader) { playerControllerId = reader.ReadInt16(); @@ -19,11 +25,5 @@ public override void Deserialize(QSBNetworkReader reader) msgSize = msgData.Length; } } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(playerControllerId); - writer.WriteBytesAndSize(msgData, msgSize); - } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBErrorMessage.cs b/QuantumUNET/Messages/QSBErrorMessage.cs index 67951c84e..d7952f6bc 100644 --- a/QuantumUNET/Messages/QSBErrorMessage.cs +++ b/QuantumUNET/Messages/QSBErrorMessage.cs @@ -2,10 +2,10 @@ { public class QSBErrorMessage : QSBMessageBase { - public override void Deserialize(QSBNetworkReader reader) => errorCode = reader.ReadUInt16(); + public int errorCode; public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)errorCode); - public int errorCode; + public override void Deserialize(QSBNetworkReader reader) => errorCode = reader.ReadUInt16(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBMessageBase.cs b/QuantumUNET/Messages/QSBMessageBase.cs index 241af1160..501869d7a 100644 --- a/QuantumUNET/Messages/QSBMessageBase.cs +++ b/QuantumUNET/Messages/QSBMessageBase.cs @@ -2,12 +2,8 @@ { public abstract class QSBMessageBase { - public virtual void Deserialize(QSBNetworkReader reader) - { - } + public virtual void Serialize(QSBNetworkWriter writer) { } - public virtual void Serialize(QSBNetworkWriter writer) - { - } + public virtual void Deserialize(QSBNetworkReader reader) { } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs index b9de59992..4f7ca90ca 100644 --- a/QuantumUNET/Messages/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -17,6 +17,7 @@ public class QSBNetworkMessage return result; } - public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase => msg.Deserialize(Reader); + public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase => + msg.Deserialize(Reader); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBPeerInfoMessage.cs b/QuantumUNET/Messages/QSBPeerInfoMessage.cs deleted file mode 100644 index a38a00f0a..000000000 --- a/QuantumUNET/Messages/QSBPeerInfoMessage.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System.Collections.Generic; - -namespace QuantumUNET.Messages -{ - public class QSBPeerInfoMessage : QSBMessageBase - { - public override void Deserialize(QSBNetworkReader reader) - { - connectionId = (int)reader.ReadPackedUInt32(); - address = reader.ReadString(); - port = (int)reader.ReadPackedUInt32(); - isHost = reader.ReadBoolean(); - isYou = reader.ReadBoolean(); - var num = reader.ReadPackedUInt32(); - if (num > 0U) - { - var list = new List(); - for (var num2 = 0U; num2 < num; num2 += 1U) - { - QSBPeerInfoPlayer item; - item.netId = reader.ReadNetworkId(); - item.playerControllerId = (short)reader.ReadPackedUInt32(); - list.Add(item); - } - playerIds = list.ToArray(); - } - } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32((uint)connectionId); - writer.Write(address); - writer.WritePackedUInt32((uint)port); - writer.Write(isHost); - writer.Write(isYou); - if (playerIds == null) - { - writer.WritePackedUInt32(0U); - } - else - { - writer.WritePackedUInt32((uint)playerIds.Length); - for (var i = 0; i < playerIds.Length; i++) - { - writer.Write(playerIds[i].netId); - writer.WritePackedUInt32((uint)playerIds[i].playerControllerId); - } - } - } - - public override string ToString() - { - return string.Concat(new object[] - { - "PeerInfo conn:", - connectionId, - " addr:", - address, - ":", - port, - " host:", - isHost, - " isYou:", - isYou - }); - } - - public int connectionId; - - public string address; - - public int port; - - public bool isHost; - - public bool isYou; - - public QSBPeerInfoPlayer[] playerIds; - } -} \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs index 50190b797..e36620c89 100644 --- a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs @@ -4,8 +4,8 @@ public class QSBRemovePlayerMessage : QSBMessageBase { public short PlayerControllerId; - public override void Deserialize(QSBNetworkReader reader) => PlayerControllerId = (short)reader.ReadUInt16(); - public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)PlayerControllerId); + + public override void Deserialize(QSBNetworkReader reader) => PlayerControllerId = (short)reader.ReadUInt16(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBStringMessage.cs b/QuantumUNET/Messages/QSBStringMessage.cs index 98c5ad078..547d1ec14 100644 --- a/QuantumUNET/Messages/QSBStringMessage.cs +++ b/QuantumUNET/Messages/QSBStringMessage.cs @@ -2,19 +2,15 @@ { public class QSBStringMessage : QSBMessageBase { - public QSBStringMessage() - { - } + public string value; public QSBStringMessage(string v) { value = v; } - public override void Deserialize(QSBNetworkReader reader) => value = reader.ReadString(); - public override void Serialize(QSBNetworkWriter writer) => writer.Write(value); - public string value; + public override void Deserialize(QSBNetworkReader reader) => value = reader.ReadString(); } } \ No newline at end of file diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index b9a73353e..7076b9ce8 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -8,18 +8,6 @@ namespace QuantumUNET { public class QSBClientScene { - private static bool HasMigrationPending() => reconnectId != -1; - - public static void SetReconnectId(int newReconnectId, QSBPeerInfoMessage[] peers) - { - reconnectId = newReconnectId; - s_Peers = peers; - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::SetReconnectId: " + newReconnectId); - } - } - internal static void SetNotReady() => ready = false; public static List localPlayers { get; private set; } = new List(); @@ -811,8 +799,6 @@ private static void CheckForOwner(QSBNetworkIdentity uv) public const int ReconnectIdHost = 0; - private static QSBPeerInfoMessage[] s_Peers; - private static List s_PendingOwnerIds = new List(); private struct PendingOwner diff --git a/QuantumUNET/QSBNetBuffer.cs b/QuantumUNET/QSBNetBuffer.cs index 2c6961593..2cf256222 100644 --- a/QuantumUNET/QSBNetBuffer.cs +++ b/QuantumUNET/QSBNetBuffer.cs @@ -16,7 +16,6 @@ public QSBNetBuffer(byte[] buffer) } public uint Position { get; private set; } - public int Length => m_Buffer.Length; public byte ReadByte() @@ -154,7 +153,8 @@ public void FinishMessage() m_Buffer[1] = (byte)((num >> 8) & 255); } - public void SeekZero() => Position = 0U; + public void SeekZero() => + Position = 0U; public void Replace(byte[] buffer) { @@ -165,10 +165,5 @@ public void Replace(byte[] buffer) public override string ToString() => string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, Position); private byte[] m_Buffer; - private const int k_InitialSize = 64; - - private const float k_GrowthFactor = 1.5f; - - private const int k_BufferSizeWarning = 134217728; } } \ No newline at end of file diff --git a/QuantumUNET/QSBPeerInfoPlayer.cs b/QuantumUNET/QSBPeerInfoPlayer.cs deleted file mode 100644 index 77394469a..000000000 --- a/QuantumUNET/QSBPeerInfoPlayer.cs +++ /dev/null @@ -1,11 +0,0 @@ -using UnityEngine.Networking; - -namespace QuantumUNET -{ - public struct QSBPeerInfoPlayer - { - public NetworkInstanceId netId; - - public short playerControllerId; - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBPlayerController.cs b/QuantumUNET/QSBPlayerController.cs index 745ad2a35..908fafdeb 100644 --- a/QuantumUNET/QSBPlayerController.cs +++ b/QuantumUNET/QSBPlayerController.cs @@ -9,6 +9,7 @@ public class QSBPlayerController public QSBNetworkIdentity UnetView; public GameObject Gameobject; public const int MaxPlayersPerClient = 32; + public bool IsValid => PlayerControllerId != -1; internal const short kMaxLocalPlayers = 8; @@ -23,8 +24,6 @@ internal QSBPlayerController(GameObject go, short playerControllerId) PlayerControllerId = playerControllerId; } - public bool IsValid => PlayerControllerId != -1; - public override string ToString() { return string.Format("ID={0} NetworkIdentity NetID={1} Player={2}", new object[] diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index 09511661d..f6c9bef8d 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -12,11 +12,14 @@ public QSBULocalConnectionToServer(QSBNetworkServer localServer) m_LocalServer = localServer; } - public override bool Send(short msgType, QSBMessageBase msg) => m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); + public override bool Send(short msgType, QSBMessageBase msg) => + m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); - public override bool SendUnreliable(short msgType, QSBMessageBase msg) => m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); + public override bool SendUnreliable(short msgType, QSBMessageBase msg) => + m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); - public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) => m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); + public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) => + m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); public override bool SendBytes(byte[] bytes, int numBytes, int channelId) { @@ -36,7 +39,8 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) return result; } - public override bool SendWriter(QSBNetworkWriter writer, int channelId) => m_LocalServer.InvokeBytes(this, writer.AsArray(), (short)writer.AsArray().Length, channelId); + public override bool SendWriter(QSBNetworkWriter writer, int channelId) => + m_LocalServer.InvokeBytes(this, writer.AsArray(), (short)writer.AsArray().Length, channelId); public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 034ab304d..2390b9430 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -134,8 +134,6 @@ - - From 751fb9cf6c87e84ccd7db0623885bccbee633ffa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 22:09:30 +0000 Subject: [PATCH 173/207] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d20c15ac3..696229f8f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Quantum Space Buddies - Outer Wilds Online Multiplayer Mod -Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as "QuantumUNET") for networking. +Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as QNet or QuantumUNET) for networking. **Disclamer - The mod authors (misternebula, AmazingAlek and Raicuparta) take no responsibility for any damages that are caused through opening ports on your network, or connecting to servers. Do not attempt to change your router settings without prior knowledge of what you are doing. Only share your public IP with people you trust, and don't connect to IPs that you do not know the source of. It is good practice to close ports/firewall exceptions after you have finished playing.** From 7c87649d7e162bd5b65fd953dd243dd3e6f77d91 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 14 Dec 2020 22:15:10 +0000 Subject: [PATCH 174/207] more clean --- QSB/QSB.csproj | 1 - QSB/QSBNetworkManager.cs | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 7d77e6a64..f52a43426 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -191,7 +191,6 @@ - diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 2aca29fe8..22a034f72 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -43,6 +43,7 @@ public class QSBNetworkManager : QSBNetworkManagerUNET public void Awake() { + base.Awake(); Instance = this; _lobby = gameObject.AddComponent(); From ea4e56b046f357d90f8a39f192e73e8a3a3c8f3a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 15 Dec 2020 09:30:55 +0000 Subject: [PATCH 175/207] cleanup --- QSB/Animation/AnimationSync.cs | 10 ++----- QuantumUNET/Messages/QSBReconnectMessage.cs | 30 ------------------- QuantumUNET/QSBUtility.cs | 32 --------------------- QuantumUNET/QuantumUNET.csproj | 2 -- 4 files changed, 2 insertions(+), 72 deletions(-) delete mode 100644 QuantumUNET/Messages/QSBReconnectMessage.cs delete mode 100644 QuantumUNET/QSBUtility.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 77614e787..02df29c92 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -145,15 +145,9 @@ private void InitCrouchSync() private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - public void SendCrouch(float value = 0) - { - GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - } + public void SendCrouch(float value = 0) => GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - public void HandleCrouch(float value) - { - _crouchSync.CrouchParam.Target = value; - } + public void HandleCrouch(float value) => _crouchSync.CrouchParam.Target = value; private void SuitUp() { diff --git a/QuantumUNET/Messages/QSBReconnectMessage.cs b/QuantumUNET/Messages/QSBReconnectMessage.cs deleted file mode 100644 index f43c20f24..000000000 --- a/QuantumUNET/Messages/QSBReconnectMessage.cs +++ /dev/null @@ -1,30 +0,0 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages -{ - public class QSBReconnectMessage : QSBMessageBase - { - public int oldConnectionId; - public short playerControllerId; - public NetworkInstanceId netId; - public int msgSize; - public byte[] msgData; - - public override void Deserialize(QSBNetworkReader reader) - { - oldConnectionId = (int)reader.ReadPackedUInt32(); - playerControllerId = (short)reader.ReadPackedUInt32(); - netId = reader.ReadNetworkId(); - msgData = reader.ReadBytesAndSize(); - msgSize = msgData.Length; - } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32((uint)oldConnectionId); - writer.WritePackedUInt32((uint)playerControllerId); - writer.Write(netId); - writer.WriteBytesAndSize(msgData, msgSize); - } - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBUtility.cs b/QuantumUNET/QSBUtility.cs deleted file mode 100644 index 0bf047292..000000000 --- a/QuantumUNET/QSBUtility.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Networking.Types; - -namespace QuantumUNET -{ - public class QSBUtility - { - private static readonly Dictionary _dictTokens = new Dictionary(); - - public static SourceID GetSourceID() => - (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); - - public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) - { - if (_dictTokens.ContainsKey(netId)) - { - _dictTokens.Remove(netId); - } - _dictTokens.Add(netId, accessToken); - } - - public static NetworkAccessToken GetAccessTokenForNetwork(NetworkID netId) - { - if (!_dictTokens.TryGetValue(netId, out var result)) - { - result = new NetworkAccessToken(); - } - return result; - } - } -} \ No newline at end of file diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 2390b9430..3db8592e5 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -136,12 +136,10 @@ - - From 6148bee639aa114914e4bb9280087311fb26accd Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 15 Dec 2020 09:56:03 +0000 Subject: [PATCH 176/207] more clean --- QuantumUNET/Components/QSBNetworkIdentity.cs | 23 ++-- QuantumUNET/Messages/QSBAnimationMessage.cs | 6 +- .../Messages/QSBAnimationParametersMessage.cs | 6 +- .../Messages/QSBAnimationTriggerMessage.cs | 6 +- .../Messages/QSBClientAuthorityMessage.cs | 6 +- .../Messages/QSBObjectDestroyMessage.cs | 6 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 5 +- .../Messages/QSBObjectSpawnSceneMessage.cs | 5 +- QuantumUNET/Messages/QSBOwnerMessage.cs | 6 +- QuantumUNET/QSBClientScene.cs | 26 ++-- QuantumUNET/QSBNetworkBehaviour.cs | 8 +- QuantumUNET/QSBNetworkConnection.cs | 4 +- QuantumUNET/QSBNetworkHash128.cs | 125 ++++++++++++++++++ QuantumUNET/QSBNetworkInstanceId.cs | 41 ++++++ QuantumUNET/QSBNetworkReader.cs | 8 +- QuantumUNET/QSBNetworkScene.cs | 30 ++--- QuantumUNET/QSBNetworkSceneId.cs | 36 +++++ QuantumUNET/QSBNetworkServer.cs | 16 +-- QuantumUNET/QSBNetworkWriter.cs | 14 +- QuantumUNET/QuantumUNET.csproj | 3 + 20 files changed, 285 insertions(+), 95 deletions(-) create mode 100644 QuantumUNET/QSBNetworkHash128.cs create mode 100644 QuantumUNET/QSBNetworkInstanceId.cs create mode 100644 QuantumUNET/QSBNetworkSceneId.cs diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index c6b2860f5..325b22d86 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; -using UnityEngine.Networking; namespace QuantumUNET.Components { @@ -13,10 +12,10 @@ public sealed class QSBNetworkIdentity : MonoBehaviour public bool IsClient { get; private set; } public bool IsServer => m_IsServer && QSBNetworkServer.active && m_IsServer; public bool HasAuthority { get; private set; } - public NetworkInstanceId NetId { get; private set; } - public NetworkSceneId SceneId => m_SceneId; + public QSBNetworkInstanceId NetId { get; private set; } + public QSBNetworkSceneId SceneId => m_SceneId; public QSBNetworkConnection ClientAuthorityOwner { get; private set; } - public NetworkHash128 AssetId => m_AssetId; + public QSBNetworkHash128 AssetId => m_AssetId; public bool IsLocalPlayer { get; private set; } public short PlayerControllerId { get; private set; } = -1; public QSBNetworkConnection ConnectionToServer { get; private set; } @@ -64,7 +63,7 @@ internal void AddSubIndentity(QSBNetworkIdentity identityToAdd) internal void RemoveSubIdentity(QSBNetworkIdentity identityToRemove) => SubIdentities.Remove(identityToRemove); - internal void SetDynamicAssetId(NetworkHash128 newAssetId) + internal void SetDynamicAssetId(QSBNetworkHash128 newAssetId) { if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) { @@ -121,11 +120,11 @@ public ReadOnlyCollection Observers } } - internal static NetworkInstanceId GetNextNetworkId() + internal static QSBNetworkInstanceId GetNextNetworkId() { var value = s_NextNetworkId; s_NextNetworkId += 1U; - return new NetworkInstanceId(value); + return new QSBNetworkInstanceId(value); } private void CacheBehaviours() @@ -144,7 +143,7 @@ internal static void AddNetworkId(uint id) } } - internal void SetNetworkInstanceId(NetworkInstanceId newNetId) + internal void SetNetworkInstanceId(QSBNetworkInstanceId newNetId) { NetId = newNetId; if (newNetId.Value == 0U) @@ -153,7 +152,7 @@ internal void SetNetworkInstanceId(NetworkInstanceId newNetId) } } - public void ForceSceneId(int newSceneId) => m_SceneId = new NetworkSceneId((uint)newSceneId); + public void ForceSceneId(int newSceneId) => m_SceneId = new QSBNetworkSceneId((uint)newSceneId); internal void UpdateClientServer(bool isClientFlag, bool isServerFlag) { @@ -948,7 +947,7 @@ internal void Reset() m_IsServer = false; IsClient = false; HasAuthority = false; - NetId = (NetworkInstanceId)typeof(NetworkInstanceId).GetField("Zero", System.Reflection.BindingFlags.Static).GetValue(null); + NetId = (QSBNetworkInstanceId)typeof(QSBNetworkInstanceId).GetField("Zero", System.Reflection.BindingFlags.Static).GetValue(null); IsLocalPlayer = false; ConnectionToServer = null; ConnectionToClient = null; @@ -967,10 +966,10 @@ public static void UNetStaticUpdate() } [SerializeField] - private NetworkSceneId m_SceneId; + private QSBNetworkSceneId m_SceneId; [SerializeField] - private NetworkHash128 m_AssetId; + private QSBNetworkHash128 m_AssetId; [SerializeField] private bool m_ServerOnly; diff --git a/QuantumUNET/Messages/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs index 7278d7a92..4edfcb975 100644 --- a/QuantumUNET/Messages/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -1,10 +1,8 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBAnimationMessage : QSBMessageBase { - public NetworkInstanceId netId; + public QSBNetworkInstanceId netId; public int stateHash; public float normalizedTime; public byte[] parameters; diff --git a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs index d28169e5b..6dbc666d1 100644 --- a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs @@ -1,10 +1,8 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBAnimationParametersMessage : QSBMessageBase { - public NetworkInstanceId netId; + public QSBNetworkInstanceId netId; public byte[] parameters; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs index 832dfa57c..785533792 100644 --- a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs @@ -1,10 +1,8 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBAnimationTriggerMessage : QSBMessageBase { - public NetworkInstanceId netId; + public QSBNetworkInstanceId netId; public int hash; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs index 925bc3eeb..6ea87813e 100644 --- a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs @@ -1,10 +1,8 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBClientAuthorityMessage : QSBMessageBase { - public NetworkInstanceId netId; + public QSBNetworkInstanceId netId; public bool authority; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 3f483e49f..66b7e05ee 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -1,10 +1,8 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBObjectDestroyMessage : QSBMessageBase { - public NetworkInstanceId NetId; + public QSBNetworkInstanceId NetId; public override void Deserialize(QSBNetworkReader reader) => NetId = reader.ReadNetworkId(); diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index 98f5fe6c1..f5aa0f051 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -1,12 +1,11 @@ using UnityEngine; -using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBObjectSpawnMessage : QSBMessageBase { - public NetworkInstanceId NetId; - public NetworkHash128 assetId; + public QSBNetworkInstanceId NetId; + public QSBNetworkHash128 assetId; public Vector3 Position; public byte[] Payload; public Quaternion Rotation; diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index 88cb68255..579df9654 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -1,12 +1,11 @@ using UnityEngine; -using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBObjectSpawnSceneMessage : QSBMessageBase { - public NetworkInstanceId NetId; - public NetworkSceneId SceneId; + public QSBNetworkInstanceId NetId; + public QSBNetworkSceneId SceneId; public Vector3 Position; public byte[] Payload; diff --git a/QuantumUNET/Messages/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs index 7ba819543..8fc1fdc70 100644 --- a/QuantumUNET/Messages/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -1,10 +1,8 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBOwnerMessage : QSBMessageBase { - public NetworkInstanceId NetId; + public QSBNetworkInstanceId NetId; public short PlayerControllerId; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 7076b9ce8..ace9dc447 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -18,11 +18,11 @@ public class QSBClientScene public static int reconnectId { get; private set; } = -1; - public static Dictionary Objects => s_NetworkScene.localObjects; + public static Dictionary Objects => s_NetworkScene.localObjects; - public static Dictionary Prefabs => QSBNetworkScene.guidToPrefab; + public static Dictionary Prefabs => QSBNetworkScene.guidToPrefab; - public static Dictionary SpawnableObjects { get; private set; } + public static Dictionary SpawnableObjects { get; private set; } internal static void Shutdown() { @@ -294,7 +294,7 @@ internal static void HandleClientDisconnect(QSBNetworkConnection conn) internal static void PrepareToSpawnSceneObjects() { - SpawnableObjects = new Dictionary(); + SpawnableObjects = new Dictionary(); foreach (var networkIdentity in Resources.FindObjectsOfTypeAll()) { if (!networkIdentity.gameObject.activeSelf) @@ -314,7 +314,7 @@ internal static void PrepareToSpawnSceneObjects() } } - internal static QSBNetworkIdentity SpawnSceneObject(NetworkSceneId sceneId) + internal static QSBNetworkIdentity SpawnSceneObject(QSBNetworkSceneId sceneId) { QSBNetworkIdentity result; if (SpawnableObjects.ContainsKey(sceneId)) @@ -359,7 +359,7 @@ internal static void RegisterSystemHandlers(QSBNetworkClient client, bool localC client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); } - internal static string GetStringForAssetId(NetworkHash128 assetId) + internal static string GetStringForAssetId(QSBNetworkHash128 assetId) { string result; if (QSBNetworkScene.GetPrefab(assetId, out var gameObject)) @@ -377,7 +377,7 @@ internal static string GetStringForAssetId(NetworkHash128 assetId) return result; } - public static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) => QSBNetworkScene.RegisterPrefab(prefab, newAssetId); + public static void RegisterPrefab(GameObject prefab, QSBNetworkHash128 newAssetId) => QSBNetworkScene.RegisterPrefab(prefab, newAssetId); public static void RegisterPrefab(GameObject prefab) => QSBNetworkScene.RegisterPrefab(prefab); @@ -385,19 +385,19 @@ internal static string GetStringForAssetId(NetworkHash128 assetId) public static void UnregisterPrefab(GameObject prefab) => QSBNetworkScene.UnregisterPrefab(prefab); - public static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); + public static void RegisterSpawnHandler(QSBNetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); - public static void UnregisterSpawnHandler(NetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); + public static void UnregisterSpawnHandler(QSBNetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); public static void ClearSpawners() => QSBNetworkScene.ClearSpawners(); public static void DestroyAllClientObjects() => s_NetworkScene.DestroyAllClientObjects(); - public static void SetLocalObject(NetworkInstanceId netId, GameObject obj) => s_NetworkScene.SetLocalObject(netId, obj, s_IsSpawnFinished, false); + public static void SetLocalObject(QSBNetworkInstanceId netId, GameObject obj) => s_NetworkScene.SetLocalObject(netId, obj, s_IsSpawnFinished, false); - public static GameObject FindLocalObject(NetworkInstanceId netId) => s_NetworkScene.FindLocalObject(netId); + public static GameObject FindLocalObject(QSBNetworkInstanceId netId) => s_NetworkScene.FindLocalObject(netId); - private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, byte[] payload, NetworkInstanceId netId, GameObject newGameObject) + private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, byte[] payload, QSBNetworkInstanceId netId, GameObject newGameObject) { if (!uv.gameObject.activeSelf) { @@ -803,7 +803,7 @@ private static void CheckForOwner(QSBNetworkIdentity uv) private struct PendingOwner { - public NetworkInstanceId netId; + public QSBNetworkInstanceId netId; public short playerControllerId; } diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index c243ce373..f946b4037 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -15,7 +15,7 @@ public class QSBNetworkBehaviour : MonoBehaviour public bool IsClient => MyView.IsClient; public bool IsLocalPlayer => MyView.IsLocalPlayer; public bool HasAuthority => MyView.HasAuthority; - public NetworkInstanceId NetId => MyView.NetId; + public QSBNetworkInstanceId NetId => MyView.NetId; public QSBNetworkConnection ConnectionToServer => MyView.ConnectionToServer; public QSBNetworkConnection ConnectionToClient => MyView.ConnectionToClient; public short PlayerControllerId => MyView.PlayerControllerId; @@ -404,11 +404,11 @@ internal static string GetCmdHashEventName(int cmdHash) internal static string GetCmdHashListName(int cmdHash) => GetCmdHashPrefixName(cmdHash, "InvokeSyncList"); - protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref NetworkInstanceId netIdField) + protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref QSBNetworkInstanceId netIdField) { if (!SyncVarHookGuard) { - NetworkInstanceId networkInstanceId = default; + QSBNetworkInstanceId networkInstanceId = default; if (newGameObject != null) { var component = newGameObject.GetComponent(); @@ -424,7 +424,7 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam } } } - NetworkInstanceId networkInstanceId2 = default; + QSBNetworkInstanceId networkInstanceId2 = default; if (gameObjectField != null) { networkInstanceId2 = gameObjectField.GetComponent().NetId; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index b74794ee7..16749a997 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -20,7 +20,7 @@ public QSBNetworkConnection() public List PlayerControllers { get; } = new List(); - public HashSet ClientOwnedObjects { get; private set; } + public HashSet ClientOwnedObjects { get; private set; } public bool isConnected => hostId != -1; @@ -439,7 +439,7 @@ internal void AddOwnedObject(QSBNetworkIdentity obj) { if (ClientOwnedObjects == null) { - ClientOwnedObjects = new HashSet(); + ClientOwnedObjects = new HashSet(); } ClientOwnedObjects.Add(obj.NetId); } diff --git a/QuantumUNET/QSBNetworkHash128.cs b/QuantumUNET/QSBNetworkHash128.cs new file mode 100644 index 000000000..b60370b3c --- /dev/null +++ b/QuantumUNET/QSBNetworkHash128.cs @@ -0,0 +1,125 @@ +using System; + +namespace QuantumUNET +{ + [Serializable] + public struct QSBNetworkHash128 + { + public byte i0; + public byte i1; + public byte i2; + public byte i3; + public byte i4; + public byte i5; + public byte i6; + public byte i7; + public byte i8; + public byte i9; + public byte i10; + public byte i11; + public byte i12; + public byte i13; + public byte i14; + public byte i15; + + public void Reset() + { + i0 = 0; + i1 = 0; + i2 = 0; + i3 = 0; + i4 = 0; + i5 = 0; + i6 = 0; + i7 = 0; + i8 = 0; + i9 = 0; + i10 = 0; + i11 = 0; + i12 = 0; + i13 = 0; + i14 = 0; + i15 = 0; + } + + public bool IsValid() + => (i0 | i1 | i2 | i3 | i4 | i5 | i6 | i7 | i8 | i9 | i10 | i11 | i12 | i13 | i14 | i15) != 0; + + private static int HexToNumber(char c) + { + int result; + if (c >= '0' && c <= '9') + { + result = c - '0'; + } + else if (c >= 'a' && c <= 'f') + { + result = c - 'a' + '\n'; + } + else if (c >= 'A' && c <= 'F') + { + result = c - 'A' + '\n'; + } + else + { + result = 0; + } + return result; + } + + public static QSBNetworkHash128 Parse(string text) + { + var length = text.Length; + if (length < 32) + { + var str = ""; + for (var i = 0; i < 32 - length; i++) + { + str += "0"; + } + text = str + text; + } + QSBNetworkHash128 result; + result.i0 = (byte)(HexToNumber(text[0]) * 16 + HexToNumber(text[1])); + result.i1 = (byte)(HexToNumber(text[2]) * 16 + HexToNumber(text[3])); + result.i2 = (byte)(HexToNumber(text[4]) * 16 + HexToNumber(text[5])); + result.i3 = (byte)(HexToNumber(text[6]) * 16 + HexToNumber(text[7])); + result.i4 = (byte)(HexToNumber(text[8]) * 16 + HexToNumber(text[9])); + result.i5 = (byte)(HexToNumber(text[10]) * 16 + HexToNumber(text[11])); + result.i6 = (byte)(HexToNumber(text[12]) * 16 + HexToNumber(text[13])); + result.i7 = (byte)(HexToNumber(text[14]) * 16 + HexToNumber(text[15])); + result.i8 = (byte)(HexToNumber(text[16]) * 16 + HexToNumber(text[17])); + result.i9 = (byte)(HexToNumber(text[18]) * 16 + HexToNumber(text[19])); + result.i10 = (byte)(HexToNumber(text[20]) * 16 + HexToNumber(text[21])); + result.i11 = (byte)(HexToNumber(text[22]) * 16 + HexToNumber(text[23])); + result.i12 = (byte)(HexToNumber(text[24]) * 16 + HexToNumber(text[25])); + result.i13 = (byte)(HexToNumber(text[26]) * 16 + HexToNumber(text[27])); + result.i14 = (byte)(HexToNumber(text[28]) * 16 + HexToNumber(text[29])); + result.i15 = (byte)(HexToNumber(text[30]) * 16 + HexToNumber(text[31])); + return result; + } + + public override string ToString() + { + return string.Format("{0:x2}{1:x2}{2:x2}{3:x2}{4:x2}{5:x2}{6:x2}{7:x2}{8:x2}{9:x2}{10:x2}{11:x2}{12:x2}{13:x2}{14:x2}{15:x2}", new object[] + { + i0, + i1, + i2, + i3, + i4, + i5, + i6, + i7, + i8, + i9, + i10, + i11, + i12, + i13, + i14, + i15 + }); + } + } +} diff --git a/QuantumUNET/QSBNetworkInstanceId.cs b/QuantumUNET/QSBNetworkInstanceId.cs new file mode 100644 index 000000000..1e1654934 --- /dev/null +++ b/QuantumUNET/QSBNetworkInstanceId.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; + +namespace QuantumUNET +{ + [Serializable] + public struct QSBNetworkInstanceId + { + public uint Value => m_Value; + + [SerializeField] + private readonly uint m_Value; + + public QSBNetworkInstanceId(uint value) + { + m_Value = value; + } + + public bool IsEmpty() + => m_Value == 0U; + + public override int GetHashCode() + => (int)m_Value; + + public override bool Equals(object obj) + => obj is QSBNetworkInstanceId id && this == id; + + public static bool operator ==(QSBNetworkInstanceId c1, QSBNetworkInstanceId c2) + => c1.m_Value == c2.m_Value; + + public static bool operator !=(QSBNetworkInstanceId c1, QSBNetworkInstanceId c2) + => c1.m_Value != c2.m_Value; + + public override string ToString() + => m_Value.ToString(); + + public static QSBNetworkInstanceId Invalid = new QSBNetworkInstanceId(uint.MaxValue); + + internal static QSBNetworkInstanceId Zero = new QSBNetworkInstanceId(0U); + } +} diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs index afdb40e38..27f4a67c9 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -162,9 +162,9 @@ public ulong ReadPackedUInt64() return result; } - public NetworkInstanceId ReadNetworkId() => new NetworkInstanceId(ReadPackedUInt32()); + public QSBNetworkInstanceId ReadNetworkId() => new QSBNetworkInstanceId(ReadPackedUInt32()); - public NetworkSceneId ReadSceneId() => new NetworkSceneId(ReadPackedUInt32()); + public QSBNetworkSceneId ReadSceneId() => new QSBNetworkSceneId(ReadPackedUInt32()); public byte ReadByte() => m_buf.ReadByte(); @@ -363,9 +363,9 @@ public Matrix4x4 ReadMatrix4x4() }; } - public NetworkHash128 ReadNetworkHash128() + public QSBNetworkHash128 ReadNetworkHash128() { - NetworkHash128 result; + QSBNetworkHash128 result; result.i0 = ReadByte(); result.i1 = ReadByte(); result.i2 = ReadByte(); diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index 782a84361..e4b514998 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -7,13 +7,13 @@ namespace QuantumUNET { internal class QSBNetworkScene { - internal static Dictionary guidToPrefab { get; } = new Dictionary(); + internal static Dictionary guidToPrefab { get; } = new Dictionary(); - internal static Dictionary spawnHandlers { get; } = new Dictionary(); + internal static Dictionary spawnHandlers { get; } = new Dictionary(); - internal static Dictionary unspawnHandlers { get; } = new Dictionary(); + internal static Dictionary unspawnHandlers { get; } = new Dictionary(); - internal Dictionary localObjects { get; } = new Dictionary(); + internal Dictionary localObjects { get; } = new Dictionary(); internal void Shutdown() { @@ -21,7 +21,7 @@ internal void Shutdown() ClearSpawners(); } - internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) + internal void SetLocalObject(QSBNetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) { if (obj == null) { @@ -43,7 +43,7 @@ internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isCli } } - internal GameObject FindLocalObject(NetworkInstanceId netId) + internal GameObject FindLocalObject(QSBNetworkInstanceId netId) { if (localObjects.ContainsKey(netId)) { @@ -56,7 +56,7 @@ internal GameObject FindLocalObject(NetworkInstanceId netId) return null; } - internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity uv) + internal bool GetNetworkIdentity(QSBNetworkInstanceId netId, out QSBNetworkIdentity uv) { bool result; if (localObjects.ContainsKey(netId) && localObjects[netId] != null) @@ -72,9 +72,9 @@ internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity return result; } - internal bool RemoveLocalObject(NetworkInstanceId netId) => localObjects.Remove(netId); + internal bool RemoveLocalObject(QSBNetworkInstanceId netId) => localObjects.Remove(netId); - internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) + internal bool RemoveLocalObjectAndDestroy(QSBNetworkInstanceId netId) { bool result; if (localObjects.ContainsKey(netId)) @@ -92,7 +92,7 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) internal void ClearLocalObjects() => localObjects.Clear(); - internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) + internal static void RegisterPrefab(GameObject prefab, QSBNetworkHash128 newAssetId) { var component = prefab.GetComponent(); if (component) @@ -127,7 +127,7 @@ internal static void RegisterPrefab(GameObject prefab) } } - internal static bool GetPrefab(NetworkHash128 assetId, out GameObject prefab) + internal static bool GetPrefab(QSBNetworkHash128 assetId, out GameObject prefab) { bool result; if (!assetId.IsValid()) @@ -155,13 +155,13 @@ internal static void ClearSpawners() unspawnHandlers.Clear(); } - public static void UnregisterSpawnHandler(NetworkHash128 assetId) + public static void UnregisterSpawnHandler(QSBNetworkHash128 assetId) { spawnHandlers.Remove(assetId); unspawnHandlers.Remove(assetId); } - internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterSpawnHandler(QSBNetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { if (spawnHandler == null || unspawnHandler == null) { @@ -216,7 +216,7 @@ internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandle } } - internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate handler) + internal static bool GetSpawnHandler(QSBNetworkHash128 assetId, out SpawnDelegate handler) { bool result; if (spawnHandlers.ContainsKey(assetId)) @@ -232,7 +232,7 @@ internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate h return result; } - internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj) + internal static bool InvokeUnSpawnHandler(QSBNetworkHash128 assetId, GameObject obj) { bool result; if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null) diff --git a/QuantumUNET/QSBNetworkSceneId.cs b/QuantumUNET/QSBNetworkSceneId.cs new file mode 100644 index 000000000..c9872960c --- /dev/null +++ b/QuantumUNET/QSBNetworkSceneId.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; + +namespace QuantumUNET +{ + [Serializable] + public struct QSBNetworkSceneId + { + public uint Value => m_Value; + + [SerializeField] + private uint m_Value; + + public QSBNetworkSceneId(uint value) + { + m_Value = value; + } + + public bool IsEmpty() + => m_Value == 0U; + + public override int GetHashCode() + => (int)m_Value; + + public override bool Equals(object obj) + => obj is QSBNetworkSceneId id && this == id; + + public static bool operator ==(QSBNetworkSceneId c1, QSBNetworkSceneId c2) + => c1.m_Value == c2.m_Value; + + public static bool operator !=(QSBNetworkSceneId c1, QSBNetworkSceneId c2) + => c1.m_Value != c2.m_Value; + + public override string ToString() => m_Value.ToString(); + } +} diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 702a465c0..5843883cb 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -15,7 +15,7 @@ public class QSBNetworkServer private QSBNetworkServer() { NetworkTransport.Init(); - m_RemoveList = new HashSet(); + m_RemoveList = new HashSet(); m_ExternalConnections = new HashSet(); m_NetworkScene = new QSBNetworkScene(); m_SimpleServerSimple = new ServerSimpleWrapper(this); @@ -33,7 +33,7 @@ private QSBNetworkServer() public static HostTopology hostTopology => instance.m_SimpleServerSimple.hostTopology; - public static Dictionary objects => instance.m_NetworkScene.localObjects; + public static Dictionary objects => instance.m_NetworkScene.localObjects; public static bool dontListen { get; set; } @@ -215,7 +215,7 @@ internal void RemoveLocalClient(QSBNetworkConnection localClientConnection) m_SimpleServerSimple.RemoveConnectionAtIndex(0); } - internal void SetLocalObjectOnServer(NetworkInstanceId netId, GameObject obj) + internal void SetLocalObjectOnServer(QSBNetworkInstanceId netId, GameObject obj) { Debug.Log(string.Concat(new object[] { @@ -1277,7 +1277,7 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) { if (conn.ClientOwnedObjects != null) { - var hashSet = new HashSet(conn.ClientOwnedObjects); + var hashSet = new HashSet(conn.ClientOwnedObjects); foreach (var netId in hashSet) { var gameObject = FindLocalObject(netId); @@ -1429,14 +1429,14 @@ public static bool SpawnWithClientAuthority(GameObject obj, QSBNetworkConnection return result; } - public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, QSBNetworkConnection conn) + public static bool SpawnWithClientAuthority(GameObject obj, QSBNetworkHash128 assetId, QSBNetworkConnection conn) { Spawn(obj, assetId); var component = obj.GetComponent(); return !(component == null) && component.IsServer && component.AssignClientAuthority(conn); } - public static void Spawn(GameObject obj, NetworkHash128 assetId) + public static void Spawn(GameObject obj, QSBNetworkHash128 assetId) { if (VerifyCanSpawn(obj)) { @@ -1498,7 +1498,7 @@ internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgT return result; } - public static GameObject FindLocalObject(NetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); + public static GameObject FindLocalObject(QSBNetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); private static bool ValidateSceneObject(QSBNetworkIdentity netId) => netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); @@ -1583,7 +1583,7 @@ private static void SendCrc(QSBNetworkConnection targetConnection) private float m_MaxDelay = 0.1f; - private HashSet m_RemoveList; + private HashSet m_RemoveList; private int m_RemoveListCount; diff --git a/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/QSBNetworkWriter.cs index 0256d3a8a..90582ea65 100644 --- a/QuantumUNET/QSBNetworkWriter.cs +++ b/QuantumUNET/QSBNetworkWriter.cs @@ -152,9 +152,9 @@ public void WritePackedUInt64(ulong value) } } - public void Write(NetworkInstanceId value) => WritePackedUInt32(value.Value); + public void Write(QSBNetworkInstanceId value) => WritePackedUInt32(value.Value); - public void Write(NetworkSceneId value) => WritePackedUInt32(value.Value); + public void Write(QSBNetworkSceneId value) => WritePackedUInt32(value.Value); public void Write(char value) => m_Buffer.WriteByte((byte)value); @@ -373,7 +373,7 @@ public void Write(Matrix4x4 value) Write(value.m33); } - public void Write(NetworkHash128 value) + public void Write(QSBNetworkHash128 value) { Write(value.i0); Write(value.i1); @@ -393,7 +393,7 @@ public void Write(NetworkHash128 value) Write(value.i15); } - public void Write(NetworkIdentity value) + public void Write(QSBNetworkIdentity value) { if (value == null) { @@ -401,7 +401,7 @@ public void Write(NetworkIdentity value) } else { - Write(value.netId); + Write(value.NetId); } } @@ -413,10 +413,10 @@ public void Write(Transform value) } else { - var component = value.gameObject.GetComponent(); + var component = value.gameObject.GetComponent(); if (component != null) { - Write(component.netId); + Write(component.NetId); } else { diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 3db8592e5..51d050ee7 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -121,9 +121,12 @@ + + + From a657c5ee6c37a26aaca32f6865403c02b08ccd1c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 15 Dec 2020 16:20:28 +0000 Subject: [PATCH 177/207] cleanup --- .../Components/QSBNetworkManagerUNET.cs | 85 +------------------ 1 file changed, 1 insertion(+), 84 deletions(-) diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index ebf6da9d3..2067a5479 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -31,7 +31,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour public float packetLossPercentage { get; set; } public float maxDelay { get; set; } = 0.01f; public GameObject playerPrefab { get; set; } - public PlayerSpawnMethod playerSpawnMethod { get; set; } public List spawnPrefabs { get; } = new List(); public QSBNetworkClient client; public int maxConnections { get; set; } = 4; @@ -41,8 +40,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour private GlobalConfig m_GlobalConfig; private int m_MaxBufferedPackets = 16; private bool m_AllowFragmentation = true; - private static List s_StartPositions = new List(); - private static int s_StartPositionIndex; private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); @@ -50,8 +47,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour private static QSBNetworkConnection s_ClientReadyConnection; private static string s_Address; - public List startPositions => s_StartPositions; - public bool customConfig { get; set; } public ConnectionConfig connectionConfig @@ -446,8 +441,6 @@ public virtual void ServerChangeScene(string newSceneName) s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); var msg = new QSBStringMessage(networkSceneName); QSBNetworkServer.SendToAll(39, msg); - s_StartPositionIndex = 0; - s_StartPositions.Clear(); } } @@ -531,44 +524,12 @@ internal static void UpdateScene() } } - public static void RegisterStartPosition(Transform start) - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "RegisterStartPosition: (", - start.gameObject.name, - ") ", - start.position - })); - } - s_StartPositions.Add(start); - } - - public static void UnRegisterStartPosition(Transform start) - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "UnRegisterStartPosition: (", - start.gameObject.name, - ") ", - start.position - })); - } - s_StartPositions.Remove(start); - } - public bool IsClientConnected() => client != null && client.isConnected; public static void Shutdown() { if (!(singleton == null)) { - s_StartPositions.Clear(); - s_StartPositionIndex = 0; s_ClientReadyConnection = null; singleton.StopHost(); singleton = null; @@ -784,55 +745,11 @@ private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerCo } else { - var startPosition = GetStartPosition(); - GameObject player; - if (startPosition != null) - { - player = Instantiate(playerPrefab, startPosition.position, startPosition.rotation); - } - else - { - player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); - } + var player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); QSBNetworkServer.AddPlayerForConnection(conn, player, playerControllerId); } } - public Transform GetStartPosition() - { - if (s_StartPositions.Count > 0) - { - for (var i = s_StartPositions.Count - 1; i >= 0; i--) - { - if (s_StartPositions[i] == null) - { - s_StartPositions.RemoveAt(i); - } - } - } - Transform result; - if (playerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0) - { - var index = UnityEngine.Random.Range(0, s_StartPositions.Count); - result = s_StartPositions[index]; - } - else if (playerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0) - { - if (s_StartPositionIndex >= s_StartPositions.Count) - { - s_StartPositionIndex = 0; - } - var transform = s_StartPositions[s_StartPositionIndex]; - s_StartPositionIndex++; - result = transform; - } - else - { - result = null; - } - return result; - } - public virtual void OnServerRemovePlayer(QSBNetworkConnection conn, QSBPlayerController player) { if (player.Gameobject != null) From 9f4d88690306b4b330d265a436fde8d44e4733e1 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 15 Dec 2020 16:37:52 +0000 Subject: [PATCH 178/207] more --- .../Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- .../Events/DialogueConditionMessage.cs | 2 +- QSB/Messaging/EnumMessage.cs | 2 +- QSB/Messaging/FloatMessage.cs | 2 +- QSB/Messaging/PlayerMessage.cs | 4 +- QSB/Messaging/ToggleMessage.cs | 2 +- QSB/OrbSync/Events/OrbSlotMessage.cs | 2 +- QSB/Player/Events/PlayerJoinMessage.cs | 2 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/TimeSync/Events/ServerTimeMessage.cs | 2 +- .../Events/BoolWorldObjectMessage.cs | 2 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- QuantumUNET/Components/QSBNetworkAnimator.cs | 1 + QuantumUNET/Components/QSBNetworkIdentity.cs | 1 + .../Components/QSBNetworkManagerUNET.cs | 135 ++++-------------- QuantumUNET/Components/QSBNetworkTransform.cs | 20 +-- QuantumUNET/Messages/QSBAddPlayerMessage.cs | 4 +- QuantumUNET/Messages/QSBAnimationMessage.cs | 4 +- .../Messages/QSBAnimationParametersMessage.cs | 4 +- .../Messages/QSBAnimationTriggerMessage.cs | 4 +- QuantumUNET/Messages/QSBCRCMessage.cs | 4 +- .../Messages/QSBClientAuthorityMessage.cs | 4 +- QuantumUNET/Messages/QSBEmptyMessage.cs | 4 +- QuantumUNET/Messages/QSBErrorMessage.cs | 4 +- QuantumUNET/Messages/QSBMessageBase.cs | 4 +- QuantumUNET/Messages/QSBNetworkMessage.cs | 3 +- .../Messages/QSBObjectDestroyMessage.cs | 4 +- .../Messages/QSBObjectSpawnFinishedMessage.cs | 4 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 3 +- .../Messages/QSBObjectSpawnSceneMessage.cs | 3 +- QuantumUNET/Messages/QSBOwnerMessage.cs | 4 +- .../Messages/QSBRemovePlayerMessage.cs | 4 +- QuantumUNET/Messages/QSBSpawnDelegate.cs | 6 + QuantumUNET/Messages/QSBStringMessage.cs | 4 +- QuantumUNET/QSBClientScene.cs | 17 +-- QuantumUNET/QSBLocalClient.cs | 1 + QuantumUNET/QSBNetworkBehaviour.cs | 1 + QuantumUNET/QSBNetworkCRC.cs | 55 +++---- QuantumUNET/QSBNetworkClient.cs | 1 + QuantumUNET/QSBNetworkConnection.cs | 1 + QuantumUNET/QSBNetworkScene.cs | 8 +- QuantumUNET/QSBNetworkServer.cs | 1 + QuantumUNET/QSBNetworkServerSimple.cs | 1 + QuantumUNET/QSBULocalConnectionToClient.cs | 1 + QuantumUNET/QSBULocalConnectionToServer.cs | 1 + QuantumUNET/QuantumUNET.csproj | 11 +- .../{ => Transport}/QSBChannelBuffer.cs | 17 +-- .../{ => Transport}/QSBChannelPacket.cs | 2 +- QuantumUNET/{ => Transport}/QSBNetBuffer.cs | 2 +- .../{ => Transport}/QSBNetworkReader.cs | 2 +- .../{ => Transport}/QSBNetworkWriter.cs | 2 +- 52 files changed, 152 insertions(+), 228 deletions(-) create mode 100644 QuantumUNET/Messages/QSBSpawnDelegate.cs rename QuantumUNET/{ => Transport}/QSBChannelBuffer.cs (95%) rename QuantumUNET/{ => Transport}/QSBChannelPacket.cs (97%) rename QuantumUNET/{ => Transport}/QSBNetBuffer.cs (99%) rename QuantumUNET/{ => Transport}/QSBNetworkReader.cs (99%) rename QuantumUNET/{ => Transport}/QSBNetworkWriter.cs (99%) diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 206072c0c..9a5c85e4c 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.ConversationSync.Events { diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 75db950da..c836868bf 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.ConversationSync.Events { diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs index 3d4252e9a..3e4249674 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.DialogueConditionSync.Events { diff --git a/QSB/Messaging/EnumMessage.cs b/QSB/Messaging/EnumMessage.cs index 0624f8363..4886c66bc 100644 --- a/QSB/Messaging/EnumMessage.cs +++ b/QSB/Messaging/EnumMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/Messaging/FloatMessage.cs b/QSB/Messaging/FloatMessage.cs index 832c6a0cd..5d1685f76 100644 --- a/QSB/Messaging/FloatMessage.cs +++ b/QSB/Messaging/FloatMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/Messaging/PlayerMessage.cs b/QSB/Messaging/PlayerMessage.cs index 9fb002381..e5a2b1c5d 100644 --- a/QSB/Messaging/PlayerMessage.cs +++ b/QSB/Messaging/PlayerMessage.cs @@ -1,5 +1,5 @@ -using QuantumUNET; -using QuantumUNET.Messages; +using QuantumUNET.Messages; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/Messaging/ToggleMessage.cs b/QSB/Messaging/ToggleMessage.cs index 0956b3b25..192990799 100644 --- a/QSB/Messaging/ToggleMessage.cs +++ b/QSB/Messaging/ToggleMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs index c25da215c..553d6dc8b 100644 --- a/QSB/OrbSync/Events/OrbSlotMessage.cs +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.OrbSync.Events { diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 0e6954242..51f86ccea 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Player.Events { diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 7d2d341f1..7317da16d 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Player.Events { diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 407d2bfc0..1979069a9 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.TimeSync.Events { diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 99f820cfe..a5456a029 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.WorldSync.Events { diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 12ec48f85..f6f47fdf9 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.WorldSync.Events { diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index 81cd6fccc..e4865c053 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using UnityEngine; namespace QuantumUNET.Components diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 325b22d86..8a42c841b 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index 2067a5479..c0ecca70f 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -176,26 +176,17 @@ private bool StartServer(ConnectionConfig config, int maxConnections) { if (!QSBNetworkServer.Listen(serverBindAddress, networkPort)) { - if (LogFilter.logError) - { - Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); - } + Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); return false; } } else if (!QSBNetworkServer.Listen(networkPort)) { - if (LogFilter.logError) - { - Debug.LogError("StartServer listen failed."); - } + Debug.LogError("StartServer listen failed."); return false; } RegisterServerMessages(); - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StartServer port:" + networkPort); - } + Debug.Log("NetworkManager StartServer port:" + networkPort); isNetworkActive = true; var name = SceneManager.GetSceneAt(0).name; if (!string.IsNullOrEmpty(onlineScene) && onlineScene != name && onlineScene != offlineScene) @@ -363,10 +354,7 @@ public virtual QSBNetworkClient StartHost() private QSBNetworkClient ConnectLocalClient() { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StartHost port:" + networkPort); - } + Debug.Log("NetworkManager StartHost port:" + networkPort); networkAddress = "localhost"; client = QSBClientScene.ConnectLocalServer(); RegisterClientMessages(client); @@ -385,10 +373,7 @@ public void StopServer() if (QSBNetworkServer.active) { OnStopServer(); - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StopServer"); - } + Debug.Log("NetworkManager StopServer"); isNetworkActive = false; QSBNetworkServer.Shutdown(); if (!string.IsNullOrEmpty(offlineScene)) @@ -402,10 +387,7 @@ public void StopServer() public void StopClient() { OnStopClient(); - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StopClient"); - } + Debug.Log("NetworkManager StopClient"); isNetworkActive = false; if (client != null) { @@ -425,17 +407,11 @@ public virtual void ServerChangeScene(string newSceneName) { if (string.IsNullOrEmpty(newSceneName)) { - if (LogFilter.logError) - { - Debug.LogError("ServerChangeScene empty scene name"); - } + Debug.LogError("ServerChangeScene empty scene name"); } else { - if (LogFilter.logDebug) - { - Debug.Log("ServerChangeScene " + newSceneName); - } + Debug.Log("ServerChangeScene " + newSceneName); QSBNetworkServer.SetAllClientsNotReady(); networkSceneName = newSceneName; s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); @@ -456,17 +432,11 @@ internal void ClientChangeScene(string newSceneName, bool forceReload) { if (string.IsNullOrEmpty(newSceneName)) { - if (LogFilter.logError) - { - Debug.LogError("ClientChangeScene empty scene name"); - } + Debug.LogError("ClientChangeScene empty scene name"); } else { - if (LogFilter.logDebug) - { - Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); - } + Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); if (newSceneName == networkSceneName) { if (!forceReload) @@ -538,10 +508,7 @@ public static void Shutdown() internal void OnServerConnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerConnectInternal"); - } + Debug.Log("NetworkManager:OnServerConnectInternal"); netMsg.Connection.SetMaxDelay(maxDelay); if (m_MaxBufferedPackets != 512) { @@ -567,28 +534,19 @@ internal void OnServerConnectInternal(QSBNetworkMessage netMsg) internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerDisconnectInternal"); - } + Debug.Log("NetworkManager:OnServerDisconnectInternal"); OnServerDisconnect(netMsg.Connection); } internal void OnServerReadyMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerReadyMessageInternal"); - } + Debug.Log("NetworkManager:OnServerReadyMessageInternal"); OnServerReady(netMsg.Connection); } internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); - } + Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); netMsg.ReadMessage(s_AddPlayerMessage); if (s_AddPlayerMessage.msgSize != 0) { @@ -603,10 +561,7 @@ internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); - } + Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); netMsg.ReadMessage(s_RemovePlayerMessage); netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var player); OnServerRemovePlayer(netMsg.Connection, player); @@ -615,20 +570,14 @@ internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) internal void OnServerErrorInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerErrorInternal"); - } + Debug.Log("NetworkManager:OnServerErrorInternal"); netMsg.ReadMessage(s_ErrorMessage); OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientConnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientConnectInternal"); - } + Debug.Log("NetworkManager:OnClientConnectInternal"); netMsg.Connection.SetMaxDelay(maxDelay); var name = SceneManager.GetSceneAt(0).name; if (string.IsNullOrEmpty(onlineScene) || onlineScene == offlineScene || name == onlineScene) @@ -644,10 +593,7 @@ internal void OnClientConnectInternal(QSBNetworkMessage netMsg) internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientDisconnectInternal"); - } + Debug.Log("NetworkManager:OnClientDisconnectInternal"); if (!string.IsNullOrEmpty(offlineScene)) { ClientChangeScene(offlineScene, false); @@ -657,30 +603,21 @@ internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) internal void OnClientNotReadyMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); - } + Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); QSBClientScene.SetNotReady(); OnClientNotReady(netMsg.Connection); } internal void OnClientErrorInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientErrorInternal"); - } + Debug.Log("NetworkManager:OnClientErrorInternal"); netMsg.ReadMessage(s_ErrorMessage); OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientSceneInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientSceneInternal"); - } + Debug.Log("NetworkManager:OnClientSceneInternal"); var newSceneName = netMsg.Reader.ReadString(); if (IsClientConnected() && !QSBNetworkServer.active) { @@ -697,10 +634,7 @@ public virtual void OnServerDisconnect(QSBNetworkConnection conn) QSBNetworkServer.DestroyPlayersForConnection(conn); if (conn.LastError != NetworkError.Ok) { - if (LogFilter.logError) - { - Debug.LogError("ServerDisconnected due to error: " + conn.LastError); - } + Debug.LogError("ServerDisconnected due to error: " + conn.LastError); } } @@ -708,10 +642,7 @@ public virtual void OnServerReady(QSBNetworkConnection conn) { if (conn.PlayerControllers.Count == 0) { - if (LogFilter.logDebug) - { - Debug.Log("Ready with no player object"); - } + Debug.Log("Ready with no player object"); } QSBNetworkServer.SetClientReady(conn); } @@ -724,24 +655,15 @@ private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerCo { if (playerPrefab == null) { - if (LogFilter.logError) - { - ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); - } + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); } else if (playerPrefab.GetComponent() == null) { - if (LogFilter.logError) - { - ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); - } + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); } else if (playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[playerControllerId].IsValid && conn.PlayerControllers[playerControllerId].Gameobject != null) { - if (LogFilter.logError) - { - ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); - } + ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); } else { @@ -783,10 +705,7 @@ public virtual void OnClientDisconnect(QSBNetworkConnection conn) StopClient(); if (conn.LastError != NetworkError.Ok) { - if (LogFilter.logError) - { - Debug.LogError("ClientDisconnected due to error: " + conn.LastError); - } + Debug.LogError("ClientDisconnected due to error: " + conn.LastError); } } diff --git a/QuantumUNET/Components/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs index 099a81e79..7c9b7aac4 100644 --- a/QuantumUNET/Components/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Messages; +using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -8,33 +9,19 @@ namespace QuantumUNET.Components public class QSBNetworkTransform : QSBNetworkBehaviour { public float SendInterval { get; set; } = 0.1f; - public AxisSyncMode SyncRotationAxis { get; set; } = AxisSyncMode.AxisXYZ; - public CompressionSyncMode RotationSyncCompression { get; set; } = CompressionSyncMode.None; - public bool SyncSpin { get; set; } - public float MovementTheshold { get; set; } = 0.001f; - public float velocityThreshold { get; set; } = 0.0001f; - public float SnapThreshold { get; set; } = 5f; - public float InterpolateRotation { get; set; } = 1f; - public float InterpolateMovement { get; set; } = 1f; - public ClientMoveCallback3D clientMoveCallback3D { get; set; } - public float LastSyncTime { get; private set; } - public Vector3 TargetSyncPosition => m_TargetSyncPosition; - public Vector3 targetSyncVelocity => m_TargetSyncVelocity; - public Quaternion targetSyncRotation3D => m_TargetSyncRotation3D; - public bool Grounded { get; set; } = true; public void Awake() @@ -241,10 +228,7 @@ public static void HandleTransform(QSBNetworkMessage netMsg) component.UnserializeModeTransform(netMsg.Reader, false); component.LastSyncTime = Time.time; } - else if (LogFilter.logWarn) - { - ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); - } + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); } } diff --git a/QuantumUNET/Messages/QSBAddPlayerMessage.cs b/QuantumUNET/Messages/QSBAddPlayerMessage.cs index 369208060..48a4c9c26 100644 --- a/QuantumUNET/Messages/QSBAddPlayerMessage.cs +++ b/QuantumUNET/Messages/QSBAddPlayerMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBAddPlayerMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs index 4edfcb975..16f7bc9f4 100644 --- a/QuantumUNET/Messages/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBAnimationMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs index 6dbc666d1..c8013c38c 100644 --- a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBAnimationParametersMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs index 785533792..d6c7d89e0 100644 --- a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBAnimationTriggerMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBCRCMessage.cs b/QuantumUNET/Messages/QSBCRCMessage.cs index df45dd7aa..b08480858 100644 --- a/QuantumUNET/Messages/QSBCRCMessage.cs +++ b/QuantumUNET/Messages/QSBCRCMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBCRCMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs index 6ea87813e..11e9fe466 100644 --- a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBClientAuthorityMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBEmptyMessage.cs b/QuantumUNET/Messages/QSBEmptyMessage.cs index 27dbc7856..16f82deba 100644 --- a/QuantumUNET/Messages/QSBEmptyMessage.cs +++ b/QuantumUNET/Messages/QSBEmptyMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBEmptyMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBErrorMessage.cs b/QuantumUNET/Messages/QSBErrorMessage.cs index d7952f6bc..97d7ecafc 100644 --- a/QuantumUNET/Messages/QSBErrorMessage.cs +++ b/QuantumUNET/Messages/QSBErrorMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBErrorMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBMessageBase.cs b/QuantumUNET/Messages/QSBMessageBase.cs index 501869d7a..969dd7324 100644 --- a/QuantumUNET/Messages/QSBMessageBase.cs +++ b/QuantumUNET/Messages/QSBMessageBase.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public abstract class QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs index 4f7ca90ca..a1d714ac1 100644 --- a/QuantumUNET/Messages/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -1,4 +1,5 @@ -using System; +using QuantumUNET.Transport; +using System; namespace QuantumUNET.Messages { diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 66b7e05ee..9a19c4f7f 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBObjectDestroyMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs index ebb68d39a..0ec53d1e3 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index f5aa0f051..ea4f61c42 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QuantumUNET.Transport; +using UnityEngine; namespace QuantumUNET.Messages { diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index 579df9654..e1846f4aa 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using QuantumUNET.Transport; +using UnityEngine; namespace QuantumUNET.Messages { diff --git a/QuantumUNET/Messages/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs index 8fc1fdc70..89ce81c6c 100644 --- a/QuantumUNET/Messages/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBOwnerMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs index e36620c89..7bebaef33 100644 --- a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBRemovePlayerMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBSpawnDelegate.cs b/QuantumUNET/Messages/QSBSpawnDelegate.cs new file mode 100644 index 000000000..bd254952d --- /dev/null +++ b/QuantumUNET/Messages/QSBSpawnDelegate.cs @@ -0,0 +1,6 @@ +using UnityEngine; + +namespace QuantumUNET +{ + public delegate GameObject QSBSpawnDelegate(Vector3 position, QSBNetworkHash128 assetId); +} diff --git a/QuantumUNET/Messages/QSBStringMessage.cs b/QuantumUNET/Messages/QSBStringMessage.cs index 547d1ec14..7e52a4e9d 100644 --- a/QuantumUNET/Messages/QSBStringMessage.cs +++ b/QuantumUNET/Messages/QSBStringMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBStringMessage : QSBMessageBase { diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index ace9dc447..bcc19a15e 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,5 +1,6 @@ using QuantumUNET.Components; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; @@ -102,24 +103,18 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl bool result; if (playerControllerId < 0) { - if (LogFilter.logError) - { - Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); - } + Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); result = false; } else if (playerControllerId > 32) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "ClientScene::AddPlayer: playerControllerId of ", playerControllerId, " is too high, max is ", 32 - })); - } + })); result = false; } else @@ -381,11 +376,11 @@ internal static string GetStringForAssetId(QSBNetworkHash128 assetId) public static void RegisterPrefab(GameObject prefab) => QSBNetworkScene.RegisterPrefab(prefab); - public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); + public static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); public static void UnregisterPrefab(GameObject prefab) => QSBNetworkScene.UnregisterPrefab(prefab); - public static void RegisterSpawnHandler(QSBNetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); + public static void RegisterSpawnHandler(QSBNetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); public static void UnregisterSpawnHandler(QSBNetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); diff --git a/QuantumUNET/QSBLocalClient.cs b/QuantumUNET/QSBLocalClient.cs index 98455474d..42142c059 100644 --- a/QuantumUNET/QSBLocalClient.cs +++ b/QuantumUNET/QSBLocalClient.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using System.Collections.Generic; using UnityEngine; diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index f946b4037..b7f0992d4 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Components; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Net.Sockets; diff --git a/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs index 276200bad..cb8ec27b5 100644 --- a/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Reflection; using UnityEngine; -using UnityEngine.Networking; namespace QuantumUNET { @@ -58,10 +57,7 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel bool result; if (scripts.Count != remoteScripts.Length) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); - } + Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); Dump(remoteScripts); result = false; } @@ -69,49 +65,40 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel { foreach (var crcmessageEntry in remoteScripts) { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "Script: ", - crcmessageEntry.name, - " Channel: ", - crcmessageEntry.channel - })); - } + "Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); if (scripts.ContainsKey(crcmessageEntry.name)) { var num = scripts[crcmessageEntry.name]; if (num != crcmessageEntry.channel) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { - "HLAPI CRC Channel Mismatch. Script: ", - crcmessageEntry.name, - " LocalChannel: ", - num, - " RemoteChannel: ", - crcmessageEntry.channel - })); - } + "HLAPI CRC Channel Mismatch. Script: ", + crcmessageEntry.name, + " LocalChannel: ", + num, + " RemoteChannel: ", + crcmessageEntry.channel + })); Dump(remoteScripts); return false; } } if (crcmessageEntry.channel >= numChannels) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { - "HLAPI CRC channel out of range! Script: ", - crcmessageEntry.name, - " Channel: ", - crcmessageEntry.channel - })); - } + "HLAPI CRC channel out of range! Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); Dump(remoteScripts); return false; } diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 8b4ee136b..d93577248 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Net; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 16749a997..85f4e4ae7 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -1,6 +1,7 @@ using OWML.Logging; using QuantumUNET.Components; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Text; diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index e4b514998..337bed75f 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -9,7 +9,7 @@ internal class QSBNetworkScene { internal static Dictionary guidToPrefab { get; } = new Dictionary(); - internal static Dictionary spawnHandlers { get; } = new Dictionary(); + internal static Dictionary spawnHandlers { get; } = new Dictionary(); internal static Dictionary unspawnHandlers { get; } = new Dictionary(); @@ -161,7 +161,7 @@ public static void UnregisterSpawnHandler(QSBNetworkHash128 assetId) unspawnHandlers.Remove(assetId); } - internal static void RegisterSpawnHandler(QSBNetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterSpawnHandler(QSBNetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { if (spawnHandler == null || unspawnHandler == null) { @@ -194,7 +194,7 @@ internal static void UnregisterPrefab(GameObject prefab) } } - internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { var component = prefab.GetComponent(); if (component == null) @@ -216,7 +216,7 @@ internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandle } } - internal static bool GetSpawnHandler(QSBNetworkHash128 assetId, out SpawnDelegate handler) + internal static bool GetSpawnHandler(QSBNetworkHash128 assetId, out QSBSpawnDelegate handler) { bool result; if (spawnHandlers.ContainsKey(assetId)) diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 5843883cb..cb0dff883 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1,6 +1,7 @@ using OWML.Logging; using QuantumUNET.Components; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index 7a6507238..451aceea8 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/QuantumUNET/QSBULocalConnectionToClient.cs b/QuantumUNET/QSBULocalConnectionToClient.cs index 041f781c2..3c83fbe9a 100644 --- a/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; namespace QuantumUNET { diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index f6c9bef8d..90420f79d 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 51d050ee7..5579360f6 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -100,8 +100,8 @@ - - + + @@ -110,7 +110,7 @@ - + @@ -124,13 +124,13 @@ - + - + @@ -141,6 +141,7 @@ + diff --git a/QuantumUNET/QSBChannelBuffer.cs b/QuantumUNET/Transport/QSBChannelBuffer.cs similarity index 95% rename from QuantumUNET/QSBChannelBuffer.cs rename to QuantumUNET/Transport/QSBChannelBuffer.cs index 5f6d610fc..92f010bca 100644 --- a/QuantumUNET/QSBChannelBuffer.cs +++ b/QuantumUNET/Transport/QSBChannelBuffer.cs @@ -4,7 +4,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Transport { internal class QSBChannelBuffer : IDisposable { @@ -99,26 +99,17 @@ public bool SetOption(ChannelOption option, int value) } else if (!_currentPacket.IsEmpty() || _pendingPackets.Count > 0) { - if (LogFilter.logError) - { - Debug.LogError("Cannot set MaxPacketSize after sending data."); - } + Debug.LogError("Cannot set MaxPacketSize after sending data."); result = false; } else if (value <= 0) { - if (LogFilter.logError) - { - Debug.LogError("Cannot set MaxPacketSize less than one."); - } + Debug.LogError("Cannot set MaxPacketSize less than one."); result = false; } else if (value > _maxPacketSize) { - if (LogFilter.logError) - { - Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); - } + Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); result = false; } else diff --git a/QuantumUNET/QSBChannelPacket.cs b/QuantumUNET/Transport/QSBChannelPacket.cs similarity index 97% rename from QuantumUNET/QSBChannelPacket.cs rename to QuantumUNET/Transport/QSBChannelPacket.cs index 32e55a620..e3e61d0da 100644 --- a/QuantumUNET/QSBChannelPacket.cs +++ b/QuantumUNET/Transport/QSBChannelPacket.cs @@ -2,7 +2,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Transport { internal struct QSBChannelPacket { diff --git a/QuantumUNET/QSBNetBuffer.cs b/QuantumUNET/Transport/QSBNetBuffer.cs similarity index 99% rename from QuantumUNET/QSBNetBuffer.cs rename to QuantumUNET/Transport/QSBNetBuffer.cs index 2cf256222..589c893c3 100644 --- a/QuantumUNET/QSBNetBuffer.cs +++ b/QuantumUNET/Transport/QSBNetBuffer.cs @@ -1,7 +1,7 @@ using System; using UnityEngine; -namespace QuantumUNET +namespace QuantumUNET.Transport { internal class QSBNetBuffer { diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/Transport/QSBNetworkReader.cs similarity index 99% rename from QuantumUNET/QSBNetworkReader.cs rename to QuantumUNET/Transport/QSBNetworkReader.cs index 27f4a67c9..fcc03245f 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/Transport/QSBNetworkReader.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Transport { public class QSBNetworkReader { diff --git a/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs similarity index 99% rename from QuantumUNET/QSBNetworkWriter.cs rename to QuantumUNET/Transport/QSBNetworkWriter.cs index 90582ea65..c7f559fb3 100644 --- a/QuantumUNET/QSBNetworkWriter.cs +++ b/QuantumUNET/Transport/QSBNetworkWriter.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Transport { public class QSBNetworkWriter { From dda1f5b6a559bb8c36e209d7c301a94b08d58c57 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 08:03:04 +0000 Subject: [PATCH 179/207] more cleanup --- QuantumUNET/Messages/QSBAnimationMessage.cs | 16 ++++---- QuantumUNET/Messages/QSBEmptyMessage.cs | 9 +---- QuantumUNET/Messages/QSBNetworkMessage.cs | 1 - .../Messages/QSBObjectDestroyMessage.cs | 4 +- .../Messages/QSBObjectSpawnFinishedMessage.cs | 4 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 18 ++++----- .../Messages/QSBObjectSpawnSceneMessage.cs | 16 ++++---- QuantumUNET/Messages/QSBOwnerMessage.cs | 12 +++--- QuantumUNET/Transport/QSBChannelBuffer.cs | 39 +++++-------------- QuantumUNET/Transport/QSBChannelPacket.cs | 28 +++---------- 10 files changed, 52 insertions(+), 95 deletions(-) diff --git a/QuantumUNET/Messages/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs index 16f7bc9f4..a25714ac1 100644 --- a/QuantumUNET/Messages/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -9,14 +9,6 @@ internal class QSBAnimationMessage : QSBMessageBase public float normalizedTime; public byte[] parameters; - public override void Deserialize(QSBNetworkReader reader) - { - netId = reader.ReadNetworkId(); - stateHash = (int)reader.ReadPackedUInt32(); - normalizedTime = reader.ReadSingle(); - parameters = reader.ReadBytesAndSize(); - } - public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); @@ -31,5 +23,13 @@ public override void Serialize(QSBNetworkWriter writer) writer.WriteBytesAndSize(parameters, parameters.Length); } } + + public override void Deserialize(QSBNetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBEmptyMessage.cs b/QuantumUNET/Messages/QSBEmptyMessage.cs index 16f82deba..b89526b3c 100644 --- a/QuantumUNET/Messages/QSBEmptyMessage.cs +++ b/QuantumUNET/Messages/QSBEmptyMessage.cs @@ -4,12 +4,7 @@ namespace QuantumUNET.Messages { public class QSBEmptyMessage : QSBMessageBase { - public override void Deserialize(QSBNetworkReader reader) - { - } - - public override void Serialize(QSBNetworkWriter writer) - { - } + public override void Serialize(QSBNetworkWriter writer) { } + public override void Deserialize(QSBNetworkReader reader) { } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs index a1d714ac1..16ca1065b 100644 --- a/QuantumUNET/Messages/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -5,7 +5,6 @@ namespace QuantumUNET.Messages { public class QSBNetworkMessage { - public const int MaxMessageSize = 65535; public short MsgType; public QSBNetworkConnection Connection; public QSBNetworkReader Reader; diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 9a19c4f7f..3310b383d 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -6,8 +6,8 @@ internal class QSBObjectDestroyMessage : QSBMessageBase { public QSBNetworkInstanceId NetId; - public override void Deserialize(QSBNetworkReader reader) => NetId = reader.ReadNetworkId(); - public override void Serialize(QSBNetworkWriter writer) => writer.Write(NetId); + + public override void Deserialize(QSBNetworkReader reader) => NetId = reader.ReadNetworkId(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs index 0ec53d1e3..4255bccb4 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs @@ -6,8 +6,8 @@ internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { public uint State; - public override void Deserialize(QSBNetworkReader reader) => State = reader.ReadPackedUInt32(); - public override void Serialize(QSBNetworkWriter writer) => writer.WritePackedUInt32(State); + + public override void Deserialize(QSBNetworkReader reader) => State = reader.ReadPackedUInt32(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index ea4f61c42..30b3122d4 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -11,6 +11,15 @@ internal class QSBObjectSpawnMessage : QSBMessageBase public byte[] Payload; public Quaternion Rotation; + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(NetId); + writer.Write(assetId); + writer.Write(Position); + writer.WriteBytesFull(Payload); + writer.Write(Rotation); + } + public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); @@ -22,14 +31,5 @@ public override void Deserialize(QSBNetworkReader reader) Rotation = reader.ReadQuaternion(); } } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - writer.Write(assetId); - writer.Write(Position); - writer.WriteBytesFull(Payload); - writer.Write(Rotation); - } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index e1846f4aa..b202ce272 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -10,14 +10,6 @@ internal class QSBObjectSpawnSceneMessage : QSBMessageBase public Vector3 Position; public byte[] Payload; - public override void Deserialize(QSBNetworkReader reader) - { - NetId = reader.ReadNetworkId(); - SceneId = reader.ReadSceneId(); - Position = reader.ReadVector3(); - Payload = reader.ReadBytesAndSize(); - } - public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); @@ -25,5 +17,13 @@ public override void Serialize(QSBNetworkWriter writer) writer.Write(Position); writer.WriteBytesFull(Payload); } + + public override void Deserialize(QSBNetworkReader reader) + { + NetId = reader.ReadNetworkId(); + SceneId = reader.ReadSceneId(); + Position = reader.ReadVector3(); + Payload = reader.ReadBytesAndSize(); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs index 89ce81c6c..624ee0ada 100644 --- a/QuantumUNET/Messages/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -7,16 +7,16 @@ internal class QSBOwnerMessage : QSBMessageBase public QSBNetworkInstanceId NetId; public short PlayerControllerId; - public override void Deserialize(QSBNetworkReader reader) - { - NetId = reader.ReadNetworkId(); - PlayerControllerId = (short)reader.ReadPackedUInt32(); - } - public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); writer.WritePackedUInt32((uint)PlayerControllerId); } + + public override void Deserialize(QSBNetworkReader reader) + { + NetId = reader.ReadNetworkId(); + PlayerControllerId = (short)reader.ReadPackedUInt32(); + } } } \ No newline at end of file diff --git a/QuantumUNET/Transport/QSBChannelBuffer.cs b/QuantumUNET/Transport/QSBChannelBuffer.cs index 92f010bca..f20095ee4 100644 --- a/QuantumUNET/Transport/QSBChannelBuffer.cs +++ b/QuantumUNET/Transport/QSBChannelBuffer.cs @@ -131,16 +131,13 @@ public bool SetOption(ChannelOption option, int value) } else if (value < 0 || value >= 512) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Invalid MaxPendingBuffers for channel ", _channelId, ". Must be greater than zero and less than ", 512 - })); - } + })); result = false; } else @@ -231,18 +228,12 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) bool result; if (bytesToSend >= 65535) { - if (LogFilter.logError) - { - Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); - } + Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); result = false; } else if (bytesToSend <= 0) { - if (LogFilter.logError) - { - Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); - } + Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); result = false; } else if (bytesToSend > _maxPacketSize) @@ -253,18 +244,15 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } else { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Failed to send big message of ", bytesToSend, " bytes. The maximum is ", _maxPacketSize, " bytes on channel:", _channelId - })); - } + })); result = false; } } @@ -285,10 +273,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) { if (!_isBroken) { - if (LogFilter.logError) - { - Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); - } + Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); } _isBroken = true; result = false; @@ -302,10 +287,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } else if (!_currentPacket.SendToTransport(_connection, _channelId)) { - if (LogFilter.logError) - { - Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); - } + Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); result = false; } else @@ -371,10 +353,7 @@ public bool SendInternalBuffer() FreePacket(channelPacket); if (_isBroken && _pendingPackets.Count < _maxPendingPacketCount / 2) { - if (LogFilter.logWarn) - { - Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); - } + Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); _isBroken = false; } } diff --git a/QuantumUNET/Transport/QSBChannelPacket.cs b/QuantumUNET/Transport/QSBChannelPacket.cs index e3e61d0da..253f93fe9 100644 --- a/QuantumUNET/Transport/QSBChannelPacket.cs +++ b/QuantumUNET/Transport/QSBChannelPacket.cs @@ -6,6 +6,10 @@ namespace QuantumUNET.Transport { internal struct QSBChannelPacket { + private int m_Position; + private byte[] m_Buffer; + private bool m_IsReliable; + public QSBChannelPacket(int packetSize, bool isReliable) { m_Position = 0; @@ -32,13 +36,7 @@ public bool SendToTransport(QSBNetworkConnection conn, int channelId) { if (!m_IsReliable || b != 4) { - Debug.LogError(string.Concat(new object[] - { - "Failed to send internal buffer channel:", - channelId, - " bytesToSend:", - m_Position - })); + Debug.LogError($"Failed to send internal buffer channel:{channelId} bytesToSend:{m_Position}"); result = false; } } @@ -48,25 +46,11 @@ public bool SendToTransport(QSBNetworkConnection conn, int channelId) { return false; } - Debug.LogError(string.Concat(new object[] - { - "Send Error: ", - (NetworkError)b, - " channel:", - channelId, - " bytesToSend:", - m_Position - })); + Debug.LogError($"Send Error: {(NetworkError)b} channel:{channelId} bytesToSend:{m_Position}"); result = false; } m_Position = 0; return result; } - - private int m_Position; - - private byte[] m_Buffer; - - private bool m_IsReliable; } } \ No newline at end of file From b173eeb7e9293df885f518414d0ba56d3c86bc75 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 08:25:15 +0000 Subject: [PATCH 180/207] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..bcd5c7d74 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 _nebula (AKA misternebula), AmazingAlek, Raicuparta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From f4f2e93b5ef6bba999d648ae3eb70720ecc832bc Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 08:40:42 +0000 Subject: [PATCH 181/207] fix cast --- QSB/QSBNetworkManager.cs | 4 ++-- QuantumUNET/QSBNetworkHash128.cs | 4 ++++ QuantumUNET/QSBNetworkSceneId.cs | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 22a034f72..26aba99be 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -99,8 +99,8 @@ private void SetupNetworkId(GameObject go) { var ident = go.AddComponent(); ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); + ident.SetValue("m_AssetId", (QSBNetworkHash128)playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", (QSBNetworkSceneId)playerPrefab.GetComponent().sceneId); } private void SetupNetworkTransform(GameObject go) diff --git a/QuantumUNET/QSBNetworkHash128.cs b/QuantumUNET/QSBNetworkHash128.cs index b60370b3c..b401b51c7 100644 --- a/QuantumUNET/QSBNetworkHash128.cs +++ b/QuantumUNET/QSBNetworkHash128.cs @@ -1,4 +1,5 @@ using System; +using UnityEngine.Networking; namespace QuantumUNET { @@ -121,5 +122,8 @@ public override string ToString() i15 }); } + + public static explicit operator QSBNetworkHash128(NetworkHash128 v) + => Parse(v.ToString()); } } diff --git a/QuantumUNET/QSBNetworkSceneId.cs b/QuantumUNET/QSBNetworkSceneId.cs index c9872960c..ef8454fca 100644 --- a/QuantumUNET/QSBNetworkSceneId.cs +++ b/QuantumUNET/QSBNetworkSceneId.cs @@ -1,5 +1,6 @@ using System; using UnityEngine; +using UnityEngine.Networking; namespace QuantumUNET { @@ -32,5 +33,13 @@ public override bool Equals(object obj) => c1.m_Value != c2.m_Value; public override string ToString() => m_Value.ToString(); + + public static explicit operator QSBNetworkSceneId(NetworkSceneId v) + { + return new QSBNetworkSceneId + { + m_Value = v.Value + }; + } } } From d9e5f6184f946e5168d65b131fa96e0b5f498e7a Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 08:45:58 +0000 Subject: [PATCH 182/207] remove custom types --- QSB/QSBNetworkManager.cs | 4 +- QuantumUNET/Components/QSBNetworkIdentity.cs | 13 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 3 +- .../Messages/QSBObjectSpawnSceneMessage.cs | 3 +- QuantumUNET/Messages/QSBSpawnDelegate.cs | 3 +- QuantumUNET/QSBClientScene.cs | 16 +-- QuantumUNET/QSBNetworkHash128.cs | 129 ------------------ QuantumUNET/QSBNetworkScene.cs | 18 +-- QuantumUNET/QSBNetworkSceneId.cs | 45 ------ QuantumUNET/QSBNetworkServer.cs | 4 +- QuantumUNET/QuantumUNET.csproj | 2 - QuantumUNET/Transport/QSBNetworkReader.cs | 6 +- QuantumUNET/Transport/QSBNetworkWriter.cs | 4 +- 13 files changed, 39 insertions(+), 211 deletions(-) delete mode 100644 QuantumUNET/QSBNetworkHash128.cs delete mode 100644 QuantumUNET/QSBNetworkSceneId.cs diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 26aba99be..22a034f72 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -99,8 +99,8 @@ private void SetupNetworkId(GameObject go) { var ident = go.AddComponent(); ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", (QSBNetworkHash128)playerPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", (QSBNetworkSceneId)playerPrefab.GetComponent().sceneId); + ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); + ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); } private void SetupNetworkTransform(GameObject go) diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 8a42c841b..568f9be05 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using UnityEngine; +using UnityEngine.Networking; namespace QuantumUNET.Components { @@ -14,9 +15,9 @@ public sealed class QSBNetworkIdentity : MonoBehaviour public bool IsServer => m_IsServer && QSBNetworkServer.active && m_IsServer; public bool HasAuthority { get; private set; } public QSBNetworkInstanceId NetId { get; private set; } - public QSBNetworkSceneId SceneId => m_SceneId; + public NetworkSceneId SceneId => m_SceneId; public QSBNetworkConnection ClientAuthorityOwner { get; private set; } - public QSBNetworkHash128 AssetId => m_AssetId; + public NetworkHash128 AssetId => m_AssetId; public bool IsLocalPlayer { get; private set; } public short PlayerControllerId { get; private set; } = -1; public QSBNetworkConnection ConnectionToServer { get; private set; } @@ -64,7 +65,7 @@ internal void AddSubIndentity(QSBNetworkIdentity identityToAdd) internal void RemoveSubIdentity(QSBNetworkIdentity identityToRemove) => SubIdentities.Remove(identityToRemove); - internal void SetDynamicAssetId(QSBNetworkHash128 newAssetId) + internal void SetDynamicAssetId(NetworkHash128 newAssetId) { if (!m_AssetId.IsValid() || m_AssetId.Equals(newAssetId)) { @@ -153,7 +154,7 @@ internal void SetNetworkInstanceId(QSBNetworkInstanceId newNetId) } } - public void ForceSceneId(int newSceneId) => m_SceneId = new QSBNetworkSceneId((uint)newSceneId); + public void ForceSceneId(int newSceneId) => m_SceneId = new NetworkSceneId((uint)newSceneId); internal void UpdateClientServer(bool isClientFlag, bool isServerFlag) { @@ -967,10 +968,10 @@ public static void UNetStaticUpdate() } [SerializeField] - private QSBNetworkSceneId m_SceneId; + private NetworkSceneId m_SceneId; [SerializeField] - private QSBNetworkHash128 m_AssetId; + private NetworkHash128 m_AssetId; [SerializeField] private bool m_ServerOnly; diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index 30b3122d4..cddeb6e4c 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -1,12 +1,13 @@ using QuantumUNET.Transport; using UnityEngine; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBObjectSpawnMessage : QSBMessageBase { public QSBNetworkInstanceId NetId; - public QSBNetworkHash128 assetId; + public NetworkHash128 assetId; public Vector3 Position; public byte[] Payload; public Quaternion Rotation; diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index b202ce272..87a91a94a 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -1,12 +1,13 @@ using QuantumUNET.Transport; using UnityEngine; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBObjectSpawnSceneMessage : QSBMessageBase { public QSBNetworkInstanceId NetId; - public QSBNetworkSceneId SceneId; + public NetworkSceneId SceneId; public Vector3 Position; public byte[] Payload; diff --git a/QuantumUNET/Messages/QSBSpawnDelegate.cs b/QuantumUNET/Messages/QSBSpawnDelegate.cs index bd254952d..010d8e401 100644 --- a/QuantumUNET/Messages/QSBSpawnDelegate.cs +++ b/QuantumUNET/Messages/QSBSpawnDelegate.cs @@ -1,6 +1,7 @@ using UnityEngine; +using UnityEngine.Networking; namespace QuantumUNET { - public delegate GameObject QSBSpawnDelegate(Vector3 position, QSBNetworkHash128 assetId); + public delegate GameObject QSBSpawnDelegate(Vector3 position, NetworkHash128 assetId); } diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index bcc19a15e..8a04e87d8 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -21,9 +21,9 @@ public class QSBClientScene public static Dictionary Objects => s_NetworkScene.localObjects; - public static Dictionary Prefabs => QSBNetworkScene.guidToPrefab; + public static Dictionary Prefabs => QSBNetworkScene.guidToPrefab; - public static Dictionary SpawnableObjects { get; private set; } + public static Dictionary SpawnableObjects { get; private set; } internal static void Shutdown() { @@ -289,7 +289,7 @@ internal static void HandleClientDisconnect(QSBNetworkConnection conn) internal static void PrepareToSpawnSceneObjects() { - SpawnableObjects = new Dictionary(); + SpawnableObjects = new Dictionary(); foreach (var networkIdentity in Resources.FindObjectsOfTypeAll()) { if (!networkIdentity.gameObject.activeSelf) @@ -309,7 +309,7 @@ internal static void PrepareToSpawnSceneObjects() } } - internal static QSBNetworkIdentity SpawnSceneObject(QSBNetworkSceneId sceneId) + internal static QSBNetworkIdentity SpawnSceneObject(NetworkSceneId sceneId) { QSBNetworkIdentity result; if (SpawnableObjects.ContainsKey(sceneId)) @@ -354,7 +354,7 @@ internal static void RegisterSystemHandlers(QSBNetworkClient client, bool localC client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); } - internal static string GetStringForAssetId(QSBNetworkHash128 assetId) + internal static string GetStringForAssetId(NetworkHash128 assetId) { string result; if (QSBNetworkScene.GetPrefab(assetId, out var gameObject)) @@ -372,7 +372,7 @@ internal static string GetStringForAssetId(QSBNetworkHash128 assetId) return result; } - public static void RegisterPrefab(GameObject prefab, QSBNetworkHash128 newAssetId) => QSBNetworkScene.RegisterPrefab(prefab, newAssetId); + public static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) => QSBNetworkScene.RegisterPrefab(prefab, newAssetId); public static void RegisterPrefab(GameObject prefab) => QSBNetworkScene.RegisterPrefab(prefab); @@ -380,9 +380,9 @@ internal static string GetStringForAssetId(QSBNetworkHash128 assetId) public static void UnregisterPrefab(GameObject prefab) => QSBNetworkScene.UnregisterPrefab(prefab); - public static void RegisterSpawnHandler(QSBNetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); + public static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); - public static void UnregisterSpawnHandler(QSBNetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); + public static void UnregisterSpawnHandler(NetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); public static void ClearSpawners() => QSBNetworkScene.ClearSpawners(); diff --git a/QuantumUNET/QSBNetworkHash128.cs b/QuantumUNET/QSBNetworkHash128.cs deleted file mode 100644 index b401b51c7..000000000 --- a/QuantumUNET/QSBNetworkHash128.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using UnityEngine.Networking; - -namespace QuantumUNET -{ - [Serializable] - public struct QSBNetworkHash128 - { - public byte i0; - public byte i1; - public byte i2; - public byte i3; - public byte i4; - public byte i5; - public byte i6; - public byte i7; - public byte i8; - public byte i9; - public byte i10; - public byte i11; - public byte i12; - public byte i13; - public byte i14; - public byte i15; - - public void Reset() - { - i0 = 0; - i1 = 0; - i2 = 0; - i3 = 0; - i4 = 0; - i5 = 0; - i6 = 0; - i7 = 0; - i8 = 0; - i9 = 0; - i10 = 0; - i11 = 0; - i12 = 0; - i13 = 0; - i14 = 0; - i15 = 0; - } - - public bool IsValid() - => (i0 | i1 | i2 | i3 | i4 | i5 | i6 | i7 | i8 | i9 | i10 | i11 | i12 | i13 | i14 | i15) != 0; - - private static int HexToNumber(char c) - { - int result; - if (c >= '0' && c <= '9') - { - result = c - '0'; - } - else if (c >= 'a' && c <= 'f') - { - result = c - 'a' + '\n'; - } - else if (c >= 'A' && c <= 'F') - { - result = c - 'A' + '\n'; - } - else - { - result = 0; - } - return result; - } - - public static QSBNetworkHash128 Parse(string text) - { - var length = text.Length; - if (length < 32) - { - var str = ""; - for (var i = 0; i < 32 - length; i++) - { - str += "0"; - } - text = str + text; - } - QSBNetworkHash128 result; - result.i0 = (byte)(HexToNumber(text[0]) * 16 + HexToNumber(text[1])); - result.i1 = (byte)(HexToNumber(text[2]) * 16 + HexToNumber(text[3])); - result.i2 = (byte)(HexToNumber(text[4]) * 16 + HexToNumber(text[5])); - result.i3 = (byte)(HexToNumber(text[6]) * 16 + HexToNumber(text[7])); - result.i4 = (byte)(HexToNumber(text[8]) * 16 + HexToNumber(text[9])); - result.i5 = (byte)(HexToNumber(text[10]) * 16 + HexToNumber(text[11])); - result.i6 = (byte)(HexToNumber(text[12]) * 16 + HexToNumber(text[13])); - result.i7 = (byte)(HexToNumber(text[14]) * 16 + HexToNumber(text[15])); - result.i8 = (byte)(HexToNumber(text[16]) * 16 + HexToNumber(text[17])); - result.i9 = (byte)(HexToNumber(text[18]) * 16 + HexToNumber(text[19])); - result.i10 = (byte)(HexToNumber(text[20]) * 16 + HexToNumber(text[21])); - result.i11 = (byte)(HexToNumber(text[22]) * 16 + HexToNumber(text[23])); - result.i12 = (byte)(HexToNumber(text[24]) * 16 + HexToNumber(text[25])); - result.i13 = (byte)(HexToNumber(text[26]) * 16 + HexToNumber(text[27])); - result.i14 = (byte)(HexToNumber(text[28]) * 16 + HexToNumber(text[29])); - result.i15 = (byte)(HexToNumber(text[30]) * 16 + HexToNumber(text[31])); - return result; - } - - public override string ToString() - { - return string.Format("{0:x2}{1:x2}{2:x2}{3:x2}{4:x2}{5:x2}{6:x2}{7:x2}{8:x2}{9:x2}{10:x2}{11:x2}{12:x2}{13:x2}{14:x2}{15:x2}", new object[] - { - i0, - i1, - i2, - i3, - i4, - i5, - i6, - i7, - i8, - i9, - i10, - i11, - i12, - i13, - i14, - i15 - }); - } - - public static explicit operator QSBNetworkHash128(NetworkHash128 v) - => Parse(v.ToString()); - } -} diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index 337bed75f..8f977e406 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -7,11 +7,11 @@ namespace QuantumUNET { internal class QSBNetworkScene { - internal static Dictionary guidToPrefab { get; } = new Dictionary(); + internal static Dictionary guidToPrefab { get; } = new Dictionary(); - internal static Dictionary spawnHandlers { get; } = new Dictionary(); + internal static Dictionary spawnHandlers { get; } = new Dictionary(); - internal static Dictionary unspawnHandlers { get; } = new Dictionary(); + internal static Dictionary unspawnHandlers { get; } = new Dictionary(); internal Dictionary localObjects { get; } = new Dictionary(); @@ -92,7 +92,7 @@ internal bool RemoveLocalObjectAndDestroy(QSBNetworkInstanceId netId) internal void ClearLocalObjects() => localObjects.Clear(); - internal static void RegisterPrefab(GameObject prefab, QSBNetworkHash128 newAssetId) + internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) { var component = prefab.GetComponent(); if (component) @@ -127,7 +127,7 @@ internal static void RegisterPrefab(GameObject prefab) } } - internal static bool GetPrefab(QSBNetworkHash128 assetId, out GameObject prefab) + internal static bool GetPrefab(NetworkHash128 assetId, out GameObject prefab) { bool result; if (!assetId.IsValid()) @@ -155,13 +155,13 @@ internal static void ClearSpawners() unspawnHandlers.Clear(); } - public static void UnregisterSpawnHandler(QSBNetworkHash128 assetId) + public static void UnregisterSpawnHandler(NetworkHash128 assetId) { spawnHandlers.Remove(assetId); unspawnHandlers.Remove(assetId); } - internal static void RegisterSpawnHandler(QSBNetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { if (spawnHandler == null || unspawnHandler == null) { @@ -216,7 +216,7 @@ internal static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHan } } - internal static bool GetSpawnHandler(QSBNetworkHash128 assetId, out QSBSpawnDelegate handler) + internal static bool GetSpawnHandler(NetworkHash128 assetId, out QSBSpawnDelegate handler) { bool result; if (spawnHandlers.ContainsKey(assetId)) @@ -232,7 +232,7 @@ internal static bool GetSpawnHandler(QSBNetworkHash128 assetId, out QSBSpawnDele return result; } - internal static bool InvokeUnSpawnHandler(QSBNetworkHash128 assetId, GameObject obj) + internal static bool InvokeUnSpawnHandler(NetworkHash128 assetId, GameObject obj) { bool result; if (unspawnHandlers.ContainsKey(assetId) && unspawnHandlers[assetId] != null) diff --git a/QuantumUNET/QSBNetworkSceneId.cs b/QuantumUNET/QSBNetworkSceneId.cs deleted file mode 100644 index ef8454fca..000000000 --- a/QuantumUNET/QSBNetworkSceneId.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Networking; - -namespace QuantumUNET -{ - [Serializable] - public struct QSBNetworkSceneId - { - public uint Value => m_Value; - - [SerializeField] - private uint m_Value; - - public QSBNetworkSceneId(uint value) - { - m_Value = value; - } - - public bool IsEmpty() - => m_Value == 0U; - - public override int GetHashCode() - => (int)m_Value; - - public override bool Equals(object obj) - => obj is QSBNetworkSceneId id && this == id; - - public static bool operator ==(QSBNetworkSceneId c1, QSBNetworkSceneId c2) - => c1.m_Value == c2.m_Value; - - public static bool operator !=(QSBNetworkSceneId c1, QSBNetworkSceneId c2) - => c1.m_Value != c2.m_Value; - - public override string ToString() => m_Value.ToString(); - - public static explicit operator QSBNetworkSceneId(NetworkSceneId v) - { - return new QSBNetworkSceneId - { - m_Value = v.Value - }; - } - } -} diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index cb0dff883..c7e66c606 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1430,14 +1430,14 @@ public static bool SpawnWithClientAuthority(GameObject obj, QSBNetworkConnection return result; } - public static bool SpawnWithClientAuthority(GameObject obj, QSBNetworkHash128 assetId, QSBNetworkConnection conn) + public static bool SpawnWithClientAuthority(GameObject obj, NetworkHash128 assetId, QSBNetworkConnection conn) { Spawn(obj, assetId); var component = obj.GetComponent(); return !(component == null) && component.IsServer && component.AssignClientAuthority(conn); } - public static void Spawn(GameObject obj, QSBNetworkHash128 assetId) + public static void Spawn(GameObject obj, NetworkHash128 assetId) { if (VerifyCanSpawn(obj)) { diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 5579360f6..977886c6c 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -121,12 +121,10 @@ - - diff --git a/QuantumUNET/Transport/QSBNetworkReader.cs b/QuantumUNET/Transport/QSBNetworkReader.cs index fcc03245f..3776e1b00 100644 --- a/QuantumUNET/Transport/QSBNetworkReader.cs +++ b/QuantumUNET/Transport/QSBNetworkReader.cs @@ -164,7 +164,7 @@ public ulong ReadPackedUInt64() public QSBNetworkInstanceId ReadNetworkId() => new QSBNetworkInstanceId(ReadPackedUInt32()); - public QSBNetworkSceneId ReadSceneId() => new QSBNetworkSceneId(ReadPackedUInt32()); + public NetworkSceneId ReadSceneId() => new NetworkSceneId(ReadPackedUInt32()); public byte ReadByte() => m_buf.ReadByte(); @@ -363,9 +363,9 @@ public Matrix4x4 ReadMatrix4x4() }; } - public QSBNetworkHash128 ReadNetworkHash128() + public NetworkHash128 ReadNetworkHash128() { - QSBNetworkHash128 result; + NetworkHash128 result; result.i0 = ReadByte(); result.i1 = ReadByte(); result.i2 = ReadByte(); diff --git a/QuantumUNET/Transport/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs index c7f559fb3..2698e5ccb 100644 --- a/QuantumUNET/Transport/QSBNetworkWriter.cs +++ b/QuantumUNET/Transport/QSBNetworkWriter.cs @@ -154,7 +154,7 @@ public void WritePackedUInt64(ulong value) public void Write(QSBNetworkInstanceId value) => WritePackedUInt32(value.Value); - public void Write(QSBNetworkSceneId value) => WritePackedUInt32(value.Value); + public void Write(NetworkSceneId value) => WritePackedUInt32(value.Value); public void Write(char value) => m_Buffer.WriteByte((byte)value); @@ -373,7 +373,7 @@ public void Write(Matrix4x4 value) Write(value.m33); } - public void Write(QSBNetworkHash128 value) + public void Write(NetworkHash128 value) { Write(value.i0); Write(value.i1); From a2120b9018dcb9bd94378d6dcc114607c466bdf6 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 08:57:15 +0000 Subject: [PATCH 183/207] remove qsbnetworkid --- QSB/TransformSync/PlayerTransformSync.cs | 6 ++- QSB/TransformSync/TransformSync.cs | 1 + QuantumUNET/Components/QSBNetworkIdentity.cs | 10 ++--- QuantumUNET/Messages/QSBAnimationMessage.cs | 3 +- .../Messages/QSBAnimationParametersMessage.cs | 3 +- .../Messages/QSBAnimationTriggerMessage.cs | 3 +- .../Messages/QSBClientAuthorityMessage.cs | 3 +- .../Messages/QSBObjectDestroyMessage.cs | 3 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 2 +- .../Messages/QSBObjectSpawnSceneMessage.cs | 2 +- QuantumUNET/Messages/QSBOwnerMessage.cs | 3 +- QuantumUNET/QSBClientScene.cs | 10 ++--- QuantumUNET/QSBNetworkBehaviour.cs | 8 ++-- QuantumUNET/QSBNetworkConnection.cs | 4 +- QuantumUNET/QSBNetworkInstanceId.cs | 41 ------------------- QuantumUNET/QSBNetworkScene.cs | 12 +++--- QuantumUNET/QSBNetworkServer.cs | 12 +++--- QuantumUNET/QuantumUNET.csproj | 1 - QuantumUNET/Transport/QSBNetworkReader.cs | 2 +- QuantumUNET/Transport/QSBNetworkWriter.cs | 2 +- 20 files changed, 50 insertions(+), 81 deletions(-) delete mode 100644 QuantumUNET/QSBNetworkInstanceId.cs diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index a63b99532..086b96d7f 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -1,6 +1,7 @@ using QSB.Animation; using QSB.Instruments; using QSB.Player; +using QSB.Utility; using UnityEngine; namespace QSB.TransformSync @@ -11,8 +12,11 @@ public class PlayerTransformSync : TransformSync static PlayerTransformSync() => AnimControllerPatch.Init(); - public override void OnStartLocalPlayer() => + public override void OnStartLocalPlayer() + { LocalInstance = this; + DebugLog.DebugWrite("SET LOCAL INSTANCE"); + } protected override void OnDestroy() { diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index 82ab08e3c..b40561396 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -25,6 +25,7 @@ public abstract class TransformSync : PlayerSyncObject protected override void Start() { + DebugLog.DebugWrite("start of " + GetType().Name); base.Start(); var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value <= NetId.Value).OrderBy(x => x.NetId.Value).Last(); NetIdentity.SetRootIdentity(lowestBound.NetIdentity); diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 568f9be05..c762fa2a1 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -14,7 +14,7 @@ public sealed class QSBNetworkIdentity : MonoBehaviour public bool IsClient { get; private set; } public bool IsServer => m_IsServer && QSBNetworkServer.active && m_IsServer; public bool HasAuthority { get; private set; } - public QSBNetworkInstanceId NetId { get; private set; } + public NetworkInstanceId NetId { get; private set; } public NetworkSceneId SceneId => m_SceneId; public QSBNetworkConnection ClientAuthorityOwner { get; private set; } public NetworkHash128 AssetId => m_AssetId; @@ -122,11 +122,11 @@ public ReadOnlyCollection Observers } } - internal static QSBNetworkInstanceId GetNextNetworkId() + internal static NetworkInstanceId GetNextNetworkId() { var value = s_NextNetworkId; s_NextNetworkId += 1U; - return new QSBNetworkInstanceId(value); + return new NetworkInstanceId(value); } private void CacheBehaviours() @@ -145,7 +145,7 @@ internal static void AddNetworkId(uint id) } } - internal void SetNetworkInstanceId(QSBNetworkInstanceId newNetId) + internal void SetNetworkInstanceId(NetworkInstanceId newNetId) { NetId = newNetId; if (newNetId.Value == 0U) @@ -949,7 +949,7 @@ internal void Reset() m_IsServer = false; IsClient = false; HasAuthority = false; - NetId = (QSBNetworkInstanceId)typeof(QSBNetworkInstanceId).GetField("Zero", System.Reflection.BindingFlags.Static).GetValue(null); + NetId = (NetworkInstanceId)typeof(NetworkInstanceId).GetField("Zero", System.Reflection.BindingFlags.Static).GetValue(null); IsLocalPlayer = false; ConnectionToServer = null; ConnectionToClient = null; diff --git a/QuantumUNET/Messages/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs index a25714ac1..043da6535 100644 --- a/QuantumUNET/Messages/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -1,10 +1,11 @@ using QuantumUNET.Transport; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBAnimationMessage : QSBMessageBase { - public QSBNetworkInstanceId netId; + public NetworkInstanceId netId; public int stateHash; public float normalizedTime; public byte[] parameters; diff --git a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs index c8013c38c..497d0b983 100644 --- a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs @@ -1,10 +1,11 @@ using QuantumUNET.Transport; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBAnimationParametersMessage : QSBMessageBase { - public QSBNetworkInstanceId netId; + public NetworkInstanceId netId; public byte[] parameters; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs index d6c7d89e0..b4291beaa 100644 --- a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs @@ -1,10 +1,11 @@ using QuantumUNET.Transport; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBAnimationTriggerMessage : QSBMessageBase { - public QSBNetworkInstanceId netId; + public NetworkInstanceId netId; public int hash; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs index 11e9fe466..d99690e73 100644 --- a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs @@ -1,10 +1,11 @@ using QuantumUNET.Transport; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBClientAuthorityMessage : QSBMessageBase { - public QSBNetworkInstanceId netId; + public NetworkInstanceId netId; public bool authority; public override void Deserialize(QSBNetworkReader reader) diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 3310b383d..08f74a773 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -1,10 +1,11 @@ using QuantumUNET.Transport; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBObjectDestroyMessage : QSBMessageBase { - public QSBNetworkInstanceId NetId; + public NetworkInstanceId NetId; public override void Serialize(QSBNetworkWriter writer) => writer.Write(NetId); diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index cddeb6e4c..3236cc1a6 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -6,7 +6,7 @@ namespace QuantumUNET.Messages { internal class QSBObjectSpawnMessage : QSBMessageBase { - public QSBNetworkInstanceId NetId; + public NetworkInstanceId NetId; public NetworkHash128 assetId; public Vector3 Position; public byte[] Payload; diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index 87a91a94a..9a8212a90 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -6,7 +6,7 @@ namespace QuantumUNET.Messages { internal class QSBObjectSpawnSceneMessage : QSBMessageBase { - public QSBNetworkInstanceId NetId; + public NetworkInstanceId NetId; public NetworkSceneId SceneId; public Vector3 Position; public byte[] Payload; diff --git a/QuantumUNET/Messages/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs index 624ee0ada..944c9d6e8 100644 --- a/QuantumUNET/Messages/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -1,10 +1,11 @@ using QuantumUNET.Transport; +using UnityEngine.Networking; namespace QuantumUNET.Messages { internal class QSBOwnerMessage : QSBMessageBase { - public QSBNetworkInstanceId NetId; + public NetworkInstanceId NetId; public short PlayerControllerId; public override void Serialize(QSBNetworkWriter writer) diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 8a04e87d8..4c4234066 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -19,7 +19,7 @@ public class QSBClientScene public static int reconnectId { get; private set; } = -1; - public static Dictionary Objects => s_NetworkScene.localObjects; + public static Dictionary Objects => s_NetworkScene.localObjects; public static Dictionary Prefabs => QSBNetworkScene.guidToPrefab; @@ -388,11 +388,11 @@ internal static string GetStringForAssetId(NetworkHash128 assetId) public static void DestroyAllClientObjects() => s_NetworkScene.DestroyAllClientObjects(); - public static void SetLocalObject(QSBNetworkInstanceId netId, GameObject obj) => s_NetworkScene.SetLocalObject(netId, obj, s_IsSpawnFinished, false); + public static void SetLocalObject(NetworkInstanceId netId, GameObject obj) => s_NetworkScene.SetLocalObject(netId, obj, s_IsSpawnFinished, false); - public static GameObject FindLocalObject(QSBNetworkInstanceId netId) => s_NetworkScene.FindLocalObject(netId); + public static GameObject FindLocalObject(NetworkInstanceId netId) => s_NetworkScene.FindLocalObject(netId); - private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, byte[] payload, QSBNetworkInstanceId netId, GameObject newGameObject) + private static void ApplySpawnPayload(QSBNetworkIdentity uv, Vector3 position, byte[] payload, NetworkInstanceId netId, GameObject newGameObject) { if (!uv.gameObject.activeSelf) { @@ -798,7 +798,7 @@ private static void CheckForOwner(QSBNetworkIdentity uv) private struct PendingOwner { - public QSBNetworkInstanceId netId; + public NetworkInstanceId netId; public short playerControllerId; } diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index b7f0992d4..5887c0f1c 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -16,7 +16,7 @@ public class QSBNetworkBehaviour : MonoBehaviour public bool IsClient => MyView.IsClient; public bool IsLocalPlayer => MyView.IsLocalPlayer; public bool HasAuthority => MyView.HasAuthority; - public QSBNetworkInstanceId NetId => MyView.NetId; + public NetworkInstanceId NetId => MyView.NetId; public QSBNetworkConnection ConnectionToServer => MyView.ConnectionToServer; public QSBNetworkConnection ConnectionToClient => MyView.ConnectionToClient; public short PlayerControllerId => MyView.PlayerControllerId; @@ -405,11 +405,11 @@ internal static string GetCmdHashEventName(int cmdHash) internal static string GetCmdHashListName(int cmdHash) => GetCmdHashPrefixName(cmdHash, "InvokeSyncList"); - protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref QSBNetworkInstanceId netIdField) + protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, uint dirtyBit, ref NetworkInstanceId netIdField) { if (!SyncVarHookGuard) { - QSBNetworkInstanceId networkInstanceId = default; + NetworkInstanceId networkInstanceId = default; if (newGameObject != null) { var component = newGameObject.GetComponent(); @@ -425,7 +425,7 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam } } } - QSBNetworkInstanceId networkInstanceId2 = default; + NetworkInstanceId networkInstanceId2 = default; if (gameObjectField != null) { networkInstanceId2 = gameObjectField.GetComponent().NetId; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 85f4e4ae7..ce6ddea68 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -21,7 +21,7 @@ public QSBNetworkConnection() public List PlayerControllers { get; } = new List(); - public HashSet ClientOwnedObjects { get; private set; } + public HashSet ClientOwnedObjects { get; private set; } public bool isConnected => hostId != -1; @@ -440,7 +440,7 @@ internal void AddOwnedObject(QSBNetworkIdentity obj) { if (ClientOwnedObjects == null) { - ClientOwnedObjects = new HashSet(); + ClientOwnedObjects = new HashSet(); } ClientOwnedObjects.Add(obj.NetId); } diff --git a/QuantumUNET/QSBNetworkInstanceId.cs b/QuantumUNET/QSBNetworkInstanceId.cs deleted file mode 100644 index 1e1654934..000000000 --- a/QuantumUNET/QSBNetworkInstanceId.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using UnityEngine; - -namespace QuantumUNET -{ - [Serializable] - public struct QSBNetworkInstanceId - { - public uint Value => m_Value; - - [SerializeField] - private readonly uint m_Value; - - public QSBNetworkInstanceId(uint value) - { - m_Value = value; - } - - public bool IsEmpty() - => m_Value == 0U; - - public override int GetHashCode() - => (int)m_Value; - - public override bool Equals(object obj) - => obj is QSBNetworkInstanceId id && this == id; - - public static bool operator ==(QSBNetworkInstanceId c1, QSBNetworkInstanceId c2) - => c1.m_Value == c2.m_Value; - - public static bool operator !=(QSBNetworkInstanceId c1, QSBNetworkInstanceId c2) - => c1.m_Value != c2.m_Value; - - public override string ToString() - => m_Value.ToString(); - - public static QSBNetworkInstanceId Invalid = new QSBNetworkInstanceId(uint.MaxValue); - - internal static QSBNetworkInstanceId Zero = new QSBNetworkInstanceId(0U); - } -} diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index 8f977e406..cf14a9c06 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -13,7 +13,7 @@ internal class QSBNetworkScene internal static Dictionary unspawnHandlers { get; } = new Dictionary(); - internal Dictionary localObjects { get; } = new Dictionary(); + internal Dictionary localObjects { get; } = new Dictionary(); internal void Shutdown() { @@ -21,7 +21,7 @@ internal void Shutdown() ClearSpawners(); } - internal void SetLocalObject(QSBNetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) + internal void SetLocalObject(NetworkInstanceId netId, GameObject obj, bool isClient, bool isServer) { if (obj == null) { @@ -43,7 +43,7 @@ internal void SetLocalObject(QSBNetworkInstanceId netId, GameObject obj, bool is } } - internal GameObject FindLocalObject(QSBNetworkInstanceId netId) + internal GameObject FindLocalObject(NetworkInstanceId netId) { if (localObjects.ContainsKey(netId)) { @@ -56,7 +56,7 @@ internal GameObject FindLocalObject(QSBNetworkInstanceId netId) return null; } - internal bool GetNetworkIdentity(QSBNetworkInstanceId netId, out QSBNetworkIdentity uv) + internal bool GetNetworkIdentity(NetworkInstanceId netId, out QSBNetworkIdentity uv) { bool result; if (localObjects.ContainsKey(netId) && localObjects[netId] != null) @@ -72,9 +72,9 @@ internal bool GetNetworkIdentity(QSBNetworkInstanceId netId, out QSBNetworkIdent return result; } - internal bool RemoveLocalObject(QSBNetworkInstanceId netId) => localObjects.Remove(netId); + internal bool RemoveLocalObject(NetworkInstanceId netId) => localObjects.Remove(netId); - internal bool RemoveLocalObjectAndDestroy(QSBNetworkInstanceId netId) + internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) { bool result; if (localObjects.ContainsKey(netId)) diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index c7e66c606..1e5793fda 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -16,7 +16,7 @@ public class QSBNetworkServer private QSBNetworkServer() { NetworkTransport.Init(); - m_RemoveList = new HashSet(); + m_RemoveList = new HashSet(); m_ExternalConnections = new HashSet(); m_NetworkScene = new QSBNetworkScene(); m_SimpleServerSimple = new ServerSimpleWrapper(this); @@ -34,7 +34,7 @@ private QSBNetworkServer() public static HostTopology hostTopology => instance.m_SimpleServerSimple.hostTopology; - public static Dictionary objects => instance.m_NetworkScene.localObjects; + public static Dictionary objects => instance.m_NetworkScene.localObjects; public static bool dontListen { get; set; } @@ -216,7 +216,7 @@ internal void RemoveLocalClient(QSBNetworkConnection localClientConnection) m_SimpleServerSimple.RemoveConnectionAtIndex(0); } - internal void SetLocalObjectOnServer(QSBNetworkInstanceId netId, GameObject obj) + internal void SetLocalObjectOnServer(NetworkInstanceId netId, GameObject obj) { Debug.Log(string.Concat(new object[] { @@ -1278,7 +1278,7 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) { if (conn.ClientOwnedObjects != null) { - var hashSet = new HashSet(conn.ClientOwnedObjects); + var hashSet = new HashSet(conn.ClientOwnedObjects); foreach (var netId in hashSet) { var gameObject = FindLocalObject(netId); @@ -1499,7 +1499,7 @@ internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgT return result; } - public static GameObject FindLocalObject(QSBNetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); + public static GameObject FindLocalObject(NetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); private static bool ValidateSceneObject(QSBNetworkIdentity netId) => netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); @@ -1584,7 +1584,7 @@ private static void SendCrc(QSBNetworkConnection targetConnection) private float m_MaxDelay = 0.1f; - private HashSet m_RemoveList; + private HashSet m_RemoveList; private int m_RemoveListCount; diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 977886c6c..93f400959 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -121,7 +121,6 @@ - diff --git a/QuantumUNET/Transport/QSBNetworkReader.cs b/QuantumUNET/Transport/QSBNetworkReader.cs index 3776e1b00..cb0a95148 100644 --- a/QuantumUNET/Transport/QSBNetworkReader.cs +++ b/QuantumUNET/Transport/QSBNetworkReader.cs @@ -162,7 +162,7 @@ public ulong ReadPackedUInt64() return result; } - public QSBNetworkInstanceId ReadNetworkId() => new QSBNetworkInstanceId(ReadPackedUInt32()); + public NetworkInstanceId ReadNetworkId() => new NetworkInstanceId(ReadPackedUInt32()); public NetworkSceneId ReadSceneId() => new NetworkSceneId(ReadPackedUInt32()); diff --git a/QuantumUNET/Transport/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs index 2698e5ccb..b5f4073bf 100644 --- a/QuantumUNET/Transport/QSBNetworkWriter.cs +++ b/QuantumUNET/Transport/QSBNetworkWriter.cs @@ -152,7 +152,7 @@ public void WritePackedUInt64(ulong value) } } - public void Write(QSBNetworkInstanceId value) => WritePackedUInt32(value.Value); + public void Write(NetworkInstanceId value) => WritePackedUInt32(value.Value); public void Write(NetworkSceneId value) => WritePackedUInt32(value.Value); From 661c04a98784a50011cfdaafc62e424095399678 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 09:07:40 +0000 Subject: [PATCH 184/207] REVERT --- QSB/Animation/AnimationSync.cs | 10 +- .../Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- .../Events/DialogueConditionMessage.cs | 2 +- QSB/Messaging/EnumMessage.cs | 2 +- QSB/Messaging/FloatMessage.cs | 2 +- QSB/Messaging/PlayerMessage.cs | 4 +- QSB/Messaging/ToggleMessage.cs | 2 +- QSB/OrbSync/Events/OrbSlotMessage.cs | 2 +- QSB/Player/Events/PlayerJoinMessage.cs | 2 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/QSBNetworkManager.cs | 1 - QSB/TimeSync/Events/ServerTimeMessage.cs | 2 +- .../Events/BoolWorldObjectMessage.cs | 2 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- QuantumUNET/Components/QSBNetworkAnimator.cs | 52 +- QuantumUNET/Components/QSBNetworkIdentity.cs | 59 +- .../Components/QSBNetworkManagerHUD.cs | 5 +- .../Components/QSBNetworkManagerUNET.cs | 265 +++++++-- QuantumUNET/Components/QSBNetworkTransform.cs | 111 +++- QuantumUNET/Messages/QSBAddPlayerMessage.cs | 16 +- QuantumUNET/Messages/QSBAnimationMessage.cs | 17 +- .../Messages/QSBAnimationParametersMessage.cs | 1 - .../Messages/QSBAnimationTriggerMessage.cs | 1 - QuantumUNET/Messages/QSBCRCMessage.cs | 4 +- .../Messages/QSBClientAuthorityMessage.cs | 1 - QuantumUNET/Messages/QSBEmptyMessage.cs | 13 +- QuantumUNET/Messages/QSBErrorMessage.cs | 16 +- QuantumUNET/Messages/QSBMessageBase.cs | 12 +- QuantumUNET/Messages/QSBMsgType.cs | 2 +- QuantumUNET/Messages/QSBNetworkMessage.cs | 8 +- .../Messages/QSBObjectDestroyMessage.cs | 11 +- .../Messages/QSBObjectSpawnFinishedMessage.cs | 14 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 19 +- .../Messages/QSBObjectSpawnSceneMessage.cs | 17 +- QuantumUNET/Messages/QSBOwnerMessage.cs | 13 +- QuantumUNET/Messages/QSBPeerInfoMessage.cs | 80 +++ QuantumUNET/Messages/QSBReconnectMessage.cs | 30 + .../Messages/QSBRemovePlayerMessage.cs | 14 +- QuantumUNET/Messages/QSBSpawnDelegate.cs | 7 - QuantumUNET/Messages/QSBStringMessage.cs | 22 +- .../{Transport => }/QSBChannelBuffer.cs | 56 +- QuantumUNET/QSBChannelPacket.cs | 82 +++ QuantumUNET/QSBClientScene.cs | 97 ++-- QuantumUNET/QSBLocalClient.cs | 15 +- QuantumUNET/QSBNetBuffer.cs | 198 +++++++ QuantumUNET/QSBNetworkBehaviour.cs | 5 +- QuantumUNET/QSBNetworkCRC.cs | 109 ++-- QuantumUNET/QSBNetworkClient.cs | 323 +++++++---- QuantumUNET/QSBNetworkConnection.cs | 26 +- .../{Transport => }/QSBNetworkReader.cs | 2 +- QuantumUNET/QSBNetworkScene.cs | 27 +- QuantumUNET/QSBNetworkServer.cs | 305 +++++++--- QuantumUNET/QSBNetworkServerSimple.cs | 333 +++++++---- QuantumUNET/QSBNetworkWriter.cs | 537 ++++++++++++++++++ QuantumUNET/QSBPeerInfoPlayer.cs | 11 + QuantumUNET/QSBPlayerController.cs | 3 +- QuantumUNET/QSBULocalConnectionToClient.cs | 1 - QuantumUNET/QSBULocalConnectionToServer.cs | 25 +- QuantumUNET/QSBUtility.cs | 32 ++ QuantumUNET/QuantumUNET.csproj | 15 +- QuantumUNET/Transport/QSBChannelPacket.cs | 56 -- QuantumUNET/Transport/QSBNetBuffer.cs | 169 ------ QuantumUNET/Transport/QSBNetworkWriter.cs | 477 ---------------- README.md | 2 +- 65 files changed, 2396 insertions(+), 1359 deletions(-) create mode 100644 QuantumUNET/Messages/QSBPeerInfoMessage.cs create mode 100644 QuantumUNET/Messages/QSBReconnectMessage.cs delete mode 100644 QuantumUNET/Messages/QSBSpawnDelegate.cs rename QuantumUNET/{Transport => }/QSBChannelBuffer.cs (87%) create mode 100644 QuantumUNET/QSBChannelPacket.cs create mode 100644 QuantumUNET/QSBNetBuffer.cs rename QuantumUNET/{Transport => }/QSBNetworkReader.cs (99%) create mode 100644 QuantumUNET/QSBNetworkWriter.cs create mode 100644 QuantumUNET/QSBPeerInfoPlayer.cs create mode 100644 QuantumUNET/QSBUtility.cs delete mode 100644 QuantumUNET/Transport/QSBChannelPacket.cs delete mode 100644 QuantumUNET/Transport/QSBNetBuffer.cs delete mode 100644 QuantumUNET/Transport/QSBNetworkWriter.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 02df29c92..77614e787 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -145,9 +145,15 @@ private void InitCrouchSync() private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - public void SendCrouch(float value = 0) => GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); + public void SendCrouch(float value = 0) + { + GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); + } - public void HandleCrouch(float value) => _crouchSync.CrouchParam.Target = value; + public void HandleCrouch(float value) + { + _crouchSync.CrouchParam.Target = value; + } private void SuitUp() { diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 9a5c85e4c..206072c0c 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.ConversationSync.Events { diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index c836868bf..75db950da 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.ConversationSync.Events { diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs index 3e4249674..3d4252e9a 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.DialogueConditionSync.Events { diff --git a/QSB/Messaging/EnumMessage.cs b/QSB/Messaging/EnumMessage.cs index 4886c66bc..0624f8363 100644 --- a/QSB/Messaging/EnumMessage.cs +++ b/QSB/Messaging/EnumMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.Messaging { diff --git a/QSB/Messaging/FloatMessage.cs b/QSB/Messaging/FloatMessage.cs index 5d1685f76..832c6a0cd 100644 --- a/QSB/Messaging/FloatMessage.cs +++ b/QSB/Messaging/FloatMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.Messaging { diff --git a/QSB/Messaging/PlayerMessage.cs b/QSB/Messaging/PlayerMessage.cs index e5a2b1c5d..9fb002381 100644 --- a/QSB/Messaging/PlayerMessage.cs +++ b/QSB/Messaging/PlayerMessage.cs @@ -1,5 +1,5 @@ -using QuantumUNET.Messages; -using QuantumUNET.Transport; +using QuantumUNET; +using QuantumUNET.Messages; namespace QSB.Messaging { diff --git a/QSB/Messaging/ToggleMessage.cs b/QSB/Messaging/ToggleMessage.cs index 192990799..0956b3b25 100644 --- a/QSB/Messaging/ToggleMessage.cs +++ b/QSB/Messaging/ToggleMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.Messaging { diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs index 553d6dc8b..c25da215c 100644 --- a/QSB/OrbSync/Events/OrbSlotMessage.cs +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.OrbSync.Events { diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 51f86ccea..0e6954242 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.Player.Events { diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 7317da16d..7d2d341f1 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.Player.Events { diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 22a034f72..2aca29fe8 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -43,7 +43,6 @@ public class QSBNetworkManager : QSBNetworkManagerUNET public void Awake() { - base.Awake(); Instance = this; _lobby = gameObject.AddComponent(); diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 1979069a9..407d2bfc0 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.TimeSync.Events { diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index a5456a029..99f820cfe 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.WorldSync.Events { diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index f6f47fdf9..12ec48f85 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET.Transport; +using QuantumUNET; namespace QSB.WorldSync.Events { diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index e4865c053..4cfacf722 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -1,5 +1,4 @@ using QuantumUNET.Messages; -using QuantumUNET.Transport; using UnityEngine; namespace QuantumUNET.Components @@ -33,22 +32,22 @@ public Animator animator public void SetParameterAutoSend(int index, bool value) { if (value) - { m_ParameterSendBits |= (uint)(1 << index); - } else - { m_ParameterSendBits &= (uint)~(1 << index); - } } - public bool GetParameterAutoSend(int index) => - ((int)m_ParameterSendBits & (1 << index)) != 0; + public bool GetParameterAutoSend(int index) + { + return ((int)m_ParameterSendBits & 1 << index) != 0; + } - public override void OnStartAuthority() => + public override void OnStartAuthority() + { m_ParameterWriter = new QSBNetworkWriter(); + } - public void FixedUpdate() + private void FixedUpdate() { if (m_ParameterWriter == null) { @@ -135,10 +134,7 @@ private void CheckSendRate() else { if (!IsServer || LocalPlayerAuthority) - { return; - } - QSBNetworkServer.SendToReady(gameObject, 41, parametersMessage); } } @@ -165,11 +161,14 @@ internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, QSBNetworkR ReadParameters(reader, true); } - internal void HandleAnimTriggerMsg(int hash) => m_Animator.SetTrigger(hash); + internal void HandleAnimTriggerMsg(int hash) + { + m_Animator.SetTrigger(hash); + } private void WriteParameters(QSBNetworkWriter writer, bool autoSend) { - for (var index = 0; index < m_Animator.parameters.Length; ++index) + for (int index = 0; index < m_Animator.parameters.Length; ++index) { if (!autoSend || GetParameterAutoSend(index)) { @@ -194,7 +193,7 @@ private void WriteParameters(QSBNetworkWriter writer, bool autoSend) private void ReadParameters(QSBNetworkReader reader, bool autoSend) { - for (var index = 0; index < m_Animator.parameters.Length; ++index) + for (int index = 0; index < m_Animator.parameters.Length; ++index) { if (!autoSend || GetParameterAutoSend(index)) { @@ -258,7 +257,10 @@ public override void OnDeserialize(QSBNetworkReader reader, bool initialState) m_Animator.Play(stateNameHash, 0, normalizedTime); } - public void SetTrigger(string triggerName) => SetTrigger(Animator.StringToHash(triggerName)); + public void SetTrigger(string triggerName) + { + SetTrigger(Animator.StringToHash(triggerName)); + } public void SetTrigger(int hash) { @@ -336,16 +338,10 @@ internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) netMsg.ReadMessage(AnimationMessage); var localObject = QSBClientScene.FindLocalObject(AnimationMessage.netId); if (localObject == null) - { return; - } - var component = localObject.GetComponent(); if (component == null) - { return; - } - var reader = new QSBNetworkReader(AnimationMessage.parameters); component.HandleAnimMsg(AnimationMessage, reader); } @@ -355,16 +351,10 @@ internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg netMsg.ReadMessage(ParametersMessage); var localObject = QSBClientScene.FindLocalObject(ParametersMessage.netId); if (localObject == null) - { return; - } - var component = localObject.GetComponent(); if (component == null) - { return; - } - var reader = new QSBNetworkReader(ParametersMessage.parameters); component.HandleAnimParamsMsg(ParametersMessage, reader); } @@ -374,16 +364,10 @@ internal static void OnAnimationTriggerClientMessage(QSBNetworkMessage netMsg) netMsg.ReadMessage(TriggersMessage); var localObject = QSBClientScene.FindLocalObject(TriggersMessage.netId); if (localObject == null) - { return; - } - var component = localObject.GetComponent(); if (component == null) - { return; - } - component.HandleAnimTriggerMsg(TriggersMessage.hash); } } diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index c762fa2a1..28324cc40 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -1,6 +1,5 @@ using OWML.Logging; using QuantumUNET.Messages; -using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -133,7 +132,7 @@ private void CacheBehaviours() { if (m_NetworkBehaviours == null) { - m_NetworkBehaviours = GetComponents(); + m_NetworkBehaviours = base.GetComponents(); } } @@ -180,11 +179,11 @@ internal void RemoveObserverInternal(QSBNetworkConnection conn) } } - public void OnDestroy() + private void OnDestroy() { if (m_IsServer && QSBNetworkServer.active) { - QSBNetworkServer.Destroy(gameObject); + QSBNetworkServer.Destroy(base.gameObject); } } @@ -234,7 +233,7 @@ internal void OnStartServer(bool allowNonZeroNetId) } if (QSBNetworkClient.active && QSBNetworkServer.localClientActive) { - QSBClientScene.SetLocalObject(NetId, gameObject); + QSBClientScene.SetLocalObject(NetId, base.gameObject); OnStartClient(); } if (HasAuthority) @@ -254,7 +253,7 @@ internal void OnStartClient() Debug.Log(string.Concat(new object[] { "OnStartClient ", - gameObject, + base.gameObject, " GUID:", NetId, " localPlayerAuthority:", @@ -356,7 +355,7 @@ internal void HandleClientAuthority(bool authority) { if (!LocalPlayerAuthority) { - Debug.LogError("HandleClientAuthority " + gameObject + " does not have localPlayerAuthority"); + Debug.LogError("HandleClientAuthority " + base.gameObject + " does not have localPlayerAuthority"); } else { @@ -385,7 +384,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh "Found no behaviour for incoming [", cmdHashHandlerName, "] on ", - gameObject, + base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -403,7 +402,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) { - if (gameObject == null) + if (base.gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -423,7 +422,7 @@ internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - gameObject, + base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -449,7 +448,7 @@ internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) { - if (gameObject == null) + if (base.gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -469,7 +468,7 @@ internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - gameObject, + base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -495,7 +494,7 @@ internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) internal void HandleCommand(int cmdHash, QSBNetworkReader reader) { - if (gameObject == null) + if (base.gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -515,7 +514,7 @@ internal void HandleCommand(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - gameObject, + base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -541,7 +540,7 @@ internal void HandleCommand(int cmdHash, QSBNetworkReader reader) internal void HandleRPC(int cmdHash, QSBNetworkReader reader) { - if (gameObject == null) + if (base.gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -561,7 +560,7 @@ internal void HandleRPC(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - gameObject, + base.gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -628,7 +627,7 @@ internal void UNetUpdate() Debug.LogWarning(string.Concat(new object[] { "Large state update of ", - s_UpdateWriter.Position - position, + (int)(s_UpdateWriter.Position - position), " bytes for netId:", NetId, " from script:", @@ -640,7 +639,7 @@ internal void UNetUpdate() if (flag) { s_UpdateWriter.FinishMessage(); - QSBNetworkServer.SendWriterToReady(gameObject, s_UpdateWriter, j); + QSBNetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); } } IL_197: @@ -655,7 +654,7 @@ internal void OnUpdateVars(QSBNetworkReader reader, bool initialState) { if (initialState && m_NetworkBehaviours == null) { - m_NetworkBehaviours = GetComponents(); + m_NetworkBehaviours = base.GetComponents(); } for (var i = 0; i < m_NetworkBehaviours.Length; i++) { @@ -669,7 +668,7 @@ internal void SetLocalPlayer(short localPlayerControllerId) ModConsole.OwmlConsole.WriteLine($"SetLocalPlayer {localPlayerControllerId}"); IsLocalPlayer = true; PlayerControllerId = localPlayerControllerId; - var hasAuthority = HasAuthority; + var hasAuthority = this.HasAuthority; if (LocalPlayerAuthority) { HasAuthority = true; @@ -724,7 +723,7 @@ internal void AddObserver(QSBNetworkConnection conn) { if (m_Observers == null) { - Debug.LogError("AddObserver for " + gameObject + " observer list is null"); + Debug.LogError("AddObserver for " + base.gameObject + " observer list is null"); } else if (m_ObserverConnections.Contains(conn.connectionId)) { @@ -733,7 +732,7 @@ internal void AddObserver(QSBNetworkConnection conn) "Duplicate observer ", conn.address, " added for ", - gameObject + base.gameObject })); } else @@ -743,7 +742,7 @@ internal void AddObserver(QSBNetworkConnection conn) "Added observer ", conn.address, " added for ", - gameObject + base.gameObject })); m_Observers.Add(conn); m_ObserverConnections.Add(conn.connectionId); @@ -813,7 +812,7 @@ public void RebuildObservers(bool initialize) Debug.LogWarning(string.Concat(new object[] { "Observer is not ready for ", - gameObject, + base.gameObject, " ", networkConnection3 })); @@ -824,7 +823,7 @@ public void RebuildObservers(bool initialize) Debug.Log(string.Concat(new object[] { "New Observer for ", - gameObject, + base.gameObject, " ", networkConnection3 })); @@ -840,7 +839,7 @@ public void RebuildObservers(bool initialize) Debug.Log(string.Concat(new object[] { "Removed Observer for ", - gameObject, + base.gameObject, " ", networkConnection4 })); @@ -884,12 +883,12 @@ public bool RemoveClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner == null) { - Debug.LogError("RemoveClientAuthority for " + gameObject + " has no clientAuthority owner."); + Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has no clientAuthority owner."); return false; } else if (ClientAuthorityOwner != conn) { - Debug.LogError("RemoveClientAuthority for " + gameObject + " has different owner."); + Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has different owner."); return false; } ClientAuthorityOwner.RemoveOwnedObject(this); @@ -918,12 +917,12 @@ public bool AssignClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) { - ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + gameObject + " already has an owner. Use RemoveClientAuthority() first."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); return false; } else if (conn == null) { - ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); return false; } ClientAuthorityOwner = conn; diff --git a/QuantumUNET/Components/QSBNetworkManagerHUD.cs b/QuantumUNET/Components/QSBNetworkManagerHUD.cs index a59376a2f..6541f612c 100644 --- a/QuantumUNET/Components/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/Components/QSBNetworkManagerHUD.cs @@ -9,7 +9,10 @@ public class QSBNetworkManagerHUD : MonoBehaviour public int offsetX; public int offsetY; - private void Awake() => manager = GetComponent(); + private void Awake() + { + manager = GetComponent(); + } private void OnGUI() { diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index c0ecca70f..2e6899da2 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -31,6 +31,7 @@ public class QSBNetworkManagerUNET : MonoBehaviour public float packetLossPercentage { get; set; } public float maxDelay { get; set; } = 0.01f; public GameObject playerPrefab { get; set; } + public PlayerSpawnMethod playerSpawnMethod { get; set; } public List spawnPrefabs { get; } = new List(); public QSBNetworkClient client; public int maxConnections { get; set; } = 4; @@ -40,6 +41,8 @@ public class QSBNetworkManagerUNET : MonoBehaviour private GlobalConfig m_GlobalConfig; private int m_MaxBufferedPackets = 16; private bool m_AllowFragmentation = true; + private static List s_StartPositions = new List(); + private static int s_StartPositionIndex; private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); @@ -47,6 +50,14 @@ public class QSBNetworkManagerUNET : MonoBehaviour private static QSBNetworkConnection s_ClientReadyConnection; private static string s_Address; + public List startPositions + { + get + { + return s_StartPositions; + } + } + public bool customConfig { get; set; } public ConnectionConfig connectionConfig @@ -96,7 +107,10 @@ public int numPlayers } } - public void Awake() => InitializeSingleton(); + private void Awake() + { + InitializeSingleton(); + } private void InitializeSingleton() { @@ -107,14 +121,14 @@ private void InitializeSingleton() if (singleton != null) { Debug.Log("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used."); - Destroy(gameObject); + Destroy(base.gameObject); return; } Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)"); singleton = this; if (Application.isPlaying) { - DontDestroyOnLoad(gameObject); + DontDestroyOnLoad(base.gameObject); } } else @@ -143,7 +157,10 @@ internal void RegisterServerMessages() QSBNetworkServer.RegisterHandler(QSBMsgType.Error, new QSBNetworkMessageDelegate(OnServerErrorInternal)); } - public bool StartServer() => StartServer(null, -1); + public bool StartServer() + { + return StartServer(null, -1); + } private bool StartServer(ConnectionConfig config, int maxConnections) { @@ -176,17 +193,26 @@ private bool StartServer(ConnectionConfig config, int maxConnections) { if (!QSBNetworkServer.Listen(serverBindAddress, networkPort)) { - Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); + if (LogFilter.logError) + { + Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); + } return false; } } else if (!QSBNetworkServer.Listen(networkPort)) { - Debug.LogError("StartServer listen failed."); + if (LogFilter.logError) + { + Debug.LogError("StartServer listen failed."); + } return false; } RegisterServerMessages(); - Debug.Log("NetworkManager StartServer port:" + networkPort); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StartServer port:" + networkPort); + } isNetworkActive = true; var name = SceneManager.GetSceneAt(0).name; if (!string.IsNullOrEmpty(onlineScene) && onlineScene != name && onlineScene != offlineScene) @@ -313,9 +339,15 @@ public QSBNetworkClient StartClient(ConnectionConfig config, int hostPort) return client; } - public QSBNetworkClient StartClient() => StartClient(null); + public QSBNetworkClient StartClient() + { + return StartClient(null); + } - public QSBNetworkClient StartClient(ConnectionConfig config) => StartClient(config, 0); + public QSBNetworkClient StartClient(ConnectionConfig config) + { + return StartClient(config, 0); + } public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnections) { @@ -354,7 +386,10 @@ public virtual QSBNetworkClient StartHost() private QSBNetworkClient ConnectLocalClient() { - Debug.Log("NetworkManager StartHost port:" + networkPort); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StartHost port:" + networkPort); + } networkAddress = "localhost"; client = QSBClientScene.ConnectLocalServer(); RegisterClientMessages(client); @@ -373,7 +408,10 @@ public void StopServer() if (QSBNetworkServer.active) { OnStopServer(); - Debug.Log("NetworkManager StopServer"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StopServer"); + } isNetworkActive = false; QSBNetworkServer.Shutdown(); if (!string.IsNullOrEmpty(offlineScene)) @@ -387,7 +425,10 @@ public void StopServer() public void StopClient() { OnStopClient(); - Debug.Log("NetworkManager StopClient"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager StopClient"); + } isNetworkActive = false; if (client != null) { @@ -407,16 +448,24 @@ public virtual void ServerChangeScene(string newSceneName) { if (string.IsNullOrEmpty(newSceneName)) { - Debug.LogError("ServerChangeScene empty scene name"); + if (LogFilter.logError) + { + Debug.LogError("ServerChangeScene empty scene name"); + } } else { - Debug.Log("ServerChangeScene " + newSceneName); + if (LogFilter.logDebug) + { + Debug.Log("ServerChangeScene " + newSceneName); + } QSBNetworkServer.SetAllClientsNotReady(); networkSceneName = newSceneName; s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); var msg = new QSBStringMessage(networkSceneName); QSBNetworkServer.SendToAll(39, msg); + s_StartPositionIndex = 0; + s_StartPositions.Clear(); } } @@ -432,11 +481,17 @@ internal void ClientChangeScene(string newSceneName, bool forceReload) { if (string.IsNullOrEmpty(newSceneName)) { - Debug.LogError("ClientChangeScene empty scene name"); + if (LogFilter.logError) + { + Debug.LogError("ClientChangeScene empty scene name"); + } } else { - Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); + if (LogFilter.logDebug) + { + Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); + } if (newSceneName == networkSceneName) { if (!forceReload) @@ -494,12 +549,47 @@ internal static void UpdateScene() } } - public bool IsClientConnected() => client != null && client.isConnected; + public static void RegisterStartPosition(Transform start) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "RegisterStartPosition: (", + start.gameObject.name, + ") ", + start.position + })); + } + s_StartPositions.Add(start); + } + + public static void UnRegisterStartPosition(Transform start) + { + if (LogFilter.logDebug) + { + Debug.Log(string.Concat(new object[] + { + "UnRegisterStartPosition: (", + start.gameObject.name, + ") ", + start.position + })); + } + s_StartPositions.Remove(start); + } + + public bool IsClientConnected() + { + return client != null && client.isConnected; + } public static void Shutdown() { if (!(singleton == null)) { + s_StartPositions.Clear(); + s_StartPositionIndex = 0; s_ClientReadyConnection = null; singleton.StopHost(); singleton = null; @@ -508,7 +598,10 @@ public static void Shutdown() internal void OnServerConnectInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnServerConnectInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerConnectInternal"); + } netMsg.Connection.SetMaxDelay(maxDelay); if (m_MaxBufferedPackets != 512) { @@ -534,19 +627,28 @@ internal void OnServerConnectInternal(QSBNetworkMessage netMsg) internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnServerDisconnectInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerDisconnectInternal"); + } OnServerDisconnect(netMsg.Connection); } internal void OnServerReadyMessageInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnServerReadyMessageInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerReadyMessageInternal"); + } OnServerReady(netMsg.Connection); } internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); + } netMsg.ReadMessage(s_AddPlayerMessage); if (s_AddPlayerMessage.msgSize != 0) { @@ -561,7 +663,10 @@ internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); + } netMsg.ReadMessage(s_RemovePlayerMessage); netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var player); OnServerRemovePlayer(netMsg.Connection, player); @@ -570,14 +675,20 @@ internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) internal void OnServerErrorInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnServerErrorInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnServerErrorInternal"); + } netMsg.ReadMessage(s_ErrorMessage); OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientConnectInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnClientConnectInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientConnectInternal"); + } netMsg.Connection.SetMaxDelay(maxDelay); var name = SceneManager.GetSceneAt(0).name; if (string.IsNullOrEmpty(onlineScene) || onlineScene == offlineScene || name == onlineScene) @@ -593,7 +704,10 @@ internal void OnClientConnectInternal(QSBNetworkMessage netMsg) internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnClientDisconnectInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientDisconnectInternal"); + } if (!string.IsNullOrEmpty(offlineScene)) { ClientChangeScene(offlineScene, false); @@ -603,21 +717,30 @@ internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) internal void OnClientNotReadyMessageInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); + } QSBClientScene.SetNotReady(); OnClientNotReady(netMsg.Connection); } internal void OnClientErrorInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnClientErrorInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientErrorInternal"); + } netMsg.ReadMessage(s_ErrorMessage); OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientSceneInternal(QSBNetworkMessage netMsg) { - Debug.Log("NetworkManager:OnClientSceneInternal"); + if (LogFilter.logDebug) + { + Debug.Log("NetworkManager:OnClientSceneInternal"); + } var newSceneName = netMsg.Reader.ReadString(); if (IsClientConnected() && !QSBNetworkServer.active) { @@ -634,7 +757,10 @@ public virtual void OnServerDisconnect(QSBNetworkConnection conn) QSBNetworkServer.DestroyPlayersForConnection(conn); if (conn.LastError != NetworkError.Ok) { - Debug.LogError("ServerDisconnected due to error: " + conn.LastError); + if (LogFilter.logError) + { + Debug.LogError("ServerDisconnected due to error: " + conn.LastError); + } } } @@ -642,36 +768,98 @@ public virtual void OnServerReady(QSBNetworkConnection conn) { if (conn.PlayerControllers.Count == 0) { - Debug.Log("Ready with no player object"); + if (LogFilter.logDebug) + { + Debug.Log("Ready with no player object"); + } } QSBNetworkServer.SetClientReady(conn); } - public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) => OnServerAddPlayerInternal(conn, playerControllerId); + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) + { + OnServerAddPlayerInternal(conn, playerControllerId); + } - public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) => OnServerAddPlayerInternal(conn, playerControllerId); + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) + { + OnServerAddPlayerInternal(conn, playerControllerId); + } private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerControllerId) { if (playerPrefab == null) { - ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); + if (LogFilter.logError) + { + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); + } } else if (playerPrefab.GetComponent() == null) { - ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); + if (LogFilter.logError) + { + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); + } } else if (playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[playerControllerId].IsValid && conn.PlayerControllers[playerControllerId].Gameobject != null) { - ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); + if (LogFilter.logError) + { + ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); + } } else { - var player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); + var startPosition = GetStartPosition(); + GameObject player; + if (startPosition != null) + { + player = Instantiate(playerPrefab, startPosition.position, startPosition.rotation); + } + else + { + player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); + } QSBNetworkServer.AddPlayerForConnection(conn, player, playerControllerId); } } + public Transform GetStartPosition() + { + if (s_StartPositions.Count > 0) + { + for (var i = s_StartPositions.Count - 1; i >= 0; i--) + { + if (s_StartPositions[i] == null) + { + s_StartPositions.RemoveAt(i); + } + } + } + Transform result; + if (playerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0) + { + var index = UnityEngine.Random.Range(0, s_StartPositions.Count); + result = s_StartPositions[index]; + } + else if (playerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0) + { + if (s_StartPositionIndex >= s_StartPositions.Count) + { + s_StartPositionIndex = 0; + } + var transform = s_StartPositions[s_StartPositionIndex]; + s_StartPositionIndex++; + result = transform; + } + else + { + result = null; + } + return result; + } + public virtual void OnServerRemovePlayer(QSBNetworkConnection conn, QSBPlayerController player) { if (player.Gameobject != null) @@ -705,7 +893,10 @@ public virtual void OnClientDisconnect(QSBNetworkConnection conn) StopClient(); if (conn.LastError != NetworkError.Ok) { - Debug.LogError("ClientDisconnected due to error: " + conn.LastError); + if (LogFilter.logError) + { + Debug.LogError("ClientDisconnected due to error: " + conn.LastError); + } } } diff --git a/QuantumUNET/Components/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs index 7c9b7aac4..66de6f112 100644 --- a/QuantumUNET/Components/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -1,6 +1,5 @@ using OWML.Logging; using QuantumUNET.Messages; -using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -9,22 +8,86 @@ namespace QuantumUNET.Components public class QSBNetworkTransform : QSBNetworkBehaviour { public float SendInterval { get; set; } = 0.1f; + public AxisSyncMode SyncRotationAxis { get; set; } = AxisSyncMode.AxisXYZ; + public CompressionSyncMode RotationSyncCompression { get; set; } = CompressionSyncMode.None; + public bool SyncSpin { get; set; } + public float MovementTheshold { get; set; } = 0.001f; + public float velocityThreshold { get; set; } = 0.0001f; + public float SnapThreshold { get; set; } = 5f; + public float InterpolateRotation { get; set; } = 1f; + public float InterpolateMovement { get; set; } = 1f; + public ClientMoveCallback3D clientMoveCallback3D { get; set; } + public float LastSyncTime { get; private set; } - public Vector3 TargetSyncPosition => m_TargetSyncPosition; - public Vector3 targetSyncVelocity => m_TargetSyncVelocity; - public Quaternion targetSyncRotation3D => m_TargetSyncRotation3D; + + public Vector3 TargetSyncPosition + { + get + { + return m_TargetSyncPosition; + } + } + + public Vector3 targetSyncVelocity + { + get + { + return m_TargetSyncVelocity; + } + } + + public Quaternion targetSyncRotation3D + { + get + { + return m_TargetSyncRotation3D; + } + } + public bool Grounded { get; set; } = true; - public void Awake() + private void OnValidate() + { + if (SendInterval < 0f) + { + SendInterval = 0f; + } + if (SyncRotationAxis < AxisSyncMode.None || SyncRotationAxis > AxisSyncMode.AxisXYZ) + { + SyncRotationAxis = AxisSyncMode.None; + } + if (MovementTheshold < 0f) + { + MovementTheshold = 0f; + } + if (velocityThreshold < 0f) + { + velocityThreshold = 0f; + } + if (SnapThreshold < 0f) + { + SnapThreshold = 0.01f; + } + if (InterpolateRotation < 0f) + { + InterpolateRotation = 0.01f; + } + if (InterpolateMovement < 0f) + { + InterpolateMovement = 0.01f; + } + } + + private void Awake() { m_PrevPosition = transform.position; m_PrevRotation = transform.rotation; @@ -34,7 +97,10 @@ public void Awake() } } - public override void OnStartServer() => LastSyncTime = 0f; + public override void OnStartServer() + { + LastSyncTime = 0f; + } public override bool OnSerialize(QSBNetworkWriter writer, bool initialState) { @@ -228,7 +294,10 @@ public static void HandleTransform(QSBNetworkMessage netMsg) component.UnserializeModeTransform(netMsg.Reader, false); component.LastSyncTime = Time.time; } - ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + else if (LogFilter.logWarn) + { + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + } } } @@ -267,12 +336,12 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp } else { - result = reader.ReadInt16(); + result = (float)reader.ReadInt16(); } } else { - result = reader.ReadInt16(); + result = (float)reader.ReadInt16(); } } else @@ -282,8 +351,10 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp return result; } - public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) => + public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) + { writer.Write(velocity); + } public static void SerializeRotation3D(QSBNetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) { @@ -363,7 +434,10 @@ public static void SerializeSpin3D(QSBNetworkWriter writer, Vector3 angularVeloc } } - public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) => reader.ReadVector3(); + public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) + { + return reader.ReadVector3(); + } public static Quaternion UnserializeRotation3D(QSBNetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) { @@ -445,11 +519,20 @@ public static Vector3 UnserializeSpin3D(QSBNetworkReader reader, AxisSyncMode mo return zero; } - public override int GetNetworkChannel() => 1; + public override int GetNetworkChannel() + { + return 1; + } - public override float GetNetworkSendInterval() => SendInterval; + public override float GetNetworkSendInterval() + { + return SendInterval; + } - public override void OnStartAuthority() => LastSyncTime = 0f; + public override void OnStartAuthority() + { + LastSyncTime = 0f; + } private Vector3 m_TargetSyncPosition; diff --git a/QuantumUNET/Messages/QSBAddPlayerMessage.cs b/QuantumUNET/Messages/QSBAddPlayerMessage.cs index 48a4c9c26..34d65148a 100644 --- a/QuantumUNET/Messages/QSBAddPlayerMessage.cs +++ b/QuantumUNET/Messages/QSBAddPlayerMessage.cs @@ -1,6 +1,4 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBAddPlayerMessage : QSBMessageBase { @@ -8,12 +6,6 @@ internal class QSBAddPlayerMessage : QSBMessageBase public int msgSize; public byte[] msgData; - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(playerControllerId); - writer.WriteBytesAndSize(msgData, msgSize); - } - public override void Deserialize(QSBNetworkReader reader) { playerControllerId = reader.ReadInt16(); @@ -27,5 +19,11 @@ public override void Deserialize(QSBNetworkReader reader) msgSize = msgData.Length; } } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(playerControllerId); + writer.WriteBytesAndSize(msgData, msgSize); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs index 043da6535..adf8f4737 100644 --- a/QuantumUNET/Messages/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages @@ -10,6 +9,14 @@ internal class QSBAnimationMessage : QSBMessageBase public float normalizedTime; public byte[] parameters; + public override void Deserialize(QSBNetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } + public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); @@ -24,13 +31,5 @@ public override void Serialize(QSBNetworkWriter writer) writer.WriteBytesAndSize(parameters, parameters.Length); } } - - public override void Deserialize(QSBNetworkReader reader) - { - netId = reader.ReadNetworkId(); - stateHash = (int)reader.ReadPackedUInt32(); - normalizedTime = reader.ReadSingle(); - parameters = reader.ReadBytesAndSize(); - } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs index 497d0b983..4b9f19e2f 100644 --- a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages diff --git a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs index b4291beaa..713d2ac45 100644 --- a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages diff --git a/QuantumUNET/Messages/QSBCRCMessage.cs b/QuantumUNET/Messages/QSBCRCMessage.cs index b08480858..df45dd7aa 100644 --- a/QuantumUNET/Messages/QSBCRCMessage.cs +++ b/QuantumUNET/Messages/QSBCRCMessage.cs @@ -1,6 +1,4 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBCRCMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs index d99690e73..860028bb1 100644 --- a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages diff --git a/QuantumUNET/Messages/QSBEmptyMessage.cs b/QuantumUNET/Messages/QSBEmptyMessage.cs index b89526b3c..27dbc7856 100644 --- a/QuantumUNET/Messages/QSBEmptyMessage.cs +++ b/QuantumUNET/Messages/QSBEmptyMessage.cs @@ -1,10 +1,13 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { public class QSBEmptyMessage : QSBMessageBase { - public override void Serialize(QSBNetworkWriter writer) { } - public override void Deserialize(QSBNetworkReader reader) { } + public override void Deserialize(QSBNetworkReader reader) + { + } + + public override void Serialize(QSBNetworkWriter writer) + { + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBErrorMessage.cs b/QuantumUNET/Messages/QSBErrorMessage.cs index 97d7ecafc..3a55c670a 100644 --- a/QuantumUNET/Messages/QSBErrorMessage.cs +++ b/QuantumUNET/Messages/QSBErrorMessage.cs @@ -1,13 +1,17 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { public class QSBErrorMessage : QSBMessageBase { - public int errorCode; + public override void Deserialize(QSBNetworkReader reader) + { + this.errorCode = (int)reader.ReadUInt16(); + } - public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)errorCode); + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write((ushort)this.errorCode); + } - public override void Deserialize(QSBNetworkReader reader) => errorCode = reader.ReadUInt16(); + public int errorCode; } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBMessageBase.cs b/QuantumUNET/Messages/QSBMessageBase.cs index 969dd7324..241af1160 100644 --- a/QuantumUNET/Messages/QSBMessageBase.cs +++ b/QuantumUNET/Messages/QSBMessageBase.cs @@ -1,11 +1,13 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { public abstract class QSBMessageBase { - public virtual void Serialize(QSBNetworkWriter writer) { } + public virtual void Deserialize(QSBNetworkReader reader) + { + } - public virtual void Deserialize(QSBNetworkReader reader) { } + public virtual void Serialize(QSBNetworkWriter writer) + { + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBMsgType.cs b/QuantumUNET/Messages/QSBMsgType.cs index 763aaaff7..724bb9c30 100644 --- a/QuantumUNET/Messages/QSBMsgType.cs +++ b/QuantumUNET/Messages/QSBMsgType.cs @@ -11,7 +11,7 @@ public static string MsgTypeToString(short value) } else { - var text = msgLabels[value]; + string text = msgLabels[(int)value]; if (string.IsNullOrEmpty(text)) { text = "[" + value + "]"; diff --git a/QuantumUNET/Messages/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs index 16ca1065b..f5b68c0df 100644 --- a/QuantumUNET/Messages/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -1,10 +1,10 @@ -using QuantumUNET.Transport; -using System; +using System; namespace QuantumUNET.Messages { public class QSBNetworkMessage { + public const int MaxMessageSize = 65535; public short MsgType; public QSBNetworkConnection Connection; public QSBNetworkReader Reader; @@ -17,7 +17,9 @@ public class QSBNetworkMessage return result; } - public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase => + public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase + { msg.Deserialize(Reader); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 08f74a773..3a2d13c3b 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages @@ -7,8 +6,14 @@ internal class QSBObjectDestroyMessage : QSBMessageBase { public NetworkInstanceId NetId; - public override void Serialize(QSBNetworkWriter writer) => writer.Write(NetId); + public override void Deserialize(QSBNetworkReader reader) + { + NetId = reader.ReadNetworkId(); + } - public override void Deserialize(QSBNetworkReader reader) => NetId = reader.ReadNetworkId(); + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(NetId); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs index 4255bccb4..66f1c1921 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs @@ -1,13 +1,17 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { public uint State; - public override void Serialize(QSBNetworkWriter writer) => writer.WritePackedUInt32(State); + public override void Deserialize(QSBNetworkReader reader) + { + State = reader.ReadPackedUInt32(); + } - public override void Deserialize(QSBNetworkReader reader) => State = reader.ReadPackedUInt32(); + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32(State); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index 3236cc1a6..6c175734e 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -12,15 +11,6 @@ internal class QSBObjectSpawnMessage : QSBMessageBase public byte[] Payload; public Quaternion Rotation; - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - writer.Write(assetId); - writer.Write(Position); - writer.WriteBytesFull(Payload); - writer.Write(Rotation); - } - public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); @@ -32,5 +22,14 @@ public override void Deserialize(QSBNetworkReader reader) Rotation = reader.ReadQuaternion(); } } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(NetId); + writer.Write(assetId); + writer.Write(Position); + writer.WriteBytesFull(Payload); + writer.Write(Rotation); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index 9a8212a90..5d7cf097e 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -11,14 +10,6 @@ internal class QSBObjectSpawnSceneMessage : QSBMessageBase public Vector3 Position; public byte[] Payload; - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - writer.Write(SceneId); - writer.Write(Position); - writer.WriteBytesFull(Payload); - } - public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); @@ -26,5 +17,13 @@ public override void Deserialize(QSBNetworkReader reader) Position = reader.ReadVector3(); Payload = reader.ReadBytesAndSize(); } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(NetId); + writer.Write(SceneId); + writer.Write(Position); + writer.WriteBytesFull(Payload); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs index 944c9d6e8..03cbf7dfb 100644 --- a/QuantumUNET/Messages/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -1,4 +1,3 @@ -using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages @@ -8,16 +7,16 @@ internal class QSBOwnerMessage : QSBMessageBase public NetworkInstanceId NetId; public short PlayerControllerId; - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - writer.WritePackedUInt32((uint)PlayerControllerId); - } - public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); PlayerControllerId = (short)reader.ReadPackedUInt32(); } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(NetId); + writer.WritePackedUInt32((uint)PlayerControllerId); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBPeerInfoMessage.cs b/QuantumUNET/Messages/QSBPeerInfoMessage.cs new file mode 100644 index 000000000..a876df834 --- /dev/null +++ b/QuantumUNET/Messages/QSBPeerInfoMessage.cs @@ -0,0 +1,80 @@ +using System.Collections.Generic; + +namespace QuantumUNET.Messages +{ + public class QSBPeerInfoMessage : QSBMessageBase + { + public override void Deserialize(QSBNetworkReader reader) + { + this.connectionId = (int)reader.ReadPackedUInt32(); + this.address = reader.ReadString(); + this.port = (int)reader.ReadPackedUInt32(); + this.isHost = reader.ReadBoolean(); + this.isYou = reader.ReadBoolean(); + uint num = reader.ReadPackedUInt32(); + if (num > 0U) + { + List list = new List(); + for (uint num2 = 0U; num2 < num; num2 += 1U) + { + QSBPeerInfoPlayer item; + item.netId = reader.ReadNetworkId(); + item.playerControllerId = (short)reader.ReadPackedUInt32(); + list.Add(item); + } + this.playerIds = list.ToArray(); + } + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32((uint)this.connectionId); + writer.Write(this.address); + writer.WritePackedUInt32((uint)this.port); + writer.Write(this.isHost); + writer.Write(this.isYou); + if (this.playerIds == null) + { + writer.WritePackedUInt32(0U); + } + else + { + writer.WritePackedUInt32((uint)this.playerIds.Length); + for (int i = 0; i < this.playerIds.Length; i++) + { + writer.Write(this.playerIds[i].netId); + writer.WritePackedUInt32((uint)this.playerIds[i].playerControllerId); + } + } + } + + public override string ToString() + { + return string.Concat(new object[] + { + "PeerInfo conn:", + this.connectionId, + " addr:", + this.address, + ":", + this.port, + " host:", + this.isHost, + " isYou:", + this.isYou + }); + } + + public int connectionId; + + public string address; + + public int port; + + public bool isHost; + + public bool isYou; + + public QSBPeerInfoPlayer[] playerIds; + } +} \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBReconnectMessage.cs b/QuantumUNET/Messages/QSBReconnectMessage.cs new file mode 100644 index 000000000..f43c20f24 --- /dev/null +++ b/QuantumUNET/Messages/QSBReconnectMessage.cs @@ -0,0 +1,30 @@ +using UnityEngine.Networking; + +namespace QuantumUNET.Messages +{ + public class QSBReconnectMessage : QSBMessageBase + { + public int oldConnectionId; + public short playerControllerId; + public NetworkInstanceId netId; + public int msgSize; + public byte[] msgData; + + public override void Deserialize(QSBNetworkReader reader) + { + oldConnectionId = (int)reader.ReadPackedUInt32(); + playerControllerId = (short)reader.ReadPackedUInt32(); + netId = reader.ReadNetworkId(); + msgData = reader.ReadBytesAndSize(); + msgSize = msgData.Length; + } + + public override void Serialize(QSBNetworkWriter writer) + { + writer.WritePackedUInt32((uint)oldConnectionId); + writer.WritePackedUInt32((uint)playerControllerId); + writer.Write(netId); + writer.WriteBytesAndSize(msgData, msgSize); + } + } +} \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs index 7bebaef33..59d1d3075 100644 --- a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs @@ -1,13 +1,17 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { public class QSBRemovePlayerMessage : QSBMessageBase { public short PlayerControllerId; - public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)PlayerControllerId); + public override void Deserialize(QSBNetworkReader reader) + { + PlayerControllerId = (short)reader.ReadUInt16(); + } - public override void Deserialize(QSBNetworkReader reader) => PlayerControllerId = (short)reader.ReadUInt16(); + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write((ushort)PlayerControllerId); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBSpawnDelegate.cs b/QuantumUNET/Messages/QSBSpawnDelegate.cs deleted file mode 100644 index 010d8e401..000000000 --- a/QuantumUNET/Messages/QSBSpawnDelegate.cs +++ /dev/null @@ -1,7 +0,0 @@ -using UnityEngine; -using UnityEngine.Networking; - -namespace QuantumUNET -{ - public delegate GameObject QSBSpawnDelegate(Vector3 position, NetworkHash128 assetId); -} diff --git a/QuantumUNET/Messages/QSBStringMessage.cs b/QuantumUNET/Messages/QSBStringMessage.cs index 7e52a4e9d..74dd198d0 100644 --- a/QuantumUNET/Messages/QSBStringMessage.cs +++ b/QuantumUNET/Messages/QSBStringMessage.cs @@ -1,18 +1,26 @@ -using QuantumUNET.Transport; - -namespace QuantumUNET.Messages +namespace QuantumUNET.Messages { public class QSBStringMessage : QSBMessageBase { - public string value; + public QSBStringMessage() + { + } public QSBStringMessage(string v) { - value = v; + this.value = v; + } + + public override void Deserialize(QSBNetworkReader reader) + { + this.value = reader.ReadString(); } - public override void Serialize(QSBNetworkWriter writer) => writer.Write(value); + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(this.value); + } - public override void Deserialize(QSBNetworkReader reader) => value = reader.ReadString(); + public string value; } } \ No newline at end of file diff --git a/QuantumUNET/Transport/QSBChannelBuffer.cs b/QuantumUNET/QSBChannelBuffer.cs similarity index 87% rename from QuantumUNET/Transport/QSBChannelBuffer.cs rename to QuantumUNET/QSBChannelBuffer.cs index f20095ee4..5f6d610fc 100644 --- a/QuantumUNET/Transport/QSBChannelBuffer.cs +++ b/QuantumUNET/QSBChannelBuffer.cs @@ -4,7 +4,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET.Transport +namespace QuantumUNET { internal class QSBChannelBuffer : IDisposable { @@ -99,17 +99,26 @@ public bool SetOption(ChannelOption option, int value) } else if (!_currentPacket.IsEmpty() || _pendingPackets.Count > 0) { - Debug.LogError("Cannot set MaxPacketSize after sending data."); + if (LogFilter.logError) + { + Debug.LogError("Cannot set MaxPacketSize after sending data."); + } result = false; } else if (value <= 0) { - Debug.LogError("Cannot set MaxPacketSize less than one."); + if (LogFilter.logError) + { + Debug.LogError("Cannot set MaxPacketSize less than one."); + } result = false; } else if (value > _maxPacketSize) { - Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); + if (LogFilter.logError) + { + Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); + } result = false; } else @@ -131,13 +140,16 @@ public bool SetOption(ChannelOption option, int value) } else if (value < 0 || value >= 512) { - Debug.LogError(string.Concat(new object[] + if (LogFilter.logError) { + Debug.LogError(string.Concat(new object[] + { "Invalid MaxPendingBuffers for channel ", _channelId, ". Must be greater than zero and less than ", 512 - })); + })); + } result = false; } else @@ -228,12 +240,18 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) bool result; if (bytesToSend >= 65535) { - Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); + if (LogFilter.logError) + { + Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); + } result = false; } else if (bytesToSend <= 0) { - Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); + if (LogFilter.logError) + { + Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); + } result = false; } else if (bytesToSend > _maxPacketSize) @@ -244,15 +262,18 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } else { - Debug.LogError(string.Concat(new object[] + if (LogFilter.logError) { + Debug.LogError(string.Concat(new object[] + { "Failed to send big message of ", bytesToSend, " bytes. The maximum is ", _maxPacketSize, " bytes on channel:", _channelId - })); + })); + } result = false; } } @@ -273,7 +294,10 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) { if (!_isBroken) { - Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); + if (LogFilter.logError) + { + Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); + } } _isBroken = true; result = false; @@ -287,7 +311,10 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } else if (!_currentPacket.SendToTransport(_connection, _channelId)) { - Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); + if (LogFilter.logError) + { + Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); + } result = false; } else @@ -353,7 +380,10 @@ public bool SendInternalBuffer() FreePacket(channelPacket); if (_isBroken && _pendingPackets.Count < _maxPendingPacketCount / 2) { - Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); + if (LogFilter.logWarn) + { + Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); + } _isBroken = false; } } diff --git a/QuantumUNET/QSBChannelPacket.cs b/QuantumUNET/QSBChannelPacket.cs new file mode 100644 index 000000000..f6001ad63 --- /dev/null +++ b/QuantumUNET/QSBChannelPacket.cs @@ -0,0 +1,82 @@ +using System; +using UnityEngine; +using UnityEngine.Networking; + +namespace QuantumUNET +{ + internal struct QSBChannelPacket + { + public QSBChannelPacket(int packetSize, bool isReliable) + { + this.m_Position = 0; + this.m_Buffer = new byte[packetSize]; + this.m_IsReliable = isReliable; + } + + public void Reset() + { + this.m_Position = 0; + } + + public bool IsEmpty() + { + return this.m_Position == 0; + } + + public void Write(byte[] bytes, int numBytes) + { + Array.Copy(bytes, 0, this.m_Buffer, this.m_Position, numBytes); + this.m_Position += numBytes; + } + + public bool HasSpace(int numBytes) + { + return this.m_Position + numBytes <= this.m_Buffer.Length; + } + + public bool SendToTransport(QSBNetworkConnection conn, int channelId) + { + bool result = true; + byte b; + if (!conn.TransportSend(this.m_Buffer, (int)((ushort)this.m_Position), channelId, out b)) + { + if (!this.m_IsReliable || b != 4) + { + Debug.LogError(string.Concat(new object[] + { + "Failed to send internal buffer channel:", + channelId, + " bytesToSend:", + this.m_Position + })); + result = false; + } + } + if (b != 0) + { + if (this.m_IsReliable && b == 4) + { + return false; + } + Debug.LogError(string.Concat(new object[] + { + "Send Error: ", + (NetworkError)b, + " channel:", + channelId, + " bytesToSend:", + this.m_Position + })); + result = false; + } + this.m_Position = 0; + return result; + } + + private int m_Position; + + private byte[] m_Buffer; + + private bool m_IsReliable; + } +} \ No newline at end of file diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 4c4234066..0973f254c 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,6 +1,5 @@ using QuantumUNET.Components; using QuantumUNET.Messages; -using QuantumUNET.Transport; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; @@ -9,6 +8,18 @@ namespace QuantumUNET { public class QSBClientScene { + private static bool HasMigrationPending() => reconnectId != -1; + + public static void SetReconnectId(int newReconnectId, QSBPeerInfoMessage[] peers) + { + reconnectId = newReconnectId; + s_Peers = peers; + if (LogFilter.logDebug) + { + Debug.Log("ClientScene::SetReconnectId: " + newReconnectId); + } + } + internal static void SetNotReady() => ready = false; public static List localPlayers { get; private set; } = new List(); @@ -43,7 +54,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer { player = null; bool result; - if (playerControllerId >= localPlayers.Count) + if ((int)playerControllerId >= localPlayers.Count) { if (LogFilter.logWarn) { @@ -51,7 +62,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer } result = false; } - else if (localPlayers[playerControllerId] == null) + else if (localPlayers[(int)playerControllerId] == null) { if (LogFilter.logWarn) { @@ -61,7 +72,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer } else { - player = localPlayers[playerControllerId]; + player = localPlayers[(int)playerControllerId]; result = (player.Gameobject != null); } return result; @@ -73,13 +84,13 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont { Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId); } - if (playerControllerId >= localPlayers.Count) + if ((int)playerControllerId >= localPlayers.Count) { if (LogFilter.logWarn) { Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId); } - while (playerControllerId >= localPlayers.Count) + while ((int)playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); } @@ -90,7 +101,7 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont PlayerControllerId = playerControllerId, UnetView = view }; - localPlayers[playerControllerId] = playerController; + localPlayers[(int)playerControllerId] = playerController; readyConnection.SetPlayerController(playerController); } @@ -103,18 +114,24 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl bool result; if (playerControllerId < 0) { - Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); + if (LogFilter.logError) + { + Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); + } result = false; } else if (playerControllerId > 32) { - Debug.LogError(string.Concat(new object[] + if (LogFilter.logError) { + Debug.LogError(string.Concat(new object[] + { "ClientScene::AddPlayer: playerControllerId of ", playerControllerId, " is too high, max is ", 32 - })); + })); + } result = false; } else @@ -126,7 +143,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); } } - while (playerControllerId >= localPlayers.Count) + while ((int)playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); } @@ -177,7 +194,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl var networkWriter = new QSBNetworkWriter(); extraMessage.Serialize(networkWriter); addPlayerMessage.msgData = networkWriter.ToArray(); - addPlayerMessage.msgSize = networkWriter.Position; + addPlayerMessage.msgSize = (int)networkWriter.Position; } readyConnection.Send(37, addPlayerMessage); result = true; @@ -207,8 +224,8 @@ public static bool RemovePlayer(short playerControllerId) }; readyConnection.Send(38, removePlayerMessage); readyConnection.RemovePlayerController(playerControllerId); - localPlayers[playerControllerId] = new QSBPlayerController(); - Object.Destroy(playerController.Gameobject); + localPlayers[(int)playerControllerId] = new QSBPlayerController(); + UnityEngine.Object.Destroy(playerController.Gameobject); result = true; } else @@ -329,29 +346,29 @@ internal static void RegisterSystemHandlers(QSBNetworkClient client, bool localC { if (localClient) { - client.RegisterHandlerSafe(1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); - client.RegisterHandlerSafe(13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); - client.RegisterHandlerSafe(3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); - client.RegisterHandlerSafe(10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); - client.RegisterHandlerSafe(15, new QSBNetworkMessageDelegate(OnClientAuthority)); + client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); + client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); + client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); + client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); + client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); } else { - client.RegisterHandlerSafe(3, new QSBNetworkMessageDelegate(OnObjectSpawn)); - client.RegisterHandlerSafe(10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); - client.RegisterHandlerSafe(12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); - client.RegisterHandlerSafe(1, new QSBNetworkMessageDelegate(OnObjectDestroy)); - client.RegisterHandlerSafe(13, new QSBNetworkMessageDelegate(OnObjectDestroy)); - client.RegisterHandlerSafe(8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); - client.RegisterHandlerSafe(4, new QSBNetworkMessageDelegate(OnOwnerMessage)); - client.RegisterHandlerSafe(9, new QSBNetworkMessageDelegate(OnSyncListMessage)); - client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); - client.RegisterHandlerSafe(15, new QSBNetworkMessageDelegate(OnClientAuthority)); - } - client.RegisterHandlerSafe(2, new QSBNetworkMessageDelegate(OnRPCMessage)); - client.RegisterHandlerSafe(7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); - client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnObjectSpawn)); + client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); + client.RegisterHandlerSafe((short)12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); + client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe((short)8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); + client.RegisterHandlerSafe((short)4, new QSBNetworkMessageDelegate(OnOwnerMessage)); + client.RegisterHandlerSafe((short)9, new QSBNetworkMessageDelegate(OnSyncListMessage)); + client.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + client.RegisterHandlerSafe((short)41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); + } + client.RegisterHandlerSafe((short)2, new QSBNetworkMessageDelegate(OnRPCMessage)); + client.RegisterHandlerSafe((short)7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); + client.RegisterHandlerSafe((short)42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); } internal static string GetStringForAssetId(NetworkHash128 assetId) @@ -376,11 +393,11 @@ internal static string GetStringForAssetId(NetworkHash128 assetId) public static void RegisterPrefab(GameObject prefab) => QSBNetworkScene.RegisterPrefab(prefab); - public static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); + public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); public static void UnregisterPrefab(GameObject prefab) => QSBNetworkScene.UnregisterPrefab(prefab); - public static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); + public static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); public static void UnregisterSpawnHandler(NetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); @@ -432,7 +449,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) } else if (QSBNetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out var original)) { - var gameObject = Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); + GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); component = gameObject.GetComponent(); if (component == null) { @@ -555,7 +572,7 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) { if (networkIdentity.SceneId.IsEmpty()) { - Object.Destroy(networkIdentity.gameObject); + UnityEngine.Object.Destroy(networkIdentity.gameObject); } else { @@ -646,7 +663,7 @@ private static void OnRPCMessage(QSBNetworkMessage netMsg) } else if (LogFilter.logWarn) { - var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); + string cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", new object[] { networkInstanceId, @@ -794,6 +811,8 @@ private static void CheckForOwner(QSBNetworkIdentity uv) public const int ReconnectIdHost = 0; + private static QSBPeerInfoMessage[] s_Peers; + private static List s_PendingOwnerIds = new List(); private struct PendingOwner diff --git a/QuantumUNET/QSBLocalClient.cs b/QuantumUNET/QSBLocalClient.cs index 42142c059..ce65e1230 100644 --- a/QuantumUNET/QSBLocalClient.cs +++ b/QuantumUNET/QSBLocalClient.cs @@ -1,5 +1,4 @@ using QuantumUNET.Messages; -using QuantumUNET.Transport; using System.Collections.Generic; using UnityEngine; @@ -15,7 +14,7 @@ public override void Disconnect() PostInternalMessage(33); m_Connected = false; } - m_AsyncConnect = ConnectState.Disconnected; + m_AsyncConnect = QSBNetworkClient.ConnectState.Disconnected; m_LocalServer.RemoveLocalClient(m_Connection); } @@ -32,11 +31,11 @@ internal void InternalConnectLocalServer(bool generateConnectMsg) } m_LocalServer = QSBNetworkServer.instance; m_Connection = new QSBULocalConnectionToServer(m_LocalServer); - SetHandlers(m_Connection); + base.SetHandlers(m_Connection); m_Connection.connectionId = m_LocalServer.AddLocalClient(this); - m_AsyncConnect = ConnectState.Connected; - SetActive(true); - RegisterSystemHandlers(true); + m_AsyncConnect = QSBNetworkClient.ConnectState.Connected; + QSBNetworkClient.SetActive(true); + base.RegisterSystemHandlers(true); if (generateConnectMsg) { PostInternalMessage(32); @@ -109,11 +108,11 @@ private void ProcessInternalMessages() } s_InternalMessage.Reader.ReadInt16(); s_InternalMessage.ChannelId = t.channelId; - s_InternalMessage.Connection = connection; + s_InternalMessage.Connection = base.connection; s_InternalMessage.MsgType = s_InternalMessage.Reader.ReadInt16(); m_Connection.InvokeHandler(s_InternalMessage); m_FreeMessages.Push(t); - connection.lastMessageTime = Time.time; + base.connection.lastMessageTime = Time.time; } m_InternalMsgs = internalMsgs; m_InternalMsgs.Clear(); diff --git a/QuantumUNET/QSBNetBuffer.cs b/QuantumUNET/QSBNetBuffer.cs new file mode 100644 index 000000000..8f879800a --- /dev/null +++ b/QuantumUNET/QSBNetBuffer.cs @@ -0,0 +1,198 @@ +using System; +using UnityEngine; + +namespace QuantumUNET +{ + internal class QSBNetBuffer + { + public QSBNetBuffer() + { + m_Buffer = new byte[64]; + } + + public QSBNetBuffer(byte[] buffer) + { + m_Buffer = buffer; + } + + public uint Position + { + get + { + return m_Pos; + } + } + + public int Length + { + get + { + return m_Buffer.Length; + } + } + + public byte ReadByte() + { + if ((ulong)m_Pos >= (ulong)((long)m_Buffer.Length)) + { + throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + ToString()); + } + return m_Buffer[(int)((UIntPtr)(m_Pos++))]; + } + + public void ReadBytes(byte[] buffer, uint count) + { + if ((ulong)(m_Pos + count) > (ulong)((long)m_Buffer.Length)) + { + throw new IndexOutOfRangeException(string.Concat(new object[] + { + "NetworkReader:ReadBytes out of range: (", + count, + ") ", + ToString() + })); + } + ushort num = 0; + while ((uint)num < count) + { + buffer[(int)num] = m_Buffer[(int)((UIntPtr)(m_Pos + (uint)num))]; + num += 1; + } + m_Pos += count; + } + + internal ArraySegment AsArraySegment() + { + return new ArraySegment(m_Buffer, 0, (int)m_Pos); + } + + public void WriteByte(byte value) + { + WriteCheckForSpace(1); + m_Buffer[(int)((UIntPtr)m_Pos)] = value; + m_Pos += 1U; + } + + public void WriteByte2(byte value0, byte value1) + { + WriteCheckForSpace(2); + m_Buffer[(int)((UIntPtr)m_Pos)] = value0; + m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; + m_Pos += 2U; + } + + public void WriteByte4(byte value0, byte value1, byte value2, byte value3) + { + WriteCheckForSpace(4); + m_Buffer[(int)((UIntPtr)m_Pos)] = value0; + m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; + m_Pos += 4U; + } + + public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7) + { + WriteCheckForSpace(8); + m_Buffer[(int)((UIntPtr)m_Pos)] = value0; + m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; + m_Buffer[(int)((UIntPtr)(m_Pos + 4U))] = value4; + m_Buffer[(int)((UIntPtr)(m_Pos + 5U))] = value5; + m_Buffer[(int)((UIntPtr)(m_Pos + 6U))] = value6; + m_Buffer[(int)((UIntPtr)(m_Pos + 7U))] = value7; + m_Pos += 8U; + } + + public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count) + { + uint num = (uint)(count + targetOffset); + WriteCheckForSpace((ushort)num); + if (targetOffset == 0 && (int)count == buffer.Length) + { + buffer.CopyTo(m_Buffer, (int)m_Pos); + } + else + { + for (int i = 0; i < (int)count; i++) + { + m_Buffer[(int)targetOffset + i] = buffer[i]; + } + } + if (num > m_Pos) + { + m_Pos = num; + } + } + + public void WriteBytes(byte[] buffer, ushort count) + { + WriteCheckForSpace(count); + if ((int)count == buffer.Length) + { + buffer.CopyTo(m_Buffer, (int)m_Pos); + } + else + { + for (int i = 0; i < (int)count; i++) + { + m_Buffer[(int)(checked((IntPtr)(unchecked((ulong)m_Pos + (ulong)((long)i)))))] = buffer[i]; + } + } + m_Pos += (uint)count; + } + + private void WriteCheckForSpace(ushort count) + { + if ((ulong)(m_Pos + (uint)count) >= (ulong)((long)m_Buffer.Length)) + { + int num = (int)Math.Ceiling((double)((float)m_Buffer.Length * 1.5f)); + while ((ulong)(m_Pos + (uint)count) >= (ulong)((long)num)) + { + num = (int)Math.Ceiling((double)((float)num * 1.5f)); + if (num > 134217728) + { + Debug.LogWarning("NetworkBuffer size is " + num + " bytes!"); + } + } + byte[] array = new byte[num]; + m_Buffer.CopyTo(array, 0); + m_Buffer = array; + } + } + + public void FinishMessage() + { + ushort num = (ushort)(m_Pos - 4U); + m_Buffer[0] = (byte)(num & 255); + m_Buffer[1] = (byte)(num >> 8 & 255); + } + + public void SeekZero() + { + m_Pos = 0U; + } + + public void Replace(byte[] buffer) + { + m_Buffer = buffer; + m_Pos = 0U; + } + + public override string ToString() + { + return string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, m_Pos); + } + + private byte[] m_Buffer; + + private uint m_Pos; + + private const int k_InitialSize = 64; + + private const float k_GrowthFactor = 1.5f; + + private const int k_BufferSizeWarning = 134217728; + } +} \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 5887c0f1c..202910c1f 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,6 +1,5 @@ using OWML.Logging; using QuantumUNET.Components; -using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Net.Sockets; @@ -78,7 +77,7 @@ protected void SendRPCInternal(QSBNetworkWriter writer, int channelId, string rp } } writer.FinishMessage(); - QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); + QSBNetworkServer.SendWriterToReady(base.gameObject, writer, channelId); } protected void SendTargetRPCInternal(QSBNetworkConnection conn, QSBNetworkWriter writer, int channelId, string rpcName) @@ -435,7 +434,7 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam Debug.Log(string.Concat(new object[] { "SetSyncVar GameObject ", - GetType().Name, + base.GetType().Name, " bit [", dirtyBit, "] netfieldId:", diff --git a/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs index cb8ec27b5..0bf0643f6 100644 --- a/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -1,6 +1,8 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Reflection; using UnityEngine; +using UnityEngine.Networking; namespace QuantumUNET { @@ -18,7 +20,13 @@ internal static QSBNetworkCRC singleton } } - public Dictionary scripts { get; } = new Dictionary(); + public Dictionary scripts + { + get + { + return this.m_Scripts; + } + } public static bool scriptCRCCheck { @@ -34,12 +42,12 @@ public static bool scriptCRCCheck public static void ReinitializeScriptCRCs(Assembly callingAssembly) { - singleton.scripts.Clear(); - foreach (var type in callingAssembly.GetTypes()) + singleton.m_Scripts.Clear(); + foreach (Type type in callingAssembly.GetTypes()) { if (type.GetBaseType() == typeof(QSBNetworkBehaviour)) { - var method = type.GetMethod(".cctor", BindingFlags.Static); + MethodInfo method = type.GetMethod(".cctor", BindingFlags.Static); if (method != null) { method.Invoke(null, new object[0]); @@ -48,58 +56,76 @@ public static void ReinitializeScriptCRCs(Assembly callingAssembly) } } - public static void RegisterBehaviour(string name, int channel) => singleton.scripts[name] = channel; + public static void RegisterBehaviour(string name, int channel) + { + singleton.m_Scripts[name] = channel; + } - internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) => singleton.ValidateInternal(scripts, numChannels); + internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) + { + return singleton.ValidateInternal(scripts, numChannels); + } private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannels) { bool result; - if (scripts.Count != remoteScripts.Length) + if (this.m_Scripts.Count != remoteScripts.Length) { - Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); - Dump(remoteScripts); + if (LogFilter.logWarn) + { + Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); + } + this.Dump(remoteScripts); result = false; } else { - foreach (var crcmessageEntry in remoteScripts) + foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) { - Debug.Log(string.Concat(new object[] + if (LogFilter.logDebug) { - "Script: ", - crcmessageEntry.name, - " Channel: ", - crcmessageEntry.channel - })); - if (scripts.ContainsKey(crcmessageEntry.name)) + Debug.Log(string.Concat(new object[] + { + "Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); + } + if (this.m_Scripts.ContainsKey(crcmessageEntry.name)) { - var num = scripts[crcmessageEntry.name]; - if (num != crcmessageEntry.channel) + int num = this.m_Scripts[crcmessageEntry.name]; + if (num != (int)crcmessageEntry.channel) { - Debug.LogError(string.Concat(new object[] + if (LogFilter.logError) { - "HLAPI CRC Channel Mismatch. Script: ", - crcmessageEntry.name, - " LocalChannel: ", - num, - " RemoteChannel: ", - crcmessageEntry.channel - })); - Dump(remoteScripts); + Debug.LogError(string.Concat(new object[] + { + "HLAPI CRC Channel Mismatch. Script: ", + crcmessageEntry.name, + " LocalChannel: ", + num, + " RemoteChannel: ", + crcmessageEntry.channel + })); + } + this.Dump(remoteScripts); return false; } } - if (crcmessageEntry.channel >= numChannels) + if ((int)crcmessageEntry.channel >= numChannels) { - Debug.LogError(string.Concat(new object[] + if (LogFilter.logError) { - "HLAPI CRC channel out of range! Script: ", - crcmessageEntry.name, - " Channel: ", - crcmessageEntry.channel - })); - Dump(remoteScripts); + Debug.LogError(string.Concat(new object[] + { + "HLAPI CRC channel out of range! Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); + } + this.Dump(remoteScripts); return false; } } @@ -110,17 +136,17 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel private void Dump(QSBCRCMessageEntry[] remoteScripts) { - foreach (var text in scripts.Keys) + foreach (string text in this.m_Scripts.Keys) { Debug.Log(string.Concat(new object[] { "CRC Local Dump ", text, " : ", - scripts[text] + this.m_Scripts[text] })); } - foreach (var crcmessageEntry in remoteScripts) + foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) { Debug.Log(string.Concat(new object[] { @@ -133,6 +159,9 @@ private void Dump(QSBCRCMessageEntry[] remoteScripts) } internal static QSBNetworkCRC s_Singleton; + + private Dictionary m_Scripts = new Dictionary(); + private bool m_ScriptCRCCheck; } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index d93577248..04a5169c1 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -1,6 +1,5 @@ using OWML.Logging; using QuantumUNET.Messages; -using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Net; @@ -31,25 +30,82 @@ public QSBNetworkClient(QSBNetworkConnection conn) RegisterSystemHandlers(false); } - public static List allClients { get; private set; } = new List(); + public static List allClients + { + get + { + return s_Clients; + } + } - public static bool active { get; private set; } + public static bool active + { + get + { + return s_IsActive; + } + } - internal void SetHandlers(QSBNetworkConnection conn) => conn.SetHandlers(m_MessageHandlers); + internal void SetHandlers(QSBNetworkConnection conn) + { + conn.SetHandlers(m_MessageHandlers); + } - public string serverIp { get; private set; } = ""; + public string serverIp + { + get + { + return m_ServerIp; + } + } - public int serverPort { get; private set; } + public int serverPort + { + get + { + return m_ServerPort; + } + } - public QSBNetworkConnection connection => m_Connection; + public QSBNetworkConnection connection + { + get + { + return m_Connection; + } + } - internal int hostId { get; private set; } = -1; + internal int hostId + { + get + { + return m_ClientId; + } + } - public Dictionary handlers => m_MessageHandlers.GetHandlers(); + public Dictionary handlers + { + get + { + return m_MessageHandlers.GetHandlers(); + } + } - public int numChannels => hostTopology.DefaultConfig.ChannelCount; + public int numChannels + { + get + { + return m_HostTopology.DefaultConfig.ChannelCount; + } + } - public HostTopology hostTopology { get; private set; } + public HostTopology hostTopology + { + get + { + return m_HostTopology; + } + } public int hostPort { @@ -71,21 +127,36 @@ public int hostPort } } - public bool isConnected => m_AsyncConnect == ConnectState.Connected; + public bool isConnected + { + get + { + return m_AsyncConnect == ConnectState.Connected; + } + } - public Type networkConnectionClass { get; private set; } = typeof(QSBNetworkConnection); + public Type networkConnectionClass + { + get + { + return m_NetworkConnectionClass; + } + } - public void SetNetworkConnectionClass() where T : QSBNetworkConnection => networkConnectionClass = typeof(T); + public void SetNetworkConnectionClass() where T : QSBNetworkConnection + { + m_NetworkConnectionClass = typeof(T); + } public bool Configure(ConnectionConfig config, int maxConnections) { - var topology = new HostTopology(config, maxConnections); + HostTopology topology = new HostTopology(config, maxConnections); return Configure(topology); } public bool Configure(HostTopology topology) { - hostTopology = topology; + m_HostTopology = topology; return true; } @@ -124,16 +195,16 @@ public bool ReconnectToNewHost(string serverIp, int serverPort) QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; - hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); - this.serverPort = serverPort; + m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + m_ServerPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { - this.serverIp = serverIp; + m_ServerIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { - this.serverIp = "127.0.0.1"; + m_ServerIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else @@ -179,7 +250,7 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; - hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); + m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); if (secureTunnelEndPoint == null) { if (LogFilter.logError) @@ -200,11 +271,11 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - var fullName = secureTunnelEndPoint.GetType().FullName; + string fullName = secureTunnelEndPoint.GetType().FullName; if (fullName == "System.Net.IPEndPoint") { - var ipendPoint = (IPEndPoint)secureTunnelEndPoint; - Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; + this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); result = (m_AsyncConnect != ConnectState.Failed); } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint") @@ -218,12 +289,12 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { + byte b = 0; m_RemoteEndPoint = secureTunnelEndPoint; m_AsyncConnect = ConnectState.Connecting; - byte b; try { - m_ClientConnectionId = NetworkTransport.ConnectEndPoint(hostId, m_RemoteEndPoint, 0, out b); + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); } catch (Exception arg) { @@ -245,9 +316,9 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); + m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); result = true; } } @@ -266,7 +337,7 @@ public void ConnectWithSimulator(string serverIp, int serverPort, int latency, f private static bool IsValidIpV6(string address) { - foreach (var c in address) + foreach (char c in address) { if (c != ':' && (c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F')) { @@ -286,20 +357,20 @@ public void Connect(string serverIp, int serverPort) ":", serverPort })); - this.serverPort = serverPort; + m_ServerPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { - this.serverIp = serverIp; + m_ServerIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { - this.serverIp = "127.0.0.1"; + m_ServerIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.IndexOf(":") != -1 && IsValidIpV6(serverIp)) { - this.serverIp = serverIp; + m_ServerIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else @@ -314,7 +385,7 @@ public void Connect(string serverIp, int serverPort) public void Connect(EndPoint secureTunnelEndPoint) { //bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); - var usePlatformSpecificProtocols = false; + bool usePlatformSpecificProtocols = false; PrepareForConnect(usePlatformSpecificProtocols); if (LogFilter.logDebug) { @@ -338,11 +409,11 @@ public void Connect(EndPoint secureTunnelEndPoint) } else { - var fullName = secureTunnelEndPoint.GetType().FullName; + string fullName = secureTunnelEndPoint.GetType().FullName; if (fullName == "System.Net.IPEndPoint") { - var ipendPoint = (IPEndPoint)secureTunnelEndPoint; - Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; + this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint" && fullName != "UnityEngine.PSVita.SceEndPoint") { @@ -359,7 +430,7 @@ public void Connect(EndPoint secureTunnelEndPoint) m_AsyncConnect = ConnectState.Connecting; try { - m_ClientConnectionId = NetworkTransport.ConnectEndPoint(hostId, m_RemoteEndPoint, 0, out b); + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); } catch (Exception arg) { @@ -380,36 +451,39 @@ public void Connect(EndPoint secureTunnelEndPoint) } else { - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); + m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); } } } } - private void PrepareForConnect() => PrepareForConnect(false); + private void PrepareForConnect() + { + PrepareForConnect(false); + } private void PrepareForConnect(bool usePlatformSpecificProtocols) { SetActive(true); RegisterSystemHandlers(false); - if (hostTopology == null) + if (m_HostTopology == null) { - var connectionConfig = new ConnectionConfig(); + ConnectionConfig connectionConfig = new ConnectionConfig(); connectionConfig.AddChannel(QosType.ReliableSequenced); connectionConfig.AddChannel(QosType.Unreliable); connectionConfig.UsePlatformSpecificProtocols = usePlatformSpecificProtocols; - hostTopology = new HostTopology(connectionConfig, 8); + m_HostTopology = new HostTopology(connectionConfig, 8); } if (m_UseSimulator) { - var num = (m_SimulatedLatency / 3) - 1; + int num = m_SimulatedLatency / 3 - 1; if (num < 1) { num = 1; } - var num2 = m_SimulatedLatency * 3; + int num2 = m_SimulatedLatency * 3; ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "AddHost Using Simulator ", @@ -417,11 +491,11 @@ private void PrepareForConnect(bool usePlatformSpecificProtocols) "/", num2 })); - hostId = NetworkTransport.AddHostWithSimulator(hostTopology, num, num2, m_HostPort); + m_ClientId = NetworkTransport.AddHostWithSimulator(m_HostTopology, num, num2, m_HostPort); } else { - hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); + m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); } } @@ -429,8 +503,8 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) { try { - var array = Dns.EndGetHostAddresses(ar); - var networkClient = (QSBNetworkClient)ar.AsyncState; + IPAddress[] array = Dns.EndGetHostAddresses(ar); + QSBNetworkClient networkClient = (QSBNetworkClient)ar.AsyncState; if (array.Length == 0) { Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost); @@ -438,22 +512,22 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) } else { - networkClient.serverIp = array[0].ToString(); + networkClient.m_ServerIp = array[0].ToString(); networkClient.m_AsyncConnect = ConnectState.Resolved; Debug.Log(string.Concat(new string[] { "Async DNS Result:", - networkClient.serverIp, + networkClient.m_ServerIp, " for ", networkClient.m_RequestedServerHost, ": ", - networkClient.serverIp + networkClient.m_ServerIp })); } } catch (SocketException ex) { - var networkClient2 = (QSBNetworkClient)ar.AsyncState; + QSBNetworkClient networkClient2 = (QSBNetworkClient)ar.AsyncState; Debug.LogError("DNS resolution failed: " + ex.GetErrorCode()); Debug.LogError("Exception:" + ex); networkClient2.m_AsyncConnect = ConnectState.Failed; @@ -464,7 +538,7 @@ internal void ContinueConnect() { if (m_UseSimulator) { - var num = m_SimulatedLatency / 3; + int num = m_SimulatedLatency / 3; if (num < 1) { num = 1; @@ -476,16 +550,18 @@ internal void ContinueConnect() "/", m_SimulatedLatency })); - var conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); - m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(hostId, serverIp, serverPort, 0, out var b, conf); + ConnectionSimulatorConfig conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); + byte b; + m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(m_ClientId, m_ServerIp, m_ServerPort, 0, out b, conf); } else { - m_ClientConnectionId = NetworkTransport.Connect(hostId, serverIp, serverPort, 0, out var b); + byte b; + m_ClientConnectionId = NetworkTransport.Connect(m_ClientId, m_ServerIp, m_ServerPort, 0, out b); } - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); + m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); } public virtual void Disconnect() @@ -497,10 +573,10 @@ public virtual void Disconnect() m_Connection.Disconnect(); m_Connection.Dispose(); m_Connection = null; - if (hostId != -1) + if (m_ClientId != -1) { - NetworkTransport.RemoveHost(hostId); - hostId = -1; + NetworkTransport.RemoveHost(m_ClientId); + m_ClientId = -1; } } } @@ -669,15 +745,15 @@ public void Shutdown() { if (LogFilter.logDebug) { - Debug.Log("Shutting down client " + hostId); + Debug.Log("Shutting down client " + m_ClientId); } - if (hostId != -1) + if (m_ClientId != -1) { - NetworkTransport.RemoveHost(hostId); - hostId = -1; + NetworkTransport.RemoveHost(m_ClientId); + m_ClientId = -1; } RemoveClient(this); - if (allClients.Count == 0) + if (s_Clients.Count == 0) { SetActive(false); } @@ -685,7 +761,7 @@ public void Shutdown() internal virtual void Update() { - if (hostId != -1) + if (m_ClientId != -1) { switch (m_AsyncConnect) { @@ -712,11 +788,14 @@ internal virtual void Update() m_StatResetTime = (int)Time.time; } } - var num = 0; + int num = 0; byte b; for (; ; ) { - var networkEventType = NetworkTransport.ReceiveFromHost(hostId, out var num2, out var channelId, m_MsgBuffer, (ushort)m_MsgBuffer.Length, out var numBytes, out b); + int num2; + int channelId; + int numBytes; + NetworkEventType networkEventType = NetworkTransport.ReceiveFromHost(m_ClientId, out num2, out channelId, m_MsgBuffer, (int)((ushort)m_MsgBuffer.Length), out numBytes, out b); if (m_Connection != null) { m_Connection.LastError = (NetworkError)b; @@ -755,7 +834,7 @@ internal virtual void Update() { if (b != 6) { - GenerateDisconnectError(b); + GenerateDisconnectError((int)b); } } QSBClientScene.HandleClientDisconnect(m_Connection); @@ -779,7 +858,7 @@ internal virtual void Update() { goto Block_17; } - if (hostId == -1) + if (m_ClientId == -1) { goto Block_19; } @@ -789,10 +868,10 @@ internal virtual void Update() } } Block_10: - GenerateConnectError(b); + GenerateConnectError((int)b); return; Block_11: - GenerateDataError(b); + GenerateDataError((int)b); return; Block_17: if (LogFilter.logDebug) @@ -837,21 +916,19 @@ private void GenerateDisconnectError(int error) private void GenerateError(int error) { - var handler = m_MessageHandlers.GetHandler(34); + QSBNetworkMessageDelegate handler = m_MessageHandlers.GetHandler(34); if (handler == null) { handler = m_MessageHandlers.GetHandler(34); } if (handler != null) { - var errorMessage = new QSBErrorMessage - { - errorCode = error - }; - var buffer = new byte[200]; - var writer = new QSBNetworkWriter(buffer); + QSBErrorMessage errorMessage = new QSBErrorMessage(); + errorMessage.errorCode = error; + byte[] buffer = new byte[200]; + QSBNetworkWriter writer = new QSBNetworkWriter(buffer); errorMessage.Serialize(writer); - var reader = new QSBNetworkReader(buffer); + QSBNetworkReader reader = new QSBNetworkReader(buffer); handler(new QSBNetworkMessage { MsgType = 34, @@ -909,13 +986,14 @@ public void ResetConnectionStats() public int GetRTT() { int result; - if (hostId == -1) + if (m_ClientId == -1) { result = 0; } else { - result = NetworkTransport.GetCurrentRTT(hostId, m_ClientConnectionId, out var b); + byte b; + result = NetworkTransport.GetCurrentRTT(m_ClientId, m_ClientConnectionId, out b); } return result; } @@ -923,7 +1001,7 @@ public int GetRTT() internal void RegisterSystemHandlers(bool localClient) { QSBClientScene.RegisterSystemHandlers(this, localClient); - RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); + this.RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); } private void OnCRC(QSBNetworkMessage netMsg) @@ -932,24 +1010,33 @@ private void OnCRC(QSBNetworkMessage netMsg) QSBNetworkCRC.Validate(s_CRCMessage.scripts, numChannels); } - public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + m_MessageHandlers.RegisterHandler(msgType, handler); + } - public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) + { + m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + } - public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); + public void UnregisterHandler(short msgType) + { + m_MessageHandlers.UnregisterHandler(msgType); + } public static Dictionary GetTotalConnectionStats() { - var dictionary = new Dictionary(); - for (var i = 0; i < allClients.Count; i++) + Dictionary dictionary = new Dictionary(); + for (int i = 0; i < s_Clients.Count; i++) { - var networkClient = allClients[i]; - var connectionStats = networkClient.GetConnectionStats(); - foreach (var key in connectionStats.Keys) + QSBNetworkClient networkClient = s_Clients[i]; + Dictionary connectionStats = networkClient.GetConnectionStats(); + foreach (short key in connectionStats.Keys) { if (dictionary.ContainsKey(key)) { - var packetStat = dictionary[key]; + QSBNetworkConnection.PacketStat packetStat = dictionary[key]; packetStat.count += connectionStats[key].count; packetStat.bytes += connectionStats[key].bytes; dictionary[key] = packetStat; @@ -963,46 +1050,61 @@ private void OnCRC(QSBNetworkMessage netMsg) return dictionary; } - internal static void AddClient(QSBNetworkClient client) => allClients.Add(client); + internal static void AddClient(QSBNetworkClient client) + { + s_Clients.Add(client); + } - internal static bool RemoveClient(QSBNetworkClient client) => allClients.Remove(client); + internal static bool RemoveClient(QSBNetworkClient client) + { + return s_Clients.Remove(client); + } internal static void UpdateClients() { - for (var i = 0; i < allClients.Count; i++) + for (int i = 0; i < s_Clients.Count; i++) { - if (allClients[i] != null) + if (s_Clients[i] != null) { - allClients[i].Update(); + s_Clients[i].Update(); } else { - allClients.RemoveAt(i); + s_Clients.RemoveAt(i); } } } public static void ShutdownAll() { - while (allClients.Count != 0) + while (s_Clients.Count != 0) { - allClients[0].Shutdown(); + s_Clients[0].Shutdown(); } - allClients = new List(); - active = false; + s_Clients = new List(); + s_IsActive = false; QSBClientScene.Shutdown(); } internal static void SetActive(bool state) { - if (!active && state) + if (!s_IsActive && state) { NetworkTransport.Init(); } - active = state; + s_IsActive = state; } + private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); + private const int k_MaxEventsPerFrame = 500; + + private static List s_Clients = new List(); + + private static bool s_IsActive; + + private HostTopology m_HostTopology; + private int m_HostPort; private bool m_UseSimulator; @@ -1010,6 +1112,13 @@ internal static void SetActive(bool state) private int m_SimulatedLatency; private float m_PacketLoss; + + private string m_ServerIp = ""; + + private int m_ServerPort; + + private int m_ClientId = -1; + private int m_ClientConnectionId = -1; private int m_StatResetTime; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index ce6ddea68..8f9101c75 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -1,7 +1,6 @@ using OWML.Logging; using QuantumUNET.Components; using QuantumUNET.Messages; -using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Text; @@ -48,7 +47,7 @@ public virtual void Initialize(string networkAddress, int networkHostId, int net var bufferSize = packetSize; if (channelQOS.QOS == QosType.ReliableFragmented || channelQOS.QOS == QosType.UnreliableFragmented) { - bufferSize = hostTopology.DefaultConfig.FragmentSize * 128; + bufferSize = (int)(hostTopology.DefaultConfig.FragmentSize * 128); } m_Channels[i] = new QSBChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS)); } @@ -103,7 +102,8 @@ public void Disconnect() QSBClientScene.HandleClientDisconnect(this); if (hostId != -1) { - NetworkTransport.Disconnect(hostId, connectionId, out var b); + byte b; + NetworkTransport.Disconnect(hostId, connectionId, out b); RemoveObservers(); } } @@ -182,18 +182,18 @@ internal void HandleFragment(QSBNetworkReader reader, int channelId) internal void SetPlayerController(QSBPlayerController player) { - while (player.PlayerControllerId >= PlayerControllers.Count) + while ((int)player.PlayerControllerId >= PlayerControllers.Count) { PlayerControllers.Add(new QSBPlayerController()); } - PlayerControllers[player.PlayerControllerId] = player; + PlayerControllers[(int)player.PlayerControllerId] = player; } internal void RemovePlayerController(short playerControllerId) { for (var i = PlayerControllers.Count; i >= 0; i--) { - if (playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) + if ((int)playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) { PlayerControllers[i] = new QSBPlayerController(); return; @@ -263,9 +263,15 @@ public virtual bool SendByChannel(short msgType, QSBMessageBase msg, int channel return SendWriter(m_Writer, channelId); } - public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) => CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); + public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) + { + return CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); + } - public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) => CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); + public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) + { + return CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); + } private void LogSend(byte[] bytes) { @@ -273,7 +279,7 @@ private void LogSend(byte[] bytes) var num = networkReader.ReadUInt16(); var num2 = networkReader.ReadUInt16(); var stringBuilder = new StringBuilder(); - for (var i = 4; i < 4 + num; i++) + for (var i = 4; i < (int)(4 + num); i++) { stringBuilder.AppendFormat("{0:X2}", bytes[i]); if (i > 150) @@ -342,7 +348,7 @@ protected void HandleReader(QSBNetworkReader reader, int receivedSize, int chann { var num = reader.ReadUInt16(); var num2 = reader.ReadInt16(); - var array = reader.ReadBytes(num); + var array = reader.ReadBytes((int)num); var reader2 = new QSBNetworkReader(array); QSBNetworkMessageDelegate networkMessageDelegate = null; if (m_MessageHandlersDict.ContainsKey(num2)) diff --git a/QuantumUNET/Transport/QSBNetworkReader.cs b/QuantumUNET/QSBNetworkReader.cs similarity index 99% rename from QuantumUNET/Transport/QSBNetworkReader.cs rename to QuantumUNET/QSBNetworkReader.cs index cb0a95148..afdb40e38 100644 --- a/QuantumUNET/Transport/QSBNetworkReader.cs +++ b/QuantumUNET/QSBNetworkReader.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET.Transport +namespace QuantumUNET { public class QSBNetworkReader { diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index cf14a9c06..e268114b6 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -7,13 +7,21 @@ namespace QuantumUNET { internal class QSBNetworkScene { + private Dictionary m_LocalObjects = new Dictionary(); + internal static Dictionary guidToPrefab { get; } = new Dictionary(); - internal static Dictionary spawnHandlers { get; } = new Dictionary(); + internal static Dictionary spawnHandlers { get; } = new Dictionary(); internal static Dictionary unspawnHandlers { get; } = new Dictionary(); - internal Dictionary localObjects { get; } = new Dictionary(); + internal Dictionary localObjects + { + get + { + return m_LocalObjects; + } + } internal void Shutdown() { @@ -80,7 +88,7 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) if (localObjects.ContainsKey(netId)) { var networkIdentity = localObjects[netId]; - Object.Destroy(networkIdentity.gameObject); + UnityEngine.Object.Destroy(networkIdentity.gameObject); result = localObjects.Remove(netId); } else @@ -90,7 +98,10 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) return result; } - internal void ClearLocalObjects() => localObjects.Clear(); + internal void ClearLocalObjects() + { + localObjects.Clear(); + } internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) { @@ -161,7 +172,7 @@ public static void UnregisterSpawnHandler(NetworkHash128 assetId) unspawnHandlers.Remove(assetId); } - internal static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { if (spawnHandler == null || unspawnHandler == null) { @@ -194,7 +205,7 @@ internal static void UnregisterPrefab(GameObject prefab) } } - internal static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { var component = prefab.GetComponent(); if (component == null) @@ -216,7 +227,7 @@ internal static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHan } } - internal static bool GetSpawnHandler(NetworkHash128 assetId, out QSBSpawnDelegate handler) + internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate handler) { bool result; if (spawnHandlers.ContainsKey(assetId)) @@ -259,7 +270,7 @@ internal void DestroyAllClientObjects() { if (networkIdentity.SceneId.IsEmpty()) { - Object.Destroy(networkIdentity.gameObject); + UnityEngine.Object.Destroy(networkIdentity.gameObject); } else { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 1e5793fda..3dfd00036 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1,7 +1,6 @@ using OWML.Logging; using QuantumUNET.Components; using QuantumUNET.Messages; -using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -22,19 +21,61 @@ private QSBNetworkServer() m_SimpleServerSimple = new ServerSimpleWrapper(this); } - public static List localConnections => instance.m_LocalConnectionsFakeList; + public static List localConnections + { + get + { + return instance.m_LocalConnectionsFakeList; + } + } - public static int listenPort => instance.m_SimpleServerSimple.listenPort; + public static int listenPort + { + get + { + return instance.m_SimpleServerSimple.listenPort; + } + } - public static int serverHostId => instance.m_SimpleServerSimple.serverHostId; + public static int serverHostId + { + get + { + return instance.m_SimpleServerSimple.serverHostId; + } + } - public static ReadOnlyCollection connections => instance.m_SimpleServerSimple.connections; + public static ReadOnlyCollection connections + { + get + { + return instance.m_SimpleServerSimple.connections; + } + } - public static Dictionary handlers => instance.m_SimpleServerSimple.handlers; + public static Dictionary handlers + { + get + { + return instance.m_SimpleServerSimple.handlers; + } + } - public static HostTopology hostTopology => instance.m_SimpleServerSimple.hostTopology; + public static HostTopology hostTopology + { + get + { + return instance.m_SimpleServerSimple.hostTopology; + } + } - public static Dictionary objects => instance.m_NetworkScene.localObjects; + public static Dictionary objects + { + get + { + return instance.m_NetworkScene.localObjects; + } + } public static bool dontListen { get; set; } @@ -71,9 +112,21 @@ internal static QSBNetworkServer instance public static bool active { get; private set; } - public static bool localClientActive => instance.m_LocalClientActive; + public static bool localClientActive + { + get + { + return instance.m_LocalClientActive; + } + } - public static int numChannels => instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; + public static int numChannels + { + get + { + return instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; + } + } public static float maxDelay { @@ -87,13 +140,28 @@ public static float maxDelay } } - public static Type networkConnectionClass => instance.m_SimpleServerSimple.networkConnectionClass; + public static Type networkConnectionClass + { + get + { + return instance.m_SimpleServerSimple.networkConnectionClass; + } + } - public static void SetNetworkConnectionClass() where T : QSBNetworkConnection => instance.m_SimpleServerSimple.SetNetworkConnectionClass(); + public static void SetNetworkConnectionClass() where T : QSBNetworkConnection + { + instance.m_SimpleServerSimple.SetNetworkConnectionClass(); + } - public static bool Configure(ConnectionConfig config, int maxConnections) => instance.m_SimpleServerSimple.Configure(config, maxConnections); + public static bool Configure(ConnectionConfig config, int maxConnections) + { + return instance.m_SimpleServerSimple.Configure(config, maxConnections); + } - public static bool Configure(HostTopology topology) => instance.m_SimpleServerSimple.Configure(topology); + public static bool Configure(HostTopology topology) + { + return instance.m_SimpleServerSimple.Configure(topology); + } public static void Reset() { @@ -132,7 +200,10 @@ internal void RegisterMessageHandlers() maxPacketSize = hostTopology.DefaultConfig.PacketSize; } - public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) => instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); + public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) + { + instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); + } private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { @@ -141,9 +212,15 @@ private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGui RegisterMessageHandlers(); } - public static bool Listen(int serverPort) => instance.InternalListen(null, serverPort); + public static bool Listen(int serverPort) + { + return instance.InternalListen(null, serverPort); + } - public static bool Listen(string ipAddress, int serverPort) => instance.InternalListen(ipAddress, serverPort); + public static bool Listen(string ipAddress, int serverPort) + { + return instance.InternalListen(ipAddress, serverPort); + } internal bool InternalListen(string ipAddress, int serverPort) { @@ -508,7 +585,10 @@ public static bool SendByChannelToReady(GameObject contextObj, short msgType, QS return result; } - public static void DisconnectAll() => instance.InternalDisconnectAll(); + public static void DisconnectAll() + { + instance.InternalDisconnectAll(); + } internal void InternalDisconnectAll() { @@ -610,7 +690,10 @@ private void OnDisconnected(QSBNetworkConnection conn) conn.Dispose(); } - private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); + private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) + { + conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); + } private void GenerateConnectError(int error) { @@ -651,10 +734,8 @@ private void GenerateError(QSBNetworkConnection conn, int error) { if (handlers.ContainsKey(34)) { - var errorMessage = new QSBErrorMessage - { - errorCode = error - }; + var errorMessage = new QSBErrorMessage(); + errorMessage.errorCode = error; var writer = new QSBNetworkWriter(); errorMessage.Serialize(writer); var reader = new QSBNetworkReader(writer); @@ -662,13 +743,25 @@ private void GenerateError(QSBNetworkConnection conn, int error) } } - public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); + public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); + } - public static void UnregisterHandler(short msgType) => instance.m_SimpleServerSimple.UnregisterHandler(msgType); + public static void UnregisterHandler(short msgType) + { + instance.m_SimpleServerSimple.UnregisterHandler(msgType); + } - public static void ClearHandlers() => instance.m_SimpleServerSimple.ClearHandlers(); + public static void ClearHandlers() + { + instance.m_SimpleServerSimple.ClearHandlers(); + } - public static void ClearSpawners() => QSBNetworkScene.ClearSpawners(); + public static void ClearSpawners() + { + QSBNetworkScene.ClearSpawners(); + } public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { @@ -681,7 +774,11 @@ public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int var networkConnection = connections[i]; if (networkConnection != null) { - networkConnection.GetStatsOut(out var num, out var num2, out var num3, out var num4); + int num; + int num2; + int num3; + int num4; + networkConnection.GetStatsOut(out num, out num2, out num3, out num4); numMsgs += num; numBufferedMsgs += num2; numBytes += num3; @@ -699,7 +796,9 @@ public static void GetStatsIn(out int numMsgs, out int numBytes) var networkConnection = connections[i]; if (networkConnection != null) { - networkConnection.GetStatsIn(out var num, out var num2); + int num; + int num2; + networkConnection.GetStatsIn(out num, out num2); numMsgs += num; numBytes += num2; } @@ -747,12 +846,16 @@ public static void SendToClient(int connectionId, short msgType, QSBMessageBase } } - public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) => instance.InternalAddPlayerForConnection(conn, player, playerControllerId); + public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) + { + return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); + } internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { + QSBNetworkIdentity networkIdentity; bool result; - if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) { if (LogFilter.logError) { @@ -769,8 +872,9 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje } else { + QSBPlayerController playerController = null; GameObject x = null; - if (conn.GetPlayerController(playerControllerId, out var playerController)) + if (conn.GetPlayerController(playerControllerId, out playerController)) { x = playerController.Gameobject; } @@ -859,8 +963,9 @@ private static bool CheckPlayerControllerIdForConnection(QSBNetworkConnection co private bool SetupLocalPlayerForConnection(QSBNetworkConnection conn, QSBNetworkIdentity uv, QSBPlayerController newPlayerController) { Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.NetId); + var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; bool result; - if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) + if (ulocalConnectionToClient != null) { Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); if (uv.NetId.IsEmpty()) @@ -897,8 +1002,9 @@ private static void FinishPlayerForConnection(QSBNetworkConnection conn, QSBNetw internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { + QSBNetworkIdentity networkIdentity; bool result; - if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) { if (LogFilter.logError) { @@ -913,7 +1019,8 @@ internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, Game else { Debug.Log("NetworkServer ReplacePlayer"); - if (conn.GetPlayerController(playerControllerId, out var playerController)) + QSBPlayerController playerController; + if (conn.GetPlayerController(playerControllerId, out playerController)) { playerController.UnetView.SetNotLocalPlayer(); playerController.UnetView.ClearClientOwner(); @@ -965,7 +1072,10 @@ private static bool GetNetworkIdentity(GameObject go, out QSBNetworkIdentity vie return result; } - public static void SetClientReady(QSBNetworkConnection conn) => instance.SetClientReadyInternal(conn); + public static void SetClientReady(QSBNetworkConnection conn) + { + instance.SetClientReadyInternal(conn); + } internal void SetClientReadyInternal(QSBNetworkConnection conn) { @@ -990,14 +1100,15 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) } } conn.isReady = true; - if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) + var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; + if (ulocalConnectionToClient != null) { Debug.Log("NetworkServer Ready handling ULocalConnectionToClient"); foreach (var networkIdentity in objects.Values) { if (networkIdentity != null && networkIdentity.gameObject != null) { - var flag = networkIdentity.OnCheckObserver(conn); + bool flag = networkIdentity.OnCheckObserver(conn); if (flag) { networkIdentity.AddObserver(conn); @@ -1022,10 +1133,8 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) conn.connectionId })); } - var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage - { - State = 0U - }; + var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); + objectSpawnFinishedMessage.State = 0U; conn.Send(12, objectSpawnFinishedMessage); foreach (var networkIdentity2 in objects.Values) { @@ -1048,7 +1157,7 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) networkIdentity2.NetId })); } - var flag2 = networkIdentity2.OnCheckObserver(conn); + bool flag2 = networkIdentity2.OnCheckObserver(conn); if (flag2) { networkIdentity2.AddObserver(conn); @@ -1089,7 +1198,10 @@ public static void SetAllClientsNotReady() } } - public static void SetClientNotReady(QSBNetworkConnection conn) => instance.InternalSetClientNotReady(conn); + public static void SetClientNotReady(QSBNetworkConnection conn) + { + instance.InternalSetClientNotReady(conn); + } internal void InternalSetClientNotReady(QSBNetworkConnection conn) { @@ -1118,7 +1230,8 @@ private static void OnClientReadyMessage(QSBNetworkMessage netMsg) private static void OnRemovePlayerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_RemovePlayerMessage); - netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var playerController); + QSBPlayerController playerController = null; + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out playerController); if (playerController != null) { netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); @@ -1189,11 +1302,12 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) internal void SpawnObject(GameObject obj) { + QSBNetworkIdentity networkIdentity; if (!active) { ModConsole.OwmlConsole.WriteLine("Error - SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); } - else if (!GetNetworkIdentity(obj, out var networkIdentity)) + else if (!GetNetworkIdentity(obj, out networkIdentity)) { Debug.LogError(string.Concat(new object[] { @@ -1217,13 +1331,11 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) { if (uv.SceneId.IsEmpty()) { - var objectSpawnMessage = new QSBObjectSpawnMessage - { - NetId = uv.NetId, - assetId = uv.AssetId, - Position = uv.transform.position, - Rotation = uv.transform.rotation - }; + var objectSpawnMessage = new QSBObjectSpawnMessage(); + objectSpawnMessage.NetId = uv.NetId; + objectSpawnMessage.assetId = uv.AssetId; + objectSpawnMessage.Position = uv.transform.position; + objectSpawnMessage.Rotation = uv.transform.rotation; var networkWriter = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter); if (networkWriter.Position > 0) @@ -1241,12 +1353,10 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) } else { - var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage - { - NetId = uv.NetId, - SceneId = uv.SceneId, - Position = uv.transform.position - }; + var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); + objectSpawnSceneMessage.NetId = uv.NetId; + objectSpawnSceneMessage.SceneId = uv.SceneId; + objectSpawnSceneMessage.Position = uv.transform.position; var networkWriter2 = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter2); if (networkWriter2.Position > 0) @@ -1306,25 +1416,30 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) private static void UnSpawnObject(GameObject obj) { + QSBNetworkIdentity uv; if (obj == null) { Debug.Log("NetworkServer UnspawnObject is null"); } - else if (GetNetworkIdentity(obj, out var uv)) + else if (GetNetworkIdentity(obj, out uv)) { UnSpawnObject(uv); } } - private static void UnSpawnObject(QSBNetworkIdentity uv) => DestroyObject(uv, false); + private static void UnSpawnObject(QSBNetworkIdentity uv) + { + DestroyObject(uv, false); + } private static void DestroyObject(GameObject obj) { + QSBNetworkIdentity uv; if (obj == null) { Debug.Log("NetworkServer DestroyObject is null"); } - else if (GetNetworkIdentity(obj, out var uv)) + else if (GetNetworkIdentity(obj, out uv)) { DestroyObject(uv, true); } @@ -1344,10 +1459,8 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec { uv.ClientAuthorityOwner.RemoveOwnedObject(uv); } - var objectDestroyMessage = new QSBObjectDestroyMessage - { - NetId = uv.NetId - }; + var objectDestroyMessage = new QSBObjectDestroyMessage(); + objectDestroyMessage.NetId = uv.NetId; SendToObservers(uv.gameObject, 1, objectDestroyMessage); uv.ClearObservers(); if (QSBNetworkClient.active && instance.m_LocalClientActive) @@ -1362,7 +1475,10 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec uv.MarkForReset(); } - public static void ClearLocalObjects() => objects.Clear(); + public static void ClearLocalObjects() + { + objects.Clear(); + } public static void Spawn(GameObject obj) { @@ -1372,7 +1488,10 @@ public static void Spawn(GameObject obj) } } - private static bool CheckForPrefab(GameObject obj) => false; + private static bool CheckForPrefab(GameObject obj) + { + return false; + } private static bool VerifyCanSpawn(GameObject obj) { @@ -1441,7 +1560,8 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) { if (VerifyCanSpawn(obj)) { - if (GetNetworkIdentity(obj, out var networkIdentity)) + QSBNetworkIdentity networkIdentity; + if (GetNetworkIdentity(obj, out networkIdentity)) { networkIdentity.SetDynamicAssetId(assetId); } @@ -1449,9 +1569,15 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) } } - public static void Destroy(GameObject obj) => DestroyObject(obj); + public static void Destroy(GameObject obj) + { + DestroyObject(obj); + } - public static void UnSpawn(GameObject obj) => UnSpawnObject(obj); + public static void UnSpawn(GameObject obj) + { + UnSpawnObject(obj); + } internal bool InvokeBytes(QSBULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { @@ -1501,7 +1627,10 @@ internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgT public static GameObject FindLocalObject(NetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); - private static bool ValidateSceneObject(QSBNetworkIdentity netId) => netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); + private static bool ValidateSceneObject(QSBNetworkIdentity netId) + { + return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); + } public static bool SpawnObjects() { @@ -1552,7 +1681,7 @@ private static void SendCrc(QSBNetworkConnection targetConnection) { var crcmessage = new QSBCRCMessage(); var list = new List(); - foreach (var text in QSBNetworkCRC.singleton.scripts.Keys) + foreach (string text in QSBNetworkCRC.singleton.scripts.Keys) { list.Add(new QSBCRCMessageEntry { @@ -1601,17 +1730,35 @@ public ServerSimpleWrapper(QSBNetworkServer server) m_Server = server; } - public override void OnConnectError(int connectionId, byte error) => m_Server.GenerateConnectError(error); + public override void OnConnectError(int connectionId, byte error) + { + m_Server.GenerateConnectError((int)error); + } - public override void OnDataError(QSBNetworkConnection conn, byte error) => m_Server.GenerateDataError(conn, error); + public override void OnDataError(QSBNetworkConnection conn, byte error) + { + m_Server.GenerateDataError(conn, (int)error); + } - public override void OnDisconnectError(QSBNetworkConnection conn, byte error) => m_Server.GenerateDisconnectError(conn, error); + public override void OnDisconnectError(QSBNetworkConnection conn, byte error) + { + m_Server.GenerateDisconnectError(conn, (int)error); + } - public override void OnConnected(QSBNetworkConnection conn) => m_Server.OnConnected(conn); + public override void OnConnected(QSBNetworkConnection conn) + { + m_Server.OnConnected(conn); + } - public override void OnDisconnected(QSBNetworkConnection conn) => m_Server.OnDisconnected(conn); + public override void OnDisconnected(QSBNetworkConnection conn) + { + m_Server.OnDisconnected(conn); + } - public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => m_Server.OnData(conn, receivedSize, channelId); + public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) + { + m_Server.OnData(conn, receivedSize, channelId); + } private QSBNetworkServer m_Server; } diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index 451aceea8..5d9a15455 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,5 +1,4 @@ using QuantumUNET.Messages; -using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -13,43 +12,112 @@ public class QSBNetworkServerSimple { public QSBNetworkServerSimple() { - connections = new ReadOnlyCollection(m_Connections); + this.m_ConnectionsReadOnly = new ReadOnlyCollection(this.m_Connections); } - public int listenPort { get; set; } + public int listenPort + { + get + { + return this.m_ListenPort; + } + set + { + this.m_ListenPort = value; + } + } - public int serverHostId { get; set; } = -1; + public int serverHostId + { + get + { + return this.m_ServerHostId; + } + set + { + this.m_ServerHostId = value; + } + } - public HostTopology hostTopology { get; private set; } + public HostTopology hostTopology + { + get + { + return this.m_HostTopology; + } + } - public bool useWebSockets { get; set; } + public bool useWebSockets + { + get + { + return this.m_UseWebSockets; + } + set + { + this.m_UseWebSockets = value; + } + } - public ReadOnlyCollection connections { get; } + public ReadOnlyCollection connections + { + get + { + return this.m_ConnectionsReadOnly; + } + } - public Dictionary handlers => m_MessageHandlers.GetHandlers(); + public Dictionary handlers + { + get + { + return this.m_MessageHandlers.GetHandlers(); + } + } - public byte[] messageBuffer { get; private set; } = null; + public byte[] messageBuffer + { + get + { + return this.m_MsgBuffer; + } + } - public NetworkReader messageReader { get; private set; } = null; + public NetworkReader messageReader + { + get + { + return this.m_MsgReader; + } + } - public Type networkConnectionClass { get; private set; } = typeof(QSBNetworkConnection); + public Type networkConnectionClass + { + get + { + return this.m_NetworkConnectionClass; + } + } - public void SetNetworkConnectionClass() where T : QSBNetworkConnection => networkConnectionClass = typeof(T); + public void SetNetworkConnectionClass() where T : QSBNetworkConnection + { + this.m_NetworkConnectionClass = typeof(T); + } public virtual void Initialize() { - if (!m_Initialized) + if (!this.m_Initialized) { - m_Initialized = true; + this.m_Initialized = true; NetworkTransport.Init(); - messageBuffer = new byte[65535]; - messageReader = new NetworkReader(messageBuffer); - if (hostTopology == null) + this.m_MsgBuffer = new byte[65535]; + this.m_MsgReader = new NetworkReader(this.m_MsgBuffer); + if (this.m_HostTopology == null) { - var connectionConfig = new ConnectionConfig(); + ConnectionConfig connectionConfig = new ConnectionConfig(); connectionConfig.AddChannel(QosType.ReliableSequenced); connectionConfig.AddChannel(QosType.Unreliable); - hostTopology = new HostTopology(connectionConfig, 8); + this.m_HostTopology = new HostTopology(connectionConfig, 8); } if (LogFilter.logDebug) { @@ -60,30 +128,30 @@ public virtual void Initialize() public bool Configure(ConnectionConfig config, int maxConnections) { - var topology = new HostTopology(config, maxConnections); - return Configure(topology); + HostTopology topology = new HostTopology(config, maxConnections); + return this.Configure(topology); } public bool Configure(HostTopology topology) { - hostTopology = topology; + this.m_HostTopology = topology; return true; } public bool Listen(string ipAddress, int serverListenPort) { - Initialize(); - listenPort = serverListenPort; - if (useWebSockets) + this.Initialize(); + this.m_ListenPort = serverListenPort; + if (this.m_UseWebSockets) { - serverHostId = NetworkTransport.AddWebsocketHost(hostTopology, serverListenPort, ipAddress); + this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort, ipAddress); } else { - serverHostId = NetworkTransport.AddHost(hostTopology, serverListenPort, ipAddress); + this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort, ipAddress); } bool result; - if (serverHostId == -1) + if (this.m_ServerHostId == -1) { result = false; } @@ -96,7 +164,7 @@ public bool Listen(string ipAddress, int serverListenPort) "NetworkServerSimple listen: ", ipAddress, ":", - listenPort + this.m_ListenPort })); } result = true; @@ -104,23 +172,26 @@ public bool Listen(string ipAddress, int serverListenPort) return result; } - public bool Listen(int serverListenPort) => Listen(serverListenPort, hostTopology); + public bool Listen(int serverListenPort) + { + return this.Listen(serverListenPort, this.m_HostTopology); + } public bool Listen(int serverListenPort, HostTopology topology) { - hostTopology = topology; - Initialize(); - listenPort = serverListenPort; - if (useWebSockets) + this.m_HostTopology = topology; + this.Initialize(); + this.m_ListenPort = serverListenPort; + if (this.m_UseWebSockets) { - serverHostId = NetworkTransport.AddWebsocketHost(hostTopology, serverListenPort); + this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort); } else { - serverHostId = NetworkTransport.AddHost(hostTopology, serverListenPort); + this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort); } bool result; - if (serverHostId == -1) + if (this.m_ServerHostId == -1) { result = false; } @@ -128,7 +199,7 @@ public bool Listen(int serverListenPort, HostTopology topology) { if (LogFilter.logDebug) { - Debug.Log("NetworkServerSimple listen " + listenPort); + Debug.Log("NetworkServerSimple listen " + this.m_ListenPort); } result = true; } @@ -137,18 +208,19 @@ public bool Listen(int serverListenPort, HostTopology topology) public void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { - Initialize(); - serverHostId = NetworkTransport.AddHost(hostTopology, listenPort); + this.Initialize(); + this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, this.listenPort); if (LogFilter.logDebug) { - Debug.Log("Server Host Slot Id: " + serverHostId); + Debug.Log("Server Host Slot Id: " + this.m_ServerHostId); } - Update(); - NetworkTransport.ConnectAsNetworkHost(serverHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out var b); - m_RelaySlotId = 0; + this.Update(); + byte b; + NetworkTransport.ConnectAsNetworkHost(this.m_ServerHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out b); + this.m_RelaySlotId = 0; if (LogFilter.logDebug) { - Debug.Log("Relay Slot Id: " + m_RelaySlotId); + Debug.Log("Relay Slot Id: " + this.m_RelaySlotId); } } @@ -158,23 +230,35 @@ public void Stop() { Debug.Log("NetworkServerSimple stop "); } - NetworkTransport.RemoveHost(serverHostId); - serverHostId = -1; + NetworkTransport.RemoveHost(this.m_ServerHostId); + this.m_ServerHostId = -1; } - internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) + { + m_MessageHandlers.RegisterHandlerSafe(msgType, handler); + } - public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) + { + this.m_MessageHandlers.RegisterHandler(msgType, handler); + } - public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); + public void UnregisterHandler(short msgType) + { + this.m_MessageHandlers.UnregisterHandler(msgType); + } - public void ClearHandlers() => m_MessageHandlers.ClearMessageHandlers(); + public void ClearHandlers() + { + this.m_MessageHandlers.ClearMessageHandlers(); + } public void UpdateConnections() { - for (var i = 0; i < m_Connections.Count; i++) + for (int i = 0; i < this.m_Connections.Count; i++) { - var networkConnection = m_Connections[i]; + QSBNetworkConnection networkConnection = this.m_Connections[i]; if (networkConnection != null) { networkConnection.FlushChannels(); @@ -184,12 +268,13 @@ public void UpdateConnections() public void Update() { - if (serverHostId != -1) + if (this.m_ServerHostId != -1) { NetworkEventType networkEventType; - if (m_RelaySlotId != -1) + if (this.m_RelaySlotId != -1) { - networkEventType = NetworkTransport.ReceiveRelayEventFromHost(serverHostId, out var b); + byte b; + networkEventType = NetworkTransport.ReceiveRelayEventFromHost(this.m_ServerHostId, out b); if (networkEventType != NetworkEventType.Nothing) { if (LogFilter.logDebug) @@ -214,13 +299,17 @@ public void Update() } do { - networkEventType = NetworkTransport.ReceiveFromHost(serverHostId, out var connectionId, out var channelId, messageBuffer, messageBuffer.Length, out var receivedSize, out var b); + byte b; + int connectionId; + int channelId; + int receivedSize; + networkEventType = NetworkTransport.ReceiveFromHost(this.m_ServerHostId, out connectionId, out channelId, this.m_MsgBuffer, this.m_MsgBuffer.Length, out receivedSize, out b); if (networkEventType != NetworkEventType.Nothing) { Debug.Log(string.Concat(new object[] { "Server event: host=", - serverHostId, + this.m_ServerHostId, " event=", networkEventType, " error=", @@ -230,15 +319,15 @@ public void Update() switch (networkEventType) { case NetworkEventType.DataEvent: - HandleData(connectionId, channelId, receivedSize, b); + this.HandleData(connectionId, channelId, receivedSize, b); break; case NetworkEventType.ConnectEvent: - HandleConnect(connectionId, b); + this.HandleConnect(connectionId, b); break; case NetworkEventType.DisconnectEvent: - HandleDisconnect(connectionId, b); + this.HandleDisconnect(connectionId, b); break; case NetworkEventType.Nothing: @@ -253,39 +342,39 @@ public void Update() } } while (networkEventType != NetworkEventType.Nothing); - UpdateConnections(); + this.UpdateConnections(); } } public QSBNetworkConnection FindConnection(int connectionId) { QSBNetworkConnection result; - if (connectionId < 0 || connectionId >= m_Connections.Count) + if (connectionId < 0 || connectionId >= this.m_Connections.Count) { result = null; } else { - result = m_Connections[connectionId]; + result = this.m_Connections[connectionId]; } return result; } public bool SetConnectionAtIndex(QSBNetworkConnection conn) { - while (m_Connections.Count <= conn.connectionId) + while (this.m_Connections.Count <= conn.connectionId) { - m_Connections.Add(null); + this.m_Connections.Add(null); } bool result; - if (m_Connections[conn.connectionId] != null) + if (this.m_Connections[conn.connectionId] != null) { result = false; } else { - m_Connections[conn.connectionId] = conn; - conn.SetHandlers(m_MessageHandlers); + this.m_Connections[conn.connectionId] = conn; + conn.SetHandlers(this.m_MessageHandlers); result = true; } return result; @@ -294,13 +383,13 @@ public bool SetConnectionAtIndex(QSBNetworkConnection conn) public bool RemoveConnectionAtIndex(int connectionId) { bool result; - if (connectionId < 0 || connectionId >= m_Connections.Count) + if (connectionId < 0 || connectionId >= this.m_Connections.Count) { result = false; } else { - m_Connections[connectionId] = null; + this.m_Connections[connectionId] = null; result = true; } return result; @@ -314,21 +403,26 @@ private void HandleConnect(int connectionId, byte error) } if (error != 0) { - OnConnectError(connectionId, error); + this.OnConnectError(connectionId, error); } else { - NetworkTransport.GetConnectionInfo(serverHostId, connectionId, out var networkAddress, out var num, out var networkID, out var nodeID, out var lastError); - var networkConnection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); - networkConnection.SetHandlers(m_MessageHandlers); - networkConnection.Initialize(networkAddress, serverHostId, connectionId, hostTopology); + string networkAddress; + int num; + NetworkID networkID; + NodeID nodeID; + byte lastError; + NetworkTransport.GetConnectionInfo(this.m_ServerHostId, connectionId, out networkAddress, out num, out networkID, out nodeID, out lastError); + QSBNetworkConnection networkConnection = (QSBNetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass); + networkConnection.SetHandlers(this.m_MessageHandlers); + networkConnection.Initialize(networkAddress, this.m_ServerHostId, connectionId, this.m_HostTopology); networkConnection.LastError = (NetworkError)lastError; - while (m_Connections.Count <= connectionId) + while (this.m_Connections.Count <= connectionId) { - m_Connections.Add(null); + this.m_Connections.Add(null); } - m_Connections[connectionId] = networkConnection; - OnConnected(networkConnection); + this.m_Connections[connectionId] = networkConnection; + this.OnConnected(networkConnection); } } @@ -338,7 +432,7 @@ private void HandleDisconnect(int connectionId, byte error) { Debug.Log("NetworkServerSimple disconnect client:" + connectionId); } - var networkConnection = FindConnection(connectionId); + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); if (networkConnection != null) { networkConnection.LastError = (NetworkError)error; @@ -346,7 +440,7 @@ private void HandleDisconnect(int connectionId, byte error) { if (error != 6) { - m_Connections[connectionId] = null; + this.m_Connections[connectionId] = null; if (LogFilter.logError) { Debug.LogError(string.Concat(new object[] @@ -357,23 +451,23 @@ private void HandleDisconnect(int connectionId, byte error) (NetworkError)error })); } - OnDisconnectError(networkConnection, error); + this.OnDisconnectError(networkConnection, error); return; } } networkConnection.Disconnect(); - m_Connections[connectionId] = null; + this.m_Connections[connectionId] = null; if (LogFilter.logDebug) { Debug.Log("Server lost client:" + connectionId); } - OnDisconnected(networkConnection); + this.OnDisconnected(networkConnection); } } private void HandleData(int connectionId, int channelId, int receivedSize, byte error) { - var networkConnection = FindConnection(connectionId); + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); if (networkConnection == null) { if (LogFilter.logError) @@ -386,19 +480,19 @@ private void HandleData(int connectionId, int channelId, int receivedSize, byte networkConnection.LastError = (NetworkError)error; if (error != 0) { - OnDataError(networkConnection, error); + this.OnDataError(networkConnection, error); } else { - messageReader.SeekZero(); - OnData(networkConnection, receivedSize, channelId); + this.m_MsgReader.SeekZero(); + this.OnData(networkConnection, receivedSize, channelId); } } } public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channelId) { - var networkConnection = FindConnection(connectionId); + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); if (networkConnection != null) { networkConnection.SendBytes(bytes, numBytes, channelId); @@ -407,7 +501,7 @@ public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channe public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelId) { - var networkConnection = FindConnection(connectionId); + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); if (networkConnection != null) { networkConnection.SendWriter(writer, channelId); @@ -416,19 +510,19 @@ public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelI public void Disconnect(int connectionId) { - var networkConnection = FindConnection(connectionId); + QSBNetworkConnection networkConnection = this.FindConnection(connectionId); if (networkConnection != null) { networkConnection.Disconnect(); - m_Connections[connectionId] = null; + this.m_Connections[connectionId] = null; } } public void DisconnectAllConnections() { - for (var i = 0; i < m_Connections.Count; i++) + for (int i = 0; i < this.m_Connections.Count; i++) { - var networkConnection = m_Connections[i]; + QSBNetworkConnection networkConnection = this.m_Connections[i]; if (networkConnection != null) { networkConnection.Disconnect(); @@ -437,21 +531,58 @@ public void DisconnectAllConnections() } } - public virtual void OnConnectError(int connectionId, byte error) => Debug.LogError("OnConnectError error:" + error); + public virtual void OnConnectError(int connectionId, byte error) + { + Debug.LogError("OnConnectError error:" + error); + } - public virtual void OnDataError(QSBNetworkConnection conn, byte error) => Debug.LogError("OnDataError error:" + error); + public virtual void OnDataError(QSBNetworkConnection conn, byte error) + { + Debug.LogError("OnDataError error:" + error); + } - public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) => Debug.LogError("OnDisconnectError error:" + error); + public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) + { + Debug.LogError("OnDisconnectError error:" + error); + } - public virtual void OnConnected(QSBNetworkConnection conn) => conn.InvokeHandlerNoData(32); + public virtual void OnConnected(QSBNetworkConnection conn) + { + conn.InvokeHandlerNoData(32); + } - public virtual void OnDisconnected(QSBNetworkConnection conn) => conn.InvokeHandlerNoData(33); + public virtual void OnDisconnected(QSBNetworkConnection conn) + { + conn.InvokeHandlerNoData(33); + } - public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => conn.TransportReceive(messageBuffer, receivedSize, channelId); + public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) + { + conn.TransportReceive(this.m_MsgBuffer, receivedSize, channelId); + } private bool m_Initialized = false; + + private int m_ListenPort; + + private int m_ServerHostId = -1; + private int m_RelaySlotId = -1; + + private bool m_UseWebSockets; + + private byte[] m_MsgBuffer = null; + + private NetworkReader m_MsgReader = null; + + private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); + + private HostTopology m_HostTopology; + private List m_Connections = new List(); + + private ReadOnlyCollection m_ConnectionsReadOnly; + private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/QSBNetworkWriter.cs new file mode 100644 index 000000000..86a951781 --- /dev/null +++ b/QuantumUNET/QSBNetworkWriter.cs @@ -0,0 +1,537 @@ +using QuantumUNET.Components; +using QuantumUNET.Messages; +using System; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QuantumUNET +{ + public class QSBNetworkWriter + { + public QSBNetworkWriter() + { + this.m_Buffer = new QSBNetBuffer(); + if (s_Encoding == null) + { + s_Encoding = new UTF8Encoding(); + s_StringWriteBuffer = new byte[32768]; + } + } + + public QSBNetworkWriter(byte[] buffer) + { + this.m_Buffer = new QSBNetBuffer(buffer); + if (s_Encoding == null) + { + s_Encoding = new UTF8Encoding(); + s_StringWriteBuffer = new byte[32768]; + } + } + + public short Position + { + get + { + return (short)this.m_Buffer.Position; + } + } + + public byte[] ToArray() + { + byte[] array = new byte[this.m_Buffer.AsArraySegment().Count]; + Array.Copy(this.m_Buffer.AsArraySegment().Array, array, this.m_Buffer.AsArraySegment().Count); + return array; + } + + public byte[] AsArray() + { + return this.AsArraySegment().Array; + } + + internal ArraySegment AsArraySegment() + { + return this.m_Buffer.AsArraySegment(); + } + + public void WritePackedUInt32(uint value) + { + if (value <= 240U) + { + this.Write((byte)value); + } + else if (value <= 2287U) + { + this.Write((byte)((value - 240U) / 256U + 241U)); + this.Write((byte)((value - 240U) % 256U)); + } + else if (value <= 67823U) + { + this.Write(249); + this.Write((byte)((value - 2288U) / 256U)); + this.Write((byte)((value - 2288U) % 256U)); + } + else if (value <= 16777215U) + { + this.Write(250); + this.Write((byte)(value & 255U)); + this.Write((byte)(value >> 8 & 255U)); + this.Write((byte)(value >> 16 & 255U)); + } + else + { + this.Write(251); + this.Write((byte)(value & 255U)); + this.Write((byte)(value >> 8 & 255U)); + this.Write((byte)(value >> 16 & 255U)); + this.Write((byte)(value >> 24 & 255U)); + } + } + + public void WritePackedUInt64(ulong value) + { + if (value <= 240UL) + { + this.Write((byte)value); + } + else if (value <= 2287UL) + { + this.Write((byte)((value - 240UL) / 256UL + 241UL)); + this.Write((byte)((value - 240UL) % 256UL)); + } + else if (value <= 67823UL) + { + this.Write(249); + this.Write((byte)((value - 2288UL) / 256UL)); + this.Write((byte)((value - 2288UL) % 256UL)); + } + else if (value <= 16777215UL) + { + this.Write(250); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + } + else if (value <= uint.MaxValue) + { + this.Write(251); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + } + else if (value <= 1099511627775UL) + { + this.Write(252); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + } + else if (value <= 281474976710655UL) + { + this.Write(253); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + this.Write((byte)(value >> 40 & 255UL)); + } + else if (value <= 72057594037927935UL) + { + this.Write(254); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + this.Write((byte)(value >> 40 & 255UL)); + this.Write((byte)(value >> 48 & 255UL)); + } + else + { + this.Write(byte.MaxValue); + this.Write((byte)(value & 255UL)); + this.Write((byte)(value >> 8 & 255UL)); + this.Write((byte)(value >> 16 & 255UL)); + this.Write((byte)(value >> 24 & 255UL)); + this.Write((byte)(value >> 32 & 255UL)); + this.Write((byte)(value >> 40 & 255UL)); + this.Write((byte)(value >> 48 & 255UL)); + this.Write((byte)(value >> 56 & 255UL)); + } + } + + public void Write(NetworkInstanceId value) + { + this.WritePackedUInt32(value.Value); + } + + public void Write(NetworkSceneId value) + { + this.WritePackedUInt32(value.Value); + } + + public void Write(char value) + { + this.m_Buffer.WriteByte((byte)value); + } + + public void Write(byte value) + { + this.m_Buffer.WriteByte(value); + } + + public void Write(sbyte value) + { + this.m_Buffer.WriteByte((byte)value); + } + + public void Write(short value) + { + this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); + } + + public void Write(ushort value) + { + this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); + } + + public void Write(int value) + { + this.m_Buffer.WriteByte4((byte)(value & 255), (byte)(value >> 8 & 255), (byte)(value >> 16 & 255), (byte)(value >> 24 & 255)); + } + + public void Write(uint value) + { + this.m_Buffer.WriteByte4((byte)(value & 255U), (byte)(value >> 8 & 255U), (byte)(value >> 16 & 255U), (byte)(value >> 24 & 255U)); + } + + public void Write(long value) + { + this.m_Buffer.WriteByte8((byte)(value & 255L), (byte)(value >> 8 & 255L), (byte)(value >> 16 & 255L), (byte)(value >> 24 & 255L), (byte)(value >> 32 & 255L), (byte)(value >> 40 & 255L), (byte)(value >> 48 & 255L), (byte)(value >> 56 & 255L)); + } + + public void Write(ulong value) + { + this.m_Buffer.WriteByte8((byte)(value & 255UL), (byte)(value >> 8 & 255UL), (byte)(value >> 16 & 255UL), (byte)(value >> 24 & 255UL), (byte)(value >> 32 & 255UL), (byte)(value >> 40 & 255UL), (byte)(value >> 48 & 255UL), (byte)(value >> 56 & 255UL)); + } + + public void Write(float value) + { + m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); + } + + public void Write(double value) + { + m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); + } + + public void Write(decimal value) + { + int[] bits = decimal.GetBits(value); + this.Write(bits[0]); + this.Write(bits[1]); + this.Write(bits[2]); + this.Write(bits[3]); + } + + public void Write(string value) + { + if (value == null) + { + this.m_Buffer.WriteByte2(0, 0); + } + else + { + int byteCount = s_Encoding.GetByteCount(value); + if (byteCount >= 32768) + { + throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length); + } + this.Write((ushort)byteCount); + int bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); + this.m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); + } + } + + public void Write(bool value) + { + if (value) + { + this.m_Buffer.WriteByte(1); + } + else + { + this.m_Buffer.WriteByte(0); + } + } + + public void Write(byte[] buffer, int count) + { + if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.m_Buffer.WriteBytes(buffer, (ushort)count); + } + } + + public void Write(byte[] buffer, int offset, int count) + { + if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); + } + } + + public void WriteBytesAndSize(byte[] buffer, int count) + { + if (buffer == null || count == 0) + { + this.Write(0); + } + else if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.Write((ushort)count); + this.m_Buffer.WriteBytes(buffer, (ushort)count); + } + } + + public void WriteBytesFull(byte[] buffer) + { + if (buffer == null) + { + this.Write(0); + } + else if (buffer.Length > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + this.Write((ushort)buffer.Length); + this.m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); + } + } + + public void Write(Vector2 value) + { + this.Write(value.x); + this.Write(value.y); + } + + public void Write(Vector3 value) + { + this.Write(value.x); + this.Write(value.y); + this.Write(value.z); + } + + public void Write(Vector4 value) + { + this.Write(value.x); + this.Write(value.y); + this.Write(value.z); + this.Write(value.w); + } + + public void Write(Color value) + { + this.Write(value.r); + this.Write(value.g); + this.Write(value.b); + this.Write(value.a); + } + + public void Write(Color32 value) + { + this.Write(value.r); + this.Write(value.g); + this.Write(value.b); + this.Write(value.a); + } + + public void Write(Quaternion value) + { + this.Write(value.x); + this.Write(value.y); + this.Write(value.z); + this.Write(value.w); + } + + public void Write(Rect value) + { + this.Write(value.xMin); + this.Write(value.yMin); + this.Write(value.width); + this.Write(value.height); + } + + public void Write(Plane value) + { + this.Write(value.normal); + this.Write(value.distance); + } + + public void Write(Ray value) + { + this.Write(value.direction); + this.Write(value.origin); + } + + public void Write(Matrix4x4 value) + { + this.Write(value.m00); + this.Write(value.m01); + this.Write(value.m02); + this.Write(value.m03); + this.Write(value.m10); + this.Write(value.m11); + this.Write(value.m12); + this.Write(value.m13); + this.Write(value.m20); + this.Write(value.m21); + this.Write(value.m22); + this.Write(value.m23); + this.Write(value.m30); + this.Write(value.m31); + this.Write(value.m32); + this.Write(value.m33); + } + + public void Write(NetworkHash128 value) + { + this.Write(value.i0); + this.Write(value.i1); + this.Write(value.i2); + this.Write(value.i3); + this.Write(value.i4); + this.Write(value.i5); + this.Write(value.i6); + this.Write(value.i7); + this.Write(value.i8); + this.Write(value.i9); + this.Write(value.i10); + this.Write(value.i11); + this.Write(value.i12); + this.Write(value.i13); + this.Write(value.i14); + this.Write(value.i15); + } + + public void Write(NetworkIdentity value) + { + if (value == null) + { + this.WritePackedUInt32(0U); + } + else + { + this.Write(value.netId); + } + } + + public void Write(Transform value) + { + if (value == null || value.gameObject == null) + { + this.WritePackedUInt32(0U); + } + else + { + NetworkIdentity component = value.gameObject.GetComponent(); + if (component != null) + { + this.Write(component.netId); + } + else + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + } + this.WritePackedUInt32(0U); + } + } + } + + public void Write(GameObject value) + { + if (value == null) + { + this.WritePackedUInt32(0U); + } + else + { + QSBNetworkIdentity component = value.GetComponent(); + if (component != null) + { + this.Write(component.NetId); + } + else + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + } + this.WritePackedUInt32(0U); + } + } + } + + public void Write(QSBMessageBase msg) + { + msg.Serialize(this); + } + + public void SeekZero() + { + this.m_Buffer.SeekZero(); + } + + public void StartMessage(short msgType) + { + this.SeekZero(); + this.m_Buffer.WriteByte2(0, 0); + this.Write(msgType); + } + + public void FinishMessage() + { + this.m_Buffer.FinishMessage(); + } + + private const int k_MaxStringLength = 32768; + + private QSBNetBuffer m_Buffer; + + private static Encoding s_Encoding; + + private static byte[] s_StringWriteBuffer; + } +} \ No newline at end of file diff --git a/QuantumUNET/QSBPeerInfoPlayer.cs b/QuantumUNET/QSBPeerInfoPlayer.cs new file mode 100644 index 000000000..77394469a --- /dev/null +++ b/QuantumUNET/QSBPeerInfoPlayer.cs @@ -0,0 +1,11 @@ +using UnityEngine.Networking; + +namespace QuantumUNET +{ + public struct QSBPeerInfoPlayer + { + public NetworkInstanceId netId; + + public short playerControllerId; + } +} \ No newline at end of file diff --git a/QuantumUNET/QSBPlayerController.cs b/QuantumUNET/QSBPlayerController.cs index 908fafdeb..745ad2a35 100644 --- a/QuantumUNET/QSBPlayerController.cs +++ b/QuantumUNET/QSBPlayerController.cs @@ -9,7 +9,6 @@ public class QSBPlayerController public QSBNetworkIdentity UnetView; public GameObject Gameobject; public const int MaxPlayersPerClient = 32; - public bool IsValid => PlayerControllerId != -1; internal const short kMaxLocalPlayers = 8; @@ -24,6 +23,8 @@ internal QSBPlayerController(GameObject go, short playerControllerId) PlayerControllerId = playerControllerId; } + public bool IsValid => PlayerControllerId != -1; + public override string ToString() { return string.Format("ID={0} NetworkIdentity NetID={1} Player={2}", new object[] diff --git a/QuantumUNET/QSBULocalConnectionToClient.cs b/QuantumUNET/QSBULocalConnectionToClient.cs index 3c83fbe9a..041f781c2 100644 --- a/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,5 +1,4 @@ using QuantumUNET.Messages; -using QuantumUNET.Transport; namespace QuantumUNET { diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index 90420f79d..51d2d4db7 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,5 +1,4 @@ using QuantumUNET.Messages; -using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -13,14 +12,20 @@ public QSBULocalConnectionToServer(QSBNetworkServer localServer) m_LocalServer = localServer; } - public override bool Send(short msgType, QSBMessageBase msg) => - m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); + public override bool Send(short msgType, QSBMessageBase msg) + { + return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); + } - public override bool SendUnreliable(short msgType, QSBMessageBase msg) => - m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); + public override bool SendUnreliable(short msgType, QSBMessageBase msg) + { + return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); + } - public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) => - m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); + public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) + { + return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); + } public override bool SendBytes(byte[] bytes, int numBytes, int channelId) { @@ -40,8 +45,10 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) return result; } - public override bool SendWriter(QSBNetworkWriter writer, int channelId) => - m_LocalServer.InvokeBytes(this, writer.AsArray(), (short)writer.AsArray().Length, channelId); + public override bool SendWriter(QSBNetworkWriter writer, int channelId) + { + return m_LocalServer.InvokeBytes(this, writer.AsArray(), (int)((short)writer.AsArray().Length), channelId); + } public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { diff --git a/QuantumUNET/QSBUtility.cs b/QuantumUNET/QSBUtility.cs new file mode 100644 index 000000000..57c806098 --- /dev/null +++ b/QuantumUNET/QSBUtility.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Networking.Types; + +namespace QuantumUNET +{ + public class QSBUtility + { + private static readonly Dictionary _dictTokens = new Dictionary(); + + public static SourceID GetSourceID() + => (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); + + public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) + { + if (_dictTokens.ContainsKey(netId)) + { + _dictTokens.Remove(netId); + } + _dictTokens.Add(netId, accessToken); + } + + public static NetworkAccessToken GetAccessTokenForNetwork(NetworkID netId) + { + if (!_dictTokens.TryGetValue(netId, out var result)) + { + result = new NetworkAccessToken(); + } + return result; + } + } +} \ No newline at end of file diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 93f400959..034ab304d 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -100,8 +100,8 @@ - - + + @@ -110,7 +110,7 @@ - + @@ -122,25 +122,28 @@ - + - + + + + - + diff --git a/QuantumUNET/Transport/QSBChannelPacket.cs b/QuantumUNET/Transport/QSBChannelPacket.cs deleted file mode 100644 index 253f93fe9..000000000 --- a/QuantumUNET/Transport/QSBChannelPacket.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Networking; - -namespace QuantumUNET.Transport -{ - internal struct QSBChannelPacket - { - private int m_Position; - private byte[] m_Buffer; - private bool m_IsReliable; - - public QSBChannelPacket(int packetSize, bool isReliable) - { - m_Position = 0; - m_Buffer = new byte[packetSize]; - m_IsReliable = isReliable; - } - - public void Reset() => m_Position = 0; - - public bool IsEmpty() => m_Position == 0; - - public void Write(byte[] bytes, int numBytes) - { - Array.Copy(bytes, 0, m_Buffer, m_Position, numBytes); - m_Position += numBytes; - } - - public bool HasSpace(int numBytes) => m_Position + numBytes <= m_Buffer.Length; - - public bool SendToTransport(QSBNetworkConnection conn, int channelId) - { - var result = true; - if (!conn.TransportSend(m_Buffer, (ushort)m_Position, channelId, out var b)) - { - if (!m_IsReliable || b != 4) - { - Debug.LogError($"Failed to send internal buffer channel:{channelId} bytesToSend:{m_Position}"); - result = false; - } - } - if (b != 0) - { - if (m_IsReliable && b == 4) - { - return false; - } - Debug.LogError($"Send Error: {(NetworkError)b} channel:{channelId} bytesToSend:{m_Position}"); - result = false; - } - m_Position = 0; - return result; - } - } -} \ No newline at end of file diff --git a/QuantumUNET/Transport/QSBNetBuffer.cs b/QuantumUNET/Transport/QSBNetBuffer.cs deleted file mode 100644 index 589c893c3..000000000 --- a/QuantumUNET/Transport/QSBNetBuffer.cs +++ /dev/null @@ -1,169 +0,0 @@ -using System; -using UnityEngine; - -namespace QuantumUNET.Transport -{ - internal class QSBNetBuffer - { - public QSBNetBuffer() - { - m_Buffer = new byte[64]; - } - - public QSBNetBuffer(byte[] buffer) - { - m_Buffer = buffer; - } - - public uint Position { get; private set; } - public int Length => m_Buffer.Length; - - public byte ReadByte() - { - if (Position >= (ulong)m_Buffer.Length) - { - throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + ToString()); - } - return m_Buffer[(int)((UIntPtr)(Position++))]; - } - - public void ReadBytes(byte[] buffer, uint count) - { - if (Position + count > (ulong)m_Buffer.Length) - { - throw new IndexOutOfRangeException(string.Concat(new object[] - { - "NetworkReader:ReadBytes out of range: (", - count, - ") ", - ToString() - })); - } - ushort num = 0; - while (num < count) - { - buffer[num] = m_Buffer[(int)((UIntPtr)(Position + num))]; - num += 1; - } - Position += count; - } - - internal ArraySegment AsArraySegment() => new ArraySegment(m_Buffer, 0, (int)Position); - - public void WriteByte(byte value) - { - WriteCheckForSpace(1); - m_Buffer[(int)((UIntPtr)Position)] = value; - Position += 1U; - } - - public void WriteByte2(byte value0, byte value1) - { - WriteCheckForSpace(2); - m_Buffer[(int)((UIntPtr)Position)] = value0; - m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; - Position += 2U; - } - - public void WriteByte4(byte value0, byte value1, byte value2, byte value3) - { - WriteCheckForSpace(4); - m_Buffer[(int)((UIntPtr)Position)] = value0; - m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; - m_Buffer[(int)((UIntPtr)(Position + 2U))] = value2; - m_Buffer[(int)((UIntPtr)(Position + 3U))] = value3; - Position += 4U; - } - - public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7) - { - WriteCheckForSpace(8); - m_Buffer[(int)((UIntPtr)Position)] = value0; - m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; - m_Buffer[(int)((UIntPtr)(Position + 2U))] = value2; - m_Buffer[(int)((UIntPtr)(Position + 3U))] = value3; - m_Buffer[(int)((UIntPtr)(Position + 4U))] = value4; - m_Buffer[(int)((UIntPtr)(Position + 5U))] = value5; - m_Buffer[(int)((UIntPtr)(Position + 6U))] = value6; - m_Buffer[(int)((UIntPtr)(Position + 7U))] = value7; - Position += 8U; - } - - public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count) - { - var num = (uint)(count + targetOffset); - WriteCheckForSpace((ushort)num); - if (targetOffset == 0 && count == buffer.Length) - { - buffer.CopyTo(m_Buffer, (int)Position); - } - else - { - for (var i = 0; i < count; i++) - { - m_Buffer[targetOffset + i] = buffer[i]; - } - } - if (num > Position) - { - Position = num; - } - } - - public void WriteBytes(byte[] buffer, ushort count) - { - WriteCheckForSpace(count); - if (count == buffer.Length) - { - buffer.CopyTo(m_Buffer, (int)Position); - } - else - { - for (var i = 0; i < count; i++) - { - m_Buffer[(int)(checked((IntPtr)(unchecked(Position + (ulong)i))))] = buffer[i]; - } - } - Position += count; - } - - private void WriteCheckForSpace(ushort count) - { - if (Position + count >= (ulong)m_Buffer.Length) - { - var num = (int)Math.Ceiling(m_Buffer.Length * 1.5f); - while (Position + count >= (ulong)num) - { - num = (int)Math.Ceiling(num * 1.5f); - if (num > 134217728) - { - Debug.LogWarning("NetworkBuffer size is " + num + " bytes!"); - } - } - var array = new byte[num]; - m_Buffer.CopyTo(array, 0); - m_Buffer = array; - } - } - - public void FinishMessage() - { - var num = (ushort)(Position - 4U); - m_Buffer[0] = (byte)(num & 255); - m_Buffer[1] = (byte)((num >> 8) & 255); - } - - public void SeekZero() => - Position = 0U; - - public void Replace(byte[] buffer) - { - m_Buffer = buffer; - Position = 0U; - } - - public override string ToString() => string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, Position); - - private byte[] m_Buffer; - } -} \ No newline at end of file diff --git a/QuantumUNET/Transport/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs deleted file mode 100644 index b5f4073bf..000000000 --- a/QuantumUNET/Transport/QSBNetworkWriter.cs +++ /dev/null @@ -1,477 +0,0 @@ -using QuantumUNET.Components; -using QuantumUNET.Messages; -using System; -using System.Text; -using UnityEngine; -using UnityEngine.Networking; - -namespace QuantumUNET.Transport -{ - public class QSBNetworkWriter - { - public QSBNetworkWriter() - { - m_Buffer = new QSBNetBuffer(); - if (s_Encoding == null) - { - s_Encoding = new UTF8Encoding(); - s_StringWriteBuffer = new byte[32768]; - } - } - - public QSBNetworkWriter(byte[] buffer) - { - m_Buffer = new QSBNetBuffer(buffer); - if (s_Encoding == null) - { - s_Encoding = new UTF8Encoding(); - s_StringWriteBuffer = new byte[32768]; - } - } - - public short Position => (short)m_Buffer.Position; - - public byte[] ToArray() - { - var array = new byte[m_Buffer.AsArraySegment().Count]; - Array.Copy(m_Buffer.AsArraySegment().Array, array, m_Buffer.AsArraySegment().Count); - return array; - } - - public byte[] AsArray() => AsArraySegment().Array; - - internal ArraySegment AsArraySegment() => m_Buffer.AsArraySegment(); - - public void WritePackedUInt32(uint value) - { - if (value <= 240U) - { - Write((byte)value); - } - else if (value <= 2287U) - { - Write((byte)(((value - 240U) / 256U) + 241U)); - Write((byte)((value - 240U) % 256U)); - } - else if (value <= 67823U) - { - Write(249); - Write((byte)((value - 2288U) / 256U)); - Write((byte)((value - 2288U) % 256U)); - } - else if (value <= 16777215U) - { - Write(250); - Write((byte)(value & 255U)); - Write((byte)((value >> 8) & 255U)); - Write((byte)((value >> 16) & 255U)); - } - else - { - Write(251); - Write((byte)(value & 255U)); - Write((byte)((value >> 8) & 255U)); - Write((byte)((value >> 16) & 255U)); - Write((byte)((value >> 24) & 255U)); - } - } - - public void WritePackedUInt64(ulong value) - { - if (value <= 240UL) - { - Write((byte)value); - } - else if (value <= 2287UL) - { - Write((byte)(((value - 240UL) / 256UL) + 241UL)); - Write((byte)((value - 240UL) % 256UL)); - } - else if (value <= 67823UL) - { - Write(249); - Write((byte)((value - 2288UL) / 256UL)); - Write((byte)((value - 2288UL) % 256UL)); - } - else if (value <= 16777215UL) - { - Write(250); - Write((byte)(value & 255UL)); - Write((byte)((value >> 8) & 255UL)); - Write((byte)((value >> 16) & 255UL)); - } - else if (value <= uint.MaxValue) - { - Write(251); - Write((byte)(value & 255UL)); - Write((byte)((value >> 8) & 255UL)); - Write((byte)((value >> 16) & 255UL)); - Write((byte)((value >> 24) & 255UL)); - } - else if (value <= 1099511627775UL) - { - Write(252); - Write((byte)(value & 255UL)); - Write((byte)((value >> 8) & 255UL)); - Write((byte)((value >> 16) & 255UL)); - Write((byte)((value >> 24) & 255UL)); - Write((byte)((value >> 32) & 255UL)); - } - else if (value <= 281474976710655UL) - { - Write(253); - Write((byte)(value & 255UL)); - Write((byte)((value >> 8) & 255UL)); - Write((byte)((value >> 16) & 255UL)); - Write((byte)((value >> 24) & 255UL)); - Write((byte)((value >> 32) & 255UL)); - Write((byte)((value >> 40) & 255UL)); - } - else if (value <= 72057594037927935UL) - { - Write(254); - Write((byte)(value & 255UL)); - Write((byte)((value >> 8) & 255UL)); - Write((byte)((value >> 16) & 255UL)); - Write((byte)((value >> 24) & 255UL)); - Write((byte)((value >> 32) & 255UL)); - Write((byte)((value >> 40) & 255UL)); - Write((byte)((value >> 48) & 255UL)); - } - else - { - Write(byte.MaxValue); - Write((byte)(value & 255UL)); - Write((byte)((value >> 8) & 255UL)); - Write((byte)((value >> 16) & 255UL)); - Write((byte)((value >> 24) & 255UL)); - Write((byte)((value >> 32) & 255UL)); - Write((byte)((value >> 40) & 255UL)); - Write((byte)((value >> 48) & 255UL)); - Write((byte)((value >> 56) & 255UL)); - } - } - - public void Write(NetworkInstanceId value) => WritePackedUInt32(value.Value); - - public void Write(NetworkSceneId value) => WritePackedUInt32(value.Value); - - public void Write(char value) => m_Buffer.WriteByte((byte)value); - - public void Write(byte value) => m_Buffer.WriteByte(value); - - public void Write(sbyte value) => m_Buffer.WriteByte((byte)value); - - public void Write(short value) => m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255)); - - public void Write(ushort value) => m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255)); - - public void Write(int value) => m_Buffer.WriteByte4((byte)(value & 255), (byte)((value >> 8) & 255), (byte)((value >> 16) & 255), (byte)((value >> 24) & 255)); - - public void Write(uint value) => m_Buffer.WriteByte4((byte)(value & 255U), (byte)((value >> 8) & 255U), (byte)((value >> 16) & 255U), (byte)((value >> 24) & 255U)); - - public void Write(long value) => m_Buffer.WriteByte8((byte)(value & 255L), (byte)((value >> 8) & 255L), (byte)((value >> 16) & 255L), (byte)((value >> 24) & 255L), (byte)((value >> 32) & 255L), (byte)((value >> 40) & 255L), (byte)((value >> 48) & 255L), (byte)((value >> 56) & 255L)); - - public void Write(ulong value) => m_Buffer.WriteByte8((byte)(value & 255UL), (byte)((value >> 8) & 255UL), (byte)((value >> 16) & 255UL), (byte)((value >> 24) & 255UL), (byte)((value >> 32) & 255UL), (byte)((value >> 40) & 255UL), (byte)((value >> 48) & 255UL), (byte)((value >> 56) & 255UL)); - - public void Write(float value) => m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); - - public void Write(double value) => m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); - - public void Write(decimal value) - { - var bits = decimal.GetBits(value); - Write(bits[0]); - Write(bits[1]); - Write(bits[2]); - Write(bits[3]); - } - - public void Write(string value) - { - if (value == null) - { - m_Buffer.WriteByte2(0, 0); - } - else - { - var byteCount = s_Encoding.GetByteCount(value); - if (byteCount >= 32768) - { - throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length); - } - Write((ushort)byteCount); - var bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); - m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); - } - } - - public void Write(bool value) - { - if (value) - { - m_Buffer.WriteByte(1); - } - else - { - m_Buffer.WriteByte(0); - } - } - - public void Write(byte[] buffer, int count) - { - if (count > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - m_Buffer.WriteBytes(buffer, (ushort)count); - } - } - - public void Write(byte[] buffer, int offset, int count) - { - if (count > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); - } - } - - public void WriteBytesAndSize(byte[] buffer, int count) - { - if (buffer == null || count == 0) - { - Write(0); - } - else if (count > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - Write((ushort)count); - m_Buffer.WriteBytes(buffer, (ushort)count); - } - } - - public void WriteBytesFull(byte[] buffer) - { - if (buffer == null) - { - Write(0); - } - else if (buffer.Length > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - Write((ushort)buffer.Length); - m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); - } - } - - public void Write(Vector2 value) - { - Write(value.x); - Write(value.y); - } - - public void Write(Vector3 value) - { - Write(value.x); - Write(value.y); - Write(value.z); - } - - public void Write(Vector4 value) - { - Write(value.x); - Write(value.y); - Write(value.z); - Write(value.w); - } - - public void Write(Color value) - { - Write(value.r); - Write(value.g); - Write(value.b); - Write(value.a); - } - - public void Write(Color32 value) - { - Write(value.r); - Write(value.g); - Write(value.b); - Write(value.a); - } - - public void Write(Quaternion value) - { - Write(value.x); - Write(value.y); - Write(value.z); - Write(value.w); - } - - public void Write(Rect value) - { - Write(value.xMin); - Write(value.yMin); - Write(value.width); - Write(value.height); - } - - public void Write(Plane value) - { - Write(value.normal); - Write(value.distance); - } - - public void Write(Ray value) - { - Write(value.direction); - Write(value.origin); - } - - public void Write(Matrix4x4 value) - { - Write(value.m00); - Write(value.m01); - Write(value.m02); - Write(value.m03); - Write(value.m10); - Write(value.m11); - Write(value.m12); - Write(value.m13); - Write(value.m20); - Write(value.m21); - Write(value.m22); - Write(value.m23); - Write(value.m30); - Write(value.m31); - Write(value.m32); - Write(value.m33); - } - - public void Write(NetworkHash128 value) - { - Write(value.i0); - Write(value.i1); - Write(value.i2); - Write(value.i3); - Write(value.i4); - Write(value.i5); - Write(value.i6); - Write(value.i7); - Write(value.i8); - Write(value.i9); - Write(value.i10); - Write(value.i11); - Write(value.i12); - Write(value.i13); - Write(value.i14); - Write(value.i15); - } - - public void Write(QSBNetworkIdentity value) - { - if (value == null) - { - WritePackedUInt32(0U); - } - else - { - Write(value.NetId); - } - } - - public void Write(Transform value) - { - if (value == null || value.gameObject == null) - { - WritePackedUInt32(0U); - } - else - { - var component = value.gameObject.GetComponent(); - if (component != null) - { - Write(component.NetId); - } - else - { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); - } - WritePackedUInt32(0U); - } - } - } - - public void Write(GameObject value) - { - if (value == null) - { - WritePackedUInt32(0U); - } - else - { - var component = value.GetComponent(); - if (component != null) - { - Write(component.NetId); - } - else - { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); - } - WritePackedUInt32(0U); - } - } - } - - public void Write(QSBMessageBase msg) => msg.Serialize(this); - - public void SeekZero() => m_Buffer.SeekZero(); - - public void StartMessage(short msgType) - { - SeekZero(); - m_Buffer.WriteByte2(0, 0); - Write(msgType); - } - - public void FinishMessage() => m_Buffer.FinishMessage(); - - private const int k_MaxStringLength = 32768; - - private QSBNetBuffer m_Buffer; - - private static Encoding s_Encoding; - - private static byte[] s_StringWriteBuffer; - } -} \ No newline at end of file diff --git a/README.md b/README.md index 696229f8f..d20c15ac3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Quantum Space Buddies - Outer Wilds Online Multiplayer Mod -Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as QNet or QuantumUNET) for networking. +Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as "QuantumUNET") for networking. **Disclamer - The mod authors (misternebula, AmazingAlek and Raicuparta) take no responsibility for any damages that are caused through opening ports on your network, or connecting to servers. Do not attempt to change your router settings without prior knowledge of what you are doing. Only share your public IP with people you trust, and don't connect to IPs that you do not know the source of. It is good practice to close ports/firewall exceptions after you have finished playing.** From 7a4149bee68a20b107e1329f3c6a03d36975de63 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 09:08:38 +0000 Subject: [PATCH 185/207] Revert "REVERT" This reverts commit 661c04a98784a50011cfdaafc62e424095399678. --- QSB/Animation/AnimationSync.cs | 10 +- .../Events/ConversationMessage.cs | 2 +- .../Events/ConversationStartEndMessage.cs | 2 +- .../Events/DialogueConditionMessage.cs | 2 +- QSB/Messaging/EnumMessage.cs | 2 +- QSB/Messaging/FloatMessage.cs | 2 +- QSB/Messaging/PlayerMessage.cs | 4 +- QSB/Messaging/ToggleMessage.cs | 2 +- QSB/OrbSync/Events/OrbSlotMessage.cs | 2 +- QSB/Player/Events/PlayerJoinMessage.cs | 2 +- QSB/Player/Events/PlayerStateMessage.cs | 2 +- QSB/QSBNetworkManager.cs | 1 + QSB/TimeSync/Events/ServerTimeMessage.cs | 2 +- .../Events/BoolWorldObjectMessage.cs | 2 +- QSB/WorldSync/Events/WorldObjectMessage.cs | 2 +- QuantumUNET/Components/QSBNetworkAnimator.cs | 52 +- QuantumUNET/Components/QSBNetworkIdentity.cs | 59 +- .../Components/QSBNetworkManagerHUD.cs | 5 +- .../Components/QSBNetworkManagerUNET.cs | 265 ++------- QuantumUNET/Components/QSBNetworkTransform.cs | 111 +--- QuantumUNET/Messages/QSBAddPlayerMessage.cs | 16 +- QuantumUNET/Messages/QSBAnimationMessage.cs | 17 +- .../Messages/QSBAnimationParametersMessage.cs | 1 + .../Messages/QSBAnimationTriggerMessage.cs | 1 + QuantumUNET/Messages/QSBCRCMessage.cs | 4 +- .../Messages/QSBClientAuthorityMessage.cs | 1 + QuantumUNET/Messages/QSBEmptyMessage.cs | 13 +- QuantumUNET/Messages/QSBErrorMessage.cs | 16 +- QuantumUNET/Messages/QSBMessageBase.cs | 12 +- QuantumUNET/Messages/QSBMsgType.cs | 2 +- QuantumUNET/Messages/QSBNetworkMessage.cs | 8 +- .../Messages/QSBObjectDestroyMessage.cs | 11 +- .../Messages/QSBObjectSpawnFinishedMessage.cs | 14 +- QuantumUNET/Messages/QSBObjectSpawnMessage.cs | 19 +- .../Messages/QSBObjectSpawnSceneMessage.cs | 17 +- QuantumUNET/Messages/QSBOwnerMessage.cs | 13 +- QuantumUNET/Messages/QSBPeerInfoMessage.cs | 80 --- QuantumUNET/Messages/QSBReconnectMessage.cs | 30 - .../Messages/QSBRemovePlayerMessage.cs | 14 +- QuantumUNET/Messages/QSBSpawnDelegate.cs | 7 + QuantumUNET/Messages/QSBStringMessage.cs | 22 +- QuantumUNET/QSBChannelPacket.cs | 82 --- QuantumUNET/QSBClientScene.cs | 97 ++-- QuantumUNET/QSBLocalClient.cs | 15 +- QuantumUNET/QSBNetBuffer.cs | 198 ------- QuantumUNET/QSBNetworkBehaviour.cs | 5 +- QuantumUNET/QSBNetworkCRC.cs | 109 ++-- QuantumUNET/QSBNetworkClient.cs | 323 ++++------- QuantumUNET/QSBNetworkConnection.cs | 26 +- QuantumUNET/QSBNetworkScene.cs | 27 +- QuantumUNET/QSBNetworkServer.cs | 305 +++------- QuantumUNET/QSBNetworkServerSimple.cs | 333 ++++------- QuantumUNET/QSBNetworkWriter.cs | 537 ------------------ QuantumUNET/QSBPeerInfoPlayer.cs | 11 - QuantumUNET/QSBPlayerController.cs | 3 +- QuantumUNET/QSBULocalConnectionToClient.cs | 1 + QuantumUNET/QSBULocalConnectionToServer.cs | 25 +- QuantumUNET/QSBUtility.cs | 32 -- QuantumUNET/QuantumUNET.csproj | 15 +- .../{ => Transport}/QSBChannelBuffer.cs | 56 +- QuantumUNET/Transport/QSBChannelPacket.cs | 56 ++ QuantumUNET/Transport/QSBNetBuffer.cs | 169 ++++++ .../{ => Transport}/QSBNetworkReader.cs | 2 +- QuantumUNET/Transport/QSBNetworkWriter.cs | 477 ++++++++++++++++ README.md | 2 +- 65 files changed, 1359 insertions(+), 2396 deletions(-) delete mode 100644 QuantumUNET/Messages/QSBPeerInfoMessage.cs delete mode 100644 QuantumUNET/Messages/QSBReconnectMessage.cs create mode 100644 QuantumUNET/Messages/QSBSpawnDelegate.cs delete mode 100644 QuantumUNET/QSBChannelPacket.cs delete mode 100644 QuantumUNET/QSBNetBuffer.cs delete mode 100644 QuantumUNET/QSBNetworkWriter.cs delete mode 100644 QuantumUNET/QSBPeerInfoPlayer.cs delete mode 100644 QuantumUNET/QSBUtility.cs rename QuantumUNET/{ => Transport}/QSBChannelBuffer.cs (87%) create mode 100644 QuantumUNET/Transport/QSBChannelPacket.cs create mode 100644 QuantumUNET/Transport/QSBNetBuffer.cs rename QuantumUNET/{ => Transport}/QSBNetworkReader.cs (99%) create mode 100644 QuantumUNET/Transport/QSBNetworkWriter.cs diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 77614e787..02df29c92 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -145,15 +145,9 @@ private void InitCrouchSync() private void OnBecomeUngrounded() => _netAnim.SetTrigger("Ungrounded"); - public void SendCrouch(float value = 0) - { - GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - } + public void SendCrouch(float value = 0) => GlobalMessenger.FireEvent(EventNames.QSBCrouch, value); - public void HandleCrouch(float value) - { - _crouchSync.CrouchParam.Target = value; - } + public void HandleCrouch(float value) => _crouchSync.CrouchParam.Target = value; private void SuitUp() { diff --git a/QSB/ConversationSync/Events/ConversationMessage.cs b/QSB/ConversationSync/Events/ConversationMessage.cs index 206072c0c..9a5c85e4c 100644 --- a/QSB/ConversationSync/Events/ConversationMessage.cs +++ b/QSB/ConversationSync/Events/ConversationMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.ConversationSync.Events { diff --git a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs index 75db950da..c836868bf 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndMessage.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.ConversationSync.Events { diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs index 3d4252e9a..3e4249674 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs +++ b/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.DialogueConditionSync.Events { diff --git a/QSB/Messaging/EnumMessage.cs b/QSB/Messaging/EnumMessage.cs index 0624f8363..4886c66bc 100644 --- a/QSB/Messaging/EnumMessage.cs +++ b/QSB/Messaging/EnumMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/Messaging/FloatMessage.cs b/QSB/Messaging/FloatMessage.cs index 832c6a0cd..5d1685f76 100644 --- a/QSB/Messaging/FloatMessage.cs +++ b/QSB/Messaging/FloatMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/Messaging/PlayerMessage.cs b/QSB/Messaging/PlayerMessage.cs index 9fb002381..e5a2b1c5d 100644 --- a/QSB/Messaging/PlayerMessage.cs +++ b/QSB/Messaging/PlayerMessage.cs @@ -1,5 +1,5 @@ -using QuantumUNET; -using QuantumUNET.Messages; +using QuantumUNET.Messages; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/Messaging/ToggleMessage.cs b/QSB/Messaging/ToggleMessage.cs index 0956b3b25..192990799 100644 --- a/QSB/Messaging/ToggleMessage.cs +++ b/QSB/Messaging/ToggleMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Messaging { diff --git a/QSB/OrbSync/Events/OrbSlotMessage.cs b/QSB/OrbSync/Events/OrbSlotMessage.cs index c25da215c..553d6dc8b 100644 --- a/QSB/OrbSync/Events/OrbSlotMessage.cs +++ b/QSB/OrbSync/Events/OrbSlotMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.OrbSync.Events { diff --git a/QSB/Player/Events/PlayerJoinMessage.cs b/QSB/Player/Events/PlayerJoinMessage.cs index 0e6954242..51f86ccea 100644 --- a/QSB/Player/Events/PlayerJoinMessage.cs +++ b/QSB/Player/Events/PlayerJoinMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Player.Events { diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 7d2d341f1..7317da16d 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.Player.Events { diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 2aca29fe8..22a034f72 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -43,6 +43,7 @@ public class QSBNetworkManager : QSBNetworkManagerUNET public void Awake() { + base.Awake(); Instance = this; _lobby = gameObject.AddComponent(); diff --git a/QSB/TimeSync/Events/ServerTimeMessage.cs b/QSB/TimeSync/Events/ServerTimeMessage.cs index 407d2bfc0..1979069a9 100644 --- a/QSB/TimeSync/Events/ServerTimeMessage.cs +++ b/QSB/TimeSync/Events/ServerTimeMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.TimeSync.Events { diff --git a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs index 99f820cfe..a5456a029 100644 --- a/QSB/WorldSync/Events/BoolWorldObjectMessage.cs +++ b/QSB/WorldSync/Events/BoolWorldObjectMessage.cs @@ -1,4 +1,4 @@ -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.WorldSync.Events { diff --git a/QSB/WorldSync/Events/WorldObjectMessage.cs b/QSB/WorldSync/Events/WorldObjectMessage.cs index 12ec48f85..f6f47fdf9 100644 --- a/QSB/WorldSync/Events/WorldObjectMessage.cs +++ b/QSB/WorldSync/Events/WorldObjectMessage.cs @@ -1,5 +1,5 @@ using QSB.Messaging; -using QuantumUNET; +using QuantumUNET.Transport; namespace QSB.WorldSync.Events { diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index 4cfacf722..e4865c053 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using UnityEngine; namespace QuantumUNET.Components @@ -32,22 +33,22 @@ public Animator animator public void SetParameterAutoSend(int index, bool value) { if (value) + { m_ParameterSendBits |= (uint)(1 << index); + } else + { m_ParameterSendBits &= (uint)~(1 << index); + } } - public bool GetParameterAutoSend(int index) - { - return ((int)m_ParameterSendBits & 1 << index) != 0; - } + public bool GetParameterAutoSend(int index) => + ((int)m_ParameterSendBits & (1 << index)) != 0; - public override void OnStartAuthority() - { + public override void OnStartAuthority() => m_ParameterWriter = new QSBNetworkWriter(); - } - private void FixedUpdate() + public void FixedUpdate() { if (m_ParameterWriter == null) { @@ -134,7 +135,10 @@ private void CheckSendRate() else { if (!IsServer || LocalPlayerAuthority) + { return; + } + QSBNetworkServer.SendToReady(gameObject, 41, parametersMessage); } } @@ -161,14 +165,11 @@ internal void HandleAnimParamsMsg(QSBAnimationParametersMessage msg, QSBNetworkR ReadParameters(reader, true); } - internal void HandleAnimTriggerMsg(int hash) - { - m_Animator.SetTrigger(hash); - } + internal void HandleAnimTriggerMsg(int hash) => m_Animator.SetTrigger(hash); private void WriteParameters(QSBNetworkWriter writer, bool autoSend) { - for (int index = 0; index < m_Animator.parameters.Length; ++index) + for (var index = 0; index < m_Animator.parameters.Length; ++index) { if (!autoSend || GetParameterAutoSend(index)) { @@ -193,7 +194,7 @@ private void WriteParameters(QSBNetworkWriter writer, bool autoSend) private void ReadParameters(QSBNetworkReader reader, bool autoSend) { - for (int index = 0; index < m_Animator.parameters.Length; ++index) + for (var index = 0; index < m_Animator.parameters.Length; ++index) { if (!autoSend || GetParameterAutoSend(index)) { @@ -257,10 +258,7 @@ public override void OnDeserialize(QSBNetworkReader reader, bool initialState) m_Animator.Play(stateNameHash, 0, normalizedTime); } - public void SetTrigger(string triggerName) - { - SetTrigger(Animator.StringToHash(triggerName)); - } + public void SetTrigger(string triggerName) => SetTrigger(Animator.StringToHash(triggerName)); public void SetTrigger(int hash) { @@ -338,10 +336,16 @@ internal static void OnAnimationClientMessage(QSBNetworkMessage netMsg) netMsg.ReadMessage(AnimationMessage); var localObject = QSBClientScene.FindLocalObject(AnimationMessage.netId); if (localObject == null) + { return; + } + var component = localObject.GetComponent(); if (component == null) + { return; + } + var reader = new QSBNetworkReader(AnimationMessage.parameters); component.HandleAnimMsg(AnimationMessage, reader); } @@ -351,10 +355,16 @@ internal static void OnAnimationParametersClientMessage(QSBNetworkMessage netMsg netMsg.ReadMessage(ParametersMessage); var localObject = QSBClientScene.FindLocalObject(ParametersMessage.netId); if (localObject == null) + { return; + } + var component = localObject.GetComponent(); if (component == null) + { return; + } + var reader = new QSBNetworkReader(ParametersMessage.parameters); component.HandleAnimParamsMsg(ParametersMessage, reader); } @@ -364,10 +374,16 @@ internal static void OnAnimationTriggerClientMessage(QSBNetworkMessage netMsg) netMsg.ReadMessage(TriggersMessage); var localObject = QSBClientScene.FindLocalObject(TriggersMessage.netId); if (localObject == null) + { return; + } + var component = localObject.GetComponent(); if (component == null) + { return; + } + component.HandleAnimTriggerMsg(TriggersMessage.hash); } } diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 28324cc40..c762fa2a1 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -132,7 +133,7 @@ private void CacheBehaviours() { if (m_NetworkBehaviours == null) { - m_NetworkBehaviours = base.GetComponents(); + m_NetworkBehaviours = GetComponents(); } } @@ -179,11 +180,11 @@ internal void RemoveObserverInternal(QSBNetworkConnection conn) } } - private void OnDestroy() + public void OnDestroy() { if (m_IsServer && QSBNetworkServer.active) { - QSBNetworkServer.Destroy(base.gameObject); + QSBNetworkServer.Destroy(gameObject); } } @@ -233,7 +234,7 @@ internal void OnStartServer(bool allowNonZeroNetId) } if (QSBNetworkClient.active && QSBNetworkServer.localClientActive) { - QSBClientScene.SetLocalObject(NetId, base.gameObject); + QSBClientScene.SetLocalObject(NetId, gameObject); OnStartClient(); } if (HasAuthority) @@ -253,7 +254,7 @@ internal void OnStartClient() Debug.Log(string.Concat(new object[] { "OnStartClient ", - base.gameObject, + gameObject, " GUID:", NetId, " localPlayerAuthority:", @@ -355,7 +356,7 @@ internal void HandleClientAuthority(bool authority) { if (!LocalPlayerAuthority) { - Debug.LogError("HandleClientAuthority " + base.gameObject + " does not have localPlayerAuthority"); + Debug.LogError("HandleClientAuthority " + gameObject + " does not have localPlayerAuthority"); } else { @@ -384,7 +385,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh "Found no behaviour for incoming [", cmdHashHandlerName, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -402,7 +403,7 @@ private bool GetInvokeComponent(int cmdHash, Type invokeClass, out QSBNetworkBeh internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -422,7 +423,7 @@ internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -448,7 +449,7 @@ internal void HandleSyncEvent(int cmdHash, QSBNetworkReader reader) internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -468,7 +469,7 @@ internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -494,7 +495,7 @@ internal void HandleSyncList(int cmdHash, QSBNetworkReader reader) internal void HandleCommand(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -514,7 +515,7 @@ internal void HandleCommand(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -540,7 +541,7 @@ internal void HandleCommand(int cmdHash, QSBNetworkReader reader) internal void HandleRPC(int cmdHash, QSBNetworkReader reader) { - if (base.gameObject == null) + if (gameObject == null) { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(cmdHash); Debug.LogWarning(string.Concat(new object[] @@ -560,7 +561,7 @@ internal void HandleRPC(int cmdHash, QSBNetworkReader reader) "Found no receiver for incoming [", cmdHashHandlerName2, "] on ", - base.gameObject, + gameObject, ", the server and client should have the same NetworkBehaviour instances [netId=", NetId, "]." @@ -627,7 +628,7 @@ internal void UNetUpdate() Debug.LogWarning(string.Concat(new object[] { "Large state update of ", - (int)(s_UpdateWriter.Position - position), + s_UpdateWriter.Position - position, " bytes for netId:", NetId, " from script:", @@ -639,7 +640,7 @@ internal void UNetUpdate() if (flag) { s_UpdateWriter.FinishMessage(); - QSBNetworkServer.SendWriterToReady(base.gameObject, s_UpdateWriter, j); + QSBNetworkServer.SendWriterToReady(gameObject, s_UpdateWriter, j); } } IL_197: @@ -654,7 +655,7 @@ internal void OnUpdateVars(QSBNetworkReader reader, bool initialState) { if (initialState && m_NetworkBehaviours == null) { - m_NetworkBehaviours = base.GetComponents(); + m_NetworkBehaviours = GetComponents(); } for (var i = 0; i < m_NetworkBehaviours.Length; i++) { @@ -668,7 +669,7 @@ internal void SetLocalPlayer(short localPlayerControllerId) ModConsole.OwmlConsole.WriteLine($"SetLocalPlayer {localPlayerControllerId}"); IsLocalPlayer = true; PlayerControllerId = localPlayerControllerId; - var hasAuthority = this.HasAuthority; + var hasAuthority = HasAuthority; if (LocalPlayerAuthority) { HasAuthority = true; @@ -723,7 +724,7 @@ internal void AddObserver(QSBNetworkConnection conn) { if (m_Observers == null) { - Debug.LogError("AddObserver for " + base.gameObject + " observer list is null"); + Debug.LogError("AddObserver for " + gameObject + " observer list is null"); } else if (m_ObserverConnections.Contains(conn.connectionId)) { @@ -732,7 +733,7 @@ internal void AddObserver(QSBNetworkConnection conn) "Duplicate observer ", conn.address, " added for ", - base.gameObject + gameObject })); } else @@ -742,7 +743,7 @@ internal void AddObserver(QSBNetworkConnection conn) "Added observer ", conn.address, " added for ", - base.gameObject + gameObject })); m_Observers.Add(conn); m_ObserverConnections.Add(conn.connectionId); @@ -812,7 +813,7 @@ public void RebuildObservers(bool initialize) Debug.LogWarning(string.Concat(new object[] { "Observer is not ready for ", - base.gameObject, + gameObject, " ", networkConnection3 })); @@ -823,7 +824,7 @@ public void RebuildObservers(bool initialize) Debug.Log(string.Concat(new object[] { "New Observer for ", - base.gameObject, + gameObject, " ", networkConnection3 })); @@ -839,7 +840,7 @@ public void RebuildObservers(bool initialize) Debug.Log(string.Concat(new object[] { "Removed Observer for ", - base.gameObject, + gameObject, " ", networkConnection4 })); @@ -883,12 +884,12 @@ public bool RemoveClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner == null) { - Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has no clientAuthority owner."); + Debug.LogError("RemoveClientAuthority for " + gameObject + " has no clientAuthority owner."); return false; } else if (ClientAuthorityOwner != conn) { - Debug.LogError("RemoveClientAuthority for " + base.gameObject + " has different owner."); + Debug.LogError("RemoveClientAuthority for " + gameObject + " has different owner."); return false; } ClientAuthorityOwner.RemoveOwnedObject(this); @@ -917,12 +918,12 @@ public bool AssignClientAuthority(QSBNetworkConnection conn) } else if (ClientAuthorityOwner != null && conn != ClientAuthorityOwner) { - ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " already has an owner. Use RemoveClientAuthority() first."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + gameObject + " already has an owner. Use RemoveClientAuthority() first."); return false; } else if (conn == null) { - ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + base.gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); + ModConsole.OwmlConsole.WriteLine("AssignClientAuthority for " + gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); return false; } ClientAuthorityOwner = conn; diff --git a/QuantumUNET/Components/QSBNetworkManagerHUD.cs b/QuantumUNET/Components/QSBNetworkManagerHUD.cs index 6541f612c..a59376a2f 100644 --- a/QuantumUNET/Components/QSBNetworkManagerHUD.cs +++ b/QuantumUNET/Components/QSBNetworkManagerHUD.cs @@ -9,10 +9,7 @@ public class QSBNetworkManagerHUD : MonoBehaviour public int offsetX; public int offsetY; - private void Awake() - { - manager = GetComponent(); - } + private void Awake() => manager = GetComponent(); private void OnGUI() { diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index 2e6899da2..c0ecca70f 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -31,7 +31,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour public float packetLossPercentage { get; set; } public float maxDelay { get; set; } = 0.01f; public GameObject playerPrefab { get; set; } - public PlayerSpawnMethod playerSpawnMethod { get; set; } public List spawnPrefabs { get; } = new List(); public QSBNetworkClient client; public int maxConnections { get; set; } = 4; @@ -41,8 +40,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour private GlobalConfig m_GlobalConfig; private int m_MaxBufferedPackets = 16; private bool m_AllowFragmentation = true; - private static List s_StartPositions = new List(); - private static int s_StartPositionIndex; private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); @@ -50,14 +47,6 @@ public class QSBNetworkManagerUNET : MonoBehaviour private static QSBNetworkConnection s_ClientReadyConnection; private static string s_Address; - public List startPositions - { - get - { - return s_StartPositions; - } - } - public bool customConfig { get; set; } public ConnectionConfig connectionConfig @@ -107,10 +96,7 @@ public int numPlayers } } - private void Awake() - { - InitializeSingleton(); - } + public void Awake() => InitializeSingleton(); private void InitializeSingleton() { @@ -121,14 +107,14 @@ private void InitializeSingleton() if (singleton != null) { Debug.Log("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will not be used."); - Destroy(base.gameObject); + Destroy(gameObject); return; } Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)"); singleton = this; if (Application.isPlaying) { - DontDestroyOnLoad(base.gameObject); + DontDestroyOnLoad(gameObject); } } else @@ -157,10 +143,7 @@ internal void RegisterServerMessages() QSBNetworkServer.RegisterHandler(QSBMsgType.Error, new QSBNetworkMessageDelegate(OnServerErrorInternal)); } - public bool StartServer() - { - return StartServer(null, -1); - } + public bool StartServer() => StartServer(null, -1); private bool StartServer(ConnectionConfig config, int maxConnections) { @@ -193,26 +176,17 @@ private bool StartServer(ConnectionConfig config, int maxConnections) { if (!QSBNetworkServer.Listen(serverBindAddress, networkPort)) { - if (LogFilter.logError) - { - Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); - } + Debug.LogError("StartServer listen on " + serverBindAddress + " failed."); return false; } } else if (!QSBNetworkServer.Listen(networkPort)) { - if (LogFilter.logError) - { - Debug.LogError("StartServer listen failed."); - } + Debug.LogError("StartServer listen failed."); return false; } RegisterServerMessages(); - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StartServer port:" + networkPort); - } + Debug.Log("NetworkManager StartServer port:" + networkPort); isNetworkActive = true; var name = SceneManager.GetSceneAt(0).name; if (!string.IsNullOrEmpty(onlineScene) && onlineScene != name && onlineScene != offlineScene) @@ -339,15 +313,9 @@ public QSBNetworkClient StartClient(ConnectionConfig config, int hostPort) return client; } - public QSBNetworkClient StartClient() - { - return StartClient(null); - } + public QSBNetworkClient StartClient() => StartClient(null); - public QSBNetworkClient StartClient(ConnectionConfig config) - { - return StartClient(config, 0); - } + public QSBNetworkClient StartClient(ConnectionConfig config) => StartClient(config, 0); public virtual QSBNetworkClient StartHost(ConnectionConfig config, int maxConnections) { @@ -386,10 +354,7 @@ public virtual QSBNetworkClient StartHost() private QSBNetworkClient ConnectLocalClient() { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StartHost port:" + networkPort); - } + Debug.Log("NetworkManager StartHost port:" + networkPort); networkAddress = "localhost"; client = QSBClientScene.ConnectLocalServer(); RegisterClientMessages(client); @@ -408,10 +373,7 @@ public void StopServer() if (QSBNetworkServer.active) { OnStopServer(); - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StopServer"); - } + Debug.Log("NetworkManager StopServer"); isNetworkActive = false; QSBNetworkServer.Shutdown(); if (!string.IsNullOrEmpty(offlineScene)) @@ -425,10 +387,7 @@ public void StopServer() public void StopClient() { OnStopClient(); - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager StopClient"); - } + Debug.Log("NetworkManager StopClient"); isNetworkActive = false; if (client != null) { @@ -448,24 +407,16 @@ public virtual void ServerChangeScene(string newSceneName) { if (string.IsNullOrEmpty(newSceneName)) { - if (LogFilter.logError) - { - Debug.LogError("ServerChangeScene empty scene name"); - } + Debug.LogError("ServerChangeScene empty scene name"); } else { - if (LogFilter.logDebug) - { - Debug.Log("ServerChangeScene " + newSceneName); - } + Debug.Log("ServerChangeScene " + newSceneName); QSBNetworkServer.SetAllClientsNotReady(); networkSceneName = newSceneName; s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); var msg = new QSBStringMessage(networkSceneName); QSBNetworkServer.SendToAll(39, msg); - s_StartPositionIndex = 0; - s_StartPositions.Clear(); } } @@ -481,17 +432,11 @@ internal void ClientChangeScene(string newSceneName, bool forceReload) { if (string.IsNullOrEmpty(newSceneName)) { - if (LogFilter.logError) - { - Debug.LogError("ClientChangeScene empty scene name"); - } + Debug.LogError("ClientChangeScene empty scene name"); } else { - if (LogFilter.logDebug) - { - Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); - } + Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); if (newSceneName == networkSceneName) { if (!forceReload) @@ -549,47 +494,12 @@ internal static void UpdateScene() } } - public static void RegisterStartPosition(Transform start) - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "RegisterStartPosition: (", - start.gameObject.name, - ") ", - start.position - })); - } - s_StartPositions.Add(start); - } - - public static void UnRegisterStartPosition(Transform start) - { - if (LogFilter.logDebug) - { - Debug.Log(string.Concat(new object[] - { - "UnRegisterStartPosition: (", - start.gameObject.name, - ") ", - start.position - })); - } - s_StartPositions.Remove(start); - } - - public bool IsClientConnected() - { - return client != null && client.isConnected; - } + public bool IsClientConnected() => client != null && client.isConnected; public static void Shutdown() { if (!(singleton == null)) { - s_StartPositions.Clear(); - s_StartPositionIndex = 0; s_ClientReadyConnection = null; singleton.StopHost(); singleton = null; @@ -598,10 +508,7 @@ public static void Shutdown() internal void OnServerConnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerConnectInternal"); - } + Debug.Log("NetworkManager:OnServerConnectInternal"); netMsg.Connection.SetMaxDelay(maxDelay); if (m_MaxBufferedPackets != 512) { @@ -627,28 +534,19 @@ internal void OnServerConnectInternal(QSBNetworkMessage netMsg) internal void OnServerDisconnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerDisconnectInternal"); - } + Debug.Log("NetworkManager:OnServerDisconnectInternal"); OnServerDisconnect(netMsg.Connection); } internal void OnServerReadyMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerReadyMessageInternal"); - } + Debug.Log("NetworkManager:OnServerReadyMessageInternal"); OnServerReady(netMsg.Connection); } internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); - } + Debug.Log("NetworkManager:OnServerAddPlayerMessageInternal"); netMsg.ReadMessage(s_AddPlayerMessage); if (s_AddPlayerMessage.msgSize != 0) { @@ -663,10 +561,7 @@ internal void OnServerAddPlayerMessageInternal(QSBNetworkMessage netMsg) internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); - } + Debug.Log("NetworkManager:OnServerRemovePlayerMessageInternal"); netMsg.ReadMessage(s_RemovePlayerMessage); netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var player); OnServerRemovePlayer(netMsg.Connection, player); @@ -675,20 +570,14 @@ internal void OnServerRemovePlayerMessageInternal(QSBNetworkMessage netMsg) internal void OnServerErrorInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnServerErrorInternal"); - } + Debug.Log("NetworkManager:OnServerErrorInternal"); netMsg.ReadMessage(s_ErrorMessage); OnServerError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientConnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientConnectInternal"); - } + Debug.Log("NetworkManager:OnClientConnectInternal"); netMsg.Connection.SetMaxDelay(maxDelay); var name = SceneManager.GetSceneAt(0).name; if (string.IsNullOrEmpty(onlineScene) || onlineScene == offlineScene || name == onlineScene) @@ -704,10 +593,7 @@ internal void OnClientConnectInternal(QSBNetworkMessage netMsg) internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientDisconnectInternal"); - } + Debug.Log("NetworkManager:OnClientDisconnectInternal"); if (!string.IsNullOrEmpty(offlineScene)) { ClientChangeScene(offlineScene, false); @@ -717,30 +603,21 @@ internal void OnClientDisconnectInternal(QSBNetworkMessage netMsg) internal void OnClientNotReadyMessageInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); - } + Debug.Log("NetworkManager:OnClientNotReadyMessageInternal"); QSBClientScene.SetNotReady(); OnClientNotReady(netMsg.Connection); } internal void OnClientErrorInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientErrorInternal"); - } + Debug.Log("NetworkManager:OnClientErrorInternal"); netMsg.ReadMessage(s_ErrorMessage); OnClientError(netMsg.Connection, s_ErrorMessage.errorCode); } internal void OnClientSceneInternal(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkManager:OnClientSceneInternal"); - } + Debug.Log("NetworkManager:OnClientSceneInternal"); var newSceneName = netMsg.Reader.ReadString(); if (IsClientConnected() && !QSBNetworkServer.active) { @@ -757,10 +634,7 @@ public virtual void OnServerDisconnect(QSBNetworkConnection conn) QSBNetworkServer.DestroyPlayersForConnection(conn); if (conn.LastError != NetworkError.Ok) { - if (LogFilter.logError) - { - Debug.LogError("ServerDisconnected due to error: " + conn.LastError); - } + Debug.LogError("ServerDisconnected due to error: " + conn.LastError); } } @@ -768,98 +642,36 @@ public virtual void OnServerReady(QSBNetworkConnection conn) { if (conn.PlayerControllers.Count == 0) { - if (LogFilter.logDebug) - { - Debug.Log("Ready with no player object"); - } + Debug.Log("Ready with no player object"); } QSBNetworkServer.SetClientReady(conn); } - public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) - { - OnServerAddPlayerInternal(conn, playerControllerId); - } + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader) => OnServerAddPlayerInternal(conn, playerControllerId); - public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) - { - OnServerAddPlayerInternal(conn, playerControllerId); - } + public virtual void OnServerAddPlayer(QSBNetworkConnection conn, short playerControllerId) => OnServerAddPlayerInternal(conn, playerControllerId); private void OnServerAddPlayerInternal(QSBNetworkConnection conn, short playerControllerId) { if (playerPrefab == null) { - if (LogFilter.logError) - { - ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); - } + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab is empty on the QSBNetworkManager. Please setup a PlayerPrefab object."); } else if (playerPrefab.GetComponent() == null) { - if (LogFilter.logError) - { - ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); - } + ModConsole.OwmlConsole.WriteLine("Error - The PlayerPrefab does not have a QSBNetworkIdentity. Please add a QSBNetworkIdentity to the player prefab."); } else if (playerControllerId < conn.PlayerControllers.Count && conn.PlayerControllers[playerControllerId].IsValid && conn.PlayerControllers[playerControllerId].Gameobject != null) { - if (LogFilter.logError) - { - ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); - } + ModConsole.OwmlConsole.WriteLine("Warning - There is already a player at that playerControllerId for this connections."); } else { - var startPosition = GetStartPosition(); - GameObject player; - if (startPosition != null) - { - player = Instantiate(playerPrefab, startPosition.position, startPosition.rotation); - } - else - { - player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); - } + var player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); QSBNetworkServer.AddPlayerForConnection(conn, player, playerControllerId); } } - public Transform GetStartPosition() - { - if (s_StartPositions.Count > 0) - { - for (var i = s_StartPositions.Count - 1; i >= 0; i--) - { - if (s_StartPositions[i] == null) - { - s_StartPositions.RemoveAt(i); - } - } - } - Transform result; - if (playerSpawnMethod == PlayerSpawnMethod.Random && s_StartPositions.Count > 0) - { - var index = UnityEngine.Random.Range(0, s_StartPositions.Count); - result = s_StartPositions[index]; - } - else if (playerSpawnMethod == PlayerSpawnMethod.RoundRobin && s_StartPositions.Count > 0) - { - if (s_StartPositionIndex >= s_StartPositions.Count) - { - s_StartPositionIndex = 0; - } - var transform = s_StartPositions[s_StartPositionIndex]; - s_StartPositionIndex++; - result = transform; - } - else - { - result = null; - } - return result; - } - public virtual void OnServerRemovePlayer(QSBNetworkConnection conn, QSBPlayerController player) { if (player.Gameobject != null) @@ -893,10 +705,7 @@ public virtual void OnClientDisconnect(QSBNetworkConnection conn) StopClient(); if (conn.LastError != NetworkError.Ok) { - if (LogFilter.logError) - { - Debug.LogError("ClientDisconnected due to error: " + conn.LastError); - } + Debug.LogError("ClientDisconnected due to error: " + conn.LastError); } } diff --git a/QuantumUNET/Components/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs index 66de6f112..7c9b7aac4 100644 --- a/QuantumUNET/Components/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Messages; +using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -8,86 +9,22 @@ namespace QuantumUNET.Components public class QSBNetworkTransform : QSBNetworkBehaviour { public float SendInterval { get; set; } = 0.1f; - public AxisSyncMode SyncRotationAxis { get; set; } = AxisSyncMode.AxisXYZ; - public CompressionSyncMode RotationSyncCompression { get; set; } = CompressionSyncMode.None; - public bool SyncSpin { get; set; } - public float MovementTheshold { get; set; } = 0.001f; - public float velocityThreshold { get; set; } = 0.0001f; - public float SnapThreshold { get; set; } = 5f; - public float InterpolateRotation { get; set; } = 1f; - public float InterpolateMovement { get; set; } = 1f; - public ClientMoveCallback3D clientMoveCallback3D { get; set; } - public float LastSyncTime { get; private set; } - - public Vector3 TargetSyncPosition - { - get - { - return m_TargetSyncPosition; - } - } - - public Vector3 targetSyncVelocity - { - get - { - return m_TargetSyncVelocity; - } - } - - public Quaternion targetSyncRotation3D - { - get - { - return m_TargetSyncRotation3D; - } - } - + public Vector3 TargetSyncPosition => m_TargetSyncPosition; + public Vector3 targetSyncVelocity => m_TargetSyncVelocity; + public Quaternion targetSyncRotation3D => m_TargetSyncRotation3D; public bool Grounded { get; set; } = true; - private void OnValidate() - { - if (SendInterval < 0f) - { - SendInterval = 0f; - } - if (SyncRotationAxis < AxisSyncMode.None || SyncRotationAxis > AxisSyncMode.AxisXYZ) - { - SyncRotationAxis = AxisSyncMode.None; - } - if (MovementTheshold < 0f) - { - MovementTheshold = 0f; - } - if (velocityThreshold < 0f) - { - velocityThreshold = 0f; - } - if (SnapThreshold < 0f) - { - SnapThreshold = 0.01f; - } - if (InterpolateRotation < 0f) - { - InterpolateRotation = 0.01f; - } - if (InterpolateMovement < 0f) - { - InterpolateMovement = 0.01f; - } - } - - private void Awake() + public void Awake() { m_PrevPosition = transform.position; m_PrevRotation = transform.rotation; @@ -97,10 +34,7 @@ private void Awake() } } - public override void OnStartServer() - { - LastSyncTime = 0f; - } + public override void OnStartServer() => LastSyncTime = 0f; public override bool OnSerialize(QSBNetworkWriter writer, bool initialState) { @@ -294,10 +228,7 @@ public static void HandleTransform(QSBNetworkMessage netMsg) component.UnserializeModeTransform(netMsg.Reader, false); component.LastSyncTime = Time.time; } - else if (LogFilter.logWarn) - { - ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); - } + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); } } @@ -336,12 +267,12 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp } else { - result = (float)reader.ReadInt16(); + result = reader.ReadInt16(); } } else { - result = (float)reader.ReadInt16(); + result = reader.ReadInt16(); } } else @@ -351,10 +282,8 @@ private static float ReadAngle(QSBNetworkReader reader, CompressionSyncMode comp return result; } - public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) - { + public static void SerializeVelocity3D(QSBNetworkWriter writer, Vector3 velocity, CompressionSyncMode compression) => writer.Write(velocity); - } public static void SerializeRotation3D(QSBNetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression) { @@ -434,10 +363,7 @@ public static void SerializeSpin3D(QSBNetworkWriter writer, Vector3 angularVeloc } } - public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) - { - return reader.ReadVector3(); - } + public static Vector3 UnserializeVelocity3D(QSBNetworkReader reader, CompressionSyncMode compression) => reader.ReadVector3(); public static Quaternion UnserializeRotation3D(QSBNetworkReader reader, AxisSyncMode mode, CompressionSyncMode compression) { @@ -519,20 +445,11 @@ public static Vector3 UnserializeSpin3D(QSBNetworkReader reader, AxisSyncMode mo return zero; } - public override int GetNetworkChannel() - { - return 1; - } + public override int GetNetworkChannel() => 1; - public override float GetNetworkSendInterval() - { - return SendInterval; - } + public override float GetNetworkSendInterval() => SendInterval; - public override void OnStartAuthority() - { - LastSyncTime = 0f; - } + public override void OnStartAuthority() => LastSyncTime = 0f; private Vector3 m_TargetSyncPosition; diff --git a/QuantumUNET/Messages/QSBAddPlayerMessage.cs b/QuantumUNET/Messages/QSBAddPlayerMessage.cs index 34d65148a..48a4c9c26 100644 --- a/QuantumUNET/Messages/QSBAddPlayerMessage.cs +++ b/QuantumUNET/Messages/QSBAddPlayerMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBAddPlayerMessage : QSBMessageBase { @@ -6,6 +8,12 @@ internal class QSBAddPlayerMessage : QSBMessageBase public int msgSize; public byte[] msgData; + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(playerControllerId); + writer.WriteBytesAndSize(msgData, msgSize); + } + public override void Deserialize(QSBNetworkReader reader) { playerControllerId = reader.ReadInt16(); @@ -19,11 +27,5 @@ public override void Deserialize(QSBNetworkReader reader) msgSize = msgData.Length; } } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(playerControllerId); - writer.WriteBytesAndSize(msgData, msgSize); - } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBAnimationMessage.cs b/QuantumUNET/Messages/QSBAnimationMessage.cs index adf8f4737..043da6535 100644 --- a/QuantumUNET/Messages/QSBAnimationMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages @@ -9,14 +10,6 @@ internal class QSBAnimationMessage : QSBMessageBase public float normalizedTime; public byte[] parameters; - public override void Deserialize(QSBNetworkReader reader) - { - netId = reader.ReadNetworkId(); - stateHash = (int)reader.ReadPackedUInt32(); - normalizedTime = reader.ReadSingle(); - parameters = reader.ReadBytesAndSize(); - } - public override void Serialize(QSBNetworkWriter writer) { writer.Write(netId); @@ -31,5 +24,13 @@ public override void Serialize(QSBNetworkWriter writer) writer.WriteBytesAndSize(parameters, parameters.Length); } } + + public override void Deserialize(QSBNetworkReader reader) + { + netId = reader.ReadNetworkId(); + stateHash = (int)reader.ReadPackedUInt32(); + normalizedTime = reader.ReadSingle(); + parameters = reader.ReadBytesAndSize(); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs index 4b9f19e2f..497d0b983 100644 --- a/QuantumUNET/Messages/QSBAnimationParametersMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationParametersMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages diff --git a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs index 713d2ac45..b4291beaa 100644 --- a/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs +++ b/QuantumUNET/Messages/QSBAnimationTriggerMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages diff --git a/QuantumUNET/Messages/QSBCRCMessage.cs b/QuantumUNET/Messages/QSBCRCMessage.cs index df45dd7aa..b08480858 100644 --- a/QuantumUNET/Messages/QSBCRCMessage.cs +++ b/QuantumUNET/Messages/QSBCRCMessage.cs @@ -1,4 +1,6 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBCRCMessage : QSBMessageBase { diff --git a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs index 860028bb1..d99690e73 100644 --- a/QuantumUNET/Messages/QSBClientAuthorityMessage.cs +++ b/QuantumUNET/Messages/QSBClientAuthorityMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages diff --git a/QuantumUNET/Messages/QSBEmptyMessage.cs b/QuantumUNET/Messages/QSBEmptyMessage.cs index 27dbc7856..b89526b3c 100644 --- a/QuantumUNET/Messages/QSBEmptyMessage.cs +++ b/QuantumUNET/Messages/QSBEmptyMessage.cs @@ -1,13 +1,10 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBEmptyMessage : QSBMessageBase { - public override void Deserialize(QSBNetworkReader reader) - { - } - - public override void Serialize(QSBNetworkWriter writer) - { - } + public override void Serialize(QSBNetworkWriter writer) { } + public override void Deserialize(QSBNetworkReader reader) { } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBErrorMessage.cs b/QuantumUNET/Messages/QSBErrorMessage.cs index 3a55c670a..97d7ecafc 100644 --- a/QuantumUNET/Messages/QSBErrorMessage.cs +++ b/QuantumUNET/Messages/QSBErrorMessage.cs @@ -1,17 +1,13 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBErrorMessage : QSBMessageBase { - public override void Deserialize(QSBNetworkReader reader) - { - this.errorCode = (int)reader.ReadUInt16(); - } + public int errorCode; - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write((ushort)this.errorCode); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)errorCode); - public int errorCode; + public override void Deserialize(QSBNetworkReader reader) => errorCode = reader.ReadUInt16(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBMessageBase.cs b/QuantumUNET/Messages/QSBMessageBase.cs index 241af1160..969dd7324 100644 --- a/QuantumUNET/Messages/QSBMessageBase.cs +++ b/QuantumUNET/Messages/QSBMessageBase.cs @@ -1,13 +1,11 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public abstract class QSBMessageBase { - public virtual void Deserialize(QSBNetworkReader reader) - { - } + public virtual void Serialize(QSBNetworkWriter writer) { } - public virtual void Serialize(QSBNetworkWriter writer) - { - } + public virtual void Deserialize(QSBNetworkReader reader) { } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBMsgType.cs b/QuantumUNET/Messages/QSBMsgType.cs index 724bb9c30..763aaaff7 100644 --- a/QuantumUNET/Messages/QSBMsgType.cs +++ b/QuantumUNET/Messages/QSBMsgType.cs @@ -11,7 +11,7 @@ public static string MsgTypeToString(short value) } else { - string text = msgLabels[(int)value]; + var text = msgLabels[value]; if (string.IsNullOrEmpty(text)) { text = "[" + value + "]"; diff --git a/QuantumUNET/Messages/QSBNetworkMessage.cs b/QuantumUNET/Messages/QSBNetworkMessage.cs index f5b68c0df..16ca1065b 100644 --- a/QuantumUNET/Messages/QSBNetworkMessage.cs +++ b/QuantumUNET/Messages/QSBNetworkMessage.cs @@ -1,10 +1,10 @@ -using System; +using QuantumUNET.Transport; +using System; namespace QuantumUNET.Messages { public class QSBNetworkMessage { - public const int MaxMessageSize = 65535; public short MsgType; public QSBNetworkConnection Connection; public QSBNetworkReader Reader; @@ -17,9 +17,7 @@ public class QSBNetworkMessage return result; } - public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase - { + public void ReadMessage(TMsg msg) where TMsg : QSBMessageBase => msg.Deserialize(Reader); - } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs index 3a2d13c3b..08f74a773 100644 --- a/QuantumUNET/Messages/QSBObjectDestroyMessage.cs +++ b/QuantumUNET/Messages/QSBObjectDestroyMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages @@ -6,14 +7,8 @@ internal class QSBObjectDestroyMessage : QSBMessageBase { public NetworkInstanceId NetId; - public override void Deserialize(QSBNetworkReader reader) - { - NetId = reader.ReadNetworkId(); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write(NetId); - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - } + public override void Deserialize(QSBNetworkReader reader) => NetId = reader.ReadNetworkId(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs index 66f1c1921..4255bccb4 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnFinishedMessage.cs @@ -1,17 +1,13 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { internal class QSBObjectSpawnFinishedMessage : QSBMessageBase { public uint State; - public override void Deserialize(QSBNetworkReader reader) - { - State = reader.ReadPackedUInt32(); - } + public override void Serialize(QSBNetworkWriter writer) => writer.WritePackedUInt32(State); - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32(State); - } + public override void Deserialize(QSBNetworkReader reader) => State = reader.ReadPackedUInt32(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs index 6c175734e..3236cc1a6 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -11,6 +12,15 @@ internal class QSBObjectSpawnMessage : QSBMessageBase public byte[] Payload; public Quaternion Rotation; + public override void Serialize(QSBNetworkWriter writer) + { + writer.Write(NetId); + writer.Write(assetId); + writer.Write(Position); + writer.WriteBytesFull(Payload); + writer.Write(Rotation); + } + public override void Deserialize(QSBNetworkReader reader) { NetId = reader.ReadNetworkId(); @@ -22,14 +32,5 @@ public override void Deserialize(QSBNetworkReader reader) Rotation = reader.ReadQuaternion(); } } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(NetId); - writer.Write(assetId); - writer.Write(Position); - writer.WriteBytesFull(Payload); - writer.Write(Rotation); - } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs index 5d7cf097e..9a8212a90 100644 --- a/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs +++ b/QuantumUNET/Messages/QSBObjectSpawnSceneMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -10,14 +11,6 @@ internal class QSBObjectSpawnSceneMessage : QSBMessageBase public Vector3 Position; public byte[] Payload; - public override void Deserialize(QSBNetworkReader reader) - { - NetId = reader.ReadNetworkId(); - SceneId = reader.ReadSceneId(); - Position = reader.ReadVector3(); - Payload = reader.ReadBytesAndSize(); - } - public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); @@ -25,5 +18,13 @@ public override void Serialize(QSBNetworkWriter writer) writer.Write(Position); writer.WriteBytesFull(Payload); } + + public override void Deserialize(QSBNetworkReader reader) + { + NetId = reader.ReadNetworkId(); + SceneId = reader.ReadSceneId(); + Position = reader.ReadVector3(); + Payload = reader.ReadBytesAndSize(); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBOwnerMessage.cs b/QuantumUNET/Messages/QSBOwnerMessage.cs index 03cbf7dfb..944c9d6e8 100644 --- a/QuantumUNET/Messages/QSBOwnerMessage.cs +++ b/QuantumUNET/Messages/QSBOwnerMessage.cs @@ -1,3 +1,4 @@ +using QuantumUNET.Transport; using UnityEngine.Networking; namespace QuantumUNET.Messages @@ -7,16 +8,16 @@ internal class QSBOwnerMessage : QSBMessageBase public NetworkInstanceId NetId; public short PlayerControllerId; - public override void Deserialize(QSBNetworkReader reader) - { - NetId = reader.ReadNetworkId(); - PlayerControllerId = (short)reader.ReadPackedUInt32(); - } - public override void Serialize(QSBNetworkWriter writer) { writer.Write(NetId); writer.WritePackedUInt32((uint)PlayerControllerId); } + + public override void Deserialize(QSBNetworkReader reader) + { + NetId = reader.ReadNetworkId(); + PlayerControllerId = (short)reader.ReadPackedUInt32(); + } } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBPeerInfoMessage.cs b/QuantumUNET/Messages/QSBPeerInfoMessage.cs deleted file mode 100644 index a876df834..000000000 --- a/QuantumUNET/Messages/QSBPeerInfoMessage.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System.Collections.Generic; - -namespace QuantumUNET.Messages -{ - public class QSBPeerInfoMessage : QSBMessageBase - { - public override void Deserialize(QSBNetworkReader reader) - { - this.connectionId = (int)reader.ReadPackedUInt32(); - this.address = reader.ReadString(); - this.port = (int)reader.ReadPackedUInt32(); - this.isHost = reader.ReadBoolean(); - this.isYou = reader.ReadBoolean(); - uint num = reader.ReadPackedUInt32(); - if (num > 0U) - { - List list = new List(); - for (uint num2 = 0U; num2 < num; num2 += 1U) - { - QSBPeerInfoPlayer item; - item.netId = reader.ReadNetworkId(); - item.playerControllerId = (short)reader.ReadPackedUInt32(); - list.Add(item); - } - this.playerIds = list.ToArray(); - } - } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32((uint)this.connectionId); - writer.Write(this.address); - writer.WritePackedUInt32((uint)this.port); - writer.Write(this.isHost); - writer.Write(this.isYou); - if (this.playerIds == null) - { - writer.WritePackedUInt32(0U); - } - else - { - writer.WritePackedUInt32((uint)this.playerIds.Length); - for (int i = 0; i < this.playerIds.Length; i++) - { - writer.Write(this.playerIds[i].netId); - writer.WritePackedUInt32((uint)this.playerIds[i].playerControllerId); - } - } - } - - public override string ToString() - { - return string.Concat(new object[] - { - "PeerInfo conn:", - this.connectionId, - " addr:", - this.address, - ":", - this.port, - " host:", - this.isHost, - " isYou:", - this.isYou - }); - } - - public int connectionId; - - public string address; - - public int port; - - public bool isHost; - - public bool isYou; - - public QSBPeerInfoPlayer[] playerIds; - } -} \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBReconnectMessage.cs b/QuantumUNET/Messages/QSBReconnectMessage.cs deleted file mode 100644 index f43c20f24..000000000 --- a/QuantumUNET/Messages/QSBReconnectMessage.cs +++ /dev/null @@ -1,30 +0,0 @@ -using UnityEngine.Networking; - -namespace QuantumUNET.Messages -{ - public class QSBReconnectMessage : QSBMessageBase - { - public int oldConnectionId; - public short playerControllerId; - public NetworkInstanceId netId; - public int msgSize; - public byte[] msgData; - - public override void Deserialize(QSBNetworkReader reader) - { - oldConnectionId = (int)reader.ReadPackedUInt32(); - playerControllerId = (short)reader.ReadPackedUInt32(); - netId = reader.ReadNetworkId(); - msgData = reader.ReadBytesAndSize(); - msgSize = msgData.Length; - } - - public override void Serialize(QSBNetworkWriter writer) - { - writer.WritePackedUInt32((uint)oldConnectionId); - writer.WritePackedUInt32((uint)playerControllerId); - writer.Write(netId); - writer.WriteBytesAndSize(msgData, msgSize); - } - } -} \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs index 59d1d3075..7bebaef33 100644 --- a/QuantumUNET/Messages/QSBRemovePlayerMessage.cs +++ b/QuantumUNET/Messages/QSBRemovePlayerMessage.cs @@ -1,17 +1,13 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBRemovePlayerMessage : QSBMessageBase { public short PlayerControllerId; - public override void Deserialize(QSBNetworkReader reader) - { - PlayerControllerId = (short)reader.ReadUInt16(); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write((ushort)PlayerControllerId); - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write((ushort)PlayerControllerId); - } + public override void Deserialize(QSBNetworkReader reader) => PlayerControllerId = (short)reader.ReadUInt16(); } } \ No newline at end of file diff --git a/QuantumUNET/Messages/QSBSpawnDelegate.cs b/QuantumUNET/Messages/QSBSpawnDelegate.cs new file mode 100644 index 000000000..010d8e401 --- /dev/null +++ b/QuantumUNET/Messages/QSBSpawnDelegate.cs @@ -0,0 +1,7 @@ +using UnityEngine; +using UnityEngine.Networking; + +namespace QuantumUNET +{ + public delegate GameObject QSBSpawnDelegate(Vector3 position, NetworkHash128 assetId); +} diff --git a/QuantumUNET/Messages/QSBStringMessage.cs b/QuantumUNET/Messages/QSBStringMessage.cs index 74dd198d0..7e52a4e9d 100644 --- a/QuantumUNET/Messages/QSBStringMessage.cs +++ b/QuantumUNET/Messages/QSBStringMessage.cs @@ -1,26 +1,18 @@ -namespace QuantumUNET.Messages +using QuantumUNET.Transport; + +namespace QuantumUNET.Messages { public class QSBStringMessage : QSBMessageBase { - public QSBStringMessage() - { - } + public string value; public QSBStringMessage(string v) { - this.value = v; - } - - public override void Deserialize(QSBNetworkReader reader) - { - this.value = reader.ReadString(); + value = v; } - public override void Serialize(QSBNetworkWriter writer) - { - writer.Write(this.value); - } + public override void Serialize(QSBNetworkWriter writer) => writer.Write(value); - public string value; + public override void Deserialize(QSBNetworkReader reader) => value = reader.ReadString(); } } \ No newline at end of file diff --git a/QuantumUNET/QSBChannelPacket.cs b/QuantumUNET/QSBChannelPacket.cs deleted file mode 100644 index f6001ad63..000000000 --- a/QuantumUNET/QSBChannelPacket.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Networking; - -namespace QuantumUNET -{ - internal struct QSBChannelPacket - { - public QSBChannelPacket(int packetSize, bool isReliable) - { - this.m_Position = 0; - this.m_Buffer = new byte[packetSize]; - this.m_IsReliable = isReliable; - } - - public void Reset() - { - this.m_Position = 0; - } - - public bool IsEmpty() - { - return this.m_Position == 0; - } - - public void Write(byte[] bytes, int numBytes) - { - Array.Copy(bytes, 0, this.m_Buffer, this.m_Position, numBytes); - this.m_Position += numBytes; - } - - public bool HasSpace(int numBytes) - { - return this.m_Position + numBytes <= this.m_Buffer.Length; - } - - public bool SendToTransport(QSBNetworkConnection conn, int channelId) - { - bool result = true; - byte b; - if (!conn.TransportSend(this.m_Buffer, (int)((ushort)this.m_Position), channelId, out b)) - { - if (!this.m_IsReliable || b != 4) - { - Debug.LogError(string.Concat(new object[] - { - "Failed to send internal buffer channel:", - channelId, - " bytesToSend:", - this.m_Position - })); - result = false; - } - } - if (b != 0) - { - if (this.m_IsReliable && b == 4) - { - return false; - } - Debug.LogError(string.Concat(new object[] - { - "Send Error: ", - (NetworkError)b, - " channel:", - channelId, - " bytesToSend:", - this.m_Position - })); - result = false; - } - this.m_Position = 0; - return result; - } - - private int m_Position; - - private byte[] m_Buffer; - - private bool m_IsReliable; - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 0973f254c..4c4234066 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -1,5 +1,6 @@ using QuantumUNET.Components; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; @@ -8,18 +9,6 @@ namespace QuantumUNET { public class QSBClientScene { - private static bool HasMigrationPending() => reconnectId != -1; - - public static void SetReconnectId(int newReconnectId, QSBPeerInfoMessage[] peers) - { - reconnectId = newReconnectId; - s_Peers = peers; - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::SetReconnectId: " + newReconnectId); - } - } - internal static void SetNotReady() => ready = false; public static List localPlayers { get; private set; } = new List(); @@ -54,7 +43,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer { player = null; bool result; - if ((int)playerControllerId >= localPlayers.Count) + if (playerControllerId >= localPlayers.Count) { if (LogFilter.logWarn) { @@ -62,7 +51,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer } result = false; } - else if (localPlayers[(int)playerControllerId] == null) + else if (localPlayers[playerControllerId] == null) { if (LogFilter.logWarn) { @@ -72,7 +61,7 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer } else { - player = localPlayers[(int)playerControllerId]; + player = localPlayers[playerControllerId]; result = (player.Gameobject != null); } return result; @@ -84,13 +73,13 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont { Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId); } - if ((int)playerControllerId >= localPlayers.Count) + if (playerControllerId >= localPlayers.Count) { if (LogFilter.logWarn) { Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId); } - while ((int)playerControllerId >= localPlayers.Count) + while (playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); } @@ -101,7 +90,7 @@ internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerCont PlayerControllerId = playerControllerId, UnetView = view }; - localPlayers[(int)playerControllerId] = playerController; + localPlayers[playerControllerId] = playerController; readyConnection.SetPlayerController(playerController); } @@ -114,24 +103,18 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl bool result; if (playerControllerId < 0) { - if (LogFilter.logError) - { - Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); - } + Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is negative"); result = false; } else if (playerControllerId > 32) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "ClientScene::AddPlayer: playerControllerId of ", playerControllerId, " is too high, max is ", 32 - })); - } + })); result = false; } else @@ -143,7 +126,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); } } - while ((int)playerControllerId >= localPlayers.Count) + while (playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); } @@ -194,7 +177,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl var networkWriter = new QSBNetworkWriter(); extraMessage.Serialize(networkWriter); addPlayerMessage.msgData = networkWriter.ToArray(); - addPlayerMessage.msgSize = (int)networkWriter.Position; + addPlayerMessage.msgSize = networkWriter.Position; } readyConnection.Send(37, addPlayerMessage); result = true; @@ -224,8 +207,8 @@ public static bool RemovePlayer(short playerControllerId) }; readyConnection.Send(38, removePlayerMessage); readyConnection.RemovePlayerController(playerControllerId); - localPlayers[(int)playerControllerId] = new QSBPlayerController(); - UnityEngine.Object.Destroy(playerController.Gameobject); + localPlayers[playerControllerId] = new QSBPlayerController(); + Object.Destroy(playerController.Gameobject); result = true; } else @@ -346,29 +329,29 @@ internal static void RegisterSystemHandlers(QSBNetworkClient client, bool localC { if (localClient) { - client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); - client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); - client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); - client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); - client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); + client.RegisterHandlerSafe(1, new QSBNetworkMessageDelegate(OnLocalClientObjectDestroy)); + client.RegisterHandlerSafe(13, new QSBNetworkMessageDelegate(OnLocalClientObjectHide)); + client.RegisterHandlerSafe(3, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawn)); + client.RegisterHandlerSafe(10, new QSBNetworkMessageDelegate(OnLocalClientObjectSpawnScene)); + client.RegisterHandlerSafe(15, new QSBNetworkMessageDelegate(OnClientAuthority)); } else { - client.RegisterHandlerSafe((short)3, new QSBNetworkMessageDelegate(OnObjectSpawn)); - client.RegisterHandlerSafe((short)10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); - client.RegisterHandlerSafe((short)12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); - client.RegisterHandlerSafe((short)1, new QSBNetworkMessageDelegate(OnObjectDestroy)); - client.RegisterHandlerSafe((short)13, new QSBNetworkMessageDelegate(OnObjectDestroy)); - client.RegisterHandlerSafe((short)8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); - client.RegisterHandlerSafe((short)4, new QSBNetworkMessageDelegate(OnOwnerMessage)); - client.RegisterHandlerSafe((short)9, new QSBNetworkMessageDelegate(OnSyncListMessage)); - client.RegisterHandlerSafe((short)40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); - client.RegisterHandlerSafe((short)41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); - client.RegisterHandlerSafe((short)15, new QSBNetworkMessageDelegate(OnClientAuthority)); - } - client.RegisterHandlerSafe((short)2, new QSBNetworkMessageDelegate(OnRPCMessage)); - client.RegisterHandlerSafe((short)7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); - client.RegisterHandlerSafe((short)42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); + client.RegisterHandlerSafe(3, new QSBNetworkMessageDelegate(OnObjectSpawn)); + client.RegisterHandlerSafe(10, new QSBNetworkMessageDelegate(OnObjectSpawnScene)); + client.RegisterHandlerSafe(12, new QSBNetworkMessageDelegate(OnObjectSpawnFinished)); + client.RegisterHandlerSafe(1, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe(13, new QSBNetworkMessageDelegate(OnObjectDestroy)); + client.RegisterHandlerSafe(8, new QSBNetworkMessageDelegate(OnUpdateVarsMessage)); + client.RegisterHandlerSafe(4, new QSBNetworkMessageDelegate(OnOwnerMessage)); + client.RegisterHandlerSafe(9, new QSBNetworkMessageDelegate(OnSyncListMessage)); + client.RegisterHandlerSafe(40, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationClientMessage)); + client.RegisterHandlerSafe(41, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationParametersClientMessage)); + client.RegisterHandlerSafe(15, new QSBNetworkMessageDelegate(OnClientAuthority)); + } + client.RegisterHandlerSafe(2, new QSBNetworkMessageDelegate(OnRPCMessage)); + client.RegisterHandlerSafe(7, new QSBNetworkMessageDelegate(OnSyncEventMessage)); + client.RegisterHandlerSafe(42, new QSBNetworkMessageDelegate(QSBNetworkAnimator.OnAnimationTriggerClientMessage)); } internal static string GetStringForAssetId(NetworkHash128 assetId) @@ -393,11 +376,11 @@ internal static string GetStringForAssetId(NetworkHash128 assetId) public static void RegisterPrefab(GameObject prefab) => QSBNetworkScene.RegisterPrefab(prefab); - public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); + public static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); public static void UnregisterPrefab(GameObject prefab) => QSBNetworkScene.UnregisterPrefab(prefab); - public static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); + public static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) => QSBNetworkScene.RegisterSpawnHandler(assetId, spawnHandler, unspawnHandler); public static void UnregisterSpawnHandler(NetworkHash128 assetId) => QSBNetworkScene.UnregisterSpawnHandler(assetId); @@ -449,7 +432,7 @@ private static void OnObjectSpawn(QSBNetworkMessage netMsg) } else if (QSBNetworkScene.GetPrefab(s_ObjectSpawnMessage.assetId, out var original)) { - GameObject gameObject = UnityEngine.Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); + var gameObject = Object.Instantiate(original, s_ObjectSpawnMessage.Position, s_ObjectSpawnMessage.Rotation); component = gameObject.GetComponent(); if (component == null) { @@ -572,7 +555,7 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) { if (networkIdentity.SceneId.IsEmpty()) { - UnityEngine.Object.Destroy(networkIdentity.gameObject); + Object.Destroy(networkIdentity.gameObject); } else { @@ -663,7 +646,7 @@ private static void OnRPCMessage(QSBNetworkMessage netMsg) } else if (LogFilter.logWarn) { - string cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); + var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", new object[] { networkInstanceId, @@ -811,8 +794,6 @@ private static void CheckForOwner(QSBNetworkIdentity uv) public const int ReconnectIdHost = 0; - private static QSBPeerInfoMessage[] s_Peers; - private static List s_PendingOwnerIds = new List(); private struct PendingOwner diff --git a/QuantumUNET/QSBLocalClient.cs b/QuantumUNET/QSBLocalClient.cs index ce65e1230..42142c059 100644 --- a/QuantumUNET/QSBLocalClient.cs +++ b/QuantumUNET/QSBLocalClient.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using System.Collections.Generic; using UnityEngine; @@ -14,7 +15,7 @@ public override void Disconnect() PostInternalMessage(33); m_Connected = false; } - m_AsyncConnect = QSBNetworkClient.ConnectState.Disconnected; + m_AsyncConnect = ConnectState.Disconnected; m_LocalServer.RemoveLocalClient(m_Connection); } @@ -31,11 +32,11 @@ internal void InternalConnectLocalServer(bool generateConnectMsg) } m_LocalServer = QSBNetworkServer.instance; m_Connection = new QSBULocalConnectionToServer(m_LocalServer); - base.SetHandlers(m_Connection); + SetHandlers(m_Connection); m_Connection.connectionId = m_LocalServer.AddLocalClient(this); - m_AsyncConnect = QSBNetworkClient.ConnectState.Connected; - QSBNetworkClient.SetActive(true); - base.RegisterSystemHandlers(true); + m_AsyncConnect = ConnectState.Connected; + SetActive(true); + RegisterSystemHandlers(true); if (generateConnectMsg) { PostInternalMessage(32); @@ -108,11 +109,11 @@ private void ProcessInternalMessages() } s_InternalMessage.Reader.ReadInt16(); s_InternalMessage.ChannelId = t.channelId; - s_InternalMessage.Connection = base.connection; + s_InternalMessage.Connection = connection; s_InternalMessage.MsgType = s_InternalMessage.Reader.ReadInt16(); m_Connection.InvokeHandler(s_InternalMessage); m_FreeMessages.Push(t); - base.connection.lastMessageTime = Time.time; + connection.lastMessageTime = Time.time; } m_InternalMsgs = internalMsgs; m_InternalMsgs.Clear(); diff --git a/QuantumUNET/QSBNetBuffer.cs b/QuantumUNET/QSBNetBuffer.cs deleted file mode 100644 index 8f879800a..000000000 --- a/QuantumUNET/QSBNetBuffer.cs +++ /dev/null @@ -1,198 +0,0 @@ -using System; -using UnityEngine; - -namespace QuantumUNET -{ - internal class QSBNetBuffer - { - public QSBNetBuffer() - { - m_Buffer = new byte[64]; - } - - public QSBNetBuffer(byte[] buffer) - { - m_Buffer = buffer; - } - - public uint Position - { - get - { - return m_Pos; - } - } - - public int Length - { - get - { - return m_Buffer.Length; - } - } - - public byte ReadByte() - { - if ((ulong)m_Pos >= (ulong)((long)m_Buffer.Length)) - { - throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + ToString()); - } - return m_Buffer[(int)((UIntPtr)(m_Pos++))]; - } - - public void ReadBytes(byte[] buffer, uint count) - { - if ((ulong)(m_Pos + count) > (ulong)((long)m_Buffer.Length)) - { - throw new IndexOutOfRangeException(string.Concat(new object[] - { - "NetworkReader:ReadBytes out of range: (", - count, - ") ", - ToString() - })); - } - ushort num = 0; - while ((uint)num < count) - { - buffer[(int)num] = m_Buffer[(int)((UIntPtr)(m_Pos + (uint)num))]; - num += 1; - } - m_Pos += count; - } - - internal ArraySegment AsArraySegment() - { - return new ArraySegment(m_Buffer, 0, (int)m_Pos); - } - - public void WriteByte(byte value) - { - WriteCheckForSpace(1); - m_Buffer[(int)((UIntPtr)m_Pos)] = value; - m_Pos += 1U; - } - - public void WriteByte2(byte value0, byte value1) - { - WriteCheckForSpace(2); - m_Buffer[(int)((UIntPtr)m_Pos)] = value0; - m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; - m_Pos += 2U; - } - - public void WriteByte4(byte value0, byte value1, byte value2, byte value3) - { - WriteCheckForSpace(4); - m_Buffer[(int)((UIntPtr)m_Pos)] = value0; - m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; - m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; - m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; - m_Pos += 4U; - } - - public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7) - { - WriteCheckForSpace(8); - m_Buffer[(int)((UIntPtr)m_Pos)] = value0; - m_Buffer[(int)((UIntPtr)(m_Pos + 1U))] = value1; - m_Buffer[(int)((UIntPtr)(m_Pos + 2U))] = value2; - m_Buffer[(int)((UIntPtr)(m_Pos + 3U))] = value3; - m_Buffer[(int)((UIntPtr)(m_Pos + 4U))] = value4; - m_Buffer[(int)((UIntPtr)(m_Pos + 5U))] = value5; - m_Buffer[(int)((UIntPtr)(m_Pos + 6U))] = value6; - m_Buffer[(int)((UIntPtr)(m_Pos + 7U))] = value7; - m_Pos += 8U; - } - - public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count) - { - uint num = (uint)(count + targetOffset); - WriteCheckForSpace((ushort)num); - if (targetOffset == 0 && (int)count == buffer.Length) - { - buffer.CopyTo(m_Buffer, (int)m_Pos); - } - else - { - for (int i = 0; i < (int)count; i++) - { - m_Buffer[(int)targetOffset + i] = buffer[i]; - } - } - if (num > m_Pos) - { - m_Pos = num; - } - } - - public void WriteBytes(byte[] buffer, ushort count) - { - WriteCheckForSpace(count); - if ((int)count == buffer.Length) - { - buffer.CopyTo(m_Buffer, (int)m_Pos); - } - else - { - for (int i = 0; i < (int)count; i++) - { - m_Buffer[(int)(checked((IntPtr)(unchecked((ulong)m_Pos + (ulong)((long)i)))))] = buffer[i]; - } - } - m_Pos += (uint)count; - } - - private void WriteCheckForSpace(ushort count) - { - if ((ulong)(m_Pos + (uint)count) >= (ulong)((long)m_Buffer.Length)) - { - int num = (int)Math.Ceiling((double)((float)m_Buffer.Length * 1.5f)); - while ((ulong)(m_Pos + (uint)count) >= (ulong)((long)num)) - { - num = (int)Math.Ceiling((double)((float)num * 1.5f)); - if (num > 134217728) - { - Debug.LogWarning("NetworkBuffer size is " + num + " bytes!"); - } - } - byte[] array = new byte[num]; - m_Buffer.CopyTo(array, 0); - m_Buffer = array; - } - } - - public void FinishMessage() - { - ushort num = (ushort)(m_Pos - 4U); - m_Buffer[0] = (byte)(num & 255); - m_Buffer[1] = (byte)(num >> 8 & 255); - } - - public void SeekZero() - { - m_Pos = 0U; - } - - public void Replace(byte[] buffer) - { - m_Buffer = buffer; - m_Pos = 0U; - } - - public override string ToString() - { - return string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, m_Pos); - } - - private byte[] m_Buffer; - - private uint m_Pos; - - private const int k_InitialSize = 64; - - private const float k_GrowthFactor = 1.5f; - - private const int k_BufferSizeWarning = 134217728; - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 202910c1f..5887c0f1c 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Components; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Net.Sockets; @@ -77,7 +78,7 @@ protected void SendRPCInternal(QSBNetworkWriter writer, int channelId, string rp } } writer.FinishMessage(); - QSBNetworkServer.SendWriterToReady(base.gameObject, writer, channelId); + QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); } protected void SendTargetRPCInternal(QSBNetworkConnection conn, QSBNetworkWriter writer, int channelId, string rpcName) @@ -434,7 +435,7 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam Debug.Log(string.Concat(new object[] { "SetSyncVar GameObject ", - base.GetType().Name, + GetType().Name, " bit [", dirtyBit, "] netfieldId:", diff --git a/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs index 0bf0643f6..cb8ec27b5 100644 --- a/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -1,8 +1,6 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Reflection; using UnityEngine; -using UnityEngine.Networking; namespace QuantumUNET { @@ -20,13 +18,7 @@ internal static QSBNetworkCRC singleton } } - public Dictionary scripts - { - get - { - return this.m_Scripts; - } - } + public Dictionary scripts { get; } = new Dictionary(); public static bool scriptCRCCheck { @@ -42,12 +34,12 @@ public static bool scriptCRCCheck public static void ReinitializeScriptCRCs(Assembly callingAssembly) { - singleton.m_Scripts.Clear(); - foreach (Type type in callingAssembly.GetTypes()) + singleton.scripts.Clear(); + foreach (var type in callingAssembly.GetTypes()) { if (type.GetBaseType() == typeof(QSBNetworkBehaviour)) { - MethodInfo method = type.GetMethod(".cctor", BindingFlags.Static); + var method = type.GetMethod(".cctor", BindingFlags.Static); if (method != null) { method.Invoke(null, new object[0]); @@ -56,76 +48,58 @@ public static void ReinitializeScriptCRCs(Assembly callingAssembly) } } - public static void RegisterBehaviour(string name, int channel) - { - singleton.m_Scripts[name] = channel; - } + public static void RegisterBehaviour(string name, int channel) => singleton.scripts[name] = channel; - internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) - { - return singleton.ValidateInternal(scripts, numChannels); - } + internal static bool Validate(QSBCRCMessageEntry[] scripts, int numChannels) => singleton.ValidateInternal(scripts, numChannels); private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannels) { bool result; - if (this.m_Scripts.Count != remoteScripts.Length) + if (scripts.Count != remoteScripts.Length) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); - } - this.Dump(remoteScripts); + Debug.LogWarning("Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check."); + Dump(remoteScripts); result = false; } else { - foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) + foreach (var crcmessageEntry in remoteScripts) { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { - "Script: ", - crcmessageEntry.name, - " Channel: ", - crcmessageEntry.channel - })); - } - if (this.m_Scripts.ContainsKey(crcmessageEntry.name)) + "Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); + if (scripts.ContainsKey(crcmessageEntry.name)) { - int num = this.m_Scripts[crcmessageEntry.name]; - if (num != (int)crcmessageEntry.channel) - { - if (LogFilter.logError) - { - Debug.LogError(string.Concat(new object[] - { - "HLAPI CRC Channel Mismatch. Script: ", - crcmessageEntry.name, - " LocalChannel: ", - num, - " RemoteChannel: ", - crcmessageEntry.channel - })); - } - this.Dump(remoteScripts); - return false; - } - } - if ((int)crcmessageEntry.channel >= numChannels) - { - if (LogFilter.logError) + var num = scripts[crcmessageEntry.name]; + if (num != crcmessageEntry.channel) { Debug.LogError(string.Concat(new object[] { - "HLAPI CRC channel out of range! Script: ", + "HLAPI CRC Channel Mismatch. Script: ", crcmessageEntry.name, - " Channel: ", + " LocalChannel: ", + num, + " RemoteChannel: ", crcmessageEntry.channel })); + Dump(remoteScripts); + return false; } - this.Dump(remoteScripts); + } + if (crcmessageEntry.channel >= numChannels) + { + Debug.LogError(string.Concat(new object[] + { + "HLAPI CRC channel out of range! Script: ", + crcmessageEntry.name, + " Channel: ", + crcmessageEntry.channel + })); + Dump(remoteScripts); return false; } } @@ -136,17 +110,17 @@ private bool ValidateInternal(QSBCRCMessageEntry[] remoteScripts, int numChannel private void Dump(QSBCRCMessageEntry[] remoteScripts) { - foreach (string text in this.m_Scripts.Keys) + foreach (var text in scripts.Keys) { Debug.Log(string.Concat(new object[] { "CRC Local Dump ", text, " : ", - this.m_Scripts[text] + scripts[text] })); } - foreach (QSBCRCMessageEntry crcmessageEntry in remoteScripts) + foreach (var crcmessageEntry in remoteScripts) { Debug.Log(string.Concat(new object[] { @@ -159,9 +133,6 @@ private void Dump(QSBCRCMessageEntry[] remoteScripts) } internal static QSBNetworkCRC s_Singleton; - - private Dictionary m_Scripts = new Dictionary(); - private bool m_ScriptCRCCheck; } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index 04a5169c1..d93577248 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -1,5 +1,6 @@ using OWML.Logging; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Net; @@ -30,82 +31,25 @@ public QSBNetworkClient(QSBNetworkConnection conn) RegisterSystemHandlers(false); } - public static List allClients - { - get - { - return s_Clients; - } - } + public static List allClients { get; private set; } = new List(); - public static bool active - { - get - { - return s_IsActive; - } - } + public static bool active { get; private set; } - internal void SetHandlers(QSBNetworkConnection conn) - { - conn.SetHandlers(m_MessageHandlers); - } + internal void SetHandlers(QSBNetworkConnection conn) => conn.SetHandlers(m_MessageHandlers); - public string serverIp - { - get - { - return m_ServerIp; - } - } + public string serverIp { get; private set; } = ""; - public int serverPort - { - get - { - return m_ServerPort; - } - } + public int serverPort { get; private set; } - public QSBNetworkConnection connection - { - get - { - return m_Connection; - } - } + public QSBNetworkConnection connection => m_Connection; - internal int hostId - { - get - { - return m_ClientId; - } - } + internal int hostId { get; private set; } = -1; - public Dictionary handlers - { - get - { - return m_MessageHandlers.GetHandlers(); - } - } + public Dictionary handlers => m_MessageHandlers.GetHandlers(); - public int numChannels - { - get - { - return m_HostTopology.DefaultConfig.ChannelCount; - } - } + public int numChannels => hostTopology.DefaultConfig.ChannelCount; - public HostTopology hostTopology - { - get - { - return m_HostTopology; - } - } + public HostTopology hostTopology { get; private set; } public int hostPort { @@ -127,36 +71,21 @@ public int hostPort } } - public bool isConnected - { - get - { - return m_AsyncConnect == ConnectState.Connected; - } - } + public bool isConnected => m_AsyncConnect == ConnectState.Connected; - public Type networkConnectionClass - { - get - { - return m_NetworkConnectionClass; - } - } + public Type networkConnectionClass { get; private set; } = typeof(QSBNetworkConnection); - public void SetNetworkConnectionClass() where T : QSBNetworkConnection - { - m_NetworkConnectionClass = typeof(T); - } + public void SetNetworkConnectionClass() where T : QSBNetworkConnection => networkConnectionClass = typeof(T); public bool Configure(ConnectionConfig config, int maxConnections) { - HostTopology topology = new HostTopology(config, maxConnections); + var topology = new HostTopology(config, maxConnections); return Configure(topology); } public bool Configure(HostTopology topology) { - m_HostTopology = topology; + hostTopology = topology; return true; } @@ -195,16 +124,16 @@ public bool ReconnectToNewHost(string serverIp, int serverPort) QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; - m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); - m_ServerPort = serverPort; + hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); + this.serverPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { - m_ServerIp = serverIp; + this.serverIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { - m_ServerIp = "127.0.0.1"; + this.serverIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else @@ -250,7 +179,7 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; - m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); if (secureTunnelEndPoint == null) { if (LogFilter.logError) @@ -271,11 +200,11 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - string fullName = secureTunnelEndPoint.GetType().FullName; + var fullName = secureTunnelEndPoint.GetType().FullName; if (fullName == "System.Net.IPEndPoint") { - IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; - this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + var ipendPoint = (IPEndPoint)secureTunnelEndPoint; + Connect(ipendPoint.Address.ToString(), ipendPoint.Port); result = (m_AsyncConnect != ConnectState.Failed); } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint") @@ -289,12 +218,12 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - byte b = 0; m_RemoteEndPoint = secureTunnelEndPoint; m_AsyncConnect = ConnectState.Connecting; + byte b; try { - m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(hostId, m_RemoteEndPoint, 0, out b); } catch (Exception arg) { @@ -316,9 +245,9 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else { - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); result = true; } } @@ -337,7 +266,7 @@ public void ConnectWithSimulator(string serverIp, int serverPort, int latency, f private static bool IsValidIpV6(string address) { - foreach (char c in address) + foreach (var c in address) { if (c != ':' && (c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F')) { @@ -357,20 +286,20 @@ public void Connect(string serverIp, int serverPort) ":", serverPort })); - m_ServerPort = serverPort; + this.serverPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { - m_ServerIp = serverIp; + this.serverIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { - m_ServerIp = "127.0.0.1"; + this.serverIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.IndexOf(":") != -1 && IsValidIpV6(serverIp)) { - m_ServerIp = serverIp; + this.serverIp = serverIp; m_AsyncConnect = ConnectState.Resolved; } else @@ -385,7 +314,7 @@ public void Connect(string serverIp, int serverPort) public void Connect(EndPoint secureTunnelEndPoint) { //bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); - bool usePlatformSpecificProtocols = false; + var usePlatformSpecificProtocols = false; PrepareForConnect(usePlatformSpecificProtocols); if (LogFilter.logDebug) { @@ -409,11 +338,11 @@ public void Connect(EndPoint secureTunnelEndPoint) } else { - string fullName = secureTunnelEndPoint.GetType().FullName; + var fullName = secureTunnelEndPoint.GetType().FullName; if (fullName == "System.Net.IPEndPoint") { - IPEndPoint ipendPoint = (IPEndPoint)secureTunnelEndPoint; - this.Connect(ipendPoint.Address.ToString(), ipendPoint.Port); + var ipendPoint = (IPEndPoint)secureTunnelEndPoint; + Connect(ipendPoint.Address.ToString(), ipendPoint.Port); } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint" && fullName != "UnityEngine.PSVita.SceEndPoint") { @@ -430,7 +359,7 @@ public void Connect(EndPoint secureTunnelEndPoint) m_AsyncConnect = ConnectState.Connecting; try { - m_ClientConnectionId = NetworkTransport.ConnectEndPoint(m_ClientId, m_RemoteEndPoint, 0, out b); + m_ClientConnectionId = NetworkTransport.ConnectEndPoint(hostId, m_RemoteEndPoint, 0, out b); } catch (Exception arg) { @@ -451,39 +380,36 @@ public void Connect(EndPoint secureTunnelEndPoint) } else { - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); } } } } - private void PrepareForConnect() - { - PrepareForConnect(false); - } + private void PrepareForConnect() => PrepareForConnect(false); private void PrepareForConnect(bool usePlatformSpecificProtocols) { SetActive(true); RegisterSystemHandlers(false); - if (m_HostTopology == null) + if (hostTopology == null) { - ConnectionConfig connectionConfig = new ConnectionConfig(); + var connectionConfig = new ConnectionConfig(); connectionConfig.AddChannel(QosType.ReliableSequenced); connectionConfig.AddChannel(QosType.Unreliable); connectionConfig.UsePlatformSpecificProtocols = usePlatformSpecificProtocols; - m_HostTopology = new HostTopology(connectionConfig, 8); + hostTopology = new HostTopology(connectionConfig, 8); } if (m_UseSimulator) { - int num = m_SimulatedLatency / 3 - 1; + var num = (m_SimulatedLatency / 3) - 1; if (num < 1) { num = 1; } - int num2 = m_SimulatedLatency * 3; + var num2 = m_SimulatedLatency * 3; ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] { "AddHost Using Simulator ", @@ -491,11 +417,11 @@ private void PrepareForConnect(bool usePlatformSpecificProtocols) "/", num2 })); - m_ClientId = NetworkTransport.AddHostWithSimulator(m_HostTopology, num, num2, m_HostPort); + hostId = NetworkTransport.AddHostWithSimulator(hostTopology, num, num2, m_HostPort); } else { - m_ClientId = NetworkTransport.AddHost(m_HostTopology, m_HostPort); + hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); } } @@ -503,8 +429,8 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) { try { - IPAddress[] array = Dns.EndGetHostAddresses(ar); - QSBNetworkClient networkClient = (QSBNetworkClient)ar.AsyncState; + var array = Dns.EndGetHostAddresses(ar); + var networkClient = (QSBNetworkClient)ar.AsyncState; if (array.Length == 0) { Debug.LogError("DNS lookup failed for:" + networkClient.m_RequestedServerHost); @@ -512,22 +438,22 @@ internal static void GetHostAddressesCallback(IAsyncResult ar) } else { - networkClient.m_ServerIp = array[0].ToString(); + networkClient.serverIp = array[0].ToString(); networkClient.m_AsyncConnect = ConnectState.Resolved; Debug.Log(string.Concat(new string[] { "Async DNS Result:", - networkClient.m_ServerIp, + networkClient.serverIp, " for ", networkClient.m_RequestedServerHost, ": ", - networkClient.m_ServerIp + networkClient.serverIp })); } } catch (SocketException ex) { - QSBNetworkClient networkClient2 = (QSBNetworkClient)ar.AsyncState; + var networkClient2 = (QSBNetworkClient)ar.AsyncState; Debug.LogError("DNS resolution failed: " + ex.GetErrorCode()); Debug.LogError("Exception:" + ex); networkClient2.m_AsyncConnect = ConnectState.Failed; @@ -538,7 +464,7 @@ internal void ContinueConnect() { if (m_UseSimulator) { - int num = m_SimulatedLatency / 3; + var num = m_SimulatedLatency / 3; if (num < 1) { num = 1; @@ -550,18 +476,16 @@ internal void ContinueConnect() "/", m_SimulatedLatency })); - ConnectionSimulatorConfig conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); - byte b; - m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(m_ClientId, m_ServerIp, m_ServerPort, 0, out b, conf); + var conf = new ConnectionSimulatorConfig(num, m_SimulatedLatency, num, m_SimulatedLatency, m_PacketLoss); + m_ClientConnectionId = NetworkTransport.ConnectWithSimulator(hostId, serverIp, serverPort, 0, out var b, conf); } else { - byte b; - m_ClientConnectionId = NetworkTransport.Connect(m_ClientId, m_ServerIp, m_ServerPort, 0, out b); + m_ClientConnectionId = NetworkTransport.Connect(hostId, serverIp, serverPort, 0, out var b); } - m_Connection = (QSBNetworkConnection)Activator.CreateInstance(m_NetworkConnectionClass); + m_Connection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); m_Connection.SetHandlers(m_MessageHandlers); - m_Connection.Initialize(m_ServerIp, m_ClientId, m_ClientConnectionId, m_HostTopology); + m_Connection.Initialize(serverIp, hostId, m_ClientConnectionId, hostTopology); } public virtual void Disconnect() @@ -573,10 +497,10 @@ public virtual void Disconnect() m_Connection.Disconnect(); m_Connection.Dispose(); m_Connection = null; - if (m_ClientId != -1) + if (hostId != -1) { - NetworkTransport.RemoveHost(m_ClientId); - m_ClientId = -1; + NetworkTransport.RemoveHost(hostId); + hostId = -1; } } } @@ -745,15 +669,15 @@ public void Shutdown() { if (LogFilter.logDebug) { - Debug.Log("Shutting down client " + m_ClientId); + Debug.Log("Shutting down client " + hostId); } - if (m_ClientId != -1) + if (hostId != -1) { - NetworkTransport.RemoveHost(m_ClientId); - m_ClientId = -1; + NetworkTransport.RemoveHost(hostId); + hostId = -1; } RemoveClient(this); - if (s_Clients.Count == 0) + if (allClients.Count == 0) { SetActive(false); } @@ -761,7 +685,7 @@ public void Shutdown() internal virtual void Update() { - if (m_ClientId != -1) + if (hostId != -1) { switch (m_AsyncConnect) { @@ -788,14 +712,11 @@ internal virtual void Update() m_StatResetTime = (int)Time.time; } } - int num = 0; + var num = 0; byte b; for (; ; ) { - int num2; - int channelId; - int numBytes; - NetworkEventType networkEventType = NetworkTransport.ReceiveFromHost(m_ClientId, out num2, out channelId, m_MsgBuffer, (int)((ushort)m_MsgBuffer.Length), out numBytes, out b); + var networkEventType = NetworkTransport.ReceiveFromHost(hostId, out var num2, out var channelId, m_MsgBuffer, (ushort)m_MsgBuffer.Length, out var numBytes, out b); if (m_Connection != null) { m_Connection.LastError = (NetworkError)b; @@ -834,7 +755,7 @@ internal virtual void Update() { if (b != 6) { - GenerateDisconnectError((int)b); + GenerateDisconnectError(b); } } QSBClientScene.HandleClientDisconnect(m_Connection); @@ -858,7 +779,7 @@ internal virtual void Update() { goto Block_17; } - if (m_ClientId == -1) + if (hostId == -1) { goto Block_19; } @@ -868,10 +789,10 @@ internal virtual void Update() } } Block_10: - GenerateConnectError((int)b); + GenerateConnectError(b); return; Block_11: - GenerateDataError((int)b); + GenerateDataError(b); return; Block_17: if (LogFilter.logDebug) @@ -916,19 +837,21 @@ private void GenerateDisconnectError(int error) private void GenerateError(int error) { - QSBNetworkMessageDelegate handler = m_MessageHandlers.GetHandler(34); + var handler = m_MessageHandlers.GetHandler(34); if (handler == null) { handler = m_MessageHandlers.GetHandler(34); } if (handler != null) { - QSBErrorMessage errorMessage = new QSBErrorMessage(); - errorMessage.errorCode = error; - byte[] buffer = new byte[200]; - QSBNetworkWriter writer = new QSBNetworkWriter(buffer); + var errorMessage = new QSBErrorMessage + { + errorCode = error + }; + var buffer = new byte[200]; + var writer = new QSBNetworkWriter(buffer); errorMessage.Serialize(writer); - QSBNetworkReader reader = new QSBNetworkReader(buffer); + var reader = new QSBNetworkReader(buffer); handler(new QSBNetworkMessage { MsgType = 34, @@ -986,14 +909,13 @@ public void ResetConnectionStats() public int GetRTT() { int result; - if (m_ClientId == -1) + if (hostId == -1) { result = 0; } else { - byte b; - result = NetworkTransport.GetCurrentRTT(m_ClientId, m_ClientConnectionId, out b); + result = NetworkTransport.GetCurrentRTT(hostId, m_ClientConnectionId, out var b); } return result; } @@ -1001,7 +923,7 @@ public int GetRTT() internal void RegisterSystemHandlers(bool localClient) { QSBClientScene.RegisterSystemHandlers(this, localClient); - this.RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); + RegisterHandlerSafe(14, new QSBNetworkMessageDelegate(OnCRC)); } private void OnCRC(QSBNetworkMessage netMsg) @@ -1010,33 +932,24 @@ private void OnCRC(QSBNetworkMessage netMsg) QSBNetworkCRC.Validate(s_CRCMessage.scripts, numChannels); } - public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) - { - m_MessageHandlers.RegisterHandler(msgType, handler); - } + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); - public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) - { - m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - } + public void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - public void UnregisterHandler(short msgType) - { - m_MessageHandlers.UnregisterHandler(msgType); - } + public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); public static Dictionary GetTotalConnectionStats() { - Dictionary dictionary = new Dictionary(); - for (int i = 0; i < s_Clients.Count; i++) + var dictionary = new Dictionary(); + for (var i = 0; i < allClients.Count; i++) { - QSBNetworkClient networkClient = s_Clients[i]; - Dictionary connectionStats = networkClient.GetConnectionStats(); - foreach (short key in connectionStats.Keys) + var networkClient = allClients[i]; + var connectionStats = networkClient.GetConnectionStats(); + foreach (var key in connectionStats.Keys) { if (dictionary.ContainsKey(key)) { - QSBNetworkConnection.PacketStat packetStat = dictionary[key]; + var packetStat = dictionary[key]; packetStat.count += connectionStats[key].count; packetStat.bytes += connectionStats[key].bytes; dictionary[key] = packetStat; @@ -1050,61 +963,46 @@ public void UnregisterHandler(short msgType) return dictionary; } - internal static void AddClient(QSBNetworkClient client) - { - s_Clients.Add(client); - } + internal static void AddClient(QSBNetworkClient client) => allClients.Add(client); - internal static bool RemoveClient(QSBNetworkClient client) - { - return s_Clients.Remove(client); - } + internal static bool RemoveClient(QSBNetworkClient client) => allClients.Remove(client); internal static void UpdateClients() { - for (int i = 0; i < s_Clients.Count; i++) + for (var i = 0; i < allClients.Count; i++) { - if (s_Clients[i] != null) + if (allClients[i] != null) { - s_Clients[i].Update(); + allClients[i].Update(); } else { - s_Clients.RemoveAt(i); + allClients.RemoveAt(i); } } } public static void ShutdownAll() { - while (s_Clients.Count != 0) + while (allClients.Count != 0) { - s_Clients[0].Shutdown(); + allClients[0].Shutdown(); } - s_Clients = new List(); - s_IsActive = false; + allClients = new List(); + active = false; QSBClientScene.Shutdown(); } internal static void SetActive(bool state) { - if (!s_IsActive && state) + if (!active && state) { NetworkTransport.Init(); } - s_IsActive = state; + active = state; } - private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); - private const int k_MaxEventsPerFrame = 500; - - private static List s_Clients = new List(); - - private static bool s_IsActive; - - private HostTopology m_HostTopology; - private int m_HostPort; private bool m_UseSimulator; @@ -1112,13 +1010,6 @@ internal static void SetActive(bool state) private int m_SimulatedLatency; private float m_PacketLoss; - - private string m_ServerIp = ""; - - private int m_ServerPort; - - private int m_ClientId = -1; - private int m_ClientConnectionId = -1; private int m_StatResetTime; diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index 8f9101c75..ce6ddea68 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -1,6 +1,7 @@ using OWML.Logging; using QuantumUNET.Components; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Text; @@ -47,7 +48,7 @@ public virtual void Initialize(string networkAddress, int networkHostId, int net var bufferSize = packetSize; if (channelQOS.QOS == QosType.ReliableFragmented || channelQOS.QOS == QosType.UnreliableFragmented) { - bufferSize = (int)(hostTopology.DefaultConfig.FragmentSize * 128); + bufferSize = hostTopology.DefaultConfig.FragmentSize * 128; } m_Channels[i] = new QSBChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS)); } @@ -102,8 +103,7 @@ public void Disconnect() QSBClientScene.HandleClientDisconnect(this); if (hostId != -1) { - byte b; - NetworkTransport.Disconnect(hostId, connectionId, out b); + NetworkTransport.Disconnect(hostId, connectionId, out var b); RemoveObservers(); } } @@ -182,18 +182,18 @@ internal void HandleFragment(QSBNetworkReader reader, int channelId) internal void SetPlayerController(QSBPlayerController player) { - while ((int)player.PlayerControllerId >= PlayerControllers.Count) + while (player.PlayerControllerId >= PlayerControllers.Count) { PlayerControllers.Add(new QSBPlayerController()); } - PlayerControllers[(int)player.PlayerControllerId] = player; + PlayerControllers[player.PlayerControllerId] = player; } internal void RemovePlayerController(short playerControllerId) { for (var i = PlayerControllers.Count; i >= 0; i--) { - if ((int)playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) + if (playerControllerId == i && playerControllerId == PlayerControllers[i].PlayerControllerId) { PlayerControllers[i] = new QSBPlayerController(); return; @@ -263,15 +263,9 @@ public virtual bool SendByChannel(short msgType, QSBMessageBase msg, int channel return SendWriter(m_Writer, channelId); } - public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) - { - return CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); - } + public virtual bool SendBytes(byte[] bytes, int numBytes, int channelId) => CheckChannel(channelId) && m_Channels[channelId].SendBytes(bytes, numBytes); - public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) - { - return CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); - } + public virtual bool SendWriter(QSBNetworkWriter writer, int channelId) => CheckChannel(channelId) && m_Channels[channelId].SendWriter(writer); private void LogSend(byte[] bytes) { @@ -279,7 +273,7 @@ private void LogSend(byte[] bytes) var num = networkReader.ReadUInt16(); var num2 = networkReader.ReadUInt16(); var stringBuilder = new StringBuilder(); - for (var i = 4; i < (int)(4 + num); i++) + for (var i = 4; i < 4 + num; i++) { stringBuilder.AppendFormat("{0:X2}", bytes[i]); if (i > 150) @@ -348,7 +342,7 @@ protected void HandleReader(QSBNetworkReader reader, int receivedSize, int chann { var num = reader.ReadUInt16(); var num2 = reader.ReadInt16(); - var array = reader.ReadBytes((int)num); + var array = reader.ReadBytes(num); var reader2 = new QSBNetworkReader(array); QSBNetworkMessageDelegate networkMessageDelegate = null; if (m_MessageHandlersDict.ContainsKey(num2)) diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index e268114b6..cf14a9c06 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -7,21 +7,13 @@ namespace QuantumUNET { internal class QSBNetworkScene { - private Dictionary m_LocalObjects = new Dictionary(); - internal static Dictionary guidToPrefab { get; } = new Dictionary(); - internal static Dictionary spawnHandlers { get; } = new Dictionary(); + internal static Dictionary spawnHandlers { get; } = new Dictionary(); internal static Dictionary unspawnHandlers { get; } = new Dictionary(); - internal Dictionary localObjects - { - get - { - return m_LocalObjects; - } - } + internal Dictionary localObjects { get; } = new Dictionary(); internal void Shutdown() { @@ -88,7 +80,7 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) if (localObjects.ContainsKey(netId)) { var networkIdentity = localObjects[netId]; - UnityEngine.Object.Destroy(networkIdentity.gameObject); + Object.Destroy(networkIdentity.gameObject); result = localObjects.Remove(netId); } else @@ -98,10 +90,7 @@ internal bool RemoveLocalObjectAndDestroy(NetworkInstanceId netId) return result; } - internal void ClearLocalObjects() - { - localObjects.Clear(); - } + internal void ClearLocalObjects() => localObjects.Clear(); internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId) { @@ -172,7 +161,7 @@ public static void UnregisterSpawnHandler(NetworkHash128 assetId) unspawnHandlers.Remove(assetId); } - internal static void RegisterSpawnHandler(NetworkHash128 assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { if (spawnHandler == null || unspawnHandler == null) { @@ -205,7 +194,7 @@ internal static void UnregisterPrefab(GameObject prefab) } } - internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + internal static void RegisterPrefab(GameObject prefab, QSBSpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { var component = prefab.GetComponent(); if (component == null) @@ -227,7 +216,7 @@ internal static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandle } } - internal static bool GetSpawnHandler(NetworkHash128 assetId, out SpawnDelegate handler) + internal static bool GetSpawnHandler(NetworkHash128 assetId, out QSBSpawnDelegate handler) { bool result; if (spawnHandlers.ContainsKey(assetId)) @@ -270,7 +259,7 @@ internal void DestroyAllClientObjects() { if (networkIdentity.SceneId.IsEmpty()) { - UnityEngine.Object.Destroy(networkIdentity.gameObject); + Object.Destroy(networkIdentity.gameObject); } else { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 3dfd00036..1e5793fda 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1,6 +1,7 @@ using OWML.Logging; using QuantumUNET.Components; using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -21,61 +22,19 @@ private QSBNetworkServer() m_SimpleServerSimple = new ServerSimpleWrapper(this); } - public static List localConnections - { - get - { - return instance.m_LocalConnectionsFakeList; - } - } + public static List localConnections => instance.m_LocalConnectionsFakeList; - public static int listenPort - { - get - { - return instance.m_SimpleServerSimple.listenPort; - } - } + public static int listenPort => instance.m_SimpleServerSimple.listenPort; - public static int serverHostId - { - get - { - return instance.m_SimpleServerSimple.serverHostId; - } - } + public static int serverHostId => instance.m_SimpleServerSimple.serverHostId; - public static ReadOnlyCollection connections - { - get - { - return instance.m_SimpleServerSimple.connections; - } - } + public static ReadOnlyCollection connections => instance.m_SimpleServerSimple.connections; - public static Dictionary handlers - { - get - { - return instance.m_SimpleServerSimple.handlers; - } - } + public static Dictionary handlers => instance.m_SimpleServerSimple.handlers; - public static HostTopology hostTopology - { - get - { - return instance.m_SimpleServerSimple.hostTopology; - } - } + public static HostTopology hostTopology => instance.m_SimpleServerSimple.hostTopology; - public static Dictionary objects - { - get - { - return instance.m_NetworkScene.localObjects; - } - } + public static Dictionary objects => instance.m_NetworkScene.localObjects; public static bool dontListen { get; set; } @@ -112,21 +71,9 @@ internal static QSBNetworkServer instance public static bool active { get; private set; } - public static bool localClientActive - { - get - { - return instance.m_LocalClientActive; - } - } + public static bool localClientActive => instance.m_LocalClientActive; - public static int numChannels - { - get - { - return instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; - } - } + public static int numChannels => instance.m_SimpleServerSimple.hostTopology.DefaultConfig.ChannelCount; public static float maxDelay { @@ -140,28 +87,13 @@ public static float maxDelay } } - public static Type networkConnectionClass - { - get - { - return instance.m_SimpleServerSimple.networkConnectionClass; - } - } + public static Type networkConnectionClass => instance.m_SimpleServerSimple.networkConnectionClass; - public static void SetNetworkConnectionClass() where T : QSBNetworkConnection - { - instance.m_SimpleServerSimple.SetNetworkConnectionClass(); - } + public static void SetNetworkConnectionClass() where T : QSBNetworkConnection => instance.m_SimpleServerSimple.SetNetworkConnectionClass(); - public static bool Configure(ConnectionConfig config, int maxConnections) - { - return instance.m_SimpleServerSimple.Configure(config, maxConnections); - } + public static bool Configure(ConnectionConfig config, int maxConnections) => instance.m_SimpleServerSimple.Configure(config, maxConnections); - public static bool Configure(HostTopology topology) - { - return instance.m_SimpleServerSimple.Configure(topology); - } + public static bool Configure(HostTopology topology) => instance.m_SimpleServerSimple.Configure(topology); public static void Reset() { @@ -200,10 +132,7 @@ internal void RegisterMessageHandlers() maxPacketSize = hostTopology.DefaultConfig.PacketSize; } - public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) - { - instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); - } + public static void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) => instance.InternalListenRelay(relayIp, relayPort, netGuid, sourceId, nodeId); private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { @@ -212,15 +141,9 @@ private void InternalListenRelay(string relayIp, int relayPort, NetworkID netGui RegisterMessageHandlers(); } - public static bool Listen(int serverPort) - { - return instance.InternalListen(null, serverPort); - } + public static bool Listen(int serverPort) => instance.InternalListen(null, serverPort); - public static bool Listen(string ipAddress, int serverPort) - { - return instance.InternalListen(ipAddress, serverPort); - } + public static bool Listen(string ipAddress, int serverPort) => instance.InternalListen(ipAddress, serverPort); internal bool InternalListen(string ipAddress, int serverPort) { @@ -585,10 +508,7 @@ public static bool SendByChannelToReady(GameObject contextObj, short msgType, QS return result; } - public static void DisconnectAll() - { - instance.InternalDisconnectAll(); - } + public static void DisconnectAll() => instance.InternalDisconnectAll(); internal void InternalDisconnectAll() { @@ -690,10 +610,7 @@ private void OnDisconnected(QSBNetworkConnection conn) conn.Dispose(); } - private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) - { - conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); - } + private void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => conn.TransportReceive(m_SimpleServerSimple.messageBuffer, receivedSize, channelId); private void GenerateConnectError(int error) { @@ -734,8 +651,10 @@ private void GenerateError(QSBNetworkConnection conn, int error) { if (handlers.ContainsKey(34)) { - var errorMessage = new QSBErrorMessage(); - errorMessage.errorCode = error; + var errorMessage = new QSBErrorMessage + { + errorCode = error + }; var writer = new QSBNetworkWriter(); errorMessage.Serialize(writer); var reader = new QSBNetworkReader(writer); @@ -743,25 +662,13 @@ private void GenerateError(QSBNetworkConnection conn, int error) } } - public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) - { - instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); - } + public static void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => instance.m_SimpleServerSimple.RegisterHandler(msgType, handler); - public static void UnregisterHandler(short msgType) - { - instance.m_SimpleServerSimple.UnregisterHandler(msgType); - } + public static void UnregisterHandler(short msgType) => instance.m_SimpleServerSimple.UnregisterHandler(msgType); - public static void ClearHandlers() - { - instance.m_SimpleServerSimple.ClearHandlers(); - } + public static void ClearHandlers() => instance.m_SimpleServerSimple.ClearHandlers(); - public static void ClearSpawners() - { - QSBNetworkScene.ClearSpawners(); - } + public static void ClearSpawners() => QSBNetworkScene.ClearSpawners(); public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { @@ -774,11 +681,7 @@ public static void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int var networkConnection = connections[i]; if (networkConnection != null) { - int num; - int num2; - int num3; - int num4; - networkConnection.GetStatsOut(out num, out num2, out num3, out num4); + networkConnection.GetStatsOut(out var num, out var num2, out var num3, out var num4); numMsgs += num; numBufferedMsgs += num2; numBytes += num3; @@ -796,9 +699,7 @@ public static void GetStatsIn(out int numMsgs, out int numBytes) var networkConnection = connections[i]; if (networkConnection != null) { - int num; - int num2; - networkConnection.GetStatsIn(out num, out num2); + networkConnection.GetStatsIn(out var num, out var num2); numMsgs += num; numBytes += num2; } @@ -846,16 +747,12 @@ public static void SendToClient(int connectionId, short msgType, QSBMessageBase } } - public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) - { - return instance.InternalAddPlayerForConnection(conn, player, playerControllerId); - } + public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) => instance.InternalAddPlayerForConnection(conn, player, playerControllerId); internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { - QSBNetworkIdentity networkIdentity; bool result; - if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) { if (LogFilter.logError) { @@ -872,9 +769,8 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje } else { - QSBPlayerController playerController = null; GameObject x = null; - if (conn.GetPlayerController(playerControllerId, out playerController)) + if (conn.GetPlayerController(playerControllerId, out var playerController)) { x = playerController.Gameobject; } @@ -963,9 +859,8 @@ private static bool CheckPlayerControllerIdForConnection(QSBNetworkConnection co private bool SetupLocalPlayerForConnection(QSBNetworkConnection conn, QSBNetworkIdentity uv, QSBPlayerController newPlayerController) { Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + uv.NetId); - var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; bool result; - if (ulocalConnectionToClient != null) + if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) { Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); if (uv.NetId.IsEmpty()) @@ -1002,9 +897,8 @@ private static void FinishPlayerForConnection(QSBNetworkConnection conn, QSBNetw internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, GameObject playerGameObject, short playerControllerId) { - QSBNetworkIdentity networkIdentity; bool result; - if (!GetNetworkIdentity(playerGameObject, out networkIdentity)) + if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) { if (LogFilter.logError) { @@ -1019,8 +913,7 @@ internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, Game else { Debug.Log("NetworkServer ReplacePlayer"); - QSBPlayerController playerController; - if (conn.GetPlayerController(playerControllerId, out playerController)) + if (conn.GetPlayerController(playerControllerId, out var playerController)) { playerController.UnetView.SetNotLocalPlayer(); playerController.UnetView.ClearClientOwner(); @@ -1072,10 +965,7 @@ private static bool GetNetworkIdentity(GameObject go, out QSBNetworkIdentity vie return result; } - public static void SetClientReady(QSBNetworkConnection conn) - { - instance.SetClientReadyInternal(conn); - } + public static void SetClientReady(QSBNetworkConnection conn) => instance.SetClientReadyInternal(conn); internal void SetClientReadyInternal(QSBNetworkConnection conn) { @@ -1100,15 +990,14 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) } } conn.isReady = true; - var ulocalConnectionToClient = conn as QSBULocalConnectionToClient; - if (ulocalConnectionToClient != null) + if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) { Debug.Log("NetworkServer Ready handling ULocalConnectionToClient"); foreach (var networkIdentity in objects.Values) { if (networkIdentity != null && networkIdentity.gameObject != null) { - bool flag = networkIdentity.OnCheckObserver(conn); + var flag = networkIdentity.OnCheckObserver(conn); if (flag) { networkIdentity.AddObserver(conn); @@ -1133,8 +1022,10 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) conn.connectionId })); } - var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); - objectSpawnFinishedMessage.State = 0U; + var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage + { + State = 0U + }; conn.Send(12, objectSpawnFinishedMessage); foreach (var networkIdentity2 in objects.Values) { @@ -1157,7 +1048,7 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) networkIdentity2.NetId })); } - bool flag2 = networkIdentity2.OnCheckObserver(conn); + var flag2 = networkIdentity2.OnCheckObserver(conn); if (flag2) { networkIdentity2.AddObserver(conn); @@ -1198,10 +1089,7 @@ public static void SetAllClientsNotReady() } } - public static void SetClientNotReady(QSBNetworkConnection conn) - { - instance.InternalSetClientNotReady(conn); - } + public static void SetClientNotReady(QSBNetworkConnection conn) => instance.InternalSetClientNotReady(conn); internal void InternalSetClientNotReady(QSBNetworkConnection conn) { @@ -1230,8 +1118,7 @@ private static void OnClientReadyMessage(QSBNetworkMessage netMsg) private static void OnRemovePlayerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_RemovePlayerMessage); - QSBPlayerController playerController = null; - netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out playerController); + netMsg.Connection.GetPlayerController(s_RemovePlayerMessage.PlayerControllerId, out var playerController); if (playerController != null) { netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); @@ -1302,12 +1189,11 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) internal void SpawnObject(GameObject obj) { - QSBNetworkIdentity networkIdentity; if (!active) { ModConsole.OwmlConsole.WriteLine("Error - SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); } - else if (!GetNetworkIdentity(obj, out networkIdentity)) + else if (!GetNetworkIdentity(obj, out var networkIdentity)) { Debug.LogError(string.Concat(new object[] { @@ -1331,11 +1217,13 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) { if (uv.SceneId.IsEmpty()) { - var objectSpawnMessage = new QSBObjectSpawnMessage(); - objectSpawnMessage.NetId = uv.NetId; - objectSpawnMessage.assetId = uv.AssetId; - objectSpawnMessage.Position = uv.transform.position; - objectSpawnMessage.Rotation = uv.transform.rotation; + var objectSpawnMessage = new QSBObjectSpawnMessage + { + NetId = uv.NetId, + assetId = uv.AssetId, + Position = uv.transform.position, + Rotation = uv.transform.rotation + }; var networkWriter = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter); if (networkWriter.Position > 0) @@ -1353,10 +1241,12 @@ internal void SendSpawnMessage(QSBNetworkIdentity uv, QSBNetworkConnection conn) } else { - var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); - objectSpawnSceneMessage.NetId = uv.NetId; - objectSpawnSceneMessage.SceneId = uv.SceneId; - objectSpawnSceneMessage.Position = uv.transform.position; + var objectSpawnSceneMessage = new QSBObjectSpawnSceneMessage + { + NetId = uv.NetId, + SceneId = uv.SceneId, + Position = uv.transform.position + }; var networkWriter2 = new QSBNetworkWriter(); uv.UNetSerializeAllVars(networkWriter2); if (networkWriter2.Position > 0) @@ -1416,30 +1306,25 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) private static void UnSpawnObject(GameObject obj) { - QSBNetworkIdentity uv; if (obj == null) { Debug.Log("NetworkServer UnspawnObject is null"); } - else if (GetNetworkIdentity(obj, out uv)) + else if (GetNetworkIdentity(obj, out var uv)) { UnSpawnObject(uv); } } - private static void UnSpawnObject(QSBNetworkIdentity uv) - { - DestroyObject(uv, false); - } + private static void UnSpawnObject(QSBNetworkIdentity uv) => DestroyObject(uv, false); private static void DestroyObject(GameObject obj) { - QSBNetworkIdentity uv; if (obj == null) { Debug.Log("NetworkServer DestroyObject is null"); } - else if (GetNetworkIdentity(obj, out uv)) + else if (GetNetworkIdentity(obj, out var uv)) { DestroyObject(uv, true); } @@ -1459,8 +1344,10 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec { uv.ClientAuthorityOwner.RemoveOwnedObject(uv); } - var objectDestroyMessage = new QSBObjectDestroyMessage(); - objectDestroyMessage.NetId = uv.NetId; + var objectDestroyMessage = new QSBObjectDestroyMessage + { + NetId = uv.NetId + }; SendToObservers(uv.gameObject, 1, objectDestroyMessage); uv.ClearObservers(); if (QSBNetworkClient.active && instance.m_LocalClientActive) @@ -1475,10 +1362,7 @@ private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObjec uv.MarkForReset(); } - public static void ClearLocalObjects() - { - objects.Clear(); - } + public static void ClearLocalObjects() => objects.Clear(); public static void Spawn(GameObject obj) { @@ -1488,10 +1372,7 @@ public static void Spawn(GameObject obj) } } - private static bool CheckForPrefab(GameObject obj) - { - return false; - } + private static bool CheckForPrefab(GameObject obj) => false; private static bool VerifyCanSpawn(GameObject obj) { @@ -1560,8 +1441,7 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) { if (VerifyCanSpawn(obj)) { - QSBNetworkIdentity networkIdentity; - if (GetNetworkIdentity(obj, out networkIdentity)) + if (GetNetworkIdentity(obj, out var networkIdentity)) { networkIdentity.SetDynamicAssetId(assetId); } @@ -1569,15 +1449,9 @@ public static void Spawn(GameObject obj, NetworkHash128 assetId) } } - public static void Destroy(GameObject obj) - { - DestroyObject(obj); - } + public static void Destroy(GameObject obj) => DestroyObject(obj); - public static void UnSpawn(GameObject obj) - { - UnSpawnObject(obj); - } + public static void UnSpawn(GameObject obj) => UnSpawnObject(obj); internal bool InvokeBytes(QSBULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { @@ -1627,10 +1501,7 @@ internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgT public static GameObject FindLocalObject(NetworkInstanceId netId) => instance.m_NetworkScene.FindLocalObject(netId); - private static bool ValidateSceneObject(QSBNetworkIdentity netId) - { - return netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); - } + private static bool ValidateSceneObject(QSBNetworkIdentity netId) => netId.gameObject.hideFlags != HideFlags.NotEditable && netId.gameObject.hideFlags != HideFlags.HideAndDontSave && !netId.SceneId.IsEmpty(); public static bool SpawnObjects() { @@ -1681,7 +1552,7 @@ private static void SendCrc(QSBNetworkConnection targetConnection) { var crcmessage = new QSBCRCMessage(); var list = new List(); - foreach (string text in QSBNetworkCRC.singleton.scripts.Keys) + foreach (var text in QSBNetworkCRC.singleton.scripts.Keys) { list.Add(new QSBCRCMessageEntry { @@ -1730,35 +1601,17 @@ public ServerSimpleWrapper(QSBNetworkServer server) m_Server = server; } - public override void OnConnectError(int connectionId, byte error) - { - m_Server.GenerateConnectError((int)error); - } + public override void OnConnectError(int connectionId, byte error) => m_Server.GenerateConnectError(error); - public override void OnDataError(QSBNetworkConnection conn, byte error) - { - m_Server.GenerateDataError(conn, (int)error); - } + public override void OnDataError(QSBNetworkConnection conn, byte error) => m_Server.GenerateDataError(conn, error); - public override void OnDisconnectError(QSBNetworkConnection conn, byte error) - { - m_Server.GenerateDisconnectError(conn, (int)error); - } + public override void OnDisconnectError(QSBNetworkConnection conn, byte error) => m_Server.GenerateDisconnectError(conn, error); - public override void OnConnected(QSBNetworkConnection conn) - { - m_Server.OnConnected(conn); - } + public override void OnConnected(QSBNetworkConnection conn) => m_Server.OnConnected(conn); - public override void OnDisconnected(QSBNetworkConnection conn) - { - m_Server.OnDisconnected(conn); - } + public override void OnDisconnected(QSBNetworkConnection conn) => m_Server.OnDisconnected(conn); - public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) - { - m_Server.OnData(conn, receivedSize, channelId); - } + public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => m_Server.OnData(conn, receivedSize, channelId); private QSBNetworkServer m_Server; } diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index 5d9a15455..451aceea8 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -12,112 +13,43 @@ public class QSBNetworkServerSimple { public QSBNetworkServerSimple() { - this.m_ConnectionsReadOnly = new ReadOnlyCollection(this.m_Connections); + connections = new ReadOnlyCollection(m_Connections); } - public int listenPort - { - get - { - return this.m_ListenPort; - } - set - { - this.m_ListenPort = value; - } - } + public int listenPort { get; set; } - public int serverHostId - { - get - { - return this.m_ServerHostId; - } - set - { - this.m_ServerHostId = value; - } - } + public int serverHostId { get; set; } = -1; - public HostTopology hostTopology - { - get - { - return this.m_HostTopology; - } - } + public HostTopology hostTopology { get; private set; } - public bool useWebSockets - { - get - { - return this.m_UseWebSockets; - } - set - { - this.m_UseWebSockets = value; - } - } + public bool useWebSockets { get; set; } - public ReadOnlyCollection connections - { - get - { - return this.m_ConnectionsReadOnly; - } - } + public ReadOnlyCollection connections { get; } - public Dictionary handlers - { - get - { - return this.m_MessageHandlers.GetHandlers(); - } - } + public Dictionary handlers => m_MessageHandlers.GetHandlers(); - public byte[] messageBuffer - { - get - { - return this.m_MsgBuffer; - } - } + public byte[] messageBuffer { get; private set; } = null; - public NetworkReader messageReader - { - get - { - return this.m_MsgReader; - } - } + public NetworkReader messageReader { get; private set; } = null; - public Type networkConnectionClass - { - get - { - return this.m_NetworkConnectionClass; - } - } + public Type networkConnectionClass { get; private set; } = typeof(QSBNetworkConnection); - public void SetNetworkConnectionClass() where T : QSBNetworkConnection - { - this.m_NetworkConnectionClass = typeof(T); - } + public void SetNetworkConnectionClass() where T : QSBNetworkConnection => networkConnectionClass = typeof(T); public virtual void Initialize() { - if (!this.m_Initialized) + if (!m_Initialized) { - this.m_Initialized = true; + m_Initialized = true; NetworkTransport.Init(); - this.m_MsgBuffer = new byte[65535]; - this.m_MsgReader = new NetworkReader(this.m_MsgBuffer); - if (this.m_HostTopology == null) + messageBuffer = new byte[65535]; + messageReader = new NetworkReader(messageBuffer); + if (hostTopology == null) { - ConnectionConfig connectionConfig = new ConnectionConfig(); + var connectionConfig = new ConnectionConfig(); connectionConfig.AddChannel(QosType.ReliableSequenced); connectionConfig.AddChannel(QosType.Unreliable); - this.m_HostTopology = new HostTopology(connectionConfig, 8); + hostTopology = new HostTopology(connectionConfig, 8); } if (LogFilter.logDebug) { @@ -128,30 +60,30 @@ public virtual void Initialize() public bool Configure(ConnectionConfig config, int maxConnections) { - HostTopology topology = new HostTopology(config, maxConnections); - return this.Configure(topology); + var topology = new HostTopology(config, maxConnections); + return Configure(topology); } public bool Configure(HostTopology topology) { - this.m_HostTopology = topology; + hostTopology = topology; return true; } public bool Listen(string ipAddress, int serverListenPort) { - this.Initialize(); - this.m_ListenPort = serverListenPort; - if (this.m_UseWebSockets) + Initialize(); + listenPort = serverListenPort; + if (useWebSockets) { - this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort, ipAddress); + serverHostId = NetworkTransport.AddWebsocketHost(hostTopology, serverListenPort, ipAddress); } else { - this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort, ipAddress); + serverHostId = NetworkTransport.AddHost(hostTopology, serverListenPort, ipAddress); } bool result; - if (this.m_ServerHostId == -1) + if (serverHostId == -1) { result = false; } @@ -164,7 +96,7 @@ public bool Listen(string ipAddress, int serverListenPort) "NetworkServerSimple listen: ", ipAddress, ":", - this.m_ListenPort + listenPort })); } result = true; @@ -172,26 +104,23 @@ public bool Listen(string ipAddress, int serverListenPort) return result; } - public bool Listen(int serverListenPort) - { - return this.Listen(serverListenPort, this.m_HostTopology); - } + public bool Listen(int serverListenPort) => Listen(serverListenPort, hostTopology); public bool Listen(int serverListenPort, HostTopology topology) { - this.m_HostTopology = topology; - this.Initialize(); - this.m_ListenPort = serverListenPort; - if (this.m_UseWebSockets) + hostTopology = topology; + Initialize(); + listenPort = serverListenPort; + if (useWebSockets) { - this.m_ServerHostId = NetworkTransport.AddWebsocketHost(this.m_HostTopology, serverListenPort); + serverHostId = NetworkTransport.AddWebsocketHost(hostTopology, serverListenPort); } else { - this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, serverListenPort); + serverHostId = NetworkTransport.AddHost(hostTopology, serverListenPort); } bool result; - if (this.m_ServerHostId == -1) + if (serverHostId == -1) { result = false; } @@ -199,7 +128,7 @@ public bool Listen(int serverListenPort, HostTopology topology) { if (LogFilter.logDebug) { - Debug.Log("NetworkServerSimple listen " + this.m_ListenPort); + Debug.Log("NetworkServerSimple listen " + listenPort); } result = true; } @@ -208,19 +137,18 @@ public bool Listen(int serverListenPort, HostTopology topology) public void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, SourceID sourceId, NodeID nodeId) { - this.Initialize(); - this.m_ServerHostId = NetworkTransport.AddHost(this.m_HostTopology, this.listenPort); + Initialize(); + serverHostId = NetworkTransport.AddHost(hostTopology, listenPort); if (LogFilter.logDebug) { - Debug.Log("Server Host Slot Id: " + this.m_ServerHostId); + Debug.Log("Server Host Slot Id: " + serverHostId); } - this.Update(); - byte b; - NetworkTransport.ConnectAsNetworkHost(this.m_ServerHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out b); - this.m_RelaySlotId = 0; + Update(); + NetworkTransport.ConnectAsNetworkHost(serverHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out var b); + m_RelaySlotId = 0; if (LogFilter.logDebug) { - Debug.Log("Relay Slot Id: " + this.m_RelaySlotId); + Debug.Log("Relay Slot Id: " + m_RelaySlotId); } } @@ -230,35 +158,23 @@ public void Stop() { Debug.Log("NetworkServerSimple stop "); } - NetworkTransport.RemoveHost(this.m_ServerHostId); - this.m_ServerHostId = -1; + NetworkTransport.RemoveHost(serverHostId); + serverHostId = -1; } - internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) - { - m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - } + internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandlerSafe(msgType, handler); - public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) - { - this.m_MessageHandlers.RegisterHandler(msgType, handler); - } + public void RegisterHandler(short msgType, QSBNetworkMessageDelegate handler) => m_MessageHandlers.RegisterHandler(msgType, handler); - public void UnregisterHandler(short msgType) - { - this.m_MessageHandlers.UnregisterHandler(msgType); - } + public void UnregisterHandler(short msgType) => m_MessageHandlers.UnregisterHandler(msgType); - public void ClearHandlers() - { - this.m_MessageHandlers.ClearMessageHandlers(); - } + public void ClearHandlers() => m_MessageHandlers.ClearMessageHandlers(); public void UpdateConnections() { - for (int i = 0; i < this.m_Connections.Count; i++) + for (var i = 0; i < m_Connections.Count; i++) { - QSBNetworkConnection networkConnection = this.m_Connections[i]; + var networkConnection = m_Connections[i]; if (networkConnection != null) { networkConnection.FlushChannels(); @@ -268,13 +184,12 @@ public void UpdateConnections() public void Update() { - if (this.m_ServerHostId != -1) + if (serverHostId != -1) { NetworkEventType networkEventType; - if (this.m_RelaySlotId != -1) + if (m_RelaySlotId != -1) { - byte b; - networkEventType = NetworkTransport.ReceiveRelayEventFromHost(this.m_ServerHostId, out b); + networkEventType = NetworkTransport.ReceiveRelayEventFromHost(serverHostId, out var b); if (networkEventType != NetworkEventType.Nothing) { if (LogFilter.logDebug) @@ -299,17 +214,13 @@ public void Update() } do { - byte b; - int connectionId; - int channelId; - int receivedSize; - networkEventType = NetworkTransport.ReceiveFromHost(this.m_ServerHostId, out connectionId, out channelId, this.m_MsgBuffer, this.m_MsgBuffer.Length, out receivedSize, out b); + networkEventType = NetworkTransport.ReceiveFromHost(serverHostId, out var connectionId, out var channelId, messageBuffer, messageBuffer.Length, out var receivedSize, out var b); if (networkEventType != NetworkEventType.Nothing) { Debug.Log(string.Concat(new object[] { "Server event: host=", - this.m_ServerHostId, + serverHostId, " event=", networkEventType, " error=", @@ -319,15 +230,15 @@ public void Update() switch (networkEventType) { case NetworkEventType.DataEvent: - this.HandleData(connectionId, channelId, receivedSize, b); + HandleData(connectionId, channelId, receivedSize, b); break; case NetworkEventType.ConnectEvent: - this.HandleConnect(connectionId, b); + HandleConnect(connectionId, b); break; case NetworkEventType.DisconnectEvent: - this.HandleDisconnect(connectionId, b); + HandleDisconnect(connectionId, b); break; case NetworkEventType.Nothing: @@ -342,39 +253,39 @@ public void Update() } } while (networkEventType != NetworkEventType.Nothing); - this.UpdateConnections(); + UpdateConnections(); } } public QSBNetworkConnection FindConnection(int connectionId) { QSBNetworkConnection result; - if (connectionId < 0 || connectionId >= this.m_Connections.Count) + if (connectionId < 0 || connectionId >= m_Connections.Count) { result = null; } else { - result = this.m_Connections[connectionId]; + result = m_Connections[connectionId]; } return result; } public bool SetConnectionAtIndex(QSBNetworkConnection conn) { - while (this.m_Connections.Count <= conn.connectionId) + while (m_Connections.Count <= conn.connectionId) { - this.m_Connections.Add(null); + m_Connections.Add(null); } bool result; - if (this.m_Connections[conn.connectionId] != null) + if (m_Connections[conn.connectionId] != null) { result = false; } else { - this.m_Connections[conn.connectionId] = conn; - conn.SetHandlers(this.m_MessageHandlers); + m_Connections[conn.connectionId] = conn; + conn.SetHandlers(m_MessageHandlers); result = true; } return result; @@ -383,13 +294,13 @@ public bool SetConnectionAtIndex(QSBNetworkConnection conn) public bool RemoveConnectionAtIndex(int connectionId) { bool result; - if (connectionId < 0 || connectionId >= this.m_Connections.Count) + if (connectionId < 0 || connectionId >= m_Connections.Count) { result = false; } else { - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; result = true; } return result; @@ -403,26 +314,21 @@ private void HandleConnect(int connectionId, byte error) } if (error != 0) { - this.OnConnectError(connectionId, error); + OnConnectError(connectionId, error); } else { - string networkAddress; - int num; - NetworkID networkID; - NodeID nodeID; - byte lastError; - NetworkTransport.GetConnectionInfo(this.m_ServerHostId, connectionId, out networkAddress, out num, out networkID, out nodeID, out lastError); - QSBNetworkConnection networkConnection = (QSBNetworkConnection)Activator.CreateInstance(this.m_NetworkConnectionClass); - networkConnection.SetHandlers(this.m_MessageHandlers); - networkConnection.Initialize(networkAddress, this.m_ServerHostId, connectionId, this.m_HostTopology); + NetworkTransport.GetConnectionInfo(serverHostId, connectionId, out var networkAddress, out var num, out var networkID, out var nodeID, out var lastError); + var networkConnection = (QSBNetworkConnection)Activator.CreateInstance(networkConnectionClass); + networkConnection.SetHandlers(m_MessageHandlers); + networkConnection.Initialize(networkAddress, serverHostId, connectionId, hostTopology); networkConnection.LastError = (NetworkError)lastError; - while (this.m_Connections.Count <= connectionId) + while (m_Connections.Count <= connectionId) { - this.m_Connections.Add(null); + m_Connections.Add(null); } - this.m_Connections[connectionId] = networkConnection; - this.OnConnected(networkConnection); + m_Connections[connectionId] = networkConnection; + OnConnected(networkConnection); } } @@ -432,7 +338,7 @@ private void HandleDisconnect(int connectionId, byte error) { Debug.Log("NetworkServerSimple disconnect client:" + connectionId); } - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.LastError = (NetworkError)error; @@ -440,7 +346,7 @@ private void HandleDisconnect(int connectionId, byte error) { if (error != 6) { - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; if (LogFilter.logError) { Debug.LogError(string.Concat(new object[] @@ -451,23 +357,23 @@ private void HandleDisconnect(int connectionId, byte error) (NetworkError)error })); } - this.OnDisconnectError(networkConnection, error); + OnDisconnectError(networkConnection, error); return; } } networkConnection.Disconnect(); - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; if (LogFilter.logDebug) { Debug.Log("Server lost client:" + connectionId); } - this.OnDisconnected(networkConnection); + OnDisconnected(networkConnection); } } private void HandleData(int connectionId, int channelId, int receivedSize, byte error) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection == null) { if (LogFilter.logError) @@ -480,19 +386,19 @@ private void HandleData(int connectionId, int channelId, int receivedSize, byte networkConnection.LastError = (NetworkError)error; if (error != 0) { - this.OnDataError(networkConnection, error); + OnDataError(networkConnection, error); } else { - this.m_MsgReader.SeekZero(); - this.OnData(networkConnection, receivedSize, channelId); + messageReader.SeekZero(); + OnData(networkConnection, receivedSize, channelId); } } } public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channelId) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.SendBytes(bytes, numBytes, channelId); @@ -501,7 +407,7 @@ public void SendBytesTo(int connectionId, byte[] bytes, int numBytes, int channe public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelId) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.SendWriter(writer, channelId); @@ -510,19 +416,19 @@ public void SendWriterTo(int connectionId, QSBNetworkWriter writer, int channelI public void Disconnect(int connectionId) { - QSBNetworkConnection networkConnection = this.FindConnection(connectionId); + var networkConnection = FindConnection(connectionId); if (networkConnection != null) { networkConnection.Disconnect(); - this.m_Connections[connectionId] = null; + m_Connections[connectionId] = null; } } public void DisconnectAllConnections() { - for (int i = 0; i < this.m_Connections.Count; i++) + for (var i = 0; i < m_Connections.Count; i++) { - QSBNetworkConnection networkConnection = this.m_Connections[i]; + var networkConnection = m_Connections[i]; if (networkConnection != null) { networkConnection.Disconnect(); @@ -531,58 +437,21 @@ public void DisconnectAllConnections() } } - public virtual void OnConnectError(int connectionId, byte error) - { - Debug.LogError("OnConnectError error:" + error); - } + public virtual void OnConnectError(int connectionId, byte error) => Debug.LogError("OnConnectError error:" + error); - public virtual void OnDataError(QSBNetworkConnection conn, byte error) - { - Debug.LogError("OnDataError error:" + error); - } + public virtual void OnDataError(QSBNetworkConnection conn, byte error) => Debug.LogError("OnDataError error:" + error); - public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) - { - Debug.LogError("OnDisconnectError error:" + error); - } + public virtual void OnDisconnectError(QSBNetworkConnection conn, byte error) => Debug.LogError("OnDisconnectError error:" + error); - public virtual void OnConnected(QSBNetworkConnection conn) - { - conn.InvokeHandlerNoData(32); - } + public virtual void OnConnected(QSBNetworkConnection conn) => conn.InvokeHandlerNoData(32); - public virtual void OnDisconnected(QSBNetworkConnection conn) - { - conn.InvokeHandlerNoData(33); - } + public virtual void OnDisconnected(QSBNetworkConnection conn) => conn.InvokeHandlerNoData(33); - public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) - { - conn.TransportReceive(this.m_MsgBuffer, receivedSize, channelId); - } + public virtual void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => conn.TransportReceive(messageBuffer, receivedSize, channelId); private bool m_Initialized = false; - - private int m_ListenPort; - - private int m_ServerHostId = -1; - private int m_RelaySlotId = -1; - - private bool m_UseWebSockets; - - private byte[] m_MsgBuffer = null; - - private NetworkReader m_MsgReader = null; - - private Type m_NetworkConnectionClass = typeof(QSBNetworkConnection); - - private HostTopology m_HostTopology; - private List m_Connections = new List(); - - private ReadOnlyCollection m_ConnectionsReadOnly; - private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkWriter.cs b/QuantumUNET/QSBNetworkWriter.cs deleted file mode 100644 index 86a951781..000000000 --- a/QuantumUNET/QSBNetworkWriter.cs +++ /dev/null @@ -1,537 +0,0 @@ -using QuantumUNET.Components; -using QuantumUNET.Messages; -using System; -using System.Text; -using UnityEngine; -using UnityEngine.Networking; - -namespace QuantumUNET -{ - public class QSBNetworkWriter - { - public QSBNetworkWriter() - { - this.m_Buffer = new QSBNetBuffer(); - if (s_Encoding == null) - { - s_Encoding = new UTF8Encoding(); - s_StringWriteBuffer = new byte[32768]; - } - } - - public QSBNetworkWriter(byte[] buffer) - { - this.m_Buffer = new QSBNetBuffer(buffer); - if (s_Encoding == null) - { - s_Encoding = new UTF8Encoding(); - s_StringWriteBuffer = new byte[32768]; - } - } - - public short Position - { - get - { - return (short)this.m_Buffer.Position; - } - } - - public byte[] ToArray() - { - byte[] array = new byte[this.m_Buffer.AsArraySegment().Count]; - Array.Copy(this.m_Buffer.AsArraySegment().Array, array, this.m_Buffer.AsArraySegment().Count); - return array; - } - - public byte[] AsArray() - { - return this.AsArraySegment().Array; - } - - internal ArraySegment AsArraySegment() - { - return this.m_Buffer.AsArraySegment(); - } - - public void WritePackedUInt32(uint value) - { - if (value <= 240U) - { - this.Write((byte)value); - } - else if (value <= 2287U) - { - this.Write((byte)((value - 240U) / 256U + 241U)); - this.Write((byte)((value - 240U) % 256U)); - } - else if (value <= 67823U) - { - this.Write(249); - this.Write((byte)((value - 2288U) / 256U)); - this.Write((byte)((value - 2288U) % 256U)); - } - else if (value <= 16777215U) - { - this.Write(250); - this.Write((byte)(value & 255U)); - this.Write((byte)(value >> 8 & 255U)); - this.Write((byte)(value >> 16 & 255U)); - } - else - { - this.Write(251); - this.Write((byte)(value & 255U)); - this.Write((byte)(value >> 8 & 255U)); - this.Write((byte)(value >> 16 & 255U)); - this.Write((byte)(value >> 24 & 255U)); - } - } - - public void WritePackedUInt64(ulong value) - { - if (value <= 240UL) - { - this.Write((byte)value); - } - else if (value <= 2287UL) - { - this.Write((byte)((value - 240UL) / 256UL + 241UL)); - this.Write((byte)((value - 240UL) % 256UL)); - } - else if (value <= 67823UL) - { - this.Write(249); - this.Write((byte)((value - 2288UL) / 256UL)); - this.Write((byte)((value - 2288UL) % 256UL)); - } - else if (value <= 16777215UL) - { - this.Write(250); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - } - else if (value <= uint.MaxValue) - { - this.Write(251); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - } - else if (value <= 1099511627775UL) - { - this.Write(252); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - } - else if (value <= 281474976710655UL) - { - this.Write(253); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - this.Write((byte)(value >> 40 & 255UL)); - } - else if (value <= 72057594037927935UL) - { - this.Write(254); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - this.Write((byte)(value >> 40 & 255UL)); - this.Write((byte)(value >> 48 & 255UL)); - } - else - { - this.Write(byte.MaxValue); - this.Write((byte)(value & 255UL)); - this.Write((byte)(value >> 8 & 255UL)); - this.Write((byte)(value >> 16 & 255UL)); - this.Write((byte)(value >> 24 & 255UL)); - this.Write((byte)(value >> 32 & 255UL)); - this.Write((byte)(value >> 40 & 255UL)); - this.Write((byte)(value >> 48 & 255UL)); - this.Write((byte)(value >> 56 & 255UL)); - } - } - - public void Write(NetworkInstanceId value) - { - this.WritePackedUInt32(value.Value); - } - - public void Write(NetworkSceneId value) - { - this.WritePackedUInt32(value.Value); - } - - public void Write(char value) - { - this.m_Buffer.WriteByte((byte)value); - } - - public void Write(byte value) - { - this.m_Buffer.WriteByte(value); - } - - public void Write(sbyte value) - { - this.m_Buffer.WriteByte((byte)value); - } - - public void Write(short value) - { - this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); - } - - public void Write(ushort value) - { - this.m_Buffer.WriteByte2((byte)(value & 255), (byte)(value >> 8 & 255)); - } - - public void Write(int value) - { - this.m_Buffer.WriteByte4((byte)(value & 255), (byte)(value >> 8 & 255), (byte)(value >> 16 & 255), (byte)(value >> 24 & 255)); - } - - public void Write(uint value) - { - this.m_Buffer.WriteByte4((byte)(value & 255U), (byte)(value >> 8 & 255U), (byte)(value >> 16 & 255U), (byte)(value >> 24 & 255U)); - } - - public void Write(long value) - { - this.m_Buffer.WriteByte8((byte)(value & 255L), (byte)(value >> 8 & 255L), (byte)(value >> 16 & 255L), (byte)(value >> 24 & 255L), (byte)(value >> 32 & 255L), (byte)(value >> 40 & 255L), (byte)(value >> 48 & 255L), (byte)(value >> 56 & 255L)); - } - - public void Write(ulong value) - { - this.m_Buffer.WriteByte8((byte)(value & 255UL), (byte)(value >> 8 & 255UL), (byte)(value >> 16 & 255UL), (byte)(value >> 24 & 255UL), (byte)(value >> 32 & 255UL), (byte)(value >> 40 & 255UL), (byte)(value >> 48 & 255UL), (byte)(value >> 56 & 255UL)); - } - - public void Write(float value) - { - m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); - } - - public void Write(double value) - { - m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); - } - - public void Write(decimal value) - { - int[] bits = decimal.GetBits(value); - this.Write(bits[0]); - this.Write(bits[1]); - this.Write(bits[2]); - this.Write(bits[3]); - } - - public void Write(string value) - { - if (value == null) - { - this.m_Buffer.WriteByte2(0, 0); - } - else - { - int byteCount = s_Encoding.GetByteCount(value); - if (byteCount >= 32768) - { - throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length); - } - this.Write((ushort)byteCount); - int bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); - this.m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); - } - } - - public void Write(bool value) - { - if (value) - { - this.m_Buffer.WriteByte(1); - } - else - { - this.m_Buffer.WriteByte(0); - } - } - - public void Write(byte[] buffer, int count) - { - if (count > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - this.m_Buffer.WriteBytes(buffer, (ushort)count); - } - } - - public void Write(byte[] buffer, int offset, int count) - { - if (count > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - this.m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); - } - } - - public void WriteBytesAndSize(byte[] buffer, int count) - { - if (buffer == null || count == 0) - { - this.Write(0); - } - else if (count > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - this.Write((ushort)count); - this.m_Buffer.WriteBytes(buffer, (ushort)count); - } - } - - public void WriteBytesFull(byte[] buffer) - { - if (buffer == null) - { - this.Write(0); - } - else if (buffer.Length > 65535) - { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); - } - } - else - { - this.Write((ushort)buffer.Length); - this.m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); - } - } - - public void Write(Vector2 value) - { - this.Write(value.x); - this.Write(value.y); - } - - public void Write(Vector3 value) - { - this.Write(value.x); - this.Write(value.y); - this.Write(value.z); - } - - public void Write(Vector4 value) - { - this.Write(value.x); - this.Write(value.y); - this.Write(value.z); - this.Write(value.w); - } - - public void Write(Color value) - { - this.Write(value.r); - this.Write(value.g); - this.Write(value.b); - this.Write(value.a); - } - - public void Write(Color32 value) - { - this.Write(value.r); - this.Write(value.g); - this.Write(value.b); - this.Write(value.a); - } - - public void Write(Quaternion value) - { - this.Write(value.x); - this.Write(value.y); - this.Write(value.z); - this.Write(value.w); - } - - public void Write(Rect value) - { - this.Write(value.xMin); - this.Write(value.yMin); - this.Write(value.width); - this.Write(value.height); - } - - public void Write(Plane value) - { - this.Write(value.normal); - this.Write(value.distance); - } - - public void Write(Ray value) - { - this.Write(value.direction); - this.Write(value.origin); - } - - public void Write(Matrix4x4 value) - { - this.Write(value.m00); - this.Write(value.m01); - this.Write(value.m02); - this.Write(value.m03); - this.Write(value.m10); - this.Write(value.m11); - this.Write(value.m12); - this.Write(value.m13); - this.Write(value.m20); - this.Write(value.m21); - this.Write(value.m22); - this.Write(value.m23); - this.Write(value.m30); - this.Write(value.m31); - this.Write(value.m32); - this.Write(value.m33); - } - - public void Write(NetworkHash128 value) - { - this.Write(value.i0); - this.Write(value.i1); - this.Write(value.i2); - this.Write(value.i3); - this.Write(value.i4); - this.Write(value.i5); - this.Write(value.i6); - this.Write(value.i7); - this.Write(value.i8); - this.Write(value.i9); - this.Write(value.i10); - this.Write(value.i11); - this.Write(value.i12); - this.Write(value.i13); - this.Write(value.i14); - this.Write(value.i15); - } - - public void Write(NetworkIdentity value) - { - if (value == null) - { - this.WritePackedUInt32(0U); - } - else - { - this.Write(value.netId); - } - } - - public void Write(Transform value) - { - if (value == null || value.gameObject == null) - { - this.WritePackedUInt32(0U); - } - else - { - NetworkIdentity component = value.gameObject.GetComponent(); - if (component != null) - { - this.Write(component.netId); - } - else - { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); - } - this.WritePackedUInt32(0U); - } - } - } - - public void Write(GameObject value) - { - if (value == null) - { - this.WritePackedUInt32(0U); - } - else - { - QSBNetworkIdentity component = value.GetComponent(); - if (component != null) - { - this.Write(component.NetId); - } - else - { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); - } - this.WritePackedUInt32(0U); - } - } - } - - public void Write(QSBMessageBase msg) - { - msg.Serialize(this); - } - - public void SeekZero() - { - this.m_Buffer.SeekZero(); - } - - public void StartMessage(short msgType) - { - this.SeekZero(); - this.m_Buffer.WriteByte2(0, 0); - this.Write(msgType); - } - - public void FinishMessage() - { - this.m_Buffer.FinishMessage(); - } - - private const int k_MaxStringLength = 32768; - - private QSBNetBuffer m_Buffer; - - private static Encoding s_Encoding; - - private static byte[] s_StringWriteBuffer; - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBPeerInfoPlayer.cs b/QuantumUNET/QSBPeerInfoPlayer.cs deleted file mode 100644 index 77394469a..000000000 --- a/QuantumUNET/QSBPeerInfoPlayer.cs +++ /dev/null @@ -1,11 +0,0 @@ -using UnityEngine.Networking; - -namespace QuantumUNET -{ - public struct QSBPeerInfoPlayer - { - public NetworkInstanceId netId; - - public short playerControllerId; - } -} \ No newline at end of file diff --git a/QuantumUNET/QSBPlayerController.cs b/QuantumUNET/QSBPlayerController.cs index 745ad2a35..908fafdeb 100644 --- a/QuantumUNET/QSBPlayerController.cs +++ b/QuantumUNET/QSBPlayerController.cs @@ -9,6 +9,7 @@ public class QSBPlayerController public QSBNetworkIdentity UnetView; public GameObject Gameobject; public const int MaxPlayersPerClient = 32; + public bool IsValid => PlayerControllerId != -1; internal const short kMaxLocalPlayers = 8; @@ -23,8 +24,6 @@ internal QSBPlayerController(GameObject go, short playerControllerId) PlayerControllerId = playerControllerId; } - public bool IsValid => PlayerControllerId != -1; - public override string ToString() { return string.Format("ID={0} NetworkIdentity NetID={1} Player={2}", new object[] diff --git a/QuantumUNET/QSBULocalConnectionToClient.cs b/QuantumUNET/QSBULocalConnectionToClient.cs index 041f781c2..3c83fbe9a 100644 --- a/QuantumUNET/QSBULocalConnectionToClient.cs +++ b/QuantumUNET/QSBULocalConnectionToClient.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; namespace QuantumUNET { diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index 51d2d4db7..90420f79d 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,4 +1,5 @@ using QuantumUNET.Messages; +using QuantumUNET.Transport; using UnityEngine; using UnityEngine.Networking; @@ -12,20 +13,14 @@ public QSBULocalConnectionToServer(QSBNetworkServer localServer) m_LocalServer = localServer; } - public override bool Send(short msgType, QSBMessageBase msg) - { - return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); - } + public override bool Send(short msgType, QSBMessageBase msg) => + m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 0); - public override bool SendUnreliable(short msgType, QSBMessageBase msg) - { - return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); - } + public override bool SendUnreliable(short msgType, QSBMessageBase msg) => + m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, 1); - public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) - { - return m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); - } + public override bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) => + m_LocalServer.InvokeHandlerOnServer(this, msgType, msg, channelId); public override bool SendBytes(byte[] bytes, int numBytes, int channelId) { @@ -45,10 +40,8 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) return result; } - public override bool SendWriter(QSBNetworkWriter writer, int channelId) - { - return m_LocalServer.InvokeBytes(this, writer.AsArray(), (int)((short)writer.AsArray().Length), channelId); - } + public override bool SendWriter(QSBNetworkWriter writer, int channelId) => + m_LocalServer.InvokeBytes(this, writer.AsArray(), (short)writer.AsArray().Length, channelId); public override void GetStatsOut(out int numMsgs, out int numBufferedMsgs, out int numBytes, out int lastBufferedPerSecond) { diff --git a/QuantumUNET/QSBUtility.cs b/QuantumUNET/QSBUtility.cs deleted file mode 100644 index 57c806098..000000000 --- a/QuantumUNET/QSBUtility.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Networking.Types; - -namespace QuantumUNET -{ - public class QSBUtility - { - private static readonly Dictionary _dictTokens = new Dictionary(); - - public static SourceID GetSourceID() - => (SourceID)SystemInfo.deviceUniqueIdentifier.GetHashCode(); - - public static void SetAccessTokenForNetwork(NetworkID netId, NetworkAccessToken accessToken) - { - if (_dictTokens.ContainsKey(netId)) - { - _dictTokens.Remove(netId); - } - _dictTokens.Add(netId, accessToken); - } - - public static NetworkAccessToken GetAccessTokenForNetwork(NetworkID netId) - { - if (!_dictTokens.TryGetValue(netId, out var result)) - { - result = new NetworkAccessToken(); - } - return result; - } - } -} \ No newline at end of file diff --git a/QuantumUNET/QuantumUNET.csproj b/QuantumUNET/QuantumUNET.csproj index 034ab304d..93f400959 100644 --- a/QuantumUNET/QuantumUNET.csproj +++ b/QuantumUNET/QuantumUNET.csproj @@ -100,8 +100,8 @@ - - + + @@ -110,7 +110,7 @@ - + @@ -122,28 +122,25 @@ - + - + - - - + - diff --git a/QuantumUNET/QSBChannelBuffer.cs b/QuantumUNET/Transport/QSBChannelBuffer.cs similarity index 87% rename from QuantumUNET/QSBChannelBuffer.cs rename to QuantumUNET/Transport/QSBChannelBuffer.cs index 5f6d610fc..f20095ee4 100644 --- a/QuantumUNET/QSBChannelBuffer.cs +++ b/QuantumUNET/Transport/QSBChannelBuffer.cs @@ -4,7 +4,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Transport { internal class QSBChannelBuffer : IDisposable { @@ -99,26 +99,17 @@ public bool SetOption(ChannelOption option, int value) } else if (!_currentPacket.IsEmpty() || _pendingPackets.Count > 0) { - if (LogFilter.logError) - { - Debug.LogError("Cannot set MaxPacketSize after sending data."); - } + Debug.LogError("Cannot set MaxPacketSize after sending data."); result = false; } else if (value <= 0) { - if (LogFilter.logError) - { - Debug.LogError("Cannot set MaxPacketSize less than one."); - } + Debug.LogError("Cannot set MaxPacketSize less than one."); result = false; } else if (value > _maxPacketSize) { - if (LogFilter.logError) - { - Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); - } + Debug.LogError("Cannot set MaxPacketSize to greater than the existing maximum (" + _maxPacketSize + ")."); result = false; } else @@ -140,16 +131,13 @@ public bool SetOption(ChannelOption option, int value) } else if (value < 0 || value >= 512) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Invalid MaxPendingBuffers for channel ", _channelId, ". Must be greater than zero and less than ", 512 - })); - } + })); result = false; } else @@ -240,18 +228,12 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) bool result; if (bytesToSend >= 65535) { - if (LogFilter.logError) - { - Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); - } + Debug.LogError("ChannelBuffer:SendBytes cannot send packet larger than " + ushort.MaxValue + " bytes"); result = false; } else if (bytesToSend <= 0) { - if (LogFilter.logError) - { - Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); - } + Debug.LogError("ChannelBuffer:SendBytes cannot send zero bytes"); result = false; } else if (bytesToSend > _maxPacketSize) @@ -262,18 +244,15 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } else { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Failed to send big message of ", bytesToSend, " bytes. The maximum is ", _maxPacketSize, " bytes on channel:", _channelId - })); - } + })); result = false; } } @@ -294,10 +273,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) { if (!_isBroken) { - if (LogFilter.logError) - { - Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); - } + Debug.LogError("ChannelBuffer buffer limit of " + _pendingPackets.Count + " packets reached."); } _isBroken = true; result = false; @@ -311,10 +287,7 @@ internal bool SendBytes(byte[] bytes, int bytesToSend) } else if (!_currentPacket.SendToTransport(_connection, _channelId)) { - if (LogFilter.logError) - { - Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); - } + Debug.Log("ChannelBuffer SendBytes no space on unreliable channel " + _channelId); result = false; } else @@ -380,10 +353,7 @@ public bool SendInternalBuffer() FreePacket(channelPacket); if (_isBroken && _pendingPackets.Count < _maxPendingPacketCount / 2) { - if (LogFilter.logWarn) - { - Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); - } + Debug.LogWarning("ChannelBuffer recovered from overflow but data was lost."); _isBroken = false; } } diff --git a/QuantumUNET/Transport/QSBChannelPacket.cs b/QuantumUNET/Transport/QSBChannelPacket.cs new file mode 100644 index 000000000..253f93fe9 --- /dev/null +++ b/QuantumUNET/Transport/QSBChannelPacket.cs @@ -0,0 +1,56 @@ +using System; +using UnityEngine; +using UnityEngine.Networking; + +namespace QuantumUNET.Transport +{ + internal struct QSBChannelPacket + { + private int m_Position; + private byte[] m_Buffer; + private bool m_IsReliable; + + public QSBChannelPacket(int packetSize, bool isReliable) + { + m_Position = 0; + m_Buffer = new byte[packetSize]; + m_IsReliable = isReliable; + } + + public void Reset() => m_Position = 0; + + public bool IsEmpty() => m_Position == 0; + + public void Write(byte[] bytes, int numBytes) + { + Array.Copy(bytes, 0, m_Buffer, m_Position, numBytes); + m_Position += numBytes; + } + + public bool HasSpace(int numBytes) => m_Position + numBytes <= m_Buffer.Length; + + public bool SendToTransport(QSBNetworkConnection conn, int channelId) + { + var result = true; + if (!conn.TransportSend(m_Buffer, (ushort)m_Position, channelId, out var b)) + { + if (!m_IsReliable || b != 4) + { + Debug.LogError($"Failed to send internal buffer channel:{channelId} bytesToSend:{m_Position}"); + result = false; + } + } + if (b != 0) + { + if (m_IsReliable && b == 4) + { + return false; + } + Debug.LogError($"Send Error: {(NetworkError)b} channel:{channelId} bytesToSend:{m_Position}"); + result = false; + } + m_Position = 0; + return result; + } + } +} \ No newline at end of file diff --git a/QuantumUNET/Transport/QSBNetBuffer.cs b/QuantumUNET/Transport/QSBNetBuffer.cs new file mode 100644 index 000000000..589c893c3 --- /dev/null +++ b/QuantumUNET/Transport/QSBNetBuffer.cs @@ -0,0 +1,169 @@ +using System; +using UnityEngine; + +namespace QuantumUNET.Transport +{ + internal class QSBNetBuffer + { + public QSBNetBuffer() + { + m_Buffer = new byte[64]; + } + + public QSBNetBuffer(byte[] buffer) + { + m_Buffer = buffer; + } + + public uint Position { get; private set; } + public int Length => m_Buffer.Length; + + public byte ReadByte() + { + if (Position >= (ulong)m_Buffer.Length) + { + throw new IndexOutOfRangeException("NetworkReader:ReadByte out of range:" + ToString()); + } + return m_Buffer[(int)((UIntPtr)(Position++))]; + } + + public void ReadBytes(byte[] buffer, uint count) + { + if (Position + count > (ulong)m_Buffer.Length) + { + throw new IndexOutOfRangeException(string.Concat(new object[] + { + "NetworkReader:ReadBytes out of range: (", + count, + ") ", + ToString() + })); + } + ushort num = 0; + while (num < count) + { + buffer[num] = m_Buffer[(int)((UIntPtr)(Position + num))]; + num += 1; + } + Position += count; + } + + internal ArraySegment AsArraySegment() => new ArraySegment(m_Buffer, 0, (int)Position); + + public void WriteByte(byte value) + { + WriteCheckForSpace(1); + m_Buffer[(int)((UIntPtr)Position)] = value; + Position += 1U; + } + + public void WriteByte2(byte value0, byte value1) + { + WriteCheckForSpace(2); + m_Buffer[(int)((UIntPtr)Position)] = value0; + m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; + Position += 2U; + } + + public void WriteByte4(byte value0, byte value1, byte value2, byte value3) + { + WriteCheckForSpace(4); + m_Buffer[(int)((UIntPtr)Position)] = value0; + m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(Position + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(Position + 3U))] = value3; + Position += 4U; + } + + public void WriteByte8(byte value0, byte value1, byte value2, byte value3, byte value4, byte value5, byte value6, byte value7) + { + WriteCheckForSpace(8); + m_Buffer[(int)((UIntPtr)Position)] = value0; + m_Buffer[(int)((UIntPtr)(Position + 1U))] = value1; + m_Buffer[(int)((UIntPtr)(Position + 2U))] = value2; + m_Buffer[(int)((UIntPtr)(Position + 3U))] = value3; + m_Buffer[(int)((UIntPtr)(Position + 4U))] = value4; + m_Buffer[(int)((UIntPtr)(Position + 5U))] = value5; + m_Buffer[(int)((UIntPtr)(Position + 6U))] = value6; + m_Buffer[(int)((UIntPtr)(Position + 7U))] = value7; + Position += 8U; + } + + public void WriteBytesAtOffset(byte[] buffer, ushort targetOffset, ushort count) + { + var num = (uint)(count + targetOffset); + WriteCheckForSpace((ushort)num); + if (targetOffset == 0 && count == buffer.Length) + { + buffer.CopyTo(m_Buffer, (int)Position); + } + else + { + for (var i = 0; i < count; i++) + { + m_Buffer[targetOffset + i] = buffer[i]; + } + } + if (num > Position) + { + Position = num; + } + } + + public void WriteBytes(byte[] buffer, ushort count) + { + WriteCheckForSpace(count); + if (count == buffer.Length) + { + buffer.CopyTo(m_Buffer, (int)Position); + } + else + { + for (var i = 0; i < count; i++) + { + m_Buffer[(int)(checked((IntPtr)(unchecked(Position + (ulong)i))))] = buffer[i]; + } + } + Position += count; + } + + private void WriteCheckForSpace(ushort count) + { + if (Position + count >= (ulong)m_Buffer.Length) + { + var num = (int)Math.Ceiling(m_Buffer.Length * 1.5f); + while (Position + count >= (ulong)num) + { + num = (int)Math.Ceiling(num * 1.5f); + if (num > 134217728) + { + Debug.LogWarning("NetworkBuffer size is " + num + " bytes!"); + } + } + var array = new byte[num]; + m_Buffer.CopyTo(array, 0); + m_Buffer = array; + } + } + + public void FinishMessage() + { + var num = (ushort)(Position - 4U); + m_Buffer[0] = (byte)(num & 255); + m_Buffer[1] = (byte)((num >> 8) & 255); + } + + public void SeekZero() => + Position = 0U; + + public void Replace(byte[] buffer) + { + m_Buffer = buffer; + Position = 0U; + } + + public override string ToString() => string.Format("NetBuf sz:{0} pos:{1}", m_Buffer.Length, Position); + + private byte[] m_Buffer; + } +} \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkReader.cs b/QuantumUNET/Transport/QSBNetworkReader.cs similarity index 99% rename from QuantumUNET/QSBNetworkReader.cs rename to QuantumUNET/Transport/QSBNetworkReader.cs index afdb40e38..cb0a95148 100644 --- a/QuantumUNET/QSBNetworkReader.cs +++ b/QuantumUNET/Transport/QSBNetworkReader.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QuantumUNET +namespace QuantumUNET.Transport { public class QSBNetworkReader { diff --git a/QuantumUNET/Transport/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs new file mode 100644 index 000000000..b5f4073bf --- /dev/null +++ b/QuantumUNET/Transport/QSBNetworkWriter.cs @@ -0,0 +1,477 @@ +using QuantumUNET.Components; +using QuantumUNET.Messages; +using System; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace QuantumUNET.Transport +{ + public class QSBNetworkWriter + { + public QSBNetworkWriter() + { + m_Buffer = new QSBNetBuffer(); + if (s_Encoding == null) + { + s_Encoding = new UTF8Encoding(); + s_StringWriteBuffer = new byte[32768]; + } + } + + public QSBNetworkWriter(byte[] buffer) + { + m_Buffer = new QSBNetBuffer(buffer); + if (s_Encoding == null) + { + s_Encoding = new UTF8Encoding(); + s_StringWriteBuffer = new byte[32768]; + } + } + + public short Position => (short)m_Buffer.Position; + + public byte[] ToArray() + { + var array = new byte[m_Buffer.AsArraySegment().Count]; + Array.Copy(m_Buffer.AsArraySegment().Array, array, m_Buffer.AsArraySegment().Count); + return array; + } + + public byte[] AsArray() => AsArraySegment().Array; + + internal ArraySegment AsArraySegment() => m_Buffer.AsArraySegment(); + + public void WritePackedUInt32(uint value) + { + if (value <= 240U) + { + Write((byte)value); + } + else if (value <= 2287U) + { + Write((byte)(((value - 240U) / 256U) + 241U)); + Write((byte)((value - 240U) % 256U)); + } + else if (value <= 67823U) + { + Write(249); + Write((byte)((value - 2288U) / 256U)); + Write((byte)((value - 2288U) % 256U)); + } + else if (value <= 16777215U) + { + Write(250); + Write((byte)(value & 255U)); + Write((byte)((value >> 8) & 255U)); + Write((byte)((value >> 16) & 255U)); + } + else + { + Write(251); + Write((byte)(value & 255U)); + Write((byte)((value >> 8) & 255U)); + Write((byte)((value >> 16) & 255U)); + Write((byte)((value >> 24) & 255U)); + } + } + + public void WritePackedUInt64(ulong value) + { + if (value <= 240UL) + { + Write((byte)value); + } + else if (value <= 2287UL) + { + Write((byte)(((value - 240UL) / 256UL) + 241UL)); + Write((byte)((value - 240UL) % 256UL)); + } + else if (value <= 67823UL) + { + Write(249); + Write((byte)((value - 2288UL) / 256UL)); + Write((byte)((value - 2288UL) % 256UL)); + } + else if (value <= 16777215UL) + { + Write(250); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + } + else if (value <= uint.MaxValue) + { + Write(251); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + } + else if (value <= 1099511627775UL) + { + Write(252); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + } + else if (value <= 281474976710655UL) + { + Write(253); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + Write((byte)((value >> 40) & 255UL)); + } + else if (value <= 72057594037927935UL) + { + Write(254); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + Write((byte)((value >> 40) & 255UL)); + Write((byte)((value >> 48) & 255UL)); + } + else + { + Write(byte.MaxValue); + Write((byte)(value & 255UL)); + Write((byte)((value >> 8) & 255UL)); + Write((byte)((value >> 16) & 255UL)); + Write((byte)((value >> 24) & 255UL)); + Write((byte)((value >> 32) & 255UL)); + Write((byte)((value >> 40) & 255UL)); + Write((byte)((value >> 48) & 255UL)); + Write((byte)((value >> 56) & 255UL)); + } + } + + public void Write(NetworkInstanceId value) => WritePackedUInt32(value.Value); + + public void Write(NetworkSceneId value) => WritePackedUInt32(value.Value); + + public void Write(char value) => m_Buffer.WriteByte((byte)value); + + public void Write(byte value) => m_Buffer.WriteByte(value); + + public void Write(sbyte value) => m_Buffer.WriteByte((byte)value); + + public void Write(short value) => m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255)); + + public void Write(ushort value) => m_Buffer.WriteByte2((byte)(value & 255), (byte)((value >> 8) & 255)); + + public void Write(int value) => m_Buffer.WriteByte4((byte)(value & 255), (byte)((value >> 8) & 255), (byte)((value >> 16) & 255), (byte)((value >> 24) & 255)); + + public void Write(uint value) => m_Buffer.WriteByte4((byte)(value & 255U), (byte)((value >> 8) & 255U), (byte)((value >> 16) & 255U), (byte)((value >> 24) & 255U)); + + public void Write(long value) => m_Buffer.WriteByte8((byte)(value & 255L), (byte)((value >> 8) & 255L), (byte)((value >> 16) & 255L), (byte)((value >> 24) & 255L), (byte)((value >> 32) & 255L), (byte)((value >> 40) & 255L), (byte)((value >> 48) & 255L), (byte)((value >> 56) & 255L)); + + public void Write(ulong value) => m_Buffer.WriteByte8((byte)(value & 255UL), (byte)((value >> 8) & 255UL), (byte)((value >> 16) & 255UL), (byte)((value >> 24) & 255UL), (byte)((value >> 32) & 255UL), (byte)((value >> 40) & 255UL), (byte)((value >> 48) & 255UL), (byte)((value >> 56) & 255UL)); + + public void Write(float value) => m_Buffer.WriteBytes(BitConverter.GetBytes(value), 4); + + public void Write(double value) => m_Buffer.WriteBytes(BitConverter.GetBytes(value), 8); + + public void Write(decimal value) + { + var bits = decimal.GetBits(value); + Write(bits[0]); + Write(bits[1]); + Write(bits[2]); + Write(bits[3]); + } + + public void Write(string value) + { + if (value == null) + { + m_Buffer.WriteByte2(0, 0); + } + else + { + var byteCount = s_Encoding.GetByteCount(value); + if (byteCount >= 32768) + { + throw new IndexOutOfRangeException("Serialize(string) too long: " + value.Length); + } + Write((ushort)byteCount); + var bytes = s_Encoding.GetBytes(value, 0, value.Length, s_StringWriteBuffer, 0); + m_Buffer.WriteBytes(s_StringWriteBuffer, (ushort)bytes); + } + } + + public void Write(bool value) + { + if (value) + { + m_Buffer.WriteByte(1); + } + else + { + m_Buffer.WriteByte(0); + } + } + + public void Write(byte[] buffer, int count) + { + if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + m_Buffer.WriteBytes(buffer, (ushort)count); + } + } + + public void Write(byte[] buffer, int offset, int count) + { + if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + m_Buffer.WriteBytesAtOffset(buffer, (ushort)offset, (ushort)count); + } + } + + public void WriteBytesAndSize(byte[] buffer, int count) + { + if (buffer == null || count == 0) + { + Write(0); + } + else if (count > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + Write((ushort)count); + m_Buffer.WriteBytes(buffer, (ushort)count); + } + } + + public void WriteBytesFull(byte[] buffer) + { + if (buffer == null) + { + Write(0); + } + else if (buffer.Length > 65535) + { + if (LogFilter.logError) + { + Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); + } + } + else + { + Write((ushort)buffer.Length); + m_Buffer.WriteBytes(buffer, (ushort)buffer.Length); + } + } + + public void Write(Vector2 value) + { + Write(value.x); + Write(value.y); + } + + public void Write(Vector3 value) + { + Write(value.x); + Write(value.y); + Write(value.z); + } + + public void Write(Vector4 value) + { + Write(value.x); + Write(value.y); + Write(value.z); + Write(value.w); + } + + public void Write(Color value) + { + Write(value.r); + Write(value.g); + Write(value.b); + Write(value.a); + } + + public void Write(Color32 value) + { + Write(value.r); + Write(value.g); + Write(value.b); + Write(value.a); + } + + public void Write(Quaternion value) + { + Write(value.x); + Write(value.y); + Write(value.z); + Write(value.w); + } + + public void Write(Rect value) + { + Write(value.xMin); + Write(value.yMin); + Write(value.width); + Write(value.height); + } + + public void Write(Plane value) + { + Write(value.normal); + Write(value.distance); + } + + public void Write(Ray value) + { + Write(value.direction); + Write(value.origin); + } + + public void Write(Matrix4x4 value) + { + Write(value.m00); + Write(value.m01); + Write(value.m02); + Write(value.m03); + Write(value.m10); + Write(value.m11); + Write(value.m12); + Write(value.m13); + Write(value.m20); + Write(value.m21); + Write(value.m22); + Write(value.m23); + Write(value.m30); + Write(value.m31); + Write(value.m32); + Write(value.m33); + } + + public void Write(NetworkHash128 value) + { + Write(value.i0); + Write(value.i1); + Write(value.i2); + Write(value.i3); + Write(value.i4); + Write(value.i5); + Write(value.i6); + Write(value.i7); + Write(value.i8); + Write(value.i9); + Write(value.i10); + Write(value.i11); + Write(value.i12); + Write(value.i13); + Write(value.i14); + Write(value.i15); + } + + public void Write(QSBNetworkIdentity value) + { + if (value == null) + { + WritePackedUInt32(0U); + } + else + { + Write(value.NetId); + } + } + + public void Write(Transform value) + { + if (value == null || value.gameObject == null) + { + WritePackedUInt32(0U); + } + else + { + var component = value.gameObject.GetComponent(); + if (component != null) + { + Write(component.NetId); + } + else + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + } + WritePackedUInt32(0U); + } + } + } + + public void Write(GameObject value) + { + if (value == null) + { + WritePackedUInt32(0U); + } + else + { + var component = value.GetComponent(); + if (component != null) + { + Write(component.NetId); + } + else + { + if (LogFilter.logWarn) + { + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + } + WritePackedUInt32(0U); + } + } + } + + public void Write(QSBMessageBase msg) => msg.Serialize(this); + + public void SeekZero() => m_Buffer.SeekZero(); + + public void StartMessage(short msgType) + { + SeekZero(); + m_Buffer.WriteByte2(0, 0); + Write(msgType); + } + + public void FinishMessage() => m_Buffer.FinishMessage(); + + private const int k_MaxStringLength = 32768; + + private QSBNetBuffer m_Buffer; + + private static Encoding s_Encoding; + + private static byte[] s_StringWriteBuffer; + } +} \ No newline at end of file diff --git a/README.md b/README.md index d20c15ac3..696229f8f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Quantum Space Buddies - Outer Wilds Online Multiplayer Mod -Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as "QuantumUNET") for networking. +Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as QNet or QuantumUNET) for networking. **Disclamer - The mod authors (misternebula, AmazingAlek and Raicuparta) take no responsibility for any damages that are caused through opening ports on your network, or connecting to servers. Do not attempt to change your router settings without prior knowledge of what you are doing. Only share your public IP with people you trust, and don't connect to IPs that you do not know the source of. It is good practice to close ports/firewall exceptions after you have finished playing.** From c2eeddc484676aa2d91a421602f88f088686cc58 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 16 Dec 2020 17:34:54 +0000 Subject: [PATCH 186/207] fix --- QSB/QSBNetworkManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 22a034f72..b47ba6cfe 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -99,8 +99,8 @@ private void SetupNetworkId(GameObject go) { var ident = go.AddComponent(); ident.LocalPlayerAuthority = true; - ident.SetValue("m_AssetId", playerPrefab.GetComponent().assetId); - ident.SetValue("m_SceneId", playerPrefab.GetComponent().sceneId); + ident.SetValue("m_AssetId", go.GetComponent().assetId); + ident.SetValue("m_SceneId", go.GetComponent().sceneId); } private void SetupNetworkTransform(GameObject go) From f08c4ebf0350b80fc1415595d6156a8b28bf3925 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 17 Dec 2020 16:23:04 +0000 Subject: [PATCH 187/207] stuffz --- QSB/Animation/AnimationSync.cs | 1 + QSB/QSBNetworkManager.cs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 02df29c92..9f75670c5 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -66,6 +66,7 @@ private void LoadControllers() private void InitCommon(Transform body) { + DebugLog.DebugWrite("INIT COMMON"); if (QSBSceneManager.IsInUniverse) { LoadControllers(); diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index b47ba6cfe..330cd918c 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -101,6 +101,7 @@ private void SetupNetworkId(GameObject go) ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", go.GetComponent().assetId); ident.SetValue("m_SceneId", go.GetComponent().sceneId); + Destroy(go.GetComponent()); } private void SetupNetworkTransform(GameObject go) @@ -108,6 +109,7 @@ private void SetupNetworkTransform(GameObject go) var trans = go.AddComponent(); trans.SendInterval = 0.1f; trans.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; + Destroy(go.GetComponent()); } public void OnDestroy() => From 85d5997970ddcea4f5105bec6bc0f6889e71e9e8 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 17 Dec 2020 23:16:47 +0000 Subject: [PATCH 188/207] Update README.md --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 696229f8f..45d4bd2cf 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,22 @@ Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as QNet or QuantumUNET) for networking. -**Disclamer - The mod authors (misternebula, AmazingAlek and Raicuparta) take no responsibility for any damages that are caused through opening ports on your network, or connecting to servers. Do not attempt to change your router settings without prior knowledge of what you are doing. Only share your public IP with people you trust, and don't connect to IPs that you do not know the source of. It is good practice to close ports/firewall exceptions after you have finished playing.** +## License + +Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . From a0a45c9aef2fcb1b340393d585e63a9a7973e494 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 17 Dec 2020 23:18:47 +0000 Subject: [PATCH 189/207] add license --- QSB/QSBCore.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index f6b521c4f..96c4a4276 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -14,6 +14,23 @@ using UnityEngine; using UnityEngine.Networking; +/* +Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see https://www.gnu.org/licenses/. +*/ + namespace QSB { public class QSBCore : ModBehaviour From 89625a5610dd2e069e8989f330bbe50d9cf4fda4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 17 Dec 2020 23:25:56 +0000 Subject: [PATCH 190/207] Update LICENSE --- LICENSE | 640 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 619 insertions(+), 21 deletions(-) diff --git a/LICENSE b/LICENSE index bcd5c7d74..f4aa842ed 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,619 @@ -MIT License - -Copyright (c) 2020 _nebula (AKA misternebula), AmazingAlek, Raicuparta - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS \ No newline at end of file From c2d7cb10a9371b3efc191e506f4b5f9ec1586db9 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 18 Dec 2020 20:20:54 +0000 Subject: [PATCH 191/207] remove logfilter --- QSB/QSBCore.cs | 3 - QuantumUNET/QSBClientScene.cs | 152 ++++------------- QuantumUNET/QSBNetworkBehaviour.cs | 12 +- QuantumUNET/QSBNetworkClient.cs | 189 +++++---------------- QuantumUNET/QSBNetworkConnection.cs | 19 +-- QuantumUNET/QSBNetworkScene.cs | 19 +-- QuantumUNET/QSBNetworkServer.cs | 170 +++++------------- QuantumUNET/QSBNetworkServerSimple.cs | 79 ++------- QuantumUNET/QSBULocalConnectionToServer.cs | 6 +- QuantumUNET/Transport/QSBNetworkReader.cs | 15 +- QuantumUNET/Transport/QSBNetworkWriter.cs | 30 +--- 11 files changed, 155 insertions(+), 539 deletions(-) diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 96c4a4276..e419261fa 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -12,7 +12,6 @@ using QuantumUNET; using QuantumUNET.Components; using UnityEngine; -using UnityEngine.Networking; /* Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) @@ -54,8 +53,6 @@ public void Awake() "Quantum Space Buddies is best experienced with friends..."; ModBehaviour = this; - - LogFilter.currentLogLevel = LogFilter.Debug; } public void Start() diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 4c4234066..20f9b5176 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -45,18 +45,12 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer bool result; if (playerControllerId >= localPlayers.Count) { - if (LogFilter.logWarn) - { - Debug.Log("ClientScene::GetPlayer: no local player found for: " + playerControllerId); - } + Debug.Log("ClientScene::GetPlayer: no local player found for: " + playerControllerId); result = false; } else if (localPlayers[playerControllerId] == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("ClientScene::GetPlayer: local player is null for: " + playerControllerId); - } + Debug.LogWarning("ClientScene::GetPlayer: local player is null for: " + playerControllerId); result = false; } else @@ -69,16 +63,10 @@ internal static bool GetPlayerController(short playerControllerId, out QSBPlayer internal static void InternalAddPlayer(QSBNetworkIdentity view, short playerControllerId) { - if (LogFilter.logDebug) - { - Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId); - } + Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId : " + playerControllerId); if (playerControllerId >= localPlayers.Count) { - if (LogFilter.logWarn) - { - Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId); - } + Debug.LogWarning("ClientScene::InternalAddPlayer: playerControllerId higher than expected: " + playerControllerId); while (playerControllerId >= localPlayers.Count) { localPlayers.Add(new QSBPlayerController()); @@ -121,10 +109,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl { if (playerControllerId > 16) { - if (LogFilter.logWarn) - { - Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); - } + Debug.LogWarning("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); } while (playerControllerId >= localPlayers.Count) { @@ -134,10 +119,7 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl { if (!ready) { - if (LogFilter.logError) - { - Debug.LogError("Must call AddPlayer() with a connection the first time to become ready."); - } + Debug.LogError("Must call AddPlayer() with a connection the first time to become ready."); return false; } } @@ -150,24 +132,18 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl { if (playerController.IsValid && playerController.Gameobject != null) { - if (LogFilter.logError) - { - Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " already in use."); - } + Debug.LogError("ClientScene::AddPlayer: playerControllerId of " + playerControllerId + " already in use."); return false; } } - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "ClientScene::AddPlayer() for ID ", playerControllerId, " called with connection [", readyConnection, "]" - })); - } + })); var addPlayerMessage = new QSBAddPlayerMessage { playerControllerId = playerControllerId @@ -187,17 +163,14 @@ public static bool AddPlayer(QSBNetworkConnection readyConn, short playerControl public static bool RemovePlayer(short playerControllerId) { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "ClientScene::RemovePlayer() for ID ", playerControllerId, " called with connection [", readyConnection, "]" - })); - } + })); bool result; if (readyConnection.GetPlayerController(playerControllerId, out var playerController)) { @@ -213,10 +186,7 @@ public static bool RemovePlayer(short playerControllerId) } else { - if (LogFilter.logError) - { - Debug.LogError("Failed to find player ID " + playerControllerId); - } + Debug.LogError("Failed to find player ID " + playerControllerId); result = false; } return result; @@ -227,18 +197,12 @@ public static bool Ready(QSBNetworkConnection conn) bool result; if (ready) { - if (LogFilter.logError) - { - Debug.LogError("A connection has already been set as ready. There can only be one."); - } + Debug.LogError("A connection has already been set as ready. There can only be one."); result = false; } else { - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::Ready() called with connection [" + conn + "]"); - } + Debug.Log("ClientScene::Ready() called with connection [" + conn + "]"); if (conn != null) { var msg = new QSBReadyMessage(); @@ -250,10 +214,7 @@ public static bool Ready(QSBNetworkConnection conn) } else { - if (LogFilter.logError) - { - Debug.LogError("Ready() called with invalid connection object: conn=null"); - } + Debug.LogError("Ready() called with invalid connection object: conn=null"); result = false; } } @@ -299,10 +260,7 @@ internal static void PrepareToSpawnSceneObjects() if (!networkIdentity.SceneId.IsEmpty()) { SpawnableObjects[networkIdentity.SceneId] = networkIdentity; - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::PrepareSpawnObjects sceneId:" + networkIdentity.SceneId); - } + Debug.Log("ClientScene::PrepareSpawnObjects sceneId:" + networkIdentity.SceneId); } } } @@ -491,25 +449,19 @@ private static void OnObjectSpawnScene(QSBNetworkMessage netMsg) var networkIdentity2 = SpawnSceneObject(s_ObjectSpawnSceneMessage.SceneId); if (networkIdentity2 == null) { - if (LogFilter.logError) - { - Debug.LogError("Spawn scene object not found for " + s_ObjectSpawnSceneMessage.SceneId); - } + Debug.LogError("Spawn scene object not found for " + s_ObjectSpawnSceneMessage.SceneId); } else { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "Client spawn for [netId:", s_ObjectSpawnSceneMessage.NetId, "] [sceneId:", s_ObjectSpawnSceneMessage.SceneId, "] obj:", networkIdentity2.gameObject.name - })); - } + })); ApplySpawnPayload(networkIdentity2, s_ObjectSpawnSceneMessage.Position, s_ObjectSpawnSceneMessage.Payload, s_ObjectSpawnSceneMessage.NetId, networkIdentity2.gameObject); } } @@ -518,10 +470,7 @@ private static void OnObjectSpawnScene(QSBNetworkMessage netMsg) private static void OnObjectSpawnFinished(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectSpawnFinishedMessage); - if (LogFilter.logDebug) - { - Debug.Log("SpawnFinished:" + s_ObjectSpawnFinishedMessage.State); - } + Debug.Log("SpawnFinished:" + s_ObjectSpawnFinishedMessage.State); if (s_ObjectSpawnFinishedMessage.State == 0U) { PrepareToSpawnSceneObjects(); @@ -544,10 +493,7 @@ private static void OnObjectSpawnFinished(QSBNetworkMessage netMsg) private static void OnObjectDestroy(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectDestroyMessage); - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::OnObjDestroy netId:" + s_ObjectDestroyMessage.NetId); - } + Debug.Log("ClientScene::OnObjDestroy netId:" + s_ObjectDestroyMessage.NetId); if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.NetId, out var networkIdentity)) { networkIdentity.OnNetworkDestroy(); @@ -566,7 +512,7 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.NetId); networkIdentity.MarkForReset(); } - else if (LogFilter.logDebug) + else { Debug.LogWarning("Did not find target for destroy message for " + s_ObjectDestroyMessage.NetId); } @@ -575,20 +521,14 @@ private static void OnObjectDestroy(QSBNetworkMessage netMsg) private static void OnLocalClientObjectDestroy(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectDestroyMessage); - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + s_ObjectDestroyMessage.NetId); - } + Debug.Log("ClientScene::OnLocalObjectObjDestroy netId:" + s_ObjectDestroyMessage.NetId); s_NetworkScene.RemoveLocalObject(s_ObjectDestroyMessage.NetId); } private static void OnLocalClientObjectHide(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ObjectDestroyMessage); - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + s_ObjectDestroyMessage.NetId); - } + Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + s_ObjectDestroyMessage.NetId); if (s_NetworkScene.GetNetworkIdentity(s_ObjectDestroyMessage.NetId, out var networkIdentity)) { networkIdentity.OnSetLocalVisibility(false); @@ -620,7 +560,7 @@ private static void OnUpdateVarsMessage(QSBNetworkMessage netMsg) { networkIdentity.OnUpdateVars(netMsg.Reader, false); } - else if (LogFilter.logWarn) + else { Debug.LogWarning("Did not find target for sync message for " + networkInstanceId); } @@ -630,21 +570,18 @@ private static void OnRPCMessage(QSBNetworkMessage netMsg) { var num = (int)netMsg.Reader.ReadPackedUInt32(); var networkInstanceId = netMsg.Reader.ReadNetworkId(); - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "ClientScene::OnRPCMessage hash:", num, " netId:", networkInstanceId - })); - } + })); if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { networkIdentity.HandleRPC(num, netMsg.Reader); } - else if (LogFilter.logWarn) + else { var cmdHashHandlerName = QSBNetworkBehaviour.GetCmdHashHandlerName(num); Debug.LogWarningFormat("Could not find target object with netId:{0} for RPC call {1}", new object[] @@ -659,15 +596,12 @@ private static void OnSyncEventMessage(QSBNetworkMessage netMsg) { var cmdHash = (int)netMsg.Reader.ReadPackedUInt32(); var networkInstanceId = netMsg.Reader.ReadNetworkId(); - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::OnSyncEventMessage " + networkInstanceId); - } + Debug.Log("ClientScene::OnSyncEventMessage " + networkInstanceId); if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { networkIdentity.HandleSyncEvent(cmdHash, netMsg.Reader); } - else if (LogFilter.logWarn) + else { Debug.LogWarning("Did not find target for SyncEvent message for " + networkInstanceId); } @@ -677,15 +611,12 @@ private static void OnSyncListMessage(QSBNetworkMessage netMsg) { var networkInstanceId = netMsg.Reader.ReadNetworkId(); var cmdHash = (int)netMsg.Reader.ReadPackedUInt32(); - if (LogFilter.logDebug) - { - Debug.Log("ClientScene::OnSyncListMessage " + networkInstanceId); - } + Debug.Log("ClientScene::OnSyncListMessage " + networkInstanceId); if (s_NetworkScene.GetNetworkIdentity(networkInstanceId, out var networkIdentity)) { networkIdentity.HandleSyncList(cmdHash, netMsg.Reader); } - else if (LogFilter.logWarn) + else { Debug.LogWarning("Did not find target for SyncList message for " + networkInstanceId); } @@ -694,16 +625,13 @@ private static void OnSyncListMessage(QSBNetworkMessage netMsg) private static void OnClientAuthority(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_ClientAuthorityMessage); - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "ClientScene::OnClientAuthority for connectionId=", netMsg.Connection.connectionId, " netId: ", s_ClientAuthorityMessage.netId - })); - } + })); if (s_NetworkScene.GetNetworkIdentity(s_ClientAuthorityMessage.netId, out var networkIdentity)) { networkIdentity.HandleClientAuthority(s_ClientAuthorityMessage.authority); @@ -713,16 +641,13 @@ private static void OnClientAuthority(QSBNetworkMessage netMsg) private static void OnOwnerMessage(QSBNetworkMessage netMsg) { netMsg.ReadMessage(s_OwnerMessage); - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "ClientScene::OnOwnerMessage - connectionId=", netMsg.Connection.connectionId, " netId: ", s_OwnerMessage.NetId - })); - } + })); if (netMsg.Connection.GetPlayerController(s_OwnerMessage.PlayerControllerId, out var playerController)) { playerController.UnetView.SetNotLocalPlayer(); @@ -757,10 +682,7 @@ private static void CheckForOwner(QSBNetworkIdentity uv) Debug.Log("ClientScene::OnOwnerMessage - player=" + uv.gameObject.name); if (readyConnection.connectionId < 0) { - if (LogFilter.logError) - { - Debug.LogError("Owner message received on a local client."); - } + Debug.LogError("Owner message received on a local client."); break; } InternalAddPlayer(uv, pendingOwner.playerControllerId); diff --git a/QuantumUNET/QSBNetworkBehaviour.cs b/QuantumUNET/QSBNetworkBehaviour.cs index 5887c0f1c..859685c5e 100644 --- a/QuantumUNET/QSBNetworkBehaviour.cs +++ b/QuantumUNET/QSBNetworkBehaviour.cs @@ -71,11 +71,8 @@ protected void SendRPCInternal(QSBNetworkWriter writer, int channelId, string rp { if (!IsServer) { - if (LogFilter.logWarn) - { - Debug.LogWarning("ClientRpc call on un-spawned object"); - return; - } + Debug.LogWarning("ClientRpc call on un-spawned object"); + return; } writer.FinishMessage(); QSBNetworkServer.SendWriterToReady(gameObject, writer, channelId); @@ -418,10 +415,7 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam networkInstanceId = component.NetId; if (networkInstanceId.IsEmpty()) { - if (LogFilter.logWarn) - { - Debug.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?"); - } + Debug.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?"); } } } diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index d93577248..ee2b0b293 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -94,32 +94,23 @@ public bool ReconnectToNewHost(string serverIp, int serverPort) bool result; if (!active) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect - NetworkClient must be active"); - } + Debug.LogError("Reconnect - NetworkClient must be active"); result = false; } else if (m_Connection == null) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect - no old connection exists"); - } + Debug.LogError("Reconnect - no old connection exists"); result = false; } else { - if (LogFilter.logInfo) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "NetworkClient Reconnect ", serverIp, ":", serverPort - })); - } + })); QSBClientScene.HandleClientDisconnect(m_Connection); QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); @@ -138,10 +129,7 @@ public bool ReconnectToNewHost(string serverIp, int serverPort) } else { - if (LogFilter.logDebug) - { - Debug.Log("Async DNS START:" + serverIp); - } + Debug.Log("Async DNS START:" + serverIp); m_AsyncConnect = ConnectState.Resolving; Dns.BeginGetHostAddresses(serverIp, new AsyncCallback(GetHostAddressesCallback), this); } @@ -155,26 +143,17 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) bool result; if (!active) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect - NetworkClient must be active"); - } + Debug.LogError("Reconnect - NetworkClient must be active"); result = false; } else if (m_Connection == null) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect - no old connection exists"); - } + Debug.LogError("Reconnect - no old connection exists"); result = false; } else { - if (LogFilter.logInfo) - { - Debug.Log("NetworkClient Reconnect to remoteSockAddr"); - } + Debug.Log("NetworkClient Reconnect to remoteSockAddr"); QSBClientScene.HandleClientDisconnect(m_Connection); QSBClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); @@ -182,19 +161,13 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) hostId = NetworkTransport.AddHost(hostTopology, m_HostPort); if (secureTunnelEndPoint == null) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect failed: null endpoint passed in"); - } + Debug.LogError("Reconnect failed: null endpoint passed in"); m_AsyncConnect = ConnectState.Failed; result = false; } else if (secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetwork && secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetworkV6) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6"); - } + Debug.LogError("Reconnect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6"); m_AsyncConnect = ConnectState.Failed; result = false; } @@ -209,10 +182,7 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint") { - if (LogFilter.logError) - { - Debug.LogError("Reconnect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)"); - } + Debug.LogError("Reconnect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)"); m_AsyncConnect = ConnectState.Failed; result = false; } @@ -227,19 +197,13 @@ public bool ReconnectToNewHost(EndPoint secureTunnelEndPoint) } catch (Exception arg) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect failed: Exception when trying to connect to EndPoint: " + arg); - } + Debug.LogError("Reconnect failed: Exception when trying to connect to EndPoint: " + arg); m_AsyncConnect = ConnectState.Failed; return false; } if (m_ClientConnectionId == 0) { - if (LogFilter.logError) - { - Debug.LogError("Reconnect failed: Unable to connect to EndPoint (" + b + ")"); - } + Debug.LogError("Reconnect failed: Unable to connect to EndPoint (" + b + ")"); m_AsyncConnect = ConnectState.Failed; result = false; } @@ -316,24 +280,15 @@ public void Connect(EndPoint secureTunnelEndPoint) //bool usePlatformSpecificProtocols = NetworkTransport.DoesEndPointUsePlatformProtocols(secureTunnelEndPoint); var usePlatformSpecificProtocols = false; PrepareForConnect(usePlatformSpecificProtocols); - if (LogFilter.logDebug) - { - Debug.Log("Client Connect to remoteSockAddr"); - } + Debug.Log("Client Connect to remoteSockAddr"); if (secureTunnelEndPoint == null) { - if (LogFilter.logError) - { - Debug.LogError("Connect failed: null endpoint passed in"); - } + Debug.LogError("Connect failed: null endpoint passed in"); m_AsyncConnect = ConnectState.Failed; } else if (secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetwork && secureTunnelEndPoint.AddressFamily != AddressFamily.InterNetworkV6) { - if (LogFilter.logError) - { - Debug.LogError("Connect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6"); - } + Debug.LogError("Connect failed: Endpoint AddressFamily must be either InterNetwork or InterNetworkV6"); m_AsyncConnect = ConnectState.Failed; } else @@ -346,10 +301,7 @@ public void Connect(EndPoint secureTunnelEndPoint) } else if (fullName != "UnityEngine.XboxOne.XboxOneEndPoint" && fullName != "UnityEngine.PS4.SceEndPoint" && fullName != "UnityEngine.PSVita.SceEndPoint") { - if (LogFilter.logError) - { - Debug.LogError("Connect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)"); - } + Debug.LogError("Connect failed: invalid Endpoint (not IPEndPoint or XboxOneEndPoint or SceEndPoint)"); m_AsyncConnect = ConnectState.Failed; } else @@ -363,19 +315,13 @@ public void Connect(EndPoint secureTunnelEndPoint) } catch (Exception arg) { - if (LogFilter.logError) - { - Debug.LogError("Connect failed: Exception when trying to connect to EndPoint: " + arg); - } + Debug.LogError("Connect failed: Exception when trying to connect to EndPoint: " + arg); m_AsyncConnect = ConnectState.Failed; return; } if (m_ClientConnectionId == 0) { - if (LogFilter.logError) - { - Debug.LogError("Connect failed: Unable to connect to EndPoint (" + b + ")"); - } + Debug.LogError("Connect failed: Unable to connect to EndPoint (" + b + ")"); m_AsyncConnect = ConnectState.Failed; } else @@ -512,10 +458,7 @@ public bool Send(short msgType, QSBMessageBase msg) { if (m_AsyncConnect != ConnectState.Connected) { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient Send when not connected to a server"); - } + Debug.LogError("NetworkClient Send when not connected to a server"); result = false; } else @@ -525,10 +468,7 @@ public bool Send(short msgType, QSBMessageBase msg) } else { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient Send with no connection"); - } + Debug.LogError("NetworkClient Send with no connection"); result = false; } return result; @@ -541,10 +481,7 @@ public bool SendWriter(QSBNetworkWriter writer, int channelId) { if (m_AsyncConnect != ConnectState.Connected) { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendWriter when not connected to a server"); - } + Debug.LogError("NetworkClient SendWriter when not connected to a server"); result = false; } else @@ -554,10 +491,7 @@ public bool SendWriter(QSBNetworkWriter writer, int channelId) } else { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendWriter with no connection"); - } + Debug.LogError("NetworkClient SendWriter with no connection"); result = false; } return result; @@ -570,10 +504,7 @@ public bool SendBytes(byte[] data, int numBytes, int channelId) { if (m_AsyncConnect != ConnectState.Connected) { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendBytes when not connected to a server"); - } + Debug.LogError("NetworkClient SendBytes when not connected to a server"); result = false; } else @@ -583,10 +514,7 @@ public bool SendBytes(byte[] data, int numBytes, int channelId) } else { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendBytes with no connection"); - } + Debug.LogError("NetworkClient SendBytes with no connection"); result = false; } return result; @@ -599,10 +527,7 @@ public bool SendUnreliable(short msgType, QSBMessageBase msg) { if (m_AsyncConnect != ConnectState.Connected) { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendUnreliable when not connected to a server"); - } + Debug.LogError("NetworkClient SendUnreliable when not connected to a server"); result = false; } else @@ -612,10 +537,7 @@ public bool SendUnreliable(short msgType, QSBMessageBase msg) } else { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendUnreliable with no connection"); - } + Debug.LogError("NetworkClient SendUnreliable with no connection"); result = false; } return result; @@ -628,10 +550,7 @@ public bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) { if (m_AsyncConnect != ConnectState.Connected) { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendByChannel when not connected to a server"); - } + Debug.LogError("NetworkClient SendByChannel when not connected to a server"); result = false; } else @@ -641,10 +560,7 @@ public bool SendByChannel(short msgType, QSBMessageBase msg, int channelId) } else { - if (LogFilter.logError) - { - Debug.LogError("NetworkClient SendByChannel with no connection"); - } + Debug.LogError("NetworkClient SendByChannel with no connection"); result = false; } return result; @@ -654,10 +570,7 @@ public void SetMaxDelay(float seconds) { if (m_Connection == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("SetMaxDelay failed, not connected."); - } + Debug.LogWarning("SetMaxDelay failed, not connected."); } else { @@ -667,10 +580,7 @@ public void SetMaxDelay(float seconds) public void Shutdown() { - if (LogFilter.logDebug) - { - Debug.Log("Shutting down client " + hostId); - } + Debug.Log("Shutting down client " + hostId); if (hostId != -1) { NetworkTransport.RemoveHost(hostId); @@ -693,12 +603,10 @@ internal virtual void Update() case ConnectState.Resolving: case ConnectState.Disconnected: return; - case ConnectState.Resolved: m_AsyncConnect = ConnectState.Connecting; ContinueConnect(); return; - case ConnectState.Failed: GenerateConnectError(11); m_AsyncConnect = ConnectState.Disconnected; @@ -733,10 +641,7 @@ internal virtual void Update() break; case NetworkEventType.ConnectEvent: - if (LogFilter.logDebug) - { - Debug.Log("Client connected"); - } + Debug.Log("Client connected"); if (b != 0) { goto Block_10; @@ -746,10 +651,7 @@ internal virtual void Update() break; case NetworkEventType.DisconnectEvent: - if (LogFilter.logDebug) - { - Debug.Log("Client disconnected"); - } + Debug.Log("Client disconnected"); m_AsyncConnect = ConnectState.Disconnected; if (b != 0) { @@ -769,10 +671,7 @@ internal virtual void Update() break; default: - if (LogFilter.logError) - { - Debug.LogError("Unknown network message type received: " + networkEventType); - } + Debug.LogError("Unknown network message type received: " + networkEventType); break; } if (++num >= 500) @@ -795,10 +694,7 @@ internal virtual void Update() GenerateDataError(b); return; Block_17: - if (LogFilter.logDebug) - { - Debug.Log("MaxEventsPerFrame hit (" + 500 + ")"); - } + Debug.Log("MaxEventsPerFrame hit (" + 500 + ")"); Block_19: IL_2C6: if (m_Connection != null && m_AsyncConnect == ConnectState.Connected) @@ -810,28 +706,19 @@ internal virtual void Update() private void GenerateConnectError(int error) { - if (LogFilter.logError) - { - Debug.LogError("UNet Client Error Connect Error: " + error); - } + Debug.LogError("UNet Client Error Connect Error: " + error); GenerateError(error); } private void GenerateDataError(int error) { - if (LogFilter.logError) - { - Debug.LogError("UNet Client Data Error: " + (NetworkError)error); - } + Debug.LogError("UNet Client Data Error: " + (NetworkError)error); GenerateError(error); } private void GenerateDisconnectError(int error) { - if (LogFilter.logError) - { - Debug.LogError("UNet Client Disconnect Error: " + (NetworkError)error); - } + Debug.LogError("UNet Client Disconnect Error: " + (NetworkError)error); GenerateError(error); } diff --git a/QuantumUNET/QSBNetworkConnection.cs b/QuantumUNET/QSBNetworkConnection.cs index ce6ddea68..b388982a9 100644 --- a/QuantumUNET/QSBNetworkConnection.cs +++ b/QuantumUNET/QSBNetworkConnection.cs @@ -199,11 +199,8 @@ internal void RemovePlayerController(short playerControllerId) return; } } - if (LogFilter.logError) - { - Debug.LogError("RemovePlayer player at playerControllerId " + playerControllerId + " not found"); - return; - } + Debug.LogError("RemovePlayer player at playerControllerId " + playerControllerId + " not found"); + return; } internal bool GetPlayerController(short playerControllerId, out QSBPlayerController playerController) @@ -299,24 +296,18 @@ private bool CheckChannel(int channelId) bool result; if (m_Channels == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Channels not initialized sending on id '" + channelId); - } + Debug.LogWarning("Channels not initialized sending on id '" + channelId); result = false; } else if (channelId < 0 || channelId >= m_Channels.Length) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Invalid channel when sending buffered data, '", channelId, "'. Current channel count is ", m_Channels.Length - })); - } + })); result = false; } else diff --git a/QuantumUNET/QSBNetworkScene.cs b/QuantumUNET/QSBNetworkScene.cs index cf14a9c06..aa3688715 100644 --- a/QuantumUNET/QSBNetworkScene.cs +++ b/QuantumUNET/QSBNetworkScene.cs @@ -100,7 +100,7 @@ internal static void RegisterPrefab(GameObject prefab, NetworkHash128 newAssetId component.SetDynamicAssetId(newAssetId); guidToPrefab[component.AssetId] = prefab; } - else if (LogFilter.logError) + else { Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } @@ -115,13 +115,10 @@ internal static void RegisterPrefab(GameObject prefab) var componentsInChildren = prefab.GetComponentsInChildren(); if (componentsInChildren.Length > 1) { - if (LogFilter.logWarn) - { - Debug.LogWarning("The prefab '" + prefab.name + "' has multiple NetworkIdentity components. There can only be one NetworkIdentity on a prefab, and it must be on the root object."); - } + Debug.LogWarning("The prefab '" + prefab.name + "' has multiple NetworkIdentity components. There can only be one NetworkIdentity on a prefab, and it must be on the root object."); } } - else if (LogFilter.logError) + else { Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); } @@ -165,10 +162,7 @@ internal static void RegisterSpawnHandler(NetworkHash128 assetId, QSBSpawnDelega { if (spawnHandler == null || unspawnHandler == null) { - if (LogFilter.logError) - { - Debug.LogError("RegisterSpawnHandler custom spawn function null for " + assetId); - } + Debug.LogError("RegisterSpawnHandler custom spawn function null for " + assetId); } else { @@ -182,10 +176,7 @@ internal static void UnregisterPrefab(GameObject prefab) var component = prefab.GetComponent(); if (component == null) { - if (LogFilter.logError) - { - Debug.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component"); - } + Debug.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component"); } else { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 1e5793fda..a54e09efd 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -596,16 +596,10 @@ private void OnDisconnected(QSBNetworkConnection conn) { if (conn.PlayerControllers[i].Gameobject != null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Player not destroyed when connection disconnected."); - } + Debug.LogWarning("Player not destroyed when connection disconnected."); } } - if (LogFilter.logDebug) - { - Debug.Log("Server lost client:" + conn.connectionId); - } + Debug.Log("Server lost client:" + conn.connectionId); conn.RemoveObservers(); conn.Dispose(); } @@ -614,36 +608,27 @@ private void OnDisconnected(QSBNetworkConnection conn) private void GenerateConnectError(int error) { - if (LogFilter.logError) - { - Debug.LogError("UNet Server Connect Error: " + error); - } + Debug.LogError("UNet Server Connect Error: " + error); GenerateError(null, error); } private void GenerateDataError(QSBNetworkConnection conn, int error) { - if (LogFilter.logError) - { - Debug.LogError("UNet Server Data Error: " + (NetworkError)error); - } + Debug.LogError("UNet Server Data Error: " + (NetworkError)error); GenerateError(conn, error); } private void GenerateDisconnectError(QSBNetworkConnection conn, int error) { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "UNet Server Disconnect Error: ", (NetworkError)error, " conn:[", conn, "]:", conn.connectionId - })); - } + })); GenerateError(conn, error); } @@ -723,11 +708,8 @@ public static void SendToClientOfPlayer(GameObject player, short msgType, QSBMes } } } - if (LogFilter.logError) - { - Debug.LogError("Failed to send message to player object '" + player.name + ", not found in connection list"); - return; - } + Debug.LogError("Failed to send message to player object '" + player.name + ", not found in connection list"); + return; } public static void SendToClient(int connectionId, short msgType, QSBMessageBase msg) @@ -741,10 +723,7 @@ public static void SendToClient(int connectionId, short msgType, QSBMessageBase return; } } - if (LogFilter.logError) - { - Debug.LogError("Failed to send message to connection ID '" + connectionId + ", not found in connection list"); - } + Debug.LogError("Failed to send message to connection ID '" + connectionId + ", not found in connection list"); } public static bool AddPlayerForConnection(QSBNetworkConnection conn, GameObject player, short playerControllerId) => instance.InternalAddPlayerForConnection(conn, player, playerControllerId); @@ -754,10 +733,7 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje bool result; if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) { - if (LogFilter.logError) - { - Debug.Log("AddPlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject); - } + Debug.Log("AddPlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject); result = false; } else @@ -776,10 +752,7 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje } if (x != null) { - if (LogFilter.logError) - { - Debug.Log("AddPlayer: player object already exists for playerControllerId of " + playerControllerId); - } + Debug.Log("AddPlayer: player object already exists for playerControllerId of " + playerControllerId); result = false; } else @@ -794,16 +767,13 @@ internal bool InternalAddPlayerForConnection(QSBNetworkConnection conn, GameObje } else { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "Adding new playerGameObject object netId: ", playerGameObject.GetComponent().NetId, " asset ID ", playerGameObject.GetComponent().AssetId - })); - } + })); FinishPlayerForConnection(conn, networkIdentity, playerGameObject); if (networkIdentity.LocalPlayerAuthority) { @@ -822,34 +792,25 @@ private static bool CheckPlayerControllerIdForConnection(QSBNetworkConnection co bool result; if (playerControllerId < 0) { - if (LogFilter.logError) - { - Debug.LogError("AddPlayer: playerControllerId of " + playerControllerId + " is negative"); - } + Debug.LogError("AddPlayer: playerControllerId of " + playerControllerId + " is negative"); result = false; } else if (playerControllerId > 32) { - if (LogFilter.logError) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "AddPlayer: playerControllerId of ", playerControllerId, " is too high. max is ", 32 - })); - } + })); result = false; } else { if (playerControllerId > 16) { - if (LogFilter.logWarn) - { - Debug.LogWarning("AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); - } + Debug.LogWarning("AddPlayer: playerControllerId of " + playerControllerId + " is unusually high"); } result = true; } @@ -900,10 +861,7 @@ internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, Game bool result; if (!GetNetworkIdentity(playerGameObject, out var networkIdentity)) { - if (LogFilter.logError) - { - Debug.LogError("ReplacePlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject); - } + Debug.LogError("ReplacePlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + playerGameObject); result = false; } else if (!CheckPlayerControllerIdForConnection(conn, playerControllerId)) @@ -928,16 +886,13 @@ internal bool InternalReplacePlayerForConnection(QSBNetworkConnection conn, Game } else { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "Replacing playerGameObject object netId: ", playerGameObject.GetComponent().netId, " asset ID ", playerGameObject.GetComponent().assetId - })); - } + })); FinishPlayerForConnection(conn, networkIdentity, playerGameObject); if (networkIdentity.LocalPlayerAuthority) { @@ -969,25 +924,16 @@ private static bool GetNetworkIdentity(GameObject go, out QSBNetworkIdentity vie internal void SetClientReadyInternal(QSBNetworkConnection conn) { - if (LogFilter.logDebug) - { - Debug.Log("SetClientReadyInternal for conn:" + conn.connectionId); - } + Debug.Log("SetClientReadyInternal for conn:" + conn.connectionId); if (conn.isReady) { - if (LogFilter.logDebug) - { - Debug.Log("SetClientReady conn " + conn.connectionId + " already ready"); - } + Debug.Log("SetClientReady conn " + conn.connectionId + " already ready"); } else { if (conn.PlayerControllers.Count == 0) { - if (LogFilter.logDebug) - { - Debug.LogWarning("Ready with no player object"); - } + Debug.LogWarning("Ready with no player object"); } conn.isReady = true; if (conn is QSBULocalConnectionToClient ulocalConnectionToClient) @@ -1012,16 +958,13 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) } else { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "Spawning ", objects.Count, " objects for conn ", conn.connectionId - })); - } + })); var objectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage { State = 0U @@ -1031,23 +974,17 @@ internal void SetClientReadyInternal(QSBNetworkConnection conn) { if (networkIdentity2 == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Invalid object found in server local object list (null NetworkIdentity)."); - } + Debug.LogWarning("Invalid object found in server local object list (null NetworkIdentity)."); } else if (networkIdentity2.gameObject.activeSelf) { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "Sending spawn message for current server objects name='", networkIdentity2.gameObject.name, "' netId=", networkIdentity2.NetId - })); - } + })); var flag2 = networkIdentity2.OnCheckObserver(conn); if (flag2) { @@ -1095,10 +1032,7 @@ internal void InternalSetClientNotReady(QSBNetworkConnection conn) { if (conn.isReady) { - if (LogFilter.logDebug) - { - Debug.Log("PlayerNotReady " + conn); - } + Debug.Log("PlayerNotReady " + conn); conn.isReady = false; conn.RemoveObservers(); var msg = new QSBNotReadyMessage(); @@ -1108,10 +1042,7 @@ internal void InternalSetClientNotReady(QSBNetworkConnection conn) private static void OnClientReadyMessage(QSBNetworkMessage netMsg) { - if (LogFilter.logDebug) - { - Debug.Log("Default handler for ready message from " + netMsg.Connection); - } + Debug.Log("Default handler for ready message from " + netMsg.Connection); SetClientReady(netMsg.Connection); } @@ -1124,7 +1055,7 @@ private static void OnRemovePlayerMessage(QSBNetworkMessage netMsg) netMsg.Connection.RemovePlayerController(s_RemovePlayerMessage.PlayerControllerId); Destroy(playerController.Gameobject); } - else if (LogFilter.logError) + else { Debug.LogError("Received remove player message but could not find the player ID: " + s_RemovePlayerMessage.PlayerControllerId); } @@ -1137,20 +1068,14 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) var gameObject = FindLocalObject(networkInstanceId); if (gameObject == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Instance not found when handling Command message [netId=" + networkInstanceId + "]"); - } + Debug.LogWarning("Instance not found when handling Command message [netId=" + networkInstanceId + "]"); } else { var component = gameObject.GetComponent(); if (component == null) { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkIdentity deleted when handling Command message [netId=" + networkInstanceId + "]"); - } + Debug.LogWarning("NetworkIdentity deleted when handling Command message [netId=" + networkInstanceId + "]"); } else { @@ -1168,10 +1093,7 @@ private static void OnCommandMessage(QSBNetworkMessage netMsg) { if (component.ClientAuthorityOwner != netMsg.Connection) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Command for object without authority [netId=" + networkInstanceId + "]"); - } + Debug.LogWarning("Command for object without authority [netId=" + networkInstanceId + "]"); return; } } @@ -1269,10 +1191,7 @@ public static void DestroyPlayersForConnection(QSBNetworkConnection conn) { if (conn.PlayerControllers.Count == 0) { - if (LogFilter.logWarn) - { - Debug.LogWarning("Empty player list given to NetworkServer.Destroy(), nothing to do."); - } + Debug.LogWarning("Empty player list given to NetworkServer.Destroy(), nothing to do."); } else { @@ -1332,10 +1251,7 @@ private static void DestroyObject(GameObject obj) private static void DestroyObject(QSBNetworkIdentity uv, bool destroyServerObject) { - if (LogFilter.logDebug) - { - Debug.Log("DestroyObject instance:" + uv.NetId); - } + Debug.Log("DestroyObject instance:" + uv.NetId); if (objects.ContainsKey(uv.NetId)) { objects.Remove(uv.NetId); @@ -1484,16 +1400,13 @@ internal bool InvokeHandlerOnServer(QSBULocalConnectionToServer conn, short msgT } else { - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Local invoke: Failed to find local connection to invoke handler on [connectionId=", conn.connectionId, "] for MsgId:", msgType - })); - } + })); result = false; } return result; @@ -1517,16 +1430,13 @@ public static bool SpawnObjects() { if (ValidateSceneObject(networkIdentity)) { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "SpawnObjects sceneId:", networkIdentity.SceneId, " name:", networkIdentity.gameObject.name - })); - } + })); networkIdentity.Reset(); networkIdentity.gameObject.SetActive(true); } diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index 451aceea8..bcbc74bc7 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -51,10 +51,7 @@ public virtual void Initialize() connectionConfig.AddChannel(QosType.Unreliable); hostTopology = new HostTopology(connectionConfig, 8); } - if (LogFilter.logDebug) - { - Debug.Log("NetworkServerSimple initialize."); - } + Debug.Log("NetworkServerSimple initialize."); } } @@ -89,16 +86,13 @@ public bool Listen(string ipAddress, int serverListenPort) } else { - if (LogFilter.logDebug) + Debug.Log(string.Concat(new object[] { - Debug.Log(string.Concat(new object[] - { "NetworkServerSimple listen: ", ipAddress, ":", listenPort - })); - } + })); result = true; } return result; @@ -126,10 +120,7 @@ public bool Listen(int serverListenPort, HostTopology topology) } else { - if (LogFilter.logDebug) - { - Debug.Log("NetworkServerSimple listen " + listenPort); - } + Debug.Log("NetworkServerSimple listen " + listenPort); result = true; } return result; @@ -139,25 +130,16 @@ public void ListenRelay(string relayIp, int relayPort, NetworkID netGuid, Source { Initialize(); serverHostId = NetworkTransport.AddHost(hostTopology, listenPort); - if (LogFilter.logDebug) - { - Debug.Log("Server Host Slot Id: " + serverHostId); - } + Debug.Log("Server Host Slot Id: " + serverHostId); Update(); NetworkTransport.ConnectAsNetworkHost(serverHostId, relayIp, relayPort, netGuid, sourceId, nodeId, out var b); m_RelaySlotId = 0; - if (LogFilter.logDebug) - { - Debug.Log("Relay Slot Id: " + m_RelaySlotId); - } + Debug.Log("Relay Slot Id: " + m_RelaySlotId); } public void Stop() { - if (LogFilter.logDebug) - { - Debug.Log("NetworkServerSimple stop "); - } + Debug.Log("NetworkServerSimple stop "); NetworkTransport.RemoveHost(serverHostId); serverHostId = -1; } @@ -192,24 +174,15 @@ public void Update() networkEventType = NetworkTransport.ReceiveRelayEventFromHost(serverHostId, out var b); if (networkEventType != NetworkEventType.Nothing) { - if (LogFilter.logDebug) - { - Debug.Log("NetGroup event:" + networkEventType); - } + Debug.Log("NetGroup event:" + networkEventType); } if (networkEventType == NetworkEventType.ConnectEvent) { - if (LogFilter.logDebug) - { - Debug.Log("NetGroup server connected"); - } + Debug.Log("NetGroup server connected"); } if (networkEventType == NetworkEventType.DisconnectEvent) { - if (LogFilter.logDebug) - { - Debug.Log("NetGroup server disconnected"); - } + Debug.Log("NetGroup server disconnected"); } } do @@ -245,10 +218,7 @@ public void Update() break; default: - if (LogFilter.logError) - { - Debug.LogError("Unknown network message type received: " + networkEventType); - } + Debug.LogError("Unknown network message type received: " + networkEventType); break; } } @@ -308,10 +278,7 @@ public bool RemoveConnectionAtIndex(int connectionId) private void HandleConnect(int connectionId, byte error) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkServerSimple accepted client:" + connectionId); - } + Debug.Log("NetworkServerSimple accepted client:" + connectionId); if (error != 0) { OnConnectError(connectionId, error); @@ -334,10 +301,7 @@ private void HandleConnect(int connectionId, byte error) private void HandleDisconnect(int connectionId, byte error) { - if (LogFilter.logDebug) - { - Debug.Log("NetworkServerSimple disconnect client:" + connectionId); - } + Debug.Log("NetworkServerSimple disconnect client:" + connectionId); var networkConnection = FindConnection(connectionId); if (networkConnection != null) { @@ -347,26 +311,20 @@ private void HandleDisconnect(int connectionId, byte error) if (error != 6) { m_Connections[connectionId] = null; - if (LogFilter.logError) + Debug.LogError(string.Concat(new object[] { - Debug.LogError(string.Concat(new object[] - { "Server client disconnect error, connectionId: ", connectionId, " error: ", (NetworkError)error - })); - } + })); OnDisconnectError(networkConnection, error); return; } } networkConnection.Disconnect(); m_Connections[connectionId] = null; - if (LogFilter.logDebug) - { - Debug.Log("Server lost client:" + connectionId); - } + Debug.Log("Server lost client:" + connectionId); OnDisconnected(networkConnection); } } @@ -376,10 +334,7 @@ private void HandleData(int connectionId, int channelId, int receivedSize, byte var networkConnection = FindConnection(connectionId); if (networkConnection == null) { - if (LogFilter.logError) - { - Debug.LogError("HandleData Unknown connectionId:" + connectionId); - } + Debug.LogError("HandleData Unknown connectionId:" + connectionId); } else { diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index 90420f79d..93c996881 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -1,7 +1,6 @@ using QuantumUNET.Messages; using QuantumUNET.Transport; using UnityEngine; -using UnityEngine.Networking; namespace QuantumUNET { @@ -27,10 +26,7 @@ public override bool SendBytes(byte[] bytes, int numBytes, int channelId) bool result; if (numBytes <= 0) { - if (LogFilter.logError) - { - Debug.LogError("LocalConnection:SendBytes cannot send zero bytes"); - } + Debug.LogError("LocalConnection:SendBytes cannot send zero bytes"); result = false; } else diff --git a/QuantumUNET/Transport/QSBNetworkReader.cs b/QuantumUNET/Transport/QSBNetworkReader.cs index cb0a95148..e5ba572e9 100644 --- a/QuantumUNET/Transport/QSBNetworkReader.cs +++ b/QuantumUNET/Transport/QSBNetworkReader.cs @@ -398,10 +398,7 @@ public Transform ReadTransform() var gameObject = QSBClientScene.FindLocalObject(networkInstanceId); if (gameObject == null) { - if (LogFilter.logDebug) - { - Debug.Log("ReadTransform netId:" + networkInstanceId); - } + Debug.Log("ReadTransform netId:" + networkInstanceId); result = null; } else @@ -433,10 +430,7 @@ public GameObject ReadGameObject() } if (gameObject == null) { - if (LogFilter.logDebug) - { - Debug.Log("ReadGameObject netId:" + networkInstanceId + "go: null"); - } + Debug.Log("ReadGameObject netId:" + networkInstanceId + "go: null"); } result = gameObject; } @@ -464,10 +458,7 @@ public QSBNetworkIdentity ReadNetworkIdentity() } if (gameObject == null) { - if (LogFilter.logDebug) - { - Debug.Log("ReadNetworkIdentity netId:" + networkInstanceId + "go: null"); - } + Debug.Log("ReadNetworkIdentity netId:" + networkInstanceId + "go: null"); result = null; } else diff --git a/QuantumUNET/Transport/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs index b5f4073bf..367cb44ac 100644 --- a/QuantumUNET/Transport/QSBNetworkWriter.cs +++ b/QuantumUNET/Transport/QSBNetworkWriter.cs @@ -222,10 +222,7 @@ public void Write(byte[] buffer, int count) { if (count > 65535) { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); } else { @@ -237,10 +234,7 @@ public void Write(byte[] buffer, int offset, int count) { if (count > 65535) { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } + Debug.LogError("NetworkWriter Write: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); } else { @@ -256,10 +250,7 @@ public void WriteBytesAndSize(byte[] buffer, int count) } else if (count > 65535) { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); - } + Debug.LogError("NetworkWriter WriteBytesAndSize: buffer is too large (" + count + ") bytes. The maximum buffer size is 64K bytes."); } else { @@ -276,10 +267,7 @@ public void WriteBytesFull(byte[] buffer) } else if (buffer.Length > 65535) { - if (LogFilter.logError) - { - Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); - } + Debug.LogError("NetworkWriter WriteBytes: buffer is too large (" + buffer.Length + ") bytes. The maximum buffer size is 64K bytes."); } else { @@ -420,10 +408,7 @@ public void Write(Transform value) } else { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); - } + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); WritePackedUInt32(0U); } } @@ -444,10 +429,7 @@ public void Write(GameObject value) } else { - if (LogFilter.logWarn) - { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); - } + Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); WritePackedUInt32(0U); } } From 044f60046a73abbaafacd804386c9e8142b718d3 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 18 Dec 2020 20:28:22 +0000 Subject: [PATCH 192/207] cleanup --- QSB/ElevatorSync/ElevatorPatches.cs | 5 +---- QSB/OrbSync/OrbManager.cs | 5 +---- QSB/SectorSync/QSBSectorManager.cs | 5 +---- QSB/TimeSync/WakeUpPatches.cs | 5 +---- QSB/TimeSync/WakeUpSync.cs | 15 +++------------ QSB/TransformSync/NomaiOrbTransformSync.cs | 5 +---- QSB/TransformSync/PlayerTransformSync.cs | 5 ++++- QSB/WorldSync/QSBWorldSync.cs | 15 +++------------ QuantumUNET/Components/QSBNetworkAnimator.cs | 5 +---- QuantumUNET/Components/QSBNetworkIdentity.cs | 20 ++++---------------- QuantumUNET/QSBNetworkCRC.cs | 10 ++-------- QuantumUNET/QSBNetworkClient.cs | 5 +---- QuantumUNET/QSBNetworkServer.cs | 20 ++++---------------- 13 files changed, 27 insertions(+), 93 deletions(-) diff --git a/QSB/ElevatorSync/ElevatorPatches.cs b/QSB/ElevatorSync/ElevatorPatches.cs index 0a299787e..650373575 100644 --- a/QSB/ElevatorSync/ElevatorPatches.cs +++ b/QSB/ElevatorSync/ElevatorPatches.cs @@ -15,9 +15,6 @@ public static void StartLift(Elevator __instance) GlobalMessenger.FireEvent(EventNames.QSBStartLift, id, isGoingUp); } - public override void DoPatches() - { - QSBCore.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); - } + public override void DoPatches() => QSBCore.Helper.HarmonyHelper.AddPostfix("StartLift", typeof(ElevatorPatches), nameof(StartLift)); } } \ No newline at end of file diff --git a/QSB/OrbSync/OrbManager.cs b/QSB/OrbSync/OrbManager.cs index 878f81db7..27556b3f3 100644 --- a/QSB/OrbSync/OrbManager.cs +++ b/QSB/OrbSync/OrbManager.cs @@ -11,10 +11,7 @@ public class OrbManager : MonoBehaviour { public static OrbManager Instance { get; private set; } - private void Awake() - { - Instance = this; - } + private void Awake() => Instance = this; private void BuildOrbSlots() { diff --git a/QSB/SectorSync/QSBSectorManager.cs b/QSB/SectorSync/QSBSectorManager.cs index 55a13380f..3420b9579 100644 --- a/QSB/SectorSync/QSBSectorManager.cs +++ b/QSB/SectorSync/QSBSectorManager.cs @@ -24,10 +24,7 @@ public void Awake() DebugLog.DebugWrite("Sector Manager ready.", MessageType.Success); } - public void OnDestroy() - { - QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); - } + public void OnDestroy() => QSBSceneManager.OnUniverseSceneLoaded -= (OWScene scene) => RebuildSectors(); public void RebuildSectors() { diff --git a/QSB/TimeSync/WakeUpPatches.cs b/QSB/TimeSync/WakeUpPatches.cs index 8e49c6428..6dd72b316 100644 --- a/QSB/TimeSync/WakeUpPatches.cs +++ b/QSB/TimeSync/WakeUpPatches.cs @@ -16,9 +16,6 @@ public static bool OnStartOfTimeLoopPrefix(ref PlayerCameraEffectController __in return false; } - public override void DoPatches() - { - QSBCore.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); - } + public override void DoPatches() => QSBCore.Helper.HarmonyHelper.AddPrefix("OnStartOfTimeLoop", typeof(WakeUpPatches), nameof(OnStartOfTimeLoopPrefix)); } } \ No newline at end of file diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index c3fc7689c..f0b60033e 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -27,10 +27,7 @@ private enum State { NotLoaded, Loaded, FastForwarding, Pausing } private int _localLoopCount; private int _serverLoopCount; - public override void OnStartLocalPlayer() - { - LocalInstance = this; - } + public override void OnStartLocalPlayer() => LocalInstance = this; public void Start() { @@ -77,10 +74,7 @@ private void OnSceneLoaded(OWScene scene, bool isInUniverse) } } - private void OnLoopStart() - { - _localLoopCount++; - } + private void OnLoopStart() => _localLoopCount++; private void Init() { @@ -97,10 +91,7 @@ private void Init() } } - private void SendServerTime() - { - GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); - } + private void SendServerTime() => GlobalMessenger.FireEvent(EventNames.QSBServerTime, Time.timeSinceLevelLoad, _localLoopCount); public void OnClientReceiveMessage(ServerTimeMessage message) { diff --git a/QSB/TransformSync/NomaiOrbTransformSync.cs b/QSB/TransformSync/NomaiOrbTransformSync.cs index ed23b1933..fb9b15f34 100644 --- a/QSB/TransformSync/NomaiOrbTransformSync.cs +++ b/QSB/TransformSync/NomaiOrbTransformSync.cs @@ -29,10 +29,7 @@ private void OnReady() _isReady = true; } - public void OnDestroy() - { - QSBWorldSync.OrbSyncList.Remove(this); - } + public void OnDestroy() => QSBWorldSync.OrbSyncList.Remove(this); protected void Init() { diff --git a/QSB/TransformSync/PlayerTransformSync.cs b/QSB/TransformSync/PlayerTransformSync.cs index 086b96d7f..f2ec899ae 100644 --- a/QSB/TransformSync/PlayerTransformSync.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -10,7 +10,10 @@ public class PlayerTransformSync : TransformSync { public static PlayerTransformSync LocalInstance { get; private set; } - static PlayerTransformSync() => AnimControllerPatch.Init(); + static PlayerTransformSync() + { + AnimControllerPatch.Init(); + } public override void OnStartLocalPlayer() { diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 1399849da..f31f21a83 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -27,20 +27,11 @@ public static void AddWorldObject(WorldObject worldObject) WorldObjects.Add(worldObject); } - public static IEnumerable GetWorldObjects() - { - return WorldObjects.OfType(); - } + public static IEnumerable GetWorldObjects() => WorldObjects.OfType(); - public static T GetWorldObject(int id) where T : WorldObject - { - return GetWorldObjects().FirstOrDefault(x => x.ObjectId == id); - } + public static T GetWorldObject(int id) where T : WorldObject => GetWorldObjects().FirstOrDefault(x => x.ObjectId == id); - public static void RemoveWorldObjects() where T : WorldObject - { - WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); - } + public static void RemoveWorldObjects() where T : WorldObject => WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); public static void HandleSlotStateChange(NomaiInterfaceSlot slot, NomaiInterfaceOrb affectingOrb, bool state) { diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index e4865c053..18f9dd425 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -19,10 +19,7 @@ public class QSBNetworkAnimator : QSBNetworkBehaviour public Animator animator { - get - { - return m_Animator; - } + get => m_Animator; set { m_Animator = value; diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index c762fa2a1..3de262f90 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -27,26 +27,14 @@ public sealed class QSBNetworkIdentity : MonoBehaviour public bool ServerOnly { - get - { - return m_ServerOnly; - } - set - { - m_ServerOnly = value; - } + get => m_ServerOnly; + set => m_ServerOnly = value; } public bool LocalPlayerAuthority { - get - { - return m_LocalPlayerAuthority; - } - set - { - m_LocalPlayerAuthority = value; - } + get => m_LocalPlayerAuthority; + set => m_LocalPlayerAuthority = value; } public void SetRootIdentity(QSBNetworkIdentity newRoot) diff --git a/QuantumUNET/QSBNetworkCRC.cs b/QuantumUNET/QSBNetworkCRC.cs index cb8ec27b5..1732f18f5 100644 --- a/QuantumUNET/QSBNetworkCRC.cs +++ b/QuantumUNET/QSBNetworkCRC.cs @@ -22,14 +22,8 @@ internal static QSBNetworkCRC singleton public static bool scriptCRCCheck { - get - { - return singleton.m_ScriptCRCCheck; - } - set - { - singleton.m_ScriptCRCCheck = value; - } + get => singleton.m_ScriptCRCCheck; + set => singleton.m_ScriptCRCCheck = value; } public static void ReinitializeScriptCRCs(Assembly callingAssembly) diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index ee2b0b293..b8174e230 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -53,10 +53,7 @@ public QSBNetworkClient(QSBNetworkConnection conn) public int hostPort { - get - { - return m_HostPort; - } + get => m_HostPort; set { if (value < 0) diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index a54e09efd..85a9241e1 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -40,14 +40,8 @@ private QSBNetworkServer() public static bool useWebSockets { - get - { - return instance.m_SimpleServerSimple.useWebSockets; - } - set - { - instance.m_SimpleServerSimple.useWebSockets = value; - } + get => instance.m_SimpleServerSimple.useWebSockets; + set => instance.m_SimpleServerSimple.useWebSockets = value; } internal static QSBNetworkServer instance @@ -77,14 +71,8 @@ internal static QSBNetworkServer instance public static float maxDelay { - get - { - return instance.m_MaxDelay; - } - set - { - instance.InternalSetMaxDelay(value); - } + get => instance.m_MaxDelay; + set => instance.InternalSetMaxDelay(value); } public static Type networkConnectionClass => instance.m_SimpleServerSimple.networkConnectionClass; From db99c7c5ee5c1dc13ee39ac8251133b5d24e5c68 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 18 Dec 2020 20:32:16 +0000 Subject: [PATCH 193/207] cleanup - add readonly --- QSB/Animation/AnimationSync.cs | 6 +++--- QuantumUNET/Components/QSBNetworkAnimator.cs | 6 +++--- QuantumUNET/Components/QSBNetworkManagerUNET.cs | 10 +++++----- QuantumUNET/QSBClientScene.cs | 14 +++++++------- QuantumUNET/QSBNetworkClient.cs | 8 ++++---- QuantumUNET/QSBNetworkMessageHandlers.cs | 2 +- QuantumUNET/QSBNetworkServer.cs | 16 ++++++++-------- QuantumUNET/QSBNetworkServerSimple.cs | 4 ++-- QuantumUNET/QSBULocalConnectionToServer.cs | 2 +- QuantumUNET/Transport/QSBChannelBuffer.cs | 12 ++++++------ QuantumUNET/Transport/QSBChannelPacket.cs | 4 ++-- QuantumUNET/Transport/QSBNetworkReader.cs | 2 +- QuantumUNET/Transport/QSBNetworkWriter.cs | 2 +- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 9f75670c5..048398e8f 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -23,9 +23,9 @@ public class AnimationSync : PlayerSyncObject private CrouchSync _crouchSync; private RuntimeAnimatorController _chertController; - private RuntimeAnimatorController _eskerController; - private RuntimeAnimatorController _feldsparController; - private RuntimeAnimatorController _gabbroController; + private readonly RuntimeAnimatorController _eskerController; + private readonly RuntimeAnimatorController _feldsparController; + private readonly RuntimeAnimatorController _gabbroController; private RuntimeAnimatorController _riebeckController; public AnimatorMirror Mirror { get; private set; } diff --git a/QuantumUNET/Components/QSBNetworkAnimator.cs b/QuantumUNET/Components/QSBNetworkAnimator.cs index 18f9dd425..7b3e01082 100644 --- a/QuantumUNET/Components/QSBNetworkAnimator.cs +++ b/QuantumUNET/Components/QSBNetworkAnimator.cs @@ -6,9 +6,9 @@ namespace QuantumUNET.Components { public class QSBNetworkAnimator : QSBNetworkBehaviour { - private static QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); - private static QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); - private static QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); + private static readonly QSBAnimationMessage AnimationMessage = new QSBAnimationMessage(); + private static readonly QSBAnimationParametersMessage ParametersMessage = new QSBAnimationParametersMessage(); + private static readonly QSBAnimationTriggerMessage TriggersMessage = new QSBAnimationTriggerMessage(); private Animator m_Animator; private uint m_ParameterSendBits; diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index c0ecca70f..e94a5afcf 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -38,11 +38,11 @@ public class QSBNetworkManagerUNET : MonoBehaviour private ConnectionConfig m_ConnectionConfig; private GlobalConfig m_GlobalConfig; - private int m_MaxBufferedPackets = 16; - private bool m_AllowFragmentation = true; - private static QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); - private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); - private static QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); + private readonly int m_MaxBufferedPackets = 16; + private readonly bool m_AllowFragmentation = true; + private static readonly QSBAddPlayerMessage s_AddPlayerMessage = new QSBAddPlayerMessage(); + private static readonly QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); + private static readonly QSBErrorMessage s_ErrorMessage = new QSBErrorMessage(); private static AsyncOperation s_LoadingSceneAsync; private static QSBNetworkConnection s_ClientReadyConnection; private static string s_Address; diff --git a/QuantumUNET/QSBClientScene.cs b/QuantumUNET/QSBClientScene.cs index 20f9b5176..001490062 100644 --- a/QuantumUNET/QSBClientScene.cs +++ b/QuantumUNET/QSBClientScene.cs @@ -698,19 +698,19 @@ private static void CheckForOwner(QSBNetworkIdentity uv) private static bool s_IsSpawnFinished; - private static QSBNetworkScene s_NetworkScene = new QSBNetworkScene(); + private static readonly QSBNetworkScene s_NetworkScene = new QSBNetworkScene(); - private static QSBObjectSpawnSceneMessage s_ObjectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); + private static readonly QSBObjectSpawnSceneMessage s_ObjectSpawnSceneMessage = new QSBObjectSpawnSceneMessage(); - private static QSBObjectSpawnFinishedMessage s_ObjectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); + private static readonly QSBObjectSpawnFinishedMessage s_ObjectSpawnFinishedMessage = new QSBObjectSpawnFinishedMessage(); - private static QSBObjectDestroyMessage s_ObjectDestroyMessage = new QSBObjectDestroyMessage(); + private static readonly QSBObjectDestroyMessage s_ObjectDestroyMessage = new QSBObjectDestroyMessage(); - private static QSBObjectSpawnMessage s_ObjectSpawnMessage = new QSBObjectSpawnMessage(); + private static readonly QSBObjectSpawnMessage s_ObjectSpawnMessage = new QSBObjectSpawnMessage(); - private static QSBOwnerMessage s_OwnerMessage = new QSBOwnerMessage(); + private static readonly QSBOwnerMessage s_OwnerMessage = new QSBOwnerMessage(); - private static QSBClientAuthorityMessage s_ClientAuthorityMessage = new QSBClientAuthorityMessage(); + private static readonly QSBClientAuthorityMessage s_ClientAuthorityMessage = new QSBClientAuthorityMessage(); public const int ReconnectIdInvalid = -1; diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index b8174e230..a11672420 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -900,15 +900,15 @@ internal static void SetActive(bool state) private EndPoint m_RemoteEndPoint; - private static QSBCRCMessage s_CRCMessage = new QSBCRCMessage(); + private static readonly QSBCRCMessage s_CRCMessage = new QSBCRCMessage(); - private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); + private readonly QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); protected QSBNetworkConnection m_Connection; - private byte[] m_MsgBuffer; + private readonly byte[] m_MsgBuffer; - private NetworkReader m_MsgReader; + private readonly NetworkReader m_MsgReader; protected ConnectState m_AsyncConnect = ConnectState.None; diff --git a/QuantumUNET/QSBNetworkMessageHandlers.cs b/QuantumUNET/QSBNetworkMessageHandlers.cs index 9fa676b79..7dc6b734b 100644 --- a/QuantumUNET/QSBNetworkMessageHandlers.cs +++ b/QuantumUNET/QSBNetworkMessageHandlers.cs @@ -6,7 +6,7 @@ namespace QuantumUNET { internal class QSBNetworkMessageHandlers { - private Dictionary _msgHandlers = new Dictionary(); + private readonly Dictionary _msgHandlers = new Dictionary(); internal void RegisterHandlerSafe(short msgType, QSBNetworkMessageDelegate handler) { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index 85a9241e1..fdebdc8ff 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -1466,23 +1466,23 @@ private static void SendCrc(QSBNetworkConnection targetConnection) private static volatile QSBNetworkServer s_Instance; - private static object s_Sync = new UnityEngine.Object(); + private static readonly object s_Sync = new UnityEngine.Object(); private bool m_LocalClientActive; - private List m_LocalConnectionsFakeList = new List(); + private readonly List m_LocalConnectionsFakeList = new List(); private QSBULocalConnectionToClient m_LocalConnection = null; - private QSBNetworkScene m_NetworkScene; + private readonly QSBNetworkScene m_NetworkScene; - private HashSet m_ExternalConnections; + private readonly HashSet m_ExternalConnections; - private ServerSimpleWrapper m_SimpleServerSimple; + private readonly ServerSimpleWrapper m_SimpleServerSimple; private float m_MaxDelay = 0.1f; - private HashSet m_RemoveList; + private readonly HashSet m_RemoveList; private int m_RemoveListCount; @@ -1490,7 +1490,7 @@ private static void SendCrc(QSBNetworkConnection targetConnection) internal static ushort maxPacketSize; - private static QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); + private static readonly QSBRemovePlayerMessage s_RemovePlayerMessage = new QSBRemovePlayerMessage(); private class ServerSimpleWrapper : QSBNetworkServerSimple { @@ -1511,7 +1511,7 @@ public ServerSimpleWrapper(QSBNetworkServer server) public override void OnData(QSBNetworkConnection conn, int receivedSize, int channelId) => m_Server.OnData(conn, receivedSize, channelId); - private QSBNetworkServer m_Server; + private readonly QSBNetworkServer m_Server; } } } \ No newline at end of file diff --git a/QuantumUNET/QSBNetworkServerSimple.cs b/QuantumUNET/QSBNetworkServerSimple.cs index bcbc74bc7..83d7cedd6 100644 --- a/QuantumUNET/QSBNetworkServerSimple.cs +++ b/QuantumUNET/QSBNetworkServerSimple.cs @@ -406,7 +406,7 @@ public void DisconnectAllConnections() private bool m_Initialized = false; private int m_RelaySlotId = -1; - private List m_Connections = new List(); - private QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); + private readonly List m_Connections = new List(); + private readonly QSBNetworkMessageHandlers m_MessageHandlers = new QSBNetworkMessageHandlers(); } } \ No newline at end of file diff --git a/QuantumUNET/QSBULocalConnectionToServer.cs b/QuantumUNET/QSBULocalConnectionToServer.cs index 93c996881..16d849cbe 100644 --- a/QuantumUNET/QSBULocalConnectionToServer.cs +++ b/QuantumUNET/QSBULocalConnectionToServer.cs @@ -53,6 +53,6 @@ public override void GetStatsIn(out int numMsgs, out int numBytes) numBytes = 0; } - private QSBNetworkServer m_LocalServer; + private readonly QSBNetworkServer m_LocalServer; } } \ No newline at end of file diff --git a/QuantumUNET/Transport/QSBChannelBuffer.cs b/QuantumUNET/Transport/QSBChannelBuffer.cs index f20095ee4..fa17ba873 100644 --- a/QuantumUNET/Transport/QSBChannelBuffer.cs +++ b/QuantumUNET/Transport/QSBChannelBuffer.cs @@ -19,22 +19,22 @@ internal class QSBChannelBuffer : IDisposable public const int MaxBufferedPackets = 512; public float MaxDelay = 0.01f; - private QSBNetworkConnection _connection; + private readonly QSBNetworkConnection _connection; private QSBChannelPacket _currentPacket; private float _lastFlushTime; - private byte _channelId; + private readonly byte _channelId; private int _maxPacketSize; - private bool _isReliable; + private readonly bool _isReliable; private bool _allowFragmentation; private bool _isBroken; private int _maxPendingPacketCount; private const int _maxFreePacketCount = 512; - private Queue _pendingPackets; + private readonly Queue _pendingPackets; private static List _freePackets; internal static int _pendingPacketCount; private float _lastBufferedMessageCountTimer = Time.realtimeSinceStartup; - private static QSBNetworkWriter _sendWriter = new QSBNetworkWriter(); - private static QSBNetworkWriter _fragmentWriter = new QSBNetworkWriter(); + private static readonly QSBNetworkWriter _sendWriter = new QSBNetworkWriter(); + private static readonly QSBNetworkWriter _fragmentWriter = new QSBNetworkWriter(); private const int _packetHeaderReserveSize = 100; private bool _disposed; internal QSBNetBuffer _fragmentBuffer = new QSBNetBuffer(); diff --git a/QuantumUNET/Transport/QSBChannelPacket.cs b/QuantumUNET/Transport/QSBChannelPacket.cs index 253f93fe9..99518ce6b 100644 --- a/QuantumUNET/Transport/QSBChannelPacket.cs +++ b/QuantumUNET/Transport/QSBChannelPacket.cs @@ -7,8 +7,8 @@ namespace QuantumUNET.Transport internal struct QSBChannelPacket { private int m_Position; - private byte[] m_Buffer; - private bool m_IsReliable; + private readonly byte[] m_Buffer; + private readonly bool m_IsReliable; public QSBChannelPacket(int packetSize, bool isReliable) { diff --git a/QuantumUNET/Transport/QSBNetworkReader.cs b/QuantumUNET/Transport/QSBNetworkReader.cs index e5ba572e9..84d4a7fb2 100644 --- a/QuantumUNET/Transport/QSBNetworkReader.cs +++ b/QuantumUNET/Transport/QSBNetworkReader.cs @@ -9,7 +9,7 @@ namespace QuantumUNET.Transport { public class QSBNetworkReader { - private QSBNetBuffer m_buf; + private readonly QSBNetBuffer m_buf; private static byte[] s_StringReaderBuffer; private static Encoding s_Encoding; diff --git a/QuantumUNET/Transport/QSBNetworkWriter.cs b/QuantumUNET/Transport/QSBNetworkWriter.cs index 367cb44ac..8e7eab38d 100644 --- a/QuantumUNET/Transport/QSBNetworkWriter.cs +++ b/QuantumUNET/Transport/QSBNetworkWriter.cs @@ -450,7 +450,7 @@ public void StartMessage(short msgType) private const int k_MaxStringLength = 32768; - private QSBNetBuffer m_Buffer; + private readonly QSBNetBuffer m_Buffer; private static Encoding s_Encoding; From 55e17ec59bd6357a502aced086e1cdf519983a04 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Fri, 18 Dec 2020 21:00:22 +0000 Subject: [PATCH 194/207] moved files --- .../Events/DialogueConditionEvent.cs | 2 +- .../Events/DialogueConditionMessage.cs | 2 +- QSB/Events/QSBEventManager.cs | 1 - QSB/QSB.csproj | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) rename QSB/{DialogueConditionSync => ConversationSync}/Events/DialogueConditionEvent.cs (96%) rename QSB/{DialogueConditionSync => ConversationSync}/Events/DialogueConditionMessage.cs (92%) diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs b/QSB/ConversationSync/Events/DialogueConditionEvent.cs similarity index 96% rename from QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs rename to QSB/ConversationSync/Events/DialogueConditionEvent.cs index 13df65868..8a4f530ea 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionEvent.cs +++ b/QSB/ConversationSync/Events/DialogueConditionEvent.cs @@ -1,7 +1,7 @@ using QSB.Events; using QSB.WorldSync; -namespace QSB.DialogueConditionSync.Events +namespace QSB.ConversationSync.Events { public class DialogueConditionEvent : QSBEvent { diff --git a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs b/QSB/ConversationSync/Events/DialogueConditionMessage.cs similarity index 92% rename from QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs rename to QSB/ConversationSync/Events/DialogueConditionMessage.cs index 3e4249674..79e9f5095 100644 --- a/QSB/DialogueConditionSync/Events/DialogueConditionMessage.cs +++ b/QSB/ConversationSync/Events/DialogueConditionMessage.cs @@ -1,7 +1,7 @@ using QSB.Messaging; using QuantumUNET.Transport; -namespace QSB.DialogueConditionSync.Events +namespace QSB.ConversationSync.Events { public class DialogueConditionMessage : PlayerMessage { diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index 8dcb163d8..c41c16cd1 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -2,7 +2,6 @@ using QSB.Animation.Events; using QSB.ConversationSync.Events; using QSB.DeathSync.Events; -using QSB.DialogueConditionSync.Events; using QSB.ElevatorSync.Events; using QSB.GeyserSync.Events; using QSB.OrbSync.Events; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index f52a43426..07e1f0862 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -128,8 +128,8 @@ - - + + From 18050f2fa7e0b23151ab2fc1b126dfa2c991aa25 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 10:56:25 +0000 Subject: [PATCH 195/207] add fact sync and cleanup and fixes --- QSB/Animation/Events/CrouchEvent.cs | 4 ++ .../Events/ConversationEvent.cs | 4 ++ .../Events/ConversationStartEndEvent.cs | 6 +++ QSB/Events/EventNames.cs | 1 + QSB/Events/EventType.cs | 3 +- QSB/Events/QSBEvent.cs | 34 +++++++------- QSB/Events/QSBEventManager.cs | 4 +- QSB/LogSync/Events/RevealFactEvent.cs | 47 +++++++++++++++++++ QSB/LogSync/Events/RevealFactMessage.cs | 28 +++++++++++ QSB/LogSync/LogPatches.cs | 21 +++++++++ QSB/Patches/QSBPatchManager.cs | 4 +- QSB/Player/Events/PlayerStateMessage.cs | 1 - QSB/Player/Events/PlayerStatesRequestEvent.cs | 12 ++++- QSB/QSB.csproj | 4 ++ QSB/QSBNetworkManager.cs | 2 +- QSB/WorldSync/FactReveal.cs | 9 ++++ QSB/WorldSync/QSBWorldSync.cs | 23 +++++++++ QuantumUNET/Components/QSBNetworkTransform.cs | 5 +- 18 files changed, 189 insertions(+), 23 deletions(-) create mode 100644 QSB/LogSync/Events/RevealFactEvent.cs create mode 100644 QSB/LogSync/Events/RevealFactMessage.cs create mode 100644 QSB/LogSync/LogPatches.cs create mode 100644 QSB/WorldSync/FactReveal.cs diff --git a/QSB/Animation/Events/CrouchEvent.cs b/QSB/Animation/Events/CrouchEvent.cs index ff3afda86..4ba3826b0 100644 --- a/QSB/Animation/Events/CrouchEvent.cs +++ b/QSB/Animation/Events/CrouchEvent.cs @@ -21,6 +21,10 @@ public class CrouchEvent : QSBEvent public override void OnReceiveRemote(bool server, FloatMessage message) { + if (!QSBCore.HasWokenUp) + { + return; + } var animationSync = QSBPlayerManager.GetSyncObject(message.AboutId); animationSync?.HandleCrouch(message.Value); } diff --git a/QSB/ConversationSync/Events/ConversationEvent.cs b/QSB/ConversationSync/Events/ConversationEvent.cs index 5caf6f9f2..6fbeade50 100644 --- a/QSB/ConversationSync/Events/ConversationEvent.cs +++ b/QSB/ConversationSync/Events/ConversationEvent.cs @@ -23,6 +23,10 @@ public class ConversationEvent : QSBEvent public override void OnReceiveRemote(bool server, ConversationMessage message) { + if (!QSBCore.HasWokenUp) + { + return; + } switch (message.Type) { case ConversationType.Character: diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index 87db15de6..fb8b8ec2a 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -33,6 +33,12 @@ public override void OnReceiveRemote(bool server, ConversationStartEndMessage me DebugLog.ToConsole("Warning - Received conv. start/end event with char id -1.", MessageType.Warning); return; } + + if (!QSBCore.HasWokenUp) + { + return; + } + var dialogueTree = QSBWorldSync.OldDialogueTrees[message.CharacterId]; var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); diff --git a/QSB/Events/EventNames.cs b/QSB/Events/EventNames.cs index 32b341229..0e39f02f1 100644 --- a/QSB/Events/EventNames.cs +++ b/QSB/Events/EventNames.cs @@ -34,5 +34,6 @@ public static class EventNames public static string QSBConversationStartEnd = "QSBConversationStartEnd"; public static string QSBChangeAnimType = "QSBPlayInstrument"; public static string QSBServerSendPlayerStates = "QSBServerSendPlayerStates"; + public static string QSBRevealFact = "QSBRevealFact"; } } \ No newline at end of file diff --git a/QSB/Events/EventType.cs b/QSB/Events/EventType.cs index 31c8b9c48..27c013be7 100644 --- a/QSB/Events/EventType.cs +++ b/QSB/Events/EventType.cs @@ -24,6 +24,7 @@ public enum EventType Conversation, ConversationStartEnd, PlayInstrument, - DialogueCondition + DialogueCondition, + RevealFact } } \ No newline at end of file diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index a186fab86..35b8d2021 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -28,37 +28,39 @@ public virtual void OnReceiveLocal(bool server, T message) { } public void SendEvent(T message) { message.FromId = QSBPlayerManager.LocalPlayerId; - QSBCore.Helper.Events.Unity.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => Send(message)); + QSBCore.Helper.Events.Unity.RunWhen( + () => PlayerTransformSync.LocalInstance != null, + () => _eventHandler.SendToServer(message)); } - private void Send(T message) + private void OnReceive(bool isServer, T message) { - if (QSBNetworkServer.active) + /* Explanation : + * if is true, this message has been received on the server *server*. + * Therefore, we don't want to do any event handling code - that should be dealt + * with on the server *client* and any other client. So just forward the message + * onto all clients. This way, the server *server* just acts as the ditribution + * hub for all events. + */ + if (isServer) { _eventHandler.SendToAll(message); + return; } - else - { - _eventHandler.SendToServer(message); - } - } - private void OnReceive(bool isServer, T message) - { - if (isServer - && !message.OnlySendToServer - && message.FromId != QSBPlayerManager.LocalPlayerId) + if (message.OnlySendToServer && !QSBNetworkServer.active) { - _eventHandler.SendToAll(message); + return; } + if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { - OnReceiveLocal(isServer, message); + OnReceiveLocal(QSBNetworkServer.active, message); return; } - OnReceiveRemote(isServer, message); + OnReceiveRemote(QSBNetworkServer.active, message); } } } \ No newline at end of file diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index c41c16cd1..39751b012 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -4,6 +4,7 @@ using QSB.DeathSync.Events; using QSB.ElevatorSync.Events; using QSB.GeyserSync.Events; +using QSB.LogSync.Events; using QSB.OrbSync.Events; using QSB.Player.Events; using QSB.TimeSync.Events; @@ -44,7 +45,8 @@ public static void Init() new ConversationStartEndEvent(), new ChangeAnimTypeEvent(), new ServerSendPlayerStatesEvent(), - new DialogueConditionEvent() + new DialogueConditionEvent(), + new RevealFactEvent() }; _eventList.ForEach(ev => ev.SetupListener()); diff --git a/QSB/LogSync/Events/RevealFactEvent.cs b/QSB/LogSync/Events/RevealFactEvent.cs new file mode 100644 index 000000000..a6c6f0283 --- /dev/null +++ b/QSB/LogSync/Events/RevealFactEvent.cs @@ -0,0 +1,47 @@ +using QSB.Events; +using QSB.Utility; +using QSB.WorldSync; + +namespace QSB.LogSync.Events +{ + public class RevealFactEvent : QSBEvent + { + public override EventType Type => EventType.RevealFact; + + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBRevealFact, Handler); + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBRevealFact, Handler); + + private void Handler(string id, bool saveGame, bool showNotification) => SendEvent(CreateMessage(id, saveGame, showNotification)); + + private RevealFactMessage CreateMessage(string id, bool saveGame, bool showNotification) => new RevealFactMessage + { + AboutId = LocalPlayerId, + FactId = id, + SaveGame = saveGame, + ShowNotification = showNotification + }; + + public override void OnReceiveLocal(bool server, RevealFactMessage message) + { + DebugLog.DebugWrite($"GOT LOCAL FACT MESSAGE - {message.FactId} - isServer:{server}"); + if (server) + { + QSBWorldSync.AddFactReveal(message.FactId, message.SaveGame, message.ShowNotification); + } + } + + public override void OnReceiveRemote(bool server, RevealFactMessage message) + { + DebugLog.DebugWrite($"GOT REMOTE FACT MESSAGE - {message.FactId} - isServer:{server}"); + if (server) + { + QSBWorldSync.AddFactReveal(message.FactId, message.SaveGame, message.ShowNotification); + } + if (!QSBCore.HasWokenUp) + { + return; + } + Locator.GetShipLogManager().RevealFact(message.FactId, message.SaveGame, message.ShowNotification); + } + } +} diff --git a/QSB/LogSync/Events/RevealFactMessage.cs b/QSB/LogSync/Events/RevealFactMessage.cs new file mode 100644 index 000000000..33bcb6a2f --- /dev/null +++ b/QSB/LogSync/Events/RevealFactMessage.cs @@ -0,0 +1,28 @@ +using QSB.Messaging; +using QuantumUNET.Transport; + +namespace QSB.LogSync.Events +{ + public class RevealFactMessage : PlayerMessage + { + public string FactId { get; set; } + public bool SaveGame { get; set; } + public bool ShowNotification { get; set; } + + public override void Deserialize(QSBNetworkReader reader) + { + base.Deserialize(reader); + FactId = reader.ReadString(); + SaveGame = reader.ReadBoolean(); + ShowNotification = reader.ReadBoolean(); + } + + public override void Serialize(QSBNetworkWriter writer) + { + base.Serialize(writer); + writer.Write(FactId); + writer.Write(SaveGame); + writer.Write(ShowNotification); + } + } +} diff --git a/QSB/LogSync/LogPatches.cs b/QSB/LogSync/LogPatches.cs new file mode 100644 index 000000000..32e4ee59e --- /dev/null +++ b/QSB/LogSync/LogPatches.cs @@ -0,0 +1,21 @@ +using QSB.Events; +using QSB.Patches; + +namespace QSB.LogSync +{ + public class LogPatches : QSBPatch + { + public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; + + public static void RevealFact(string id, bool saveGame, bool showNotification, bool __result) + { + if (!__result) + { + return; + } + GlobalMessenger.FireEvent(EventNames.QSBRevealFact, id, saveGame, showNotification); + } + + public override void DoPatches() => QSBCore.Helper.HarmonyHelper.AddPostfix("RevealFact", typeof(LogPatches), nameof(RevealFact)); + } +} \ No newline at end of file diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 80c77fcea..098b6c1e8 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -2,6 +2,7 @@ using QSB.ConversationSync; using QSB.DeathSync; using QSB.ElevatorSync; +using QSB.LogSync; using QSB.OrbSync; using QSB.TimeSync; using QSB.Utility; @@ -27,7 +28,8 @@ public static void Init() new DeathPatches(), new ElevatorPatches(), new OrbPatches(), - new WakeUpPatches() + new WakeUpPatches(), + new LogPatches() }; DebugLog.DebugWrite("Patch Manager ready.", MessageType.Success); diff --git a/QSB/Player/Events/PlayerStateMessage.cs b/QSB/Player/Events/PlayerStateMessage.cs index 7317da16d..3af9a69c4 100644 --- a/QSB/Player/Events/PlayerStateMessage.cs +++ b/QSB/Player/Events/PlayerStateMessage.cs @@ -9,7 +9,6 @@ public class PlayerStateMessage : PlayerMessage public bool PlayerReady { get; set; } public State PlayerState { get; set; } - public override void Deserialize(QSBNetworkReader reader) { base.Deserialize(reader); diff --git a/QSB/Player/Events/PlayerStatesRequestEvent.cs b/QSB/Player/Events/PlayerStatesRequestEvent.cs index b37086b48..a0ec9159a 100644 --- a/QSB/Player/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Player/Events/PlayerStatesRequestEvent.cs @@ -24,7 +24,7 @@ public class PlayerStatesRequestEvent : QSBEvent public override void OnReceiveRemote(bool server, PlayerMessage message) { - DebugLog.DebugWrite($"Get state request from {message.FromId}"); + DebugLog.DebugWrite($"Get state request from {message.FromId} - isServer?{server}"); GlobalMessenger.FireEvent(EventNames.QSBServerSendPlayerStates); foreach (var item in QSBPlayerManager.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) @@ -32,10 +32,20 @@ public override void OnReceiveRemote(bool server, PlayerMessage message) GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.NetId.Value, item.ReferenceSector); } + if (!server) + { + return; + } + foreach (var condition in QSBWorldSync.DialogueConditions) { GlobalMessenger.FireEvent(EventNames.DialogueCondition, condition.Key, condition.Value); } + + foreach (var fact in QSBWorldSync.ShipLogFacts) + { + GlobalMessenger.FireEvent(EventNames.QSBRevealFact, fact.Id, fact.SaveGame, false); + } } } } \ No newline at end of file diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 07e1f0862..a767842ed 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -150,6 +150,9 @@ + + + @@ -226,6 +229,7 @@ + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 330cd918c..92eaba595 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -101,7 +101,6 @@ private void SetupNetworkId(GameObject go) ident.LocalPlayerAuthority = true; ident.SetValue("m_AssetId", go.GetComponent().assetId); ident.SetValue("m_SceneId", go.GetComponent().sceneId); - Destroy(go.GetComponent()); } private void SetupNetworkTransform(GameObject go) @@ -110,6 +109,7 @@ private void SetupNetworkTransform(GameObject go) trans.SendInterval = 0.1f; trans.SyncRotationAxis = QSBNetworkTransform.AxisSyncMode.AxisXYZ; Destroy(go.GetComponent()); + Destroy(go.GetComponent()); } public void OnDestroy() => diff --git a/QSB/WorldSync/FactReveal.cs b/QSB/WorldSync/FactReveal.cs new file mode 100644 index 000000000..6d8c42905 --- /dev/null +++ b/QSB/WorldSync/FactReveal.cs @@ -0,0 +1,9 @@ +namespace QSB.WorldSync +{ + public struct FactReveal + { + public string Id; + public bool SaveGame; + public bool ShowNotification; + } +} \ No newline at end of file diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index f31f21a83..6a816d145 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -15,6 +15,7 @@ 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(); private static readonly List WorldObjects = new List(); @@ -72,5 +73,27 @@ public static void SetDialogueCondition(string name, bool state) } DialogueConditions[name] = state; } + + public static void AddFactReveal(string id, bool saveGame, bool showNotification) + { + DebugLog.DebugWrite($"AddFactReveal {id}"); + if (!QSBCore.IsServer) + { + DebugLog.DebugWrite("Warning - Cannot write to fact list when not server!", MessageType.Warning); + return; + } + if (ShipLogFacts.Any(x => x.Id == id)) + { + DebugLog.DebugWrite($"Warning - Fact with id {id} already exists in list!", MessageType.Warning); + return; + } + DebugLog.DebugWrite($"adding {id} to shiplogs"); + ShipLogFacts.Add(new FactReveal + { + Id = id, + SaveGame = saveGame, + ShowNotification = showNotification + }); + } } } \ No newline at end of file diff --git a/QuantumUNET/Components/QSBNetworkTransform.cs b/QuantumUNET/Components/QSBNetworkTransform.cs index 7c9b7aac4..e4b07e99f 100644 --- a/QuantumUNET/Components/QSBNetworkTransform.cs +++ b/QuantumUNET/Components/QSBNetworkTransform.cs @@ -228,7 +228,10 @@ public static void HandleTransform(QSBNetworkMessage netMsg) component.UnserializeModeTransform(netMsg.Reader, false); component.LastSyncTime = Time.time; } - ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + else + { + ModConsole.OwmlConsole.WriteLine("Warning - HandleTransform netId:" + networkInstanceId + " is not for a valid player"); + } } } From 2bc1167b0aaa33c0bc6c59d7970fbf65c8ce8176 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 12:51:15 +0000 Subject: [PATCH 196/207] fix it fix it fix it fix it --- QSB/Animation/AnimationSync.cs | 1 - QSB/Animation/Events/ChangeAnimTypeEvent.cs | 4 ++++ QSB/Events/QSBEvent.cs | 11 ++++++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 048398e8f..ba8ab6021 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -66,7 +66,6 @@ private void LoadControllers() private void InitCommon(Transform body) { - DebugLog.DebugWrite("INIT COMMON"); if (QSBSceneManager.IsInUniverse) { LoadControllers(); diff --git a/QSB/Animation/Events/ChangeAnimTypeEvent.cs b/QSB/Animation/Events/ChangeAnimTypeEvent.cs index 1913e8c35..7cf57b524 100644 --- a/QSB/Animation/Events/ChangeAnimTypeEvent.cs +++ b/QSB/Animation/Events/ChangeAnimTypeEvent.cs @@ -22,6 +22,10 @@ public class ChangeAnimTypeEvent : QSBEvent> public override void OnReceiveRemote(bool server, EnumMessage message) { + if (!QSBCore.HasWokenUp || !QSBPlayerManager.GetPlayer(message.AboutId).IsReady) + { + return; + } QSBPlayerManager.GetPlayer(message.AboutId).AnimationSync.SetAnimationType(message.Value); QSBPlayerManager.GetSyncObject(message.AboutId).CheckInstrumentProps(message.Value); } diff --git a/QSB/Events/QSBEvent.cs b/QSB/Events/QSBEvent.cs index 35b8d2021..6d42c287f 100644 --- a/QSB/Events/QSBEvent.cs +++ b/QSB/Events/QSBEvent.cs @@ -1,7 +1,10 @@ -using QSB.Messaging; +using OWML.Common; +using QSB.Messaging; using QSB.Player; using QSB.TransformSync; +using QSB.Utility; using QuantumUNET; +using QuantumUNET.Components; namespace QSB.Events { @@ -53,6 +56,12 @@ private void OnReceive(bool isServer, T message) return; } + if (PlayerTransformSync.LocalInstance == null || PlayerTransformSync.LocalInstance.GetComponent() == null) + { + DebugLog.ToConsole($"Warning - Tried to handle message of type <{message.GetType().Name}> before localplayer was established.", MessageType.Warning); + return; + } + if (message.FromId == QSBPlayerManager.LocalPlayerId || QSBPlayerManager.IsBelongingToLocalPlayer(message.AboutId)) { From 983832193d3469062099e381a0d6f919250aa86e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 13:31:05 +0000 Subject: [PATCH 197/207] fixes --- QSB/Animation/AnimationSync.cs | 4 ++++ QSB/Animation/Events/PlayerSuitEvent.cs | 2 +- QSB/OrbSync/Events/OrbUserEvent.cs | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index ba8ab6021..4c3503ff2 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -163,6 +163,10 @@ private void SuitDown() public void SetSuitState(bool state) { + if (!Player.IsReady) + { + return; + } if (state) { SuitUp(); diff --git a/QSB/Animation/Events/PlayerSuitEvent.cs b/QSB/Animation/Events/PlayerSuitEvent.cs index 3c1b4bfc9..191b9d8f9 100644 --- a/QSB/Animation/Events/PlayerSuitEvent.cs +++ b/QSB/Animation/Events/PlayerSuitEvent.cs @@ -34,7 +34,7 @@ public override void OnReceiveRemote(bool server, ToggleMessage message) var player = QSBPlayerManager.GetPlayer(message.AboutId); player?.UpdateState(State.Suit, message.ToggleValue); - if (!QSBCore.HasWokenUp) + if (!QSBCore.HasWokenUp || !player.IsReady) { return; } diff --git a/QSB/OrbSync/Events/OrbUserEvent.cs b/QSB/OrbSync/Events/OrbUserEvent.cs index f3b6bb5d2..3cd6dd876 100644 --- a/QSB/OrbSync/Events/OrbUserEvent.cs +++ b/QSB/OrbSync/Events/OrbUserEvent.cs @@ -24,6 +24,18 @@ public class OrbUserEvent : QSBEvent ObjectId = id }; + public override void OnReceiveLocal(bool server, WorldObjectMessage message) + { + if (server) + { + HandleServer(message); + } + else + { + HandleClient(message); + } + } + public override void OnReceiveRemote(bool server, WorldObjectMessage message) { if (server) From 1d2e586d660d207269580ebe0cdf49f65a2b80aa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 14:44:03 +0000 Subject: [PATCH 198/207] split methods --- .../Events/ConversationStartEndEvent.cs | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs index fb8b8ec2a..88f22d8ea 100644 --- a/QSB/ConversationSync/Events/ConversationStartEndEvent.cs +++ b/QSB/ConversationSync/Events/ConversationStartEndEvent.cs @@ -42,35 +42,50 @@ public override void OnReceiveRemote(bool server, ConversationStartEndMessage me var dialogueTree = QSBWorldSync.OldDialogueTrees[message.CharacterId]; var animController = Resources.FindObjectsOfTypeAll().FirstOrDefault(x => x.GetValue("_dialogueTree") == dialogueTree); - // Make character face player and talk if (animController == default(CharacterAnimController)) { return; } + if (message.State) { - // Start talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = message.CharacterId; - animController.SetValue("_inConversation", true); - animController.SetValue("_playerInHeadZone", true); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Talking"); - } - dialogueTree.GetComponent().DisableInteraction(); + StartConversation(message.PlayerId, message.CharacterId, animController, dialogueTree); } else { - // Stop talking - QSBPlayerManager.GetPlayer(message.PlayerId).CurrentDialogueID = -1; - animController.SetValue("_inConversation", false); - animController.SetValue("_playerInHeadZone", false); - if (animController.GetValue("_hasTalkAnimation")) - { - animController.GetValue("_animator").SetTrigger("Idle"); - } - dialogueTree.GetComponent().EnableInteraction(); + EndConversation(message.PlayerId, animController, dialogueTree); + } + } + + private void StartConversation( + uint playerId, + int characterId, + CharacterAnimController controller, + CharacterDialogueTree tree) + { + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueID = characterId; + controller.SetValue("_inConversation", true); + controller.SetValue("_playerInHeadZone", true); + if (controller.GetValue("_hasTalkAnimation")) + { + controller.GetValue("_animator").SetTrigger("Talking"); + } + tree.GetComponent().DisableInteraction(); + } + + private void EndConversation( + uint playerId, + CharacterAnimController controller, + CharacterDialogueTree tree) + { + QSBPlayerManager.GetPlayer(playerId).CurrentDialogueID = -1; + controller.SetValue("_inConversation", false); + controller.SetValue("_playerInHeadZone", false); + if (controller.GetValue("_hasTalkAnimation")) + { + controller.GetValue("_animator").SetTrigger("Idle"); } + tree.GetComponent().EnableInteraction(); } } } \ No newline at end of file From 0212b785051af0a5bb8dc787c3a79c77ac5661c2 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 14:46:00 +0000 Subject: [PATCH 199/207] Update InstrumentsManager.cs --- QSB/Instruments/InstrumentsManager.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index ea89be2ef..8f6e47cf8 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -56,11 +56,8 @@ protected override void OnDestroy() private void OnGabbroTaunt() => StartInstrument(AnimationType.Gabbro); private void OnRiebeckTaunt() => StartInstrument(AnimationType.Riebeck); - private void SetupInstruments() - { - var bundle = QSBCore.InstrumentAssetBundle; - _chertDrum = MakeChertDrum(bundle); - } + private void SetupInstruments() + => _chertDrum = MakeChertDrum(QSBCore.InstrumentAssetBundle); private GameObject MakeChertDrum(AssetBundle bundle) { From efb59e627d847ad2aa57fac9bf4e9055b2ff053c Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 14:47:12 +0000 Subject: [PATCH 200/207] revert --- QSB/Instruments/InstrumentsManager.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/QSB/Instruments/InstrumentsManager.cs b/QSB/Instruments/InstrumentsManager.cs index 8f6e47cf8..ea89be2ef 100644 --- a/QSB/Instruments/InstrumentsManager.cs +++ b/QSB/Instruments/InstrumentsManager.cs @@ -56,8 +56,11 @@ protected override void OnDestroy() private void OnGabbroTaunt() => StartInstrument(AnimationType.Gabbro); private void OnRiebeckTaunt() => StartInstrument(AnimationType.Riebeck); - private void SetupInstruments() - => _chertDrum = MakeChertDrum(QSBCore.InstrumentAssetBundle); + private void SetupInstruments() + { + var bundle = QSBCore.InstrumentAssetBundle; + _chertDrum = MakeChertDrum(bundle); + } private GameObject MakeChertDrum(AssetBundle bundle) { From 6f095a0a64bba065771d116ecfc6ff36f06455b7 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 14:49:15 +0000 Subject: [PATCH 201/207] split into two lines --- QSB/TransformSync/TransformSync.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/QSB/TransformSync/TransformSync.cs b/QSB/TransformSync/TransformSync.cs index b40561396..c3127883d 100644 --- a/QSB/TransformSync/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -27,7 +27,8 @@ protected override void Start() { DebugLog.DebugWrite("start of " + GetType().Name); base.Start(); - var lowestBound = QSBPlayerManager.GetSyncObjects().Where(x => x.NetId.Value <= NetId.Value).OrderBy(x => x.NetId.Value).Last(); + var lowestBound = QSBPlayerManager.GetSyncObjects() + .Where(x => x.NetId.Value <= NetId.Value).OrderBy(x => x.NetId.Value).Last(); NetIdentity.SetRootIdentity(lowestBound.NetIdentity); DontDestroyOnLoad(gameObject); From 9c7041393fa0730f970f73c412fa8b3fe8cfa995 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 16:03:15 +0000 Subject: [PATCH 202/207] cleanup --- QSB/default-config.json | 2 +- QuantumUNET/Components/QSBNetworkIdentity.cs | 1 - QuantumUNET/Components/QSBNetworkManagerUNET.cs | 9 --------- QuantumUNET/QSBNetworkClient.cs | 7 ------- QuantumUNET/QSBNetworkServer.cs | 1 - 5 files changed, 1 insertion(+), 19 deletions(-) diff --git a/QSB/default-config.json b/QSB/default-config.json index f110ec1d1..5adb0ff1d 100644 --- a/QSB/default-config.json +++ b/QSB/default-config.json @@ -3,6 +3,6 @@ "settings": { "defaultServerIP": "localhost", "port": 7777, - "debugMode": true + "debugMode": false } } \ No newline at end of file diff --git a/QuantumUNET/Components/QSBNetworkIdentity.cs b/QuantumUNET/Components/QSBNetworkIdentity.cs index 3de262f90..9b62536bb 100644 --- a/QuantumUNET/Components/QSBNetworkIdentity.cs +++ b/QuantumUNET/Components/QSBNetworkIdentity.cs @@ -654,7 +654,6 @@ internal void OnUpdateVars(QSBNetworkReader reader, bool initialState) internal void SetLocalPlayer(short localPlayerControllerId) { - ModConsole.OwmlConsole.WriteLine($"SetLocalPlayer {localPlayerControllerId}"); IsLocalPlayer = true; PlayerControllerId = localPlayerControllerId; var hasAuthority = HasAuthority; diff --git a/QuantumUNET/Components/QSBNetworkManagerUNET.cs b/QuantumUNET/Components/QSBNetworkManagerUNET.cs index e94a5afcf..6c3d3c609 100644 --- a/QuantumUNET/Components/QSBNetworkManagerUNET.cs +++ b/QuantumUNET/Components/QSBNetworkManagerUNET.cs @@ -291,21 +291,12 @@ public QSBNetworkClient StartClient(ConnectionConfig config, int hostPort) ModConsole.OwmlConsole.WriteLine("Must set the Network Address field in the manager"); return null; } - ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] - { - "NetworkManager StartClient address:", - networkAddress, - " port:", - networkPort - })); if (useSimulator) { - ModConsole.OwmlConsole.WriteLine("connecting with simulator"); client.ConnectWithSimulator(networkAddress, networkPort, simulatedLatency, packetLossPercentage); } else { - ModConsole.OwmlConsole.WriteLine("connecting"); client.Connect(networkAddress, networkPort); } OnStartClient(client); diff --git a/QuantumUNET/QSBNetworkClient.cs b/QuantumUNET/QSBNetworkClient.cs index a11672420..b125df3e2 100644 --- a/QuantumUNET/QSBNetworkClient.cs +++ b/QuantumUNET/QSBNetworkClient.cs @@ -240,13 +240,6 @@ private static bool IsValidIpV6(string address) public void Connect(string serverIp, int serverPort) { PrepareForConnect(); - ModConsole.OwmlConsole.WriteLine(string.Concat(new object[] - { - "Client Connect: ", - serverIp, - ":", - serverPort - })); this.serverPort = serverPort; if (Application.platform == RuntimePlatform.WebGLPlayer) { diff --git a/QuantumUNET/QSBNetworkServer.cs b/QuantumUNET/QSBNetworkServer.cs index fdebdc8ff..8bb21b083 100644 --- a/QuantumUNET/QSBNetworkServer.cs +++ b/QuantumUNET/QSBNetworkServer.cs @@ -108,7 +108,6 @@ public static void Shutdown() internal void RegisterMessageHandlers() { - ModConsole.OwmlConsole.WriteLine("Register Message Handlers (NetworkServer)"); m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.Ready, new QSBNetworkMessageDelegate(OnClientReadyMessage)); m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.Command, new QSBNetworkMessageDelegate(OnCommandMessage)); m_SimpleServerSimple.RegisterHandlerSafe(QSBMsgType.LocalPlayerTransform, new QSBNetworkMessageDelegate(QSBNetworkTransform.HandleTransform)); From c11612461de2986cf3f8bab07367a276eba990c2 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 16:08:51 +0000 Subject: [PATCH 203/207] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 45d4bd2cf..34f36cb8f 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses t ## License +Parts of QuantumUNET Copyright (C) 2015-2019 Unity Technologies Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) This program is free software: you can redistribute it and/or modify From 0637b64a6af0df292a1163a83b9420dea40f4a79 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 16:09:03 +0000 Subject: [PATCH 204/207] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 34f36cb8f..cba53464a 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses t ## License Parts of QuantumUNET Copyright (C) 2015-2019 Unity Technologies + Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) This program is free software: you can redistribute it and/or modify From 6b2b13db712c5d4d682500e35d91ed339719acaa Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 16:14:48 +0000 Subject: [PATCH 205/207] Update LICENSE --- LICENSE | 620 +------------------------------------------------------- 1 file changed, 4 insertions(+), 616 deletions(-) diff --git a/LICENSE b/LICENSE index f4aa842ed..5c9b15973 100644 --- a/LICENSE +++ b/LICENSE @@ -1,619 +1,7 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 +Copyright (c) 2020 Henry Pointer (_nebula or misternebula), Aleksander Waage (AmazingAlek) and Ricardo Lopes (Raicuparta) - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - Preamble +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS \ No newline at end of file +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 2a1c88177fd02f42a7b651f055321d2d61f552ce Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 16:15:33 +0000 Subject: [PATCH 206/207] Update README.md --- README.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/README.md b/README.md index cba53464a..08fa8e5c8 100644 --- a/README.md +++ b/README.md @@ -2,25 +2,6 @@ Quantum Space Buddies (QSB) is a multiplayer mod for Outer Wilds. The mod uses the OWML mod loader and customized UNET code (internally referred to as QNet or QuantumUNET) for networking. -## License - -Parts of QuantumUNET Copyright (C) 2015-2019 Unity Technologies - -Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . - - [FAQs](#frequently-asked-questions) From 99bac5b22b8d6ab97ca583c33cecac0a77546961 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sat, 19 Dec 2020 16:17:50 +0000 Subject: [PATCH 207/207] change license --- QSB/QSBCore.cs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index e419261fa..6b266ce47 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -14,20 +14,9 @@ using UnityEngine; /* -Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see https://www.gnu.org/licenses/. + Copyright (C) 2020 Henry Pointer (_nebula / misternebula), Aleksander Waage (AmazingAlek), Ricardo Lopes (Raicuparta) + + Consult LICENSE file for full license. */ namespace QSB

          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≫d|iWhiJ*U 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

    2. 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≫d|iWhiJ*U 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