User:Jasper Flossberg

From Second Life Wiki
Revision as of 02:19, 29 April 2013 by Jasper Flossberg (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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>