Pointing Stick
Revision as of 08:47, 12 March 2011 by Rhonin Nissondorf (talk | contribs)
{{LSL HEADER |title =[[User: rhonin Nissondorf|rhonin]
|content=*Pointing Stick
<lsl> integer on = TRUE;
default
{
state_entry() { llSetText("Touch to activate",<0,1,0>,1); }
changed(integer change) { if(change & (CHANGED_OWNER | CHANGED_INVENTORY)) llResetScript(); }
on_rez(integer x)
{ llResetScript();
} touch_start(integer y)
{ if (on == TRUE) { llRequestPermissions(llDetectedKey(0), PERMISSION_TAKE_CONTROLS); on = FALSE; } else if (on == FALSE) { llReleaseControls(); on = TRUE; }
}
run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { llTakeControls( CONTROL_FWD|CONTROL_BACK|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT,TRUE,FALSE); }
}
control(key id, integer level, integer edge) { if (level & CONTROL_FWD) { llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,00,0.25> * llGetLocalRot()]); } if (level & CONTROL_BACK) { llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,00,-0.25> * llGetLocalRot()]);
}
if(level & CONTROL_ROT_LEFT) { llSetLinkPrimitiveParamsFast(-4,[PRIM_ROT_LOCAL, llGetLocalRot() * llEuler2Rot(<0,0,5>*DEG_TO_RAD)]);
}
if (level& CONTROL_ROT_RIGHT)
{
llSetLinkPrimitiveParamsFast(-4,[PRIM_ROT_LOCAL, llGetLocalRot() * llEuler2Rot(<0,0,-5>*DEG_TO_RAD)]);
}
}
}