- Scénario :
Répéter :
Alpha 0 -> 1 progressif
Pause 15s
Alpha 1 -> 0 progressif
Pause 15s
Soit f la fonction transparence que tu appliques. Soit t le paramètre temps.
Soit T1 le temps de passage de l'alpha 0 à l'alpha 1.
Soit T2 le temps de pause.
Soit T3 le temps de passage de l'alpha 1 à l'alpha 0.
On a
f(t) = t / T1 si 0 <= t < T1
f(t) = 1 si T1 <= t < T1 + T3
f(t) = 1-t/T2 si T1+T3 <= t < T1+T3+T2
f(t) = 0 si T1+T3+T2 <= t < T1+T3+T2+T2
sachant que t est modulo T1+T3+T2+T2 on met un test :
if( t >= T1+T3+2*T2 ) t = 0;
Ensuite il faut savoir faire passer le temps, visiblement tu sais le faire.
T'as plus qu'à écrire les lignes qui vont avec ça.
float T1 = 15.0; // T1 en sec
float T2 = 15.0; // T2 en sec
float T3 = 15.0; // T3 en sec
float timeUnit = 0.1; // unité de temps en sec
float gt;
// Ecrire la fonction f :
// utiliser T1,T2 et T3.
float f( float t)
{
....
return ....;
}
// Faire passer le temps
default
{
state_entry()
{ llSetTimerEvent(timeUnit); }
timer()
{
gt += timeUnit;
// Gestion du modulo (mieux de le placer dans le codage de f) :
if(gt >= T1+T3+2*T2 ) gt = 0;
llSetAlpha( f(gt), 2);
}
}