integer gListPos = 0; //an integer to track current list position.
integer gListLength = 0; //number of snapshots found.
string gCurrentSnap = "Snap01"; //a string, to be converted to from ListPos, relating to the name of each snapshot.
integer CONSOLE_CHAN = -6667;
default
{
state_entry()
{
gListLength = llGetInventoryNumber(INVENTORY_TEXTURE);
llListen(CONSOLE_CHAN, "", NULL_KEY, "");
}
listen( integer channel, string name, key id, string message )
{
if (message == "forward")
{
if (gListPos == (gListLength - 1)) //Branch to reset ListPos to 0 when it hits the end of the list.
{
gListPos = 0;
}
else
{
++gListPos; //increment on touch, to move through the snapshots.
}
}
else if (message == "back")
{
if (gListPos == 0) //Branch to reset ListPos to max when it hits the bottom of the list.
{
gListPos = (gListLength - 1);
}
else
{
--gListPos; //decrement on touch, to move through the snapshots.
}
}
gCurrentSnap = llGetInventoryName(INVENTORY_TEXTURE, gListPos); //Pulling the string name of current snapshot from the list for use in llSetTexture.
llSetTexture(gCurrentSnap, ALL_SIDES); //Setting snapshot!
llSay(PUBLIC_CHANNEL, "Displaying picture " + (string)(gListPos + 1) + "/" + (string)gListLength);
}
}