public SatelliteDefinition(SatelliteBase satellite, SimulationParams simulationParameters, SatelliteGroup group) { id = satellite.Id; index = id - 1; constellationType = satellite.ConstellationType; this.simulationParameters = simulationParameters; this.group = group; IEnumerable <SignalType> source = from s in simulationParameters.Signals where s.ConstellationType == constellationType select s.SignalType; firstSignalType = source.FirstOrDefault((SignalType st) => simulationParameters.SignalLevels.ContainsKey(st)); if (simulationParameters.SignalLevelMode == SignalLevelMode.Manual && firstSignalType != SignalType.None) { Level = simulationParameters.SignalLevels[firstSignalType][index]; } }
private void UpdateVisibleSatellites() { IEnumerable <SatelliteBase> source = simulation.VisibleSats[constellation.ConstellationType]; foreach (SatelliteBase item in from s in source where !(from ss in Satellites select ss.Id).Contains(s.Id) select s) { SatelliteDefinition satelliteDefinition = new SatelliteDefinition(item, simulation.SimulationParameters, this); int i; for (i = 0; i < Satellites.Count && item.Id > Satellites[i].Id; i++) { } Satellites.Insert(i, satelliteDefinition); satelliteDefinition.PropertyChanged += OnSatellite_PropertyChanged; } SatelliteDefinition[] array = Satellites.ToArray(); foreach (SatelliteDefinition satDef in array) { SatelliteBase satelliteBase = source.FirstOrDefault((SatelliteBase s) => s.Id == satDef.Id); if (satelliteBase != null) { if (simulation.SimulationParameters.SatCountLimitMode != 0) { satDef.IsEnabled = satelliteBase.IsEnabled; } } else { satDef.PropertyChanged -= OnSatellite_PropertyChanged; Satellites.Remove(satDef); } } SatelliteCount = (constellation.IsEnabled ? (from s in Satellites where s.IsEnabled select s).Count() : 0); }