Ejemplo n.º 1
0
        public override void OnFixedUpdate()
        {
            double Altitude = Misc.GetTrueAltitude(vessel);

            if (IsDetecting && this.vessel != null && this.vessel.gameObject.activeSelf && Altitude <= this.DetectingHeight)
            {
                var energyRequest = PowerConsumption * TimeWarp.fixedDeltaTime;
                var energyDrawn   = this.part.RequestResource("ElectricCharge", energyRequest);
                this.powerRatio = energyDrawn / energyRequest;
                TimerEcho      += Time.deltaTime * (1 + Math.Log(TimeWarp.CurrentRate)) * this.powerRatio;

                var TimerThreshold = this.DetectingPeriod * (1 + Altitude * 0.000002d);

                if (TimerEcho >= TimerThreshold)
                {
                    var detected = false;
                    var cell     = MapOverlay.GetCellUnder(vessel.mainBody, vessel.transform.position);
                    if (resources.All(r => KethaneData.Current.Scans[r][vessel.mainBody.name][cell]))
                    {
                        return;
                    }
                    foreach (var resource in resources)
                    {
                        KethaneData.Current.Scans[resource][vessel.mainBody.name][cell] = true;
                        if (KethaneData.Current.GetCellDeposit(resource, vessel.mainBody, cell) != null)
                        {
                            detected = true;
                        }
                    }
                    MapOverlay.Instance.RefreshCellColor(cell, vessel.mainBody);
                    TimerEcho = 0;
                    if (vessel == FlightGlobals.ActiveVessel && ScanningSound)
                    {
                        (detected ? PingDeposit : PingEmpty).Play();
                    }
                }
            }
            else
            {
                this.powerRatio = 0;
            }
        }
Ejemplo n.º 2
0
 public ICellResource GetDepositUnder(string resourceName, Vessel vessel)
 {
     return(GetCellDeposit(resourceName, vessel.mainBody, MapOverlay.GetCellUnder(vessel.mainBody, vessel.transform.position)));
 }