示例#1
0
 public void addLoadedSeismometer(uint id, IDMSeismometer sensor)
 {
     if (sensor.GetType() == typeof(DMSeismicSensor))
     {
         if (!seismometers.ContainsKey(id))
         {
             DMSeismicSensor     s = (DMSeismicSensor)sensor;
             DMSeismometerValues v = new DMSeismometerValues(s.vessel, s.part.protoPartSnapshot, s.snapshot, false);
             seismometers.Add(id, v);
         }
     }
     else if (sensor.GetType() == typeof(DMSeismicHammer))
     {
         if (!hammers.ContainsKey(id))
         {
             DMSeismicHammer     h = (DMSeismicHammer)sensor;
             DMSeismometerValues v = new DMSeismometerValues(h.vessel, h.part.protoPartSnapshot, h.snapshot, true);
             hammers.Add(id, v);
         }
     }
 }
示例#2
0
        private IEnumerator loadSensors()
        {
            while (!FlightGlobals.ready)
            {
                yield return(null);
            }

            for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--)
            {
                Vessel v = FlightGlobals.Vessels[i];

                if (v == null)
                {
                    continue;
                }

                if (v.mainBody != FlightGlobals.ActiveVessel.mainBody)
                {
                    continue;
                }

                if (v.loaded)
                {
                    for (int j = 0; j < v.Parts.Count; j++)
                    {
                        Part p = v.Parts[j];

                        if (p == null)
                        {
                            continue;
                        }

                        IDMSeismometer sensor = p.FindModuleImplementing <IDMSeismometer>();

                        if (sensor != null)
                        {
                            addLoadedSeismometer(p.flightID, sensor);
                        }
                    }
                }
                else
                {
                    ProtoVessel pv = v.protoVessel;

                    for (int j = 0; j < v.protoVessel.protoPartSnapshots.Count; j++)
                    {
                        ProtoPartSnapshot p = v.protoVessel.protoPartSnapshots[j];

                        if (p == null)
                        {
                            continue;
                        }

                        for (int k = 0; k < p.modules.Count; k++)
                        {
                            ProtoPartModuleSnapshot m = p.modules[k];

                            if (m == null)
                            {
                                continue;
                            }

                            if (m.moduleName == "DMSeismicSensor" || m.moduleName == "DMSeismicHammer")
                            {
                                addProtoSeismometer(p.flightID, p, m);
                            }
                        }
                    }
                }
            }
        }