private void DistanceHeading(DriveCommand dc, FlightCtrlState fs) { if (Vector3.Distance(RoverOrigPos, mVessel.CoM) < Math.Abs(dc.target)) { fs.wheelThrottle = mThrottlePID.Control(dc.speed - RoverSpeed); fs.wheelSteer = mWheelPID.Control(RTUtil.ClampDegrees180(RoverHDG - dc.target2)); } else { fs.wheelThrottle = 0; fs.wheelSteer = 0; mVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true); dc.mode = DriveCommand.DriveMode.Off; dc = null; } }
private void Coord(DriveCommand dc, FlightCtrlState fs) { float dist = Vector3.Distance(mVessel.CoM, TargetPos), deg = RTUtil.ClampDegrees180(RoverHDG - TargetHDG); if (dist > Math.Abs(deg) / 36) { fs.wheelThrottle = mThrottlePID.Control(dc.speed - RoverSpeed); fs.wheelSteer = mWheelPID.Control(deg); } else { fs.wheelThrottle = 0; fs.wheelSteer = 0; mVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true); dc.mode = DriveCommand.DriveMode.Off; dc = null; } }