ESTADOS
En LSL, la mayoría de los scripts suelen estar no-operativos hasta que reciban alguna entrada o detecten algun cambio en su entorno.
En cualquier momento, el scripts suele estar en algun estado, y reaccionará a los eventos o entradas segun el esquema definido por el programador.
Sin embargo, un script puede tambien contener 2 o mas estados diferentes, y reaccionar de diferente momento segun en que estado se encuentre.
El estado principal es el estado default.
Cuando un script es compilado, reseteado o cargado, este es el estado por defecto.
El script no suele volver a entrar al estado default cuando se rezzea, se adjunta otra vez, se cambia de sim o se reinicia de sim.
Despues del estado por defecto, pueden venir otros estados. Pero sin el estado default el script no funciona.
El estado default tiene la siguiente forma:
default
{
Eventos
}
Otros diferentes estados tienen la siguiente forma:
state estadonuevo
{
Eventos
}
Siendo estadonuevo el nombre del nuevo estado.
Para cambiar de estado, es importante los siguientes 3 pasos:
-
Terminar el estado ejecutando el evento state_exit()
-
Se cambia de estado llamando al nuevo estado. Por ejemplo: state estadonuevo;
Todos los eventos listen() son anulados.
-
Se ejecuta el evento state_entry() dentro del nuevo estado para comenzarlo.
Algunas advertencias:
-
Todos los listen son liberados
-
Los eventos en espera son borrados.
-
Los sensores repetitivos son liberados.
-
El reloj del timer NO es borrado.
-
Esto significa que si el nuevo estado tiene un evento timer, y el estado anterior tenia una funcion que llamaba a un timer, esta función podrá llamar al timer del estado nuevo.
-
El estado default debe ser definido antes que cualqueir estado.
-
Los estados no pueden tener funciones o variables dentro de ellos en la primera linea. Solo eventos pueden ser definidos los primeros.
-
Las funciones definidas por el programados no pueden cambiar el estado de un script. El compilador nos dara error.