/////////////////////////////////////////////////////////////////////////// // // // integer dat_channel = 844; integer drv_channel = 846; integer listen_dat = 0; integer listen_drv = 0; vector prev_point = <0.0, 0.0, 0.0>; vector crnt_point = <0.0, 0.0, 0.0>; vector next_point = <0.0, 0.0, 0.0>; string next_mesg = ""; float scan_area = 0.0; float scan_range = 25.0; init_lsl() { if (listen_dat!=0) llListenRemove(listen_dat); listen_dat = llListen(dat_channel, "", "", ""); if (listen_dat<0) { llShout(0, "ERROR: LISTEN CHANNEL is "+(string)listen_dat); } prev_point = <0.0, 0.0, 0.0>; crnt_point = llGetPos(); next_point = <0.0, 0.0, 0.0>; next_mesg = ""; } // queue_point(string recv_mesg) { integer indx = llSubStringIndex(recv_mesg, ":"); if (indx<0) return; vector recv_point = (vector)llGetSubString(recv_mesg, 0, indx-1); //llShout(0, "PREV = "+(string)prev_point); //llShout(0, "CRNT = "+(string)crnt_point); //llShout(0, "NEXT = "+(string)next_point); //llShout(0, "RECV = "+(string)recv_point); // vector ahd = <0.0,0.0,1.0>*llGetRot(); vector rvt = recv_point - crnt_point; float rrx = llVecMag(rvt); if (rrx==0.0 || rrx>scan_range) return; float rmt = (ahd.x*rvt.x + ahd.y*rvt.y + ahd.z*rvt.z)/rrx; if (rmt0.0 && rmt>nmt) || (nmt<0.0 && rmt