diff --git a/QSB/ElevatorSync/ElevatorManager.cs b/QSB/ElevatorSync/ElevatorManager.cs index a292eeff..6227d889 100644 --- a/QSB/ElevatorSync/ElevatorManager.cs +++ b/QSB/ElevatorSync/ElevatorManager.cs @@ -18,7 +18,7 @@ namespace QSB.ElevatorSync public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; - private void OnSceneLoaded(OWScene scene, bool isInUniverse) => QSBWorldSync.Init(ref _elevators); + private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _elevators = QSBWorldSync.Init(); public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); } diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index 35f5e955..6aba06fe 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -22,9 +22,9 @@ namespace QSB.QuantumSync private void OnSceneLoaded(OWScene scene, bool isInUniverse) { - QSBWorldSync.Init(ref _socketedQuantumObjects); - QSBWorldSync.Init(ref _quantumSockets); - QSBWorldSync.Init(ref _multiStateQuantumObjects); + _socketedQuantumObjects = QSBWorldSync.Init(); + _quantumSockets = QSBWorldSync.Init(); + _multiStateQuantumObjects = QSBWorldSync.Init(); } public int GetId(SocketedQuantumObject obj) => _socketedQuantumObjects.IndexOf(obj); diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index af111bd5..4a1b870a 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -31,25 +31,24 @@ namespace QSB.WorldSync public static IEnumerable GetWorldObjects() => WorldObjects.OfType(); - public static T GetWorldObject(int id) where T : WorldObject where U : UnityEngine.Object - => GetWorldObjects().FirstOrDefault(x => x.ObjectId == id); + public static TWorldObject GetWorldObject(int id) + where TWorldObject : WorldObject + where TUnityObject : UnityEngine.Object + => GetWorldObjects().FirstOrDefault(x => x.ObjectId == id); - public static void RemoveWorldObjects() where T : WorldObject where U : UnityEngine.Object - => WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); + public static void RemoveWorldObjects() + where TWorldObject : WorldObject + where TUnityObject : UnityEngine.Object + => WorldObjects.RemoveAll(x => x.GetType() == typeof(TWorldObject)); - public static void Init(ref List list) - where QSBType : WorldObject - where BaseType : UnityEngine.Object - => list = Init(); - - public static List Init() - where QSBType : WorldObject - where BaseType : UnityEngine.Object + public static List Init() + where TWorldObject : WorldObject + where TUnityObject : UnityEngine.Object { - var list = Resources.FindObjectsOfTypeAll().ToList(); + var list = Resources.FindObjectsOfTypeAll().ToList(); for (var id = 0; id < list.Count; id++) { - var obj = GetWorldObject(id) ?? (QSBType)Activator.CreateInstance(typeof(QSBType)); + var obj = GetWorldObject(id) ?? (TWorldObject)Activator.CreateInstance(typeof(TWorldObject)); obj.Init(list[id], id); AddWorldObject(obj); }