SL-751 - updated lsl test scripts with bug fix, added a version that uses the new command llGetObjectAnimationNames()
parent
22c8efc2ce
commit
936ccff59f
|
|
@ -7,7 +7,7 @@ say_if_verbose(integer channel, string message)
|
|||
{
|
||||
if (verbose)
|
||||
{
|
||||
llSay(0, message);
|
||||
llSay(channel, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ default
|
|||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
llOwnerSay("got message " + name + " " + (string) id + " " + message);
|
||||
//llOwnerSay("got message " + name + " " + (string) id + " " + message);
|
||||
list words = llParseString2List(message,[" "],[]);
|
||||
string command = llList2String(words,0);
|
||||
string option = llList2String(words,1);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,133 @@
|
|||
integer listenHandle;
|
||||
integer verbose;
|
||||
integer current_animation_number;
|
||||
string NowPlaying;
|
||||
|
||||
say_if_verbose(integer channel, string message)
|
||||
{
|
||||
if (verbose)
|
||||
{
|
||||
llSay(channel, message);
|
||||
}
|
||||
}
|
||||
|
||||
stop_all_animations()
|
||||
{
|
||||
list curr_anims = llGetObjectAnimationNames();
|
||||
say_if_verbose(0,"stopping all, curr_anims are " + (string) curr_anims);
|
||||
integer length = llGetListLength(curr_anims);
|
||||
integer index = 0;
|
||||
while (index < length)
|
||||
{
|
||||
string anim = llList2String(curr_anims, index);
|
||||
say_if_verbose(0, "Stopping " + anim);
|
||||
llStopObjectAnimation(anim);
|
||||
// This check isn't really needed, just included to demonstrate is_animation_running()
|
||||
if (is_animation_running(anim))
|
||||
{
|
||||
say_if_verbose(0, "ERROR - failed to stop " + anim + "!");
|
||||
}
|
||||
++index;
|
||||
}
|
||||
}
|
||||
|
||||
integer is_animation_running(string anim)
|
||||
{
|
||||
list curr_anims = llGetObjectAnimationNames();
|
||||
return ~llListFindList(curr_anims, (list)anim);
|
||||
}
|
||||
|
||||
start_cycle_animations()
|
||||
{
|
||||
current_animation_number = llGetInventoryNumber(INVENTORY_ANIMATION);
|
||||
next_animation(); // Do first iteration without waiting for timer
|
||||
llSetTimerEvent(5.0);
|
||||
}
|
||||
|
||||
next_animation()
|
||||
{
|
||||
string ItemName;
|
||||
if (NowPlaying != "")
|
||||
{
|
||||
say_if_verbose(0, "Stopping " + NowPlaying);
|
||||
llStopObjectAnimation(NowPlaying);
|
||||
}
|
||||
if (current_animation_number--)
|
||||
{
|
||||
ItemName = llGetInventoryName(INVENTORY_ANIMATION, current_animation_number);
|
||||
say_if_verbose(0, "Starting " + ItemName);
|
||||
llStartObjectAnimation(ItemName);
|
||||
key anim_id = llGetInventoryKey(ItemName);
|
||||
say_if_verbose(0, "Started item " + ItemName + " inv key " + (string) anim_id);
|
||||
NowPlaying = ItemName;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Start again at the top
|
||||
current_animation_number = llGetInventoryNumber(INVENTORY_ANIMATION);
|
||||
}
|
||||
}
|
||||
|
||||
stop_cycle_animations()
|
||||
{
|
||||
llSetTimerEvent(0);
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
say_if_verbose(0, "Animated Object here");
|
||||
listenHandle = llListen(-2001,"","","");
|
||||
verbose = 0;
|
||||
|
||||
stop_all_animations();
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
//llOwnerSay("got message " + name + " " + (string) id + " " + message);
|
||||
list words = llParseString2List(message,[" "],[]);
|
||||
string command = llList2String(words,0);
|
||||
string option = llList2String(words,1);
|
||||
if (command=="anim")
|
||||
{
|
||||
stop_all_animations();
|
||||
if (option=="start")
|
||||
{
|
||||
start_cycle_animations();
|
||||
}
|
||||
else if (option=="stop")
|
||||
{
|
||||
stop_cycle_animations();
|
||||
}
|
||||
}
|
||||
if (command=="verbose")
|
||||
{
|
||||
if (option=="on")
|
||||
{
|
||||
verbose = 1;
|
||||
}
|
||||
else if (option=="off")
|
||||
{
|
||||
verbose = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
timer()
|
||||
{
|
||||
say_if_verbose(0, "timer triggered");
|
||||
next_animation();
|
||||
}
|
||||
|
||||
touch_start(integer total_number)
|
||||
{
|
||||
say_if_verbose(0, "Touch started.");
|
||||
start_cycle_animations();
|
||||
}
|
||||
}
|
||||
|
||||
// Local Variables:
|
||||
// shadow-file-name: "$SW_HOME/axon/scripts/testing/lsl/cycle_object_animations_v2.lsl"
|
||||
// End:
|
||||
Loading…
Reference in New Issue