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();
- }
-
}
}