vendredi 18 janvier 2008

State


Aujourd'hui il ne s'agira pas d'une fonction, mais comment bien utilisé "state" ou etat.  Dans notre exemple allons frabriquer un pseudo feu rouge.
Chaque evenement est spécifique à l'etat dans lequel on est ainsi, on peut avoir le même evenement dans fifferent etat et qu'il ne fasse pas la même chose.
Décomposons le programme, je commence dans l'etat default, l'etat de base est l'etat rouge, alors on "saute" dedans.
On mets à rouge noter objet et au bout de 5 secondes, il passe à vert, puis après 5 seconde il passe à l'orange pour seulement 3 secondes.
Il y a biensure une technique pour le faire sans les états mais c'est beaucoup plus compliqué et surtout moins lisible.
Car il aurait fallu faire plein de tests imbriqués, perdant ainsi en clarté de lecture.
Pour savoir quand utilisé les state c'est simple, plus vous avez de conditions dans un seul et même evenement, il serait peut être judicieux de l'utiliser.

default
{
    state_entry()
    {
       state rouge;
    }
}
state rouge
{
    state_entry()
    {
        llSetColor(<1.0,0.0,0.0>,ALL_SIDES);
        llSetTimerEvent(5);
    }
    timer()
    {
        state vert;
    }
}
state orange
{
    state_entry()
    {
        llSetColor(<1.0,1.0,0.0>,ALL_SIDES);
        llSetTimerEvent(3);
    }
    timer()
    {
        state rouge;
    }
}
state vert
{
    state_entry()
    {
        llSetColor(<0.0,1.0,0.0>,ALL_SIDES);
        llSetTimerEvent(5);
    }
    timer()
    {
        state orange;
    }
}

Aucun commentaire: