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 void Start() { if (Instance != null) { Destroy(Instance.gameObject); } Instance = this; setUpMesh(); if (HighLogic.LoadedScene == GameScenes.MAINMENU) { gameObject.renderer.enabled = startMenuOverlay(); } else if (HighLogic.LoadedScene == GameScenes.FLIGHT || HighLogic.LoadedScene == GameScenes.TRACKSTATION) { startMapOverlay(); } }
public ICellResource GetDepositUnder(string resourceName, Vessel vessel) { return(GetCellDeposit(resourceName, vessel.mainBody, MapOverlay.GetCellUnder(vessel.mainBody, vessel.transform.position))); }
public void Start() { Instance = this; setUpMesh(); if (HighLogic.LoadedScene == GameScenes.LOADING || HighLogic.LoadedScene == GameScenes.MAINMENU) { var objects = GameObject.FindSceneObjectsOfType(typeof(GameObject)); if (objects.Any(o => o.name == "LoadingBuffer")) { return; } var kerbin = objects.OfType<GameObject>().Where(b => b.name == "Kerbin").SingleOrDefault(); if (kerbin == null) { Debug.LogWarning("[Kethane] Couldn't find Kerbin!"); return; } gameObject.layer = kerbin.layer; gameObject.transform.parent = kerbin.transform; gameObject.transform.localPosition = Vector3.zero; gameObject.transform.localRotation = Quaternion.identity; gameObject.transform.localScale = Vector3.one * 1020; gameObject.renderer.enabled = true; var random = new System.Random(); var colors = new Color32[mesh.vertexCount]; foreach (var cell in grid) { var rand = random.Next(100); Color32 color; if (rand < 16) { color = rand < 4 ? new Color32(21, 176, 26, 255) : colorEmpty; foreach (var neighbor in cell.Neighbors) { if (random.Next(2) < 1) { setCellColor(neighbor, color, colors); } } } else { color = colorUnknown; } setCellColor(cell, color, colors); } mesh.colors32 = colors; return; } KethaneController.LoadKethaneDeposits(); resource = KethaneController.ResourceDefinitions.Where(d => d.Resource == "Kethane").Single(); gameObject.layer = 10; ScaledSpace.AddScaledSpaceTransform(gameObject.transform); var node = ConfigNode.Load(KSPUtil.ApplicationRootPath + "GameData/Kethane/Grid.cfg"); if (node == null) { return; } foreach (var body in FlightGlobals.Bodies) { double result; if (double.TryParse(node.GetValue(body.name), out result)) { bodyRadii[body] = result; } } }