private void LoadAssignments(SHub hubData, List <SDrone> droneData, List <SBattery> batteryData) { var fd = new HashSet <uint>(hubData.freeDrones); var fb = new HashSet <uint>(hubData.freeBatteries); var cb = new HashSet <uint>(hubData.chargingBatteries); for (int i = batteryData.Count - 1; i >= 0; i--) { if (LoadBattery(batteryData[i], fb, cb)) { batteryData.RemoveAt(i); } } for (int i = droneData.Count - 1; i >= 0; i--) { if (LoadDrone(droneData[i], fd)) { droneData.RemoveAt(i); } } foreach (uint uid in hubData.exitingDrones) { deploymentQueue.Enqueue((Drone)drones[uid]); } }
public HubData(SHub data, Hub hub, List <SDrone> droneData, List <SBattery> batteryData) { _source = hub; UID = data.count; energyConsumption = data.energy; InitializeCollections(); LoadAssignments(data, droneData, batteryData); SetUpCollectionEvents(); }
public static Hub Load(SHub data, List <SDrone> drones, List <SBattery> batteries) { Hub hub = PoolController.Get(ObjectPool.Instance).Get <Hub>(null, true); hub.transform.position = data.position; hub.transform.SetParent(null); hub.gameObject.SetActive(true); hub.InPool = false; SimManager.AllHubs.Add(hub.UID, hub); hub._Data = new HubData(data, hub, drones, batteries); return(hub); }