/// <summary> /// Adds electrical circuits if needed to match the number of wire networks. /// </summary> /// <param name="instance">The circuit manager to initialize.</param> /// <param name="electricalSystem">The current electrical network.</param> private static void InitNetworks(CircuitManager instance, UtilityNetworkManager <ElectricalUtilityNetwork, Wire> electricalSystem) { var networks = electricalSystem.GetNetworks(); var circuits = instance.circuitInfo; int nGroups = (int)Wire.WattageRating.NumRatings, nNetworks = networks.Count; while (circuits.Count < nNetworks) { var newInfo = new CircuitInfo { generators = new List <Generator>(16), consumers = new List <IEnergyConsumer>(32), batteries = new List <Battery>(16), inputTransformers = new List <Battery>(8), outputTransformers = new List <Generator>(16) }; var wireLinks = new List <WireUtilityNetworkLink> [nGroups]; for (int i = 0; i < nGroups; i++) { wireLinks[i] = new List <WireUtilityNetworkLink>(8); } newInfo.bridgeGroups = wireLinks; circuits.Add(newInfo); } }
private void Refresh(float dt) { UtilityNetworkManager <ElectricalUtilityNetwork, Wire> electricalConduitSystem = Game.Instance.electricalConduitSystem; if (electricalConduitSystem.IsDirty || dirty) { electricalConduitSystem.Update(); IList <UtilityNetwork> networks = electricalConduitSystem.GetNetworks(); while (this.circuitInfo.Count < networks.Count) { CircuitInfo circuitInfo = default(CircuitInfo); circuitInfo.generators = new List <Generator>(); circuitInfo.consumers = new List <IEnergyConsumer>(); circuitInfo.batteries = new List <Battery>(); circuitInfo.inputTransformers = new List <Battery>(); circuitInfo.outputTransformers = new List <Generator>(); CircuitInfo item = circuitInfo; item.bridgeGroups = new List <WireUtilityNetworkLink> [5]; for (int i = 0; i < item.bridgeGroups.Length; i++) { item.bridgeGroups[i] = new List <WireUtilityNetworkLink>(); } this.circuitInfo.Add(item); } Rebuild(); } }
private void Refresh(float dt) { if (conduitSystem.IsDirty) { conduitSystem.Update(); PropagateSignals(true); elapsedTime = 0f; } else if (conduitSystem.GetNetworks().Count > 0 && (UnityEngine.Object)SpeedControlScreen.Instance != (UnityEngine.Object)null && !SpeedControlScreen.Instance.IsPaused) { elapsedTime += dt; while (elapsedTime > ClockTickInterval) { elapsedTime -= ClockTickInterval; PropagateSignals(false); } } }