Difference between revisions of "User:Jasper Flossberg"
Jump to navigation
Jump to search
(Created page with "{{LSL Header}} This single prim HUD is just a button that scrolls through nearby players names, photos and user key. Drop it in a prim and touch the prim and you are set to go. …") |
|||
Line 1: | Line 1: | ||
{{LSL Header}} | {{LSL Header}} | ||
This | This is a KeyFrame Animator Script to simplify construction of keyframed animations. | ||
--[[User:Jasper Flossberg|Jasper Flossberg]] | |||
--[[User: | |||
<lsl> | <lsl> | ||
// | integer channel=0; | ||
integer MODE=0; // 0 NonInit 1 Init 2 Run | |||
list keys=[]; | |||
vector last_pos; | |||
rotation last_rot; | |||
vector start_pos; | |||
rotation start_rot; | |||
update_loc() | |||
{ | { | ||
last_pos=llGetPos(); | |||
last_rot=llGetRot(); | |||
} | } | ||
Line 36: | Line 24: | ||
state_entry() | state_entry() | ||
{ | { | ||
llSay(0, "Welcome to the KeyFrame Setter v1.0 by Jasper Flossberg"); | |||
llListen(0,"",NULL_KEY,""); | |||
} | |||
touch_start(integer total_number) | |||
{ | |||
channel=(integer)llFrand(4000000); | |||
llDialog(llDetectedKey(0),"Please choose option",["Init","Run","Export"],channel); | |||
llListen(channel,"",NULL_KEY,""); | |||
} | } | ||
listen(integer channel, string name, key id, string message) | |||
{ | { | ||
if ( | if(message=="Init") | ||
{ | { | ||
llSay(0,"Intializing KeyFrame Setter"); | |||
llSetKeyframedMotion([],[]); | |||
keys=[]; | |||
update_loc(); | |||
start_pos=llGetPos(); | |||
start_rot=llGetRot(); | |||
MODE=1; | |||
} | } | ||
if(llGetSubString(message,0,2)=="set") | |||
if ( | |||
{ | { | ||
if(MODE==1) | |||
{ | { | ||
string time=llList2String(llParseString2List(message,[" "],[]),1); | |||
llSay(0,"Setting new KeyFrame with "+time); | |||
keys+=[llGetPos()-last_pos,ZERO_ROTATION*(llGetRot()/last_rot),(integer)time]; | |||
update_loc(); | |||
} | } | ||
} | |||
if(message=="Run") | |||
{ | |||
MODE=2; | |||
llSetPrimitiveParams([PRIM_POSITION,start_pos,PRIM_ROTATION,start_rot]); | |||
llSetKeyframedMotion(keys,[KFM_MODE,KFM_LOOP]); | |||
} | |||
if(message=="Export") | |||
{ | |||
llSay(0,(string)keys); | |||
} | } | ||
} | } | ||
} | } | ||
</lsl> | </lsl> |
Latest revision as of 02:19, 29 April 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This is a KeyFrame Animator Script to simplify construction of keyframed animations. --Jasper Flossberg
<lsl> integer channel=0; integer MODE=0; // 0 NonInit 1 Init 2 Run list keys=[]; vector last_pos; rotation last_rot;
vector start_pos; rotation start_rot;
update_loc() {
last_pos=llGetPos(); last_rot=llGetRot();
}
default {
state_entry() { llSay(0, "Welcome to the KeyFrame Setter v1.0 by Jasper Flossberg"); llListen(0,"",NULL_KEY,""); }
touch_start(integer total_number) { channel=(integer)llFrand(4000000); llDialog(llDetectedKey(0),"Please choose option",["Init","Run","Export"],channel); llListen(channel,"",NULL_KEY,""); } listen(integer channel, string name, key id, string message) { if(message=="Init") { llSay(0,"Intializing KeyFrame Setter"); llSetKeyframedMotion([],[]); keys=[]; update_loc(); start_pos=llGetPos(); start_rot=llGetRot(); MODE=1;
} if(llGetSubString(message,0,2)=="set") { if(MODE==1) { string time=llList2String(llParseString2List(message,[" "],[]),1); llSay(0,"Setting new KeyFrame with "+time); keys+=[llGetPos()-last_pos,ZERO_ROTATION*(llGetRot()/last_rot),(integer)time]; update_loc(); } } if(message=="Run") { MODE=2; llSetPrimitiveParams([PRIM_POSITION,start_pos,PRIM_ROTATION,start_rot]); llSetKeyframedMotion(keys,[KFM_MODE,KFM_LOOP]); } if(message=="Export") { llSay(0,(string)keys); } }
} </lsl>