diff --git a/QSB.Messaging/MessageHandler.cs b/QSB.Messaging/MessageHandler.cs deleted file mode 100644 index d9e45a8e..00000000 --- a/QSB.Messaging/MessageHandler.cs +++ /dev/null @@ -1,21 +0,0 @@ -using UnityEngine; -using UnityEngine.Networking; - -namespace QSB.Messaging -{ - // Extend this to create new message handlers. - // You'll also need to create a new message type (add it to the enum). - public abstract class MessageHandler : MonoBehaviour - { - protected abstract MessageType Type { get; } - - private void Awake() - { - NetworkServer.RegisterHandler((short)Type, OnServerReceiveMessage); - NetworkManager.singleton.client.RegisterHandler((short)Type, OnClientReceiveMessage); - } - - protected abstract void OnClientReceiveMessage(NetworkMessage netMsg); - protected abstract void OnServerReceiveMessage(NetworkMessage netMsg); - } -} diff --git a/QSB.Messaging/Properties/AssemblyInfo.cs b/QSB.Messaging/Properties/AssemblyInfo.cs deleted file mode 100644 index 76e744a2..00000000 --- a/QSB.Messaging/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -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("QSB.Messaging")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("QSB.Messaging")] -[assembly: AssemblyCopyright("Copyright © 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("d6bb93aa-f405-48d5-9c4c-49c3f8e81e9a")] - -// 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.Messaging/QSB.Messaging.csproj b/QSB.Messaging/QSB.Messaging.csproj deleted file mode 100644 index dae3658e..00000000 --- a/QSB.Messaging/QSB.Messaging.csproj +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Debug - AnyCPU - {D6BB93AA-F405-48D5-9C4C-49C3F8E81E9A} - Library - Properties - QSB.Messaging - QSB.Messaging - 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.3.37\lib\net35\NAudio-Unity.dll - - - ..\packages\Json.Net.Unity3D.9.0.1\lib\net35\Newtonsoft.Json.dll - - - ..\packages\OWML.0.3.37\lib\net35\OWML.dll - - - ..\packages\OWML.0.3.37\lib\net35\OWML.Common.dll - - - ..\packages\OWML.0.3.37\lib\net35\OWML.ModHelper.dll - - - ..\packages\OWML.0.3.37\lib\net35\OWML.ModHelper.Assets.dll - - - ..\packages\OWML.0.3.37\lib\net35\OWML.ModHelper.Events.dll - - - ..\packages\OWML.0.3.37\lib\net35\OWML.ModHelper.Menus.dll - - - - - - - - - $(StartWorkingDirectory)\..\OuterWilds_Data\Managed\UnityEngine.dll - - - $(StartWorkingDirectory)\..\OuterWilds_Data\Managed\UnityEngine.CoreModule.dll - - - $(StartWorkingDirectory)\..\OuterWilds_Data\Managed\UnityEngine.Networking.dll - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/QSB.Messaging/QSB.Messaging.csproj.user b/QSB.Messaging/QSB.Messaging.csproj.user deleted file mode 100644 index 2fc254b2..00000000 --- a/QSB.Messaging/QSB.Messaging.csproj.user +++ /dev/null @@ -1,9 +0,0 @@ - - - - C:\Program Files\Epic Games\OuterWilds\OWML - - - ProjectFiles - - \ No newline at end of file diff --git a/QSB.Messaging/packages.config b/QSB.Messaging/packages.config deleted file mode 100644 index e002cd3f..00000000 --- a/QSB.Messaging/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/QSB.sln b/QSB.sln index 35bb63ff..a228a92f 100644 --- a/QSB.sln +++ b/QSB.sln @@ -5,8 +5,6 @@ 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}") = "QSB.Messaging", "QSB.Messaging\QSB.Messaging.csproj", "{D6BB93AA-F405-48D5-9C4C-49C3F8E81E9A}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -17,10 +15,6 @@ 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 - {D6BB93AA-F405-48D5-9C4C-49C3F8E81E9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D6BB93AA-F405-48D5-9C4C-49C3F8E81E9A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D6BB93AA-F405-48D5-9C4C-49C3F8E81E9A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D6BB93AA-F405-48D5-9C4C-49C3F8E81E9A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/QSB/FloatAnimParam.cs b/QSB/Animation/AnimFloatParam.cs similarity index 86% rename from QSB/FloatAnimParam.cs rename to QSB/Animation/AnimFloatParam.cs index e948b50f..7afcb6d9 100644 --- a/QSB/FloatAnimParam.cs +++ b/QSB/Animation/AnimFloatParam.cs @@ -1,8 +1,8 @@ using UnityEngine; -namespace QSB +namespace QSB.Animation { - public class FloatAnimParam + public class AnimFloatParam { public float Current { get; private set; } public float Target { get; set; } diff --git a/QSB/AnimationSync.cs b/QSB/Animation/AnimationSync.cs similarity index 97% rename from QSB/AnimationSync.cs rename to QSB/Animation/AnimationSync.cs index 3c184047..10ea4ed6 100644 --- a/QSB/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.Animation { public class AnimationSync : NetworkBehaviour { diff --git a/QSB/AnimatorMirror.cs b/QSB/Animation/AnimatorMirror.cs similarity index 91% rename from QSB/AnimatorMirror.cs rename to QSB/Animation/AnimatorMirror.cs index 3a50fac4..e4426f43 100644 --- a/QSB/AnimatorMirror.cs +++ b/QSB/Animation/AnimatorMirror.cs @@ -2,7 +2,7 @@ using System.Linq; using UnityEngine; -namespace QSB +namespace QSB.Animation { public class AnimatorMirror : MonoBehaviour { @@ -12,7 +12,7 @@ namespace QSB private Animator _to; private bool _isRunning; - private readonly Dictionary _floatParams = new Dictionary(); + private readonly Dictionary _floatParams = new Dictionary(); public void Init(Animator from, Animator to) { @@ -28,7 +28,7 @@ namespace QSB } foreach (var param in _from.parameters.Where(p => p.type == AnimatorControllerParameterType.Float)) { - _floatParams.Add(param.name, new FloatAnimParam()); + _floatParams.Add(param.name, new AnimFloatParam()); } _isRunning = true; } diff --git a/QSB/Helpers.cs b/QSB/Helpers.cs deleted file mode 100644 index ac62037a..00000000 --- a/QSB/Helpers.cs +++ /dev/null @@ -1,33 +0,0 @@ -using UnityEngine; - -namespace QSB -{ - static class Helpers - { - // Stolen from here: https://gist.github.com/maxattack/4c7b4de00f5c1b95a33b - public static Quaternion QuaternionSmoothDamp(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/Messaging/MessageHandler.cs b/QSB/Messaging/MessageHandler.cs new file mode 100644 index 00000000..5723ee85 --- /dev/null +++ b/QSB/Messaging/MessageHandler.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine.Networking; + +namespace QSB.Messaging +{ + // Extend this to create new message handlers. + public class MessageHandler where T : QSBMessage, new() + { + public event Action OnClientReceiveMessage; + public event Action OnServerReceiveMessage; + + public MessageHandler() + { + var message = (T)Activator.CreateInstance(typeof(T)); + NetworkServer.RegisterHandler((short)message.MessageType, OnServerReceiveMessageHandler); + NetworkManager.singleton.client.RegisterHandler((short)message.MessageType, OnClientReceiveMessageHandler); + } + + public void SendToAll(T message) + { + NetworkServer.SendToAll((short)message.MessageType, message); + } + + public void SendToServer(T message) + { + NetworkManager.singleton.client.Send((short)message.MessageType, 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); + } + + } +} diff --git a/QSB.Messaging/MessageType.cs b/QSB/Messaging/MessageType.cs similarity index 84% rename from QSB.Messaging/MessageType.cs rename to QSB/Messaging/MessageType.cs index 927c4613..d0ccfd4b 100644 --- a/QSB.Messaging/MessageType.cs +++ b/QSB/Messaging/MessageType.cs @@ -5,7 +5,7 @@ namespace QSB.Messaging public enum MessageType { Sector = MsgType.Highest + 1, - WakeUp = MsgType.Highest + 2, + WakeUp = MsgType.Highest + 2 // Add other message types here, incrementing the value. } } diff --git a/QSB/Messaging/QSBMessage.cs b/QSB/Messaging/QSBMessage.cs new file mode 100644 index 00000000..63e9a24f --- /dev/null +++ b/QSB/Messaging/QSBMessage.cs @@ -0,0 +1,9 @@ +using UnityEngine.Networking; + +namespace QSB.Messaging +{ + public abstract class QSBMessage : MessageBase + { + public abstract MessageType MessageType { get; } + } +} diff --git a/QSB/PreserveTimeScale.cs b/QSB/PreserveTimeScale.cs index d6a1a7fb..2407a014 100644 --- a/QSB/PreserveTimeScale.cs +++ b/QSB/PreserveTimeScale.cs @@ -2,11 +2,11 @@ namespace QSB { - class PreserveTimeScale : QSBBehaviour + public class PreserveTimeScale : QSBBehaviour { - void Update() + private void Update() { - if (isPlayerAwake) + if (IsPlayerAwake) { Time.timeScale = 1; } diff --git a/QSB/QSB.cs b/QSB/QSB.cs index 89f79b6e..4210e469 100644 --- a/QSB/QSB.cs +++ b/QSB/QSB.cs @@ -16,12 +16,6 @@ namespace QSB Cursor.visible = true; } - private void Update() - { - Cursor.lockState = CursorLockMode.None; - Cursor.visible = true; - } - private void Start() { Helper = ModHelper; @@ -31,6 +25,6 @@ namespace QSB gameObject.AddComponent(); gameObject.AddComponent(); } - + } } diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 09ecb9d3..c883095f 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -94,33 +94,32 @@ - - - + + + - + + + + - - + + + + + - + - - - - {d6bb93aa-f405-48d5-9c4c-49c3f8e81e9a} - QSB.Messaging - - md "$(StartWorkingDirectory)\Mods\$(ProjectName)" @@ -128,7 +127,6 @@ md "$(StartWorkingDirectory)\Mods\$(ProjectName)\assets" del "$(StartWorkingDirectory)\Mods\$(ProjectName)\config.json" copy /y "$(TargetPath)" "$(StartWorkingDirectory)\Mods\$(ProjectName)" -copy /y "$(TargetDir)\QSB.Messaging.dll" "$(StartWorkingDirectory)\Mods\$(ProjectName)" copy /y "$(ProjectDir)\default-config.json" "$(StartWorkingDirectory)\Mods\$(ProjectName)" diff --git a/QSB/QSBBehaviour.cs b/QSB/QSBBehaviour.cs index dab6f98f..23e2fc55 100644 --- a/QSB/QSBBehaviour.cs +++ b/QSB/QSBBehaviour.cs @@ -3,9 +3,9 @@ using UnityEngine.SceneManagement; namespace QSB { - abstract class QSBBehaviour : MonoBehaviour + public abstract class QSBBehaviour : MonoBehaviour { - protected bool isPlayerAwake; + protected bool IsPlayerAwake; protected virtual void Awake() { @@ -27,7 +27,7 @@ namespace QSB protected virtual void PlayerWokeUp() { - isPlayerAwake = true; + IsPlayerAwake = true; } protected virtual void StartSolarSystem() { } diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index f76e8f3c..5d7fb8dc 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -1,17 +1,20 @@ -using UnityEngine; +using QSB.Animation; +using QSB.TransformSync; +using UnityEngine; using UnityEngine.Networking; namespace QSB { public class QSBNetworkManager : NetworkManager { - AssetBundle _assetBundle; - GameObject _shipPrefab; + private AssetBundle _assetBundle; + private GameObject _shipPrefab; + private void Awake() { _assetBundle = QSB.Helper.Assets.LoadBundle("assets/network"); playerPrefab = _assetBundle.LoadAsset("assets/networkplayer.prefab"); - playerPrefab.AddComponent(); + playerPrefab.AddComponent(); playerPrefab.AddComponent(); _shipPrefab = _assetBundle.LoadAsset("assets/networkship.prefab"); diff --git a/QSB/NetworkPlayer.cs b/QSB/TransformSync/PlayerTransformSync.cs similarity index 84% rename from QSB/NetworkPlayer.cs rename to QSB/TransformSync/PlayerTransformSync.cs index 3263c46c..9bc64e9c 100644 --- a/QSB/NetworkPlayer.cs +++ b/QSB/TransformSync/PlayerTransformSync.cs @@ -1,10 +1,11 @@ -using UnityEngine; +using QSB.Animation; +using UnityEngine; -namespace QSB +namespace QSB.TransformSync { - public class NetworkPlayer : TransformSync + public class PlayerTransformSync : TransformSync { - public static NetworkPlayer LocalInstance { get; private set; } + public static PlayerTransformSync LocalInstance { get; private set; } private Transform _playerModel; diff --git a/QSB/TransformSync/QuaternionHelper.cs b/QSB/TransformSync/QuaternionHelper.cs new file mode 100644 index 00000000..dfd87d5c --- /dev/null +++ b/QSB/TransformSync/QuaternionHelper.cs @@ -0,0 +1,33 @@ +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); + } + } +} diff --git a/QSB.Messaging/SectorMessage.cs b/QSB/TransformSync/SectorMessage.cs similarity index 67% rename from QSB.Messaging/SectorMessage.cs rename to QSB/TransformSync/SectorMessage.cs index 0fd00463..8013f4e4 100644 --- a/QSB.Messaging/SectorMessage.cs +++ b/QSB/TransformSync/SectorMessage.cs @@ -1,9 +1,12 @@ -using UnityEngine.Networking; +using QSB.Messaging; +using UnityEngine.Networking; -namespace QSB.Messaging +namespace QSB.TransformSync { - public class SectorMessage : MessageBase + public class SectorMessage : QSBMessage { + public override MessageType MessageType => MessageType.Sector; + public int SectorId; public uint SenderId; @@ -18,5 +21,6 @@ namespace QSB.Messaging writer.Write(SectorId); writer.Write(SenderId); } + } } \ No newline at end of file diff --git a/QSB/SectorSync.cs b/QSB/TransformSync/SectorSync.cs similarity index 63% rename from QSB/SectorSync.cs rename to QSB/TransformSync/SectorSync.cs index f23928a2..cba500fe 100644 --- a/QSB/SectorSync.cs +++ b/QSB/TransformSync/SectorSync.cs @@ -1,31 +1,36 @@ -using QSB.Messaging; -using System.Collections.Generic; +using System.Collections.Generic; +using QSB.Messaging; using UnityEngine; -using UnityEngine.Networking; -namespace QSB +namespace QSB.TransformSync { - public class SectorSync : MessageHandler + public class SectorSync : MonoBehaviour { - protected override MessageType Type => MessageType.Sector; + public static SectorSync Instance { get; private set; } - private static Dictionary _playerSectors; - private static Sector[] _allSectors; + private Dictionary _playerSectors; + private Sector[] _allSectors; + private MessageHandler _sectorHandler; private void Start() { + Instance = this; DebugLog.Screen("Start SectorSync"); _playerSectors = new Dictionary(); + _sectorHandler = new MessageHandler(); + _sectorHandler.OnClientReceiveMessage += OnClientReceiveMessage; + _sectorHandler.OnServerReceiveMessage += OnServerReceiveMessage; + QSB.Helper.HarmonyHelper.AddPrefix("AddSector", typeof(Patches), "PreAddSector"); } - public static void SetSector(uint id, Transform sectorTransform) + public void SetSector(uint id, Transform sectorTransform) { _playerSectors[id] = sectorTransform; } - public static void SetSector(uint id, Sector.Name sectorName) + public void SetSector(uint id, Sector.Name sectorName) { DebugLog.Screen("Gonna set sector"); @@ -36,16 +41,15 @@ namespace QSB SectorId = (int)sectorName, SenderId = id }; - NetworkManager.singleton.client.Send((short)MessageType.Sector, msg); - + _sectorHandler.SendToServer(msg); } - public static Transform GetSector(uint id) + public Transform GetSector(uint id) { return _playerSectors[id]; } - private static Transform FindSectorTransform(Sector.Name sectorName) + private Transform FindSectorTransform(Sector.Name sectorName) { if (_allSectors == null) { @@ -61,12 +65,11 @@ namespace QSB return null; } - protected override void OnClientReceiveMessage(NetworkMessage netMsg) + private void OnClientReceiveMessage(SectorMessage message) { DebugLog.Screen("OnClientReceiveMessage SectorSync"); - var msg = netMsg.ReadMessage(); - var sectorName = (Sector.Name)msg.SectorId; + var sectorName = (Sector.Name)message.SectorId; var sectorTransform = FindSectorTransform(sectorName); if (sectorTransform == null) @@ -75,15 +78,14 @@ namespace QSB return; } - DebugLog.Screen("Found sector", sectorName, ", setting for", msg.SenderId); - _playerSectors[msg.SenderId] = sectorTransform; + DebugLog.Screen("Found sector", sectorName, ", setting for", message.SenderId); + _playerSectors[message.SenderId] = sectorTransform; } - protected override void OnServerReceiveMessage(NetworkMessage netMsg) + private void OnServerReceiveMessage(SectorMessage message) { DebugLog.Screen("OnServerReceiveMessage SectorSync"); - var msg = netMsg.ReadMessage(); - NetworkServer.SendToAll((short)MessageType.Sector, msg); + _sectorHandler.SendToAll(message); } private static class Patches @@ -95,9 +97,9 @@ namespace QSB return; } - if (____occupantType == DynamicOccupant.Player && NetworkPlayer.LocalInstance != null) + if (____occupantType == DynamicOccupant.Player && PlayerTransformSync.LocalInstance != null) { - NetworkPlayer.LocalInstance.EnterSector(sector); + PlayerTransformSync.LocalInstance.EnterSector(sector); return; } diff --git a/QSB/ShipTransformSync.cs b/QSB/TransformSync/ShipTransformSync.cs similarity index 98% rename from QSB/ShipTransformSync.cs rename to QSB/TransformSync/ShipTransformSync.cs index b94bd74a..ea52a188 100644 --- a/QSB/ShipTransformSync.cs +++ b/QSB/TransformSync/ShipTransformSync.cs @@ -1,6 +1,6 @@ using UnityEngine; -namespace QSB +namespace QSB.TransformSync { public class ShipTransformSync : TransformSync { diff --git a/QSB/TransformSync.cs b/QSB/TransformSync/TransformSync.cs similarity index 79% rename from QSB/TransformSync.cs rename to QSB/TransformSync/TransformSync.cs index 1d8822c8..fb577adc 100644 --- a/QSB/TransformSync.cs +++ b/QSB/TransformSync/TransformSync.cs @@ -1,7 +1,7 @@ using UnityEngine; using UnityEngine.Networking; -namespace QSB +namespace QSB.TransformSync { public abstract class TransformSync : NetworkBehaviour { @@ -33,12 +33,12 @@ namespace QSB private void SetFirstSector() { _isSectorSetUp = true; - SectorSync.SetSector(netId.Value, Locator.GetAstroObject(AstroObject.Name.TimberHearth).transform); + SectorSync.Instance.SetSector(netId.Value, Locator.GetAstroObject(AstroObject.Name.TimberHearth).transform); } public void EnterSector(Sector sector) { - SectorSync.SetSector(netId.Value, sector.GetName()); + SectorSync.Instance.SetSector(netId.Value, sector.GetName()); } private void Update() @@ -48,7 +48,7 @@ namespace QSB return; } - var sectorTransform = SectorSync.GetSector(netId.Value); + var sectorTransform = SectorSync.Instance.GetSector(netId.Value); if (hasAuthority) { @@ -60,7 +60,7 @@ namespace QSB _syncedTransform.parent = sectorTransform; _syncedTransform.localPosition = Vector3.SmoothDamp(_syncedTransform.localPosition, transform.position, ref _positionSmoothVelocity, SmoothTime); - _syncedTransform.localRotation = Helpers.QuaternionSmoothDamp(_syncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); + _syncedTransform.localRotation = QuaternionHelper.SmoothDamp(_syncedTransform.localRotation, transform.rotation, ref _rotationSmoothVelocity, Time.deltaTime); } } } diff --git a/QSB.Messaging/WakeUpMessage.cs b/QSB/WakeUpMessage.cs similarity index 61% rename from QSB.Messaging/WakeUpMessage.cs rename to QSB/WakeUpMessage.cs index 6276b8fd..637755e9 100644 --- a/QSB.Messaging/WakeUpMessage.cs +++ b/QSB/WakeUpMessage.cs @@ -1,9 +1,12 @@ -using UnityEngine.Networking; +using QSB.Messaging; +using UnityEngine.Networking; -namespace QSB.Messaging +namespace QSB { - public class WakeUpMessage : MessageBase + public class WakeUpMessage : QSBMessage { + public override MessageType MessageType => MessageType.WakeUp; + private bool _wakeUp = true; public override void Deserialize(NetworkReader reader) @@ -15,5 +18,6 @@ namespace QSB.Messaging { writer.Write(_wakeUp); } + } } \ No newline at end of file diff --git a/QSB/WakeUpSync.cs b/QSB/WakeUpSync.cs index 17ed9129..24950e12 100644 --- a/QSB/WakeUpSync.cs +++ b/QSB/WakeUpSync.cs @@ -1,20 +1,20 @@ using OWML.ModHelper.Events; using QSB.Messaging; -using System; -using UnityEngine.Networking; +using UnityEngine; namespace QSB { - public class WakeUpSync : MessageHandler + public class WakeUpSync : MonoBehaviour { public static bool IsServer; - - protected override MessageType Type => MessageType.WakeUp; + private MessageHandler _wakeUpHandler; private void Start() { DebugLog.Screen("Start WakeUpSync"); GlobalMessenger.AddListener("WakeUp", OnWakeUp); + _wakeUpHandler = new MessageHandler(); + _wakeUpHandler.OnClientReceiveMessage += OnClientReceiveMessage; } private void OnWakeUp() @@ -22,12 +22,11 @@ namespace QSB DebugLog.Screen("Sending wakeup to all my friends"); if (IsServer) { - var message = new WakeUpMessage(); - NetworkServer.SendToAll((short)MessageType.WakeUp, message); + _wakeUpHandler.SendToAll(new WakeUpMessage()); } } - protected override void OnClientReceiveMessage(NetworkMessage netMsg) + private void OnClientReceiveMessage(WakeUpMessage message) { if (IsServer) { @@ -56,10 +55,5 @@ namespace QSB GlobalMessenger.FireEvent("TakeFirstFlashbackSnapshot"); } - protected override void OnServerReceiveMessage(NetworkMessage netMsg) - { - throw new NotImplementedException(); - } - } }