コード例 #1
0
ファイル: SatelliteGroup.cs プロジェクト: meee1/satgen
 private void OnSatellite_PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "Attenuation" && AttenuationsLinked && !suppressLinkedAttenuationChange)
     {
         SatelliteDefinition satellite = (SatelliteDefinition)sender;
         if (satellite.IsEnabled)
         {
             suppressLinkedAttenuationChange = true;
             LinkedAttenuation = satellite.Attenuation;
             foreach (SatelliteDefinition item in Satellites.Where(delegate(SatelliteDefinition s)
             {
                 if (s != satellite)
                 {
                     return(s.IsEnabled);
                 }
                 return(false);
             }))
             {
                 item.Attenuation = LinkedAttenuation;
             }
             Application.Current.Dispatcher.BeginInvoke((Action) delegate
             {
                 suppressLinkedAttenuationChange = false;
             }, DispatcherPriority.DataBind);
         }
     }
 }
コード例 #2
0
ファイル: SatelliteGroup.cs プロジェクト: meee1/satgen
        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);
        }