public void CalcDist(object sender, AirplanesList e) { transponderReceiverFactories = e.AirplaneDataList; //Først tjek hvis filen eksisterer hvis den ikke eksisterer så opret if (!File.Exists(path)) { using (StreamWriter tw = new StreamWriter(path)) { tw.WriteLine("Collision Detection File"); } } else if (File.Exists(path)) { using (StreamWriter tw = File.AppendText(path)) { //tw.WriteLine("Starting New Collision Detection"); } } AirplaneData[] TRF = transponderReceiverFactories.ToArray(); for (int j = 0; j < TRF.Length; j++) { for (int i = j; i < TRF.Length; i++) { if (TRF[j].Tag != TRF[i].Tag) { TimeDiff = (long)((TimeSpan)(TRF[j].Time - TRF[i].Time)).TotalSeconds; DistH = TRF[j].Z - TRF[i].Z; DistY = TRF[j].Y - TRF[i].Y; DistX = TRF[j].X - TRF[i].X; if ((-300 < DistH && DistH < 300) && (-120 < TimeDiff && TimeDiff < 120)) { //Console.WriteLine($"{TRF[i].X} og {TRF[j].X} distance er {DistX} på {TRF[i].Tag} og {TRF[j].Tag}"); if (TRF[j].Tag != TRF[i].Tag && (-5000 < DistX && DistX < 5000) && (-5000 < DistY && DistY < 5000)) { Console.WriteLine($"{TRF[j].Time}, {TRF[j].Tag}, {TRF[i].Tag} is going to crash"); using (StreamWriter tw = File.AppendText(path)) { tw.WriteLine($"{TRF[j].Time}, {TRF[j].Tag}, {TRF[i].Tag} is going to crash"); } } } } } } }
public void UpdatePlaneData(object sender, AirplanesList e) { Airplanes = new List <AirplaneData>(AirplanesUpdated); AirplanesUpdated = new List <AirplaneData>(e.AirplaneDataList); foreach (var AirplaneUpdated in AirplanesUpdated) { foreach (var Airplane in Airplanes) { if (Airplane.Tag == AirplaneUpdated.Tag) { AirplaneUpdated.Speed = CalculateSpeed(Airplane, AirplaneUpdated); AirplaneUpdated.Direction = CalculateDirection(Airplane, AirplaneUpdated); OnAirplaneListUpdatedEvent(AirplaneUpdated); } } } ; }
protected virtual void OnUpdateChangedEvent(AirplanesList e) { AirplaneListReady?.Invoke(this, e); }