C'est pas les projecteurs de diapos qui manquent dans Second Life pour réaliser les présentations. C'est toujours un outil de gestion de l'affichage d'une texture sur une primitive.
L'innovation, c'est le double tampon proposé par ce script (recopié ci-après de Erich Bremer) permet de précharger la texture de la diapo suivante et donc pas de temps de chargement.
Et hop ! Vos présentations deviennent plus belles et plus fluides !
Source : http://www.ebremer.com/doublebufferslidescriptforsl
====== script below =======================
// Multi-buffered slide presentation script
// minimizes download time of each slide by pre-loading them to the various facets of the "screen prim"
// Script by Erich Bremer March 24, 2009
// clicking on prim advances the slide show. Saying "B" on channel 7 makes the slide presentation go backwards by one slide. "/7b"
integer NumberOfTextures = 0;
integer CurrentTexture = 0;
integer listen_handle;
displayme() {
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, CurrentTexture), 0);
if (CurrentTexture+1<NumberOfTextures) {
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, CurrentTexture+1), 1);
}
if (CurrentTexture+2<NumberOfTextures) {
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, CurrentTexture+2), 2);
}
if (CurrentTexture+3<NumberOfTextures) {
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, CurrentTexture+3), 3);
}
if (CurrentTexture+4<NumberOfTextures) {
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, CurrentTexture+4), 4);
}
if (CurrentTexture+5<NumberOfTextures) {
llSetTexture(llGetInventoryName(INVENTORY_TEXTURE, CurrentTexture+5), 5);
}
}
default
{
state_entry()
{
NumberOfTextures = llGetInventoryNumber(INVENTORY_TEXTURE);
listen_handle = llListen(7, "", llGetOwner(), "");
displayme();
}
listen( integer channel, string name, key id, string message )
{
if (message == "b") {
if (CurrentTexture > 0) {
CurrentTexture--;
}
displayme();
}
if (message == "n") {
if (CurrentTexture < NumberOfTextures - 1) {
CurrentTexture++;
}
displayme();
}
}
touch_start(integer agent)
{
if (llDetectedKey(0) == llGetOwner()) {
if (CurrentTexture < NumberOfTextures - 1)
CurrentTexture++;
else
CurrentTexture = 0;
displayme();
}
}
changed(integer change)
{
if (change & CHANGED_INVENTORY)
llResetScript();
}
}
============script above===================
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=39bf54d3-75ce-4c15-a5c7-3a90378c8040)
