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; } }
public ICellResource GetDepositUnder(string resourceName, Vessel vessel) { return(GetCellDeposit(resourceName, vessel.mainBody, MapOverlay.GetCellUnder(vessel.mainBody, vessel.transform.position))); }