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); } } }
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); } } } } } }