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

View File

@ -22,9 +22,9 @@ namespace QSB.QuantumSync
private void OnSceneLoaded(OWScene scene, bool isInUniverse)
{
QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>(ref _socketedQuantumObjects);
QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>(ref _quantumSockets);
QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>(ref _multiStateQuantumObjects);
_socketedQuantumObjects = QSBWorldSync.Init<QSBSocketedQuantumObject, SocketedQuantumObject>();
_quantumSockets = QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>();
_multiStateQuantumObjects = QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>();
}
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 T GetWorldObject<T, U>(int id) where T : WorldObject<U> where U : UnityEngine.Object
=> GetWorldObjects<T>().FirstOrDefault(x => x.ObjectId == id);
public static TWorldObject GetWorldObject<TWorldObject, TUnityObject>(int 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
=> WorldObjects.RemoveAll(x => x.GetType() == typeof(T));
public static void RemoveWorldObjects<TWorldObject, TUnityObject>()
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)
where QSBType : WorldObject<BaseType>
where BaseType : UnityEngine.Object
=> list = Init<QSBType, BaseType>();
public static List<BaseType> Init<QSBType, BaseType>()
where QSBType : WorldObject<BaseType>
where BaseType : UnityEngine.Object
public static List<TUnityObject> Init<TWorldObject, TUnityObject>()
where TWorldObject : WorldObject<TUnityObject>
where TUnityObject : UnityEngine.Object
{
var list = Resources.FindObjectsOfTypeAll<BaseType>().ToList();
var list = Resources.FindObjectsOfTypeAll<TUnityObject>().ToList();
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);
AddWorldObject(obj);
}