kOS/lib/node.ks

40 lines
1003 B
Plaintext
Raw Normal View History

2021-08-02 01:45:47 +00:00
runoncepath("lib/navigation").
runoncepath("lib/throttle").
function ExecNode {
SAS off.
local t is BurnTime(NEXTNODE:DELTAV:MAG).
print "Adjusting heading".
lock STEERING to NEXTNODE:DELTAV.
wait until VAng(SHIP:FACING:FOREVECTOR, STEERINGMANAGER:TARGET:FOREVECTOR) <= 0.1.
print "Warping to node.".
KUNIVERSE:TIMEWARP:WarpTo(NEXTNODE:TIME - (t/2) - 5).
wait until NEXTNODE:ETA <= (t/2).
print "Executing burn.".
local dvMin is NEXTNODE:DELTAV:MAG.
lock THROTTLE to 1.0.
// Execute the burn, throttling down by half every time we're
// consuming more than 25% of our dV in one update.
local droppedOnce is false.
until NEXTNODE:DELTAV:MAG <= 0.25 or (dVMin < NEXTNODE:DELTAV:MAG and droppedOnce) {
if NEXTNODE:DELTAV:MAG > dVMin {
set droppedOnce to true.
} else {
set dvMin to NEXTNODE:DELTAV:MAG.
set droppedOnce to false.
}
wait 0.01.
}
unlock THROTTLE.
unlock STEERING.
SAS on.
print "Node execution complete.".
}