public override void OnUpdate() { initialize(); string ResName = "ElectricCharge"; double dPowerRequired = 10.0 * dW_to_EC; // 10 W is typical receive power for NAV radio double dElectric_Draw = dPowerRequired * TimeWarp.deltaTime; double elecAvail = 0.0; if (bOn) { elecAvail = part.RequestResource(ResName, dElectric_Draw) / dElectric_Draw; } bPowered = (elecAvail > 0.90); if (cRecv.vPosition.updatePositionData(vessel.mainBody, vessel.latitude, vessel.longitude, vessel.altitude)) { cNav_Master.updateReceiver(iReceiver_ID, cRecv); } //string sMsg = "Recv freq " + cRecv.getFrequency().ToString("000.00"); //print(sMsg); cNav_Master.onReceiverUpdate(); if (bPowered) { if (cRecv.isActiveILS()) { cTuned_GLS = cNav_Master.getStationGLS(iReceiver_ID) as GLS; cTuned_LOC = cNav_Master.getStationLOC(iReceiver_ID) as LOC; cTuned_VOR = null; } else { cTuned_VOR = cNav_Master.getStationVOR(iReceiver_ID) as VOR; cTuned_GLS = null; cTuned_LOC = null; } cTuned_DME = cNav_Master.getStationDME(iReceiver_ID) as DME; } else { cTuned_VOR = null; cTuned_LOC = null; cTuned_DME = null; cTuned_GLS = null; } if (cTuned_VOR != null) { if (cTuned_VOR.getFlux(cRecv.vPosition) < 2.0e-9 || !cTuned_VOR.inLineOfSight(cRecv.vPosition)) { cTuned_VOR = null; } } if (cTuned_LOC != null) { if (cTuned_LOC.getFlux(cRecv.vPosition) < 2.0e-9 || !cTuned_LOC.inLineOfSight(cRecv.vPosition)) { cTuned_LOC = null; } } if (cTuned_DME != null) { if (cTuned_DME.getFlux(cRecv.vPosition) < 2.0e-9 || !cTuned_DME.inLineOfSight(cRecv.vPosition)) { cTuned_DME = null; } } if (cTuned_GLS != null) { if (cTuned_GLS.getFlux(cRecv.vPosition) > 2.0e-9 || !cTuned_GLS.inLineOfSight(cRecv.vPosition)) { cTuned_GLS = null; } } if (cTuned_VOR != null) { sTuned_Station = cTuned_VOR.sStation_ID; } else if (cTuned_LOC != null) { sTuned_Station = cTuned_LOC.sStation_ID; } else if (cTuned_DME != null) { sTuned_Station = cTuned_LOC.sStation_ID; } else if (cTuned_GLS != null) { sTuned_Station = cTuned_GLS.sStation_ID; } else { sTuned_Station = "---"; } }