private bool MouseOverVessel(Vessel vessel) { bool result = false; var patchRenderer = vessel.patchedConicRenderer; if (patchRenderer == null || patchRenderer.solver == null) { return(result); } var patches = patchRenderer.solver.maneuverNodes.Any() ? patchRenderer.flightPlanRenders : patchRenderer.patchRenders; if (patches == null) { return(result); } PatchedConics.PatchCastHit hit = default(PatchedConics.PatchCastHit); if (PatchedConics.ScreenCast(Input.mousePosition, patches, out hit)) { result = true; _hitOrbit = hit.pr.patch; _hitScreenPoint = hit.GetScreenSpacePoint(); _hitUT = hit.UTatTA; } return(result); }