renamed generic parameters, removed ref list from init

This commit is contained in:
Aleksander Waage 2020-12-24 09:06:23 +01:00
parent 1f1ad692a6
commit 03078f9f3d
3 changed files with 17 additions and 18 deletions

View File

@ -18,7 +18,7 @@ namespace QSB.ElevatorSync
public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; public void OnDestroy() => QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
private void OnSceneLoaded(OWScene scene, bool isInUniverse) => QSBWorldSync.Init<QSBElevator, Elevator>(ref _elevators); private void OnSceneLoaded(OWScene scene, bool isInUniverse) => _elevators = QSBWorldSync.Init<QSBElevator, Elevator>();
public int GetId(Elevator elevator) => _elevators.IndexOf(elevator); public int GetId(Elevator elevator) => _elevators.IndexOf(elevator);
} }

View File

@ -22,9 +22,9 @@ namespace QSB.QuantumSync
private void OnSceneLoaded(OWScene scene, bool isInUniverse) private void OnSceneLoaded(OWScene scene, bool isInUniverse)
{ {
QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>(ref _socketedQuantumObjects); _socketedQuantumObjects = QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>();
QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>(ref _quantumSockets); _quantumSockets = QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>();
QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>(ref _multiStateQuantumObjects); _multiStateQuantumObjects = QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>();
} }
public int GetId(SocketedQuantumObject obj) => _socketedQuantumObjects.IndexOf(obj); public int GetId(SocketedQuantumObject obj) => _socketedQuantumObjects.IndexOf(obj);

View File

@ -31,25 +31,24 @@ namespace QSB.WorldSync
public static IEnumerable<T> GetWorldObjects<T>() => WorldObjects.OfType<T>(); public static IEnumerable<T> GetWorldObjects<T>() => WorldObjects.OfType<T>();
public static T GetWorldObject<T, U>(int id) where T : WorldObject<U> where U : UnityEngine.Object public static TWorldObject GetWorldObject<TWorldObject, TUnityObject>(int id)
=> GetWorldObjects<T>().FirstOrDefault(x => x.ObjectId == id); where TWorldObject : WorldObject<TUnityObject>
where TUnityObject : UnityEngine.Object
=> GetWorldObjects<TWorldObject>().FirstOrDefault(x => x.ObjectId == id);
public static void RemoveWorldObjects<T, U>() where T : WorldObject<U> where U : UnityEngine.Object public static void RemoveWorldObjects<TWorldObject, TUnityObject>()
=> WorldObjects.RemoveAll(x => x.GetType() == typeof(T)); where TWorldObject : WorldObject<TUnityObject>
where TUnityObject : UnityEngine.Object
=> WorldObjects.RemoveAll(x => x.GetType() == typeof(TWorldObject));
public static void Init<QSBType, BaseType>(ref List<BaseType> list) public static List<TUnityObject> Init<TWorldObject, TUnityObject>()
where QSBType : WorldObject<BaseType> where TWorldObject : WorldObject<TUnityObject>
where BaseType : UnityEngine.Object where TUnityObject : UnityEngine.Object
=> list = Init<QSBType, BaseType>();
public static List<BaseType> Init<QSBType, BaseType>()
where QSBType : WorldObject<BaseType>
where BaseType : UnityEngine.Object
{ {
var list = Resources.FindObjectsOfTypeAll<BaseType>().ToList(); var list = Resources.FindObjectsOfTypeAll<TUnityObject>().ToList();
for (var id = 0; id < list.Count; id++) for (var id = 0; id < list.Count; id++)
{ {
var obj = GetWorldObject<QSBType, BaseType>(id) ?? (QSBType)Activator.CreateInstance(typeof(QSBType)); var obj = GetWorldObject<TWorldObject, TUnityObject>(id) ?? (TWorldObject)Activator.CreateInstance(typeof(TWorldObject));
obj.Init(list[id], id); obj.Init(list[id], id);
AddWorldObject(obj); AddWorldObject(obj);
} }