public static bool PrefixSetShipOrbitRendezvous(Vessel target, Vector3d relPosition, Vector3d relVelocity) { if (MainSystem.NetworkState < ClientState.Connected) { return(true); } if (LockSystem.LockQuery.UnloadedUpdateLockBelongsToPlayer(target.id, SettingsSystem.CurrentSettings.PlayerName)) { return(true); } var body = FlightGlobals.ActiveVessel.mainBody; FlightGlobals.currentMainBody = target.mainBody; Traverse.Create(FlightGlobals.fetch).Method("PrepForOrbitSet").GetValue(); var currentOrbit = target.GetCurrentOrbit(); //var universalTime = Planetarium.GetUniversalTime(); var universalTime = currentOrbit.epoch; var vector3d = currentOrbit.vel.normalized; var orbitNormal = currentOrbit.GetOrbitNormal(); var vector3d1 = Vector3d.Cross(vector3d, orbitNormal); var vector3d2 = currentOrbit.pos + relPosition.Basis(vector3d1, vector3d, orbitNormal); var vector3d3 = currentOrbit.vel + relVelocity.Basis(vector3d1, vector3d, orbitNormal); FlightGlobals.ActiveVessel.orbit.UpdateFromStateVectors(vector3d2, vector3d3, currentOrbit.referenceBody, universalTime); Traverse.Create(FlightGlobals.fetch).Method("PostOrbitSet").GetValue(); return(false); }