// vis_vec.ks // // Used to keep track of and display vectors. global vis_vecs is LIST(). // VECDRAW Objects global vect_dgates is LIST(). // List of KOSDelegates to use in updates. // MAIN displayFSTVectors(). until false { updateVectors(). } // END MAIN function addVector { parameter origin. // Origin vector parameter vec. // Dest. vector parameter delegate. // KOSDelegate that returns the update vector parameter color is RGB(1,0.5,0). // Color parameter title is "". // Title parameter scale is 1.0. parameter show is TRUE. // Show the vector or nah parameter width is 0.2. // Width parameter scale_len is 2. // Opt. parameter to scale length. set new_vis_vec to VECDRAW( origin, scale_len * vec, color, title, scale, show, width ). // Add vectors & delegates to lists vis_vecs:ADD(new_vis_vec). vect_dgates:ADD(delegate). } function displayFSTVectors { parameter scale_fore is 20, scale_star is 20, scale_top is 20. function getForeVector { return SHIP:FACING:FOREVECTOR * scale_fore. } function getStarVector { return SHIP:FACING:STARVECTOR * scale_star. } function getTopVector { return SHIP:FACING:TOPVECTOR * scale_top. } addVector(V(0,0,0), SHIP:FACING:FOREVECTOR, getForeVector@, RGB(1,0,0), "Fore", 1.0, TRUE, 0.2, scale_fore). addVector(V(0,0,0), SHIP:FACING:STARVECTOR, getStarVector@, RGB(0,1,0), "Star", 1.0, TRUE, 0.2, scale_star). addVector(V(0,0,0), SHIP:FACING:TOPVECTOR , getTopVector@, RGB(0,0,1), "Top" , 1.0, TRUE, 0.2, scale_top). } function updateVectors { FROM {local i is 0.} UNTIL i > vis_vecs:LENGTH - 1 STEP {set i to i+1.} DO { print vis_vecs[i]:label + " - " + vect_dgates[i]:CALL(). wait 0.001. set vis_vecs[i]:vec to vect_dgates[i]:CALL(). } print " ". }