Example #1
0
        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 = "---";
            }
        }