/////////////////////////////////////////////////////////////////////////// // Copyright (C) Wizardry and Steamworks 2011 - License: GNU GPLv3 // // Please see: http://www.gnu.org/licenses/gpl.html for legal details, // // rights of fair usage, the disclaimer and warranty conditions. // /////////////////////////////////////////////////////////////////////////// key nQuery = NULL_KEY; integer nLine = 0; string commands = ""; //pragma inline string nName = "LOGO"; front(integer step) { if(step == 0) return; llSetPos(llGetPos() + <1,0,0>*llGetRootRotation()); front(--step); } back(integer step) { if(step == 0) return; llSetPos(llGetPos() + <-1,0,0>*llGetRootRotation()); back(--step); } left(integer step) { if(step == 0) return; llSetPos(llGetPos() + <0,1,0>*llGetRootRotation()); front(--step); } right(integer step) { if(step == 0) return; llSetPos(llGetPos() + <0,-1,0>*llGetRootRotation()); back(--step); } up(integer step) { if(step == 0) return; llSetPos(llGetPos() + <0,0,1>*llGetRootRotation()); up(--step); } down(integer step) { if(step == 0) return; llSetPos(llGetPos() + <0,0,-1>*llGetRootRotation()); down(--step); } rollLeft(integer degrees) { if(degrees == 0) return; llSetRot(llEuler2Rot(<-1,0,0> * DEG_TO_RAD) * llGetRot()); rollLeft(--degrees); } rollRight(integer degrees) { if(degrees == 0) return; llSetRot(llEuler2Rot(<1,0,0> * DEG_TO_RAD) * llGetRot()); rollRight(--degrees); } pitchUp(integer degrees) { if(degrees == 0) return; llSetRot(llEuler2Rot(<0,-1,0> * DEG_TO_RAD) * llGetRot()); pitchUp(--degrees); } pitchDown(integer degrees) { if(degrees == 0) return; llSetRot(llEuler2Rot(<0,1,0> * DEG_TO_RAD) * llGetRot()); pitchDown(--degrees); } yawLeft(integer degrees) { if(degrees == 0) return; llSetRot(llEuler2Rot(<0,0,1> * DEG_TO_RAD) * llGetRot()); yawLeft(--degrees); } yawRight(integer degrees) { if(degrees == 0) return; llSetRot(llEuler2Rot(<0,0,-1> * DEG_TO_RAD) * llGetRot()); yawRight(--degrees); } parse(list command) { if(!llGetListLength(command)) return; // Empty list. // DEBUG: Queue display on every command. //llOwnerSay("List: " + llDumpList2String(command, " ")); integer steps = llAbs(llList2Integer(command,1)); if(llList2String(command,0) == "FO") { front(steps); jump next; // break; } if(llList2String(command,0) == "BA") { back(steps); jump next; // break; } if(llList2String(command,0) == "LE") { left(steps); jump next; // break; } if(llList2String(command,0) == "RI") { right(steps); jump next; // break; } if(llList2String(command,0) == "UP") { up(steps); jump next; // break; } if(llList2String(command,0) == "DO") { down(steps); jump next; // break; } if(llList2String(command,0) == "RR") { rollRight(steps); jump next; // break; } if(llList2String(command,0) == "RL") { rollLeft(steps); jump next; // break; } if(llList2String(command,0) == "PU") { pitchUp(steps); jump next; // break; } if(llList2String(command,0) == "PD") { pitchDown(steps); jump next; // break; } if(llList2String(command,0) == "YR") { yawRight(steps); jump next; // break; } if(llList2String(command,0) == "YL") { yawLeft(steps); jump next; // break; } @next; parse(command = llDeleteSubList(command, 0, 0)); } default { state_entry() { llListen(0, "", llGetOwner(), ""); integer itra; for(itra=0, commands="", nLine=0; itra