Difference between revisions of "Pointing Stick"
Jump to navigation
Jump to search
m |
Omei Qunhua (talk | contribs) m (Fix sundry formatting / indenting errors) |
||
Line 12: | Line 12: | ||
{ | { | ||
state_entry() | state_entry() | ||
{ | { | ||
vector goal = <90, 0, 90>; | |||
llSetRot(llEuler2Rot(goal*DEG_TO_RAD)); | |||
llSetText("Touch to activate", <0,1,0>, 1); | |||
} | } | ||
on_rez(integer x) | |||
on_rez(integer x | |||
{ | { | ||
llResetScript(); | |||
} | } | ||
touch_start(integer y) | |||
{ | { | ||
if (switch) | |||
{ | |||
user = llDetectedKey(0); | |||
llRequestPermissions(user, PERMISSION_TAKE_CONTROLS); | |||
llSetText("Touch to Release Controls", <1,0,0>, 1); | |||
} | |||
else | |||
{ | |||
if (llDetectedKey(0) != user) return; | |||
llReleaseControls(); | |||
llRegionSayTo(user, 0, "Controls Released"); | |||
llSetText("Touch to activate", <0,1,0>, 1); | |||
} | |||
switch = !switch; | |||
} | } | ||
run_time_permissions(integer perm) | run_time_permissions(integer perm) | ||
{ | { | ||
if (perm & PERMISSION_TAKE_CONTROLS) | if (perm & PERMISSION_TAKE_CONTROLS) | ||
{ | |||
llTakeControls( CONTROL_FWD|CONTROL_BACK|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|CONTROL_DOWN,TRUE,FALSE); | llTakeControls( CONTROL_FWD|CONTROL_BACK|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|CONTROL_DOWN,TRUE,FALSE); | ||
} | |||
} | } | ||
control(key id, integer level, integer edge) | control(key id, integer level, integer edge) | ||
{ | { | ||
if (level & CONTROL_UP) | |||
{ | |||
llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,0.20> ]); | |||
} | } | ||
if (level & CONTROL_DOWN) | |||
{ | { | ||
llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,-0.20> ]); | |||
} | |||
if (level & CONTROL_FWD) | |||
{ | |||
llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,0.20> * llGetLocalRot()]); | |||
} | |||
if (level & CONTROL_BACK) | |||
{ | |||
llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,-0.20> * llGetLocalRot()]); | |||
} | |||
if(level & CONTROL_ROT_LEFT) | |||
{ | |||
llSetLinkPrimitiveParamsFast(-4,[PRIM_ROT_LOCAL, llGetLocalRot() * llEuler2Rot(<0,0,4>*DEG_TO_RAD)]); | |||
} | |||
if (level& CONTROL_ROT_RIGHT) | |||
{ | |||
llSetLinkPrimitiveParamsFast(-4,[PRIM_ROT_LOCAL, llGetLocalRot() * llEuler2Rot(<0,0,-4>*DEG_TO_RAD)]); | |||
} | |||
} | } | ||
} | } |
Revision as of 13:19, 14 September 2014
Made this to point at folk when its their turn at games lolz right. the useful tidbit is how it goes in the direction of what ever angle its pointing in.
<lsl> integer switch = TRUE; key user;
default {
state_entry() { vector goal = <90, 0, 90>; llSetRot(llEuler2Rot(goal*DEG_TO_RAD)); llSetText("Touch to activate", <0,1,0>, 1); } on_rez(integer x) { llResetScript(); } touch_start(integer y) { if (switch) { user = llDetectedKey(0); llRequestPermissions(user, PERMISSION_TAKE_CONTROLS); llSetText("Touch to Release Controls", <1,0,0>, 1); } else { if (llDetectedKey(0) != user) return; llReleaseControls(); llRegionSayTo(user, 0, "Controls Released"); llSetText("Touch to activate", <0,1,0>, 1); } switch = !switch; } run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { llTakeControls( CONTROL_FWD|CONTROL_BACK|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|CONTROL_DOWN,TRUE,FALSE); } } control(key id, integer level, integer edge) { if (level & CONTROL_UP) { llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,0.20> ]); } if (level & CONTROL_DOWN) { llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,-0.20> ]); } if (level & CONTROL_FWD) { llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,0.20> * llGetLocalRot()]); } if (level & CONTROL_BACK) { llSetLinkPrimitiveParamsFast(-4,[ PRIM_POSITION, llGetPos() +<0,0,-0.20> * llGetLocalRot()]); } if(level & CONTROL_ROT_LEFT) { llSetLinkPrimitiveParamsFast(-4,[PRIM_ROT_LOCAL, llGetLocalRot() * llEuler2Rot(<0,0,4>*DEG_TO_RAD)]); } if (level& CONTROL_ROT_RIGHT) { llSetLinkPrimitiveParamsFast(-4,[PRIM_ROT_LOCAL, llGetLocalRot() * llEuler2Rot(<0,0,-4>*DEG_TO_RAD)]); } }
}