public static void CircuitSearchLoop(IElectricityIO Thiswire, IProvidePower ProvidingPower) { InputOutputFunctions.DirectionOutput(ElectricalSynchronisation.currentTick, Thiswire.GameObject(), Thiswire); bool Break = true; List <IElectricityIO> IterateDirectionWorkOnNextList = new List <IElectricityIO> (); while (Break) { IterateDirectionWorkOnNextList = new List <IElectricityIO> (ProvidingPower.DirectionWorkOnNextList); ProvidingPower.DirectionWorkOnNextList.Clear(); for (int i = 0; i < IterateDirectionWorkOnNextList.Count; i++) { IterateDirectionWorkOnNextList [i].DirectionOutput(ElectricalSynchronisation.currentTick, Thiswire.GameObject()); } if (ProvidingPower.DirectionWorkOnNextList.Count <= 0) { IterateDirectionWorkOnNextList = new List <IElectricityIO> (ProvidingPower.DirectionWorkOnNextListWait); ProvidingPower.DirectionWorkOnNextListWait.Clear(); for (int i = 0; i < IterateDirectionWorkOnNextList.Count; i++) { IterateDirectionWorkOnNextList [i].DirectionOutput(ElectricalSynchronisation.currentTick, Thiswire.GameObject()); } } if (ProvidingPower.DirectionWorkOnNextList.Count <= 0 && ProvidingPower.DirectionWorkOnNextListWait.Count <= 0) { //Logger.Log ("stop!"); Break = false; } } }
public static void CircuitSearchLoop(ElectricalOIinheritance Thiswire) { //Logger.Log("CircuitSearchLoop Enter", Category.Electrical); GameObject GameObject = Thiswire.GameObject(); if (GameObject == null) { return; } InputOutputFunctions.DirectionOutput(GameObject, Thiswire); bool Break = true; while (Break) { UesAlternativeDirectionWorkOnNextList = false; DOCircuitSearchLoop(GameObject, _DirectionWorkOnNextList, _DirectionWorkOnNextListWait); UesAlternativeDirectionWorkOnNextList = true; DOCircuitSearchLoop(GameObject, DirectionWorkOnNextList, DirectionWorkOnNextListWait); if (DirectionWorkOnNextList.Count <= 0 & DirectionWorkOnNextListWait.Count <= 0 & _DirectionWorkOnNextList.Count <= 0 & _DirectionWorkOnNextListWait.Count <= 0) { //Logger.Log ("CircuitSearchLoop stop!", Category.Electrical ); Break = false; } } }
public override void DirectionOutput(GameObject SourceInstance) { int SourceInstanceID = SourceInstance.GetInstanceID(); //Logger.Log (this.gameObject.GetInstanceID().ToString() + " <ID | Downstream = "+Data.Downstream[SourceInstanceID].Count.ToString() + " Upstream = " + Data.Upstream[SourceInstanceID].Count.ToString () + this.name + " < name! ", Category.Electrical); if (RelatedLine == null) { InputOutputFunctions.DirectionOutput(SourceInstance, this); } else { IElectricityIO GoingTo; if (RelatedLine.TheEnd == this.GetComponent <IElectricityIO> ()) { GoingTo = RelatedLine.TheStart; } else if (RelatedLine.TheStart == this.GetComponent <IElectricityIO> ()) { GoingTo = RelatedLine.TheEnd; } else { GoingTo = null; return; } if (!(Data.Upstream.ContainsKey(SourceInstanceID))) { Data.Upstream[SourceInstanceID] = new HashSet <IElectricityIO>(); } if (!(Data.Downstream.ContainsKey(SourceInstanceID))) { Data.Downstream[SourceInstanceID] = new HashSet <IElectricityIO>(); } if (GoingTo != null) { //Logger.Log ("to" + GoingTo.GameObject ().name);///wow } foreach (IElectricityIO bob in Data.Upstream[SourceInstanceID]) { //Logger.Log("Upstream" + bob.GameObject ().name ); } if (!(Data.Downstream [SourceInstanceID].Contains(GoingTo) || Data.Upstream [SourceInstanceID].Contains(GoingTo))) { Data.Downstream [SourceInstanceID].Add(GoingTo); RelatedLine.DirectionInput(SourceInstance, this); } else { InputOutputFunctions.DirectionOutput(SourceInstance, this, RelatedLine); } } Data.DownstreamCount = Data.Downstream[SourceInstanceID].Count; Data.UpstreamCount = Data.Upstream[SourceInstanceID].Count; }
public void DirectionOutput(int tick, GameObject SourceInstance) { InputOutputFunctions.DirectionOutput(tick, SourceInstance, this); int SourceInstanceID = SourceInstance.GetInstanceID(); Data.DownstreamCount = Data.Downstream[SourceInstanceID].Count; Data.UpstreamCount = Data.Upstream[SourceInstanceID].Count; //Logger.Log (this.gameObject.GetInstanceID().ToString() + " <ID | Downstream = "+Downstream[SourceInstanceID].Count.ToString() + " Upstream = " + Upstream[SourceInstanceID].Count.ToString (), Category.Electrical); }
/// <summary> /// Sets the downstream and pokes the next one along /// </summary> public virtual void DirectionOutput(GameObject SourceInstance) { int SourceInstanceID = SourceInstance.GetInstanceID(); InputOutputFunctions.DirectionOutput(SourceInstance, this); if (Logall) { Logger.Log("this > " + this + "DirectionOutput " + this.gameObject + " <ID | Downstream = " + Data.SupplyDependent[SourceInstanceID].Downstream.Count + " Upstream = " + Data.SupplyDependent[SourceInstanceID].Upstream.Count + "connections " + (string.Join(",", Data.connections)), Category.Electrical); } }
/// <summary> /// Sets the downstream and pokes the next one along /// </summary> public virtual void DirectionOutput(ElectricalOIinheritance SourceInstance) { if (Present != null) { Present.DirectionOutput(SourceInstance); } else { InputOutputFunctions.DirectionOutput(SourceInstance, this); } }
public void CircuitSearchLoop(ElectricalOIinheritance wire) { InputOutputFunctions.DirectionOutput(wire, wire.InData); while (true) { UesAlternativeDirectionWorkOnNextList = false; CircuitSearch(wire, _DirectionWorkOnNextList, _DirectionWorkOnNextListWait); UesAlternativeDirectionWorkOnNextList = true; CircuitSearch(wire, DirectionWorkOnNextList, DirectionWorkOnNextListWait); if (DirectionWorkOnNextList.Count <= 0 & DirectionWorkOnNextListWait.Count <= 0 & _DirectionWorkOnNextList.Count <= 0 & _DirectionWorkOnNextListWait.Count <= 0) { break; } } }
public void CircuitSearchLoop(ElectricalOIinheritance Thiswire) { InputOutputFunctions.DirectionOutput(Thiswire, Thiswire.InData); bool Break = true; while (Break) { UesAlternativeDirectionWorkOnNextList = false; DOCircuitSearchLoop(Thiswire, _DirectionWorkOnNextList, _DirectionWorkOnNextListWait); UesAlternativeDirectionWorkOnNextList = true; DOCircuitSearchLoop(Thiswire, DirectionWorkOnNextList, DirectionWorkOnNextListWait); if (DirectionWorkOnNextList.Count <= 0 & DirectionWorkOnNextListWait.Count <= 0 & _DirectionWorkOnNextList.Count <= 0 & _DirectionWorkOnNextListWait.Count <= 0) { Break = false; } } }
public override void DirectionOutput(GameObject SourceInstance) { int SourceInstanceID = SourceInstance.GetInstanceID(); //Logger.Log (this.gameObject.GetInstanceID().ToString() + " <ID | Downstream = "+Data.Downstream[SourceInstanceID].Count.ToString() + " Upstream = " + Data.Upstream[SourceInstanceID].Count.ToString () + this.name + " < name! ", Category.Electrical); if (RelatedLine == null) { InputOutputFunctions.DirectionOutput(SourceInstance, this); } else { ElectricalOIinheritance GoingTo; if (RelatedLine.TheEnd == this.GetComponent <ElectricalOIinheritance>()) { GoingTo = RelatedLine.TheStart; } else if (RelatedLine.TheStart == this.GetComponent <ElectricalOIinheritance>()) { GoingTo = RelatedLine.TheEnd; } else { GoingTo = null; return; } if (!(Data.SupplyDependent[SourceInstanceID].Downstream.Contains(GoingTo) || Data.SupplyDependent[SourceInstanceID].Upstream.Contains(GoingTo))) { Data.SupplyDependent[SourceInstanceID].Downstream.Add(GoingTo); RelatedLine.DirectionInput(SourceInstance, this); } else { InputOutputFunctions.DirectionOutput(SourceInstance, this, RelatedLine); } } }
/// <summary> /// Sets the downstream and pokes the next one along /// </summary> public virtual void DirectionOutput(ElectricalOIinheritance SourceInstance) { InputOutputFunctions.DirectionOutput(SourceInstance, InData); }