State: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 10: | Line 10: | ||
When encountered at runtime, if the old state and the new state are different states: | When encountered at runtime, if the old state and the new state are different states: | ||
#Trigger [[state_exit]] in the current state (if it exists) and clear the event queue. | #Trigger [[state_exit]] in the current state (if it exists) and clear the event queue. | ||
#Change state to '''target''' | #Change state to '''target''', any open [[listen]]s are unregistered. | ||
#Trigger [[state_entry]] in the new state if it exists. | #Trigger [[state_entry]] in the new state if it exists. | ||
If '''target''' is the current state a state change does not happen nor does any of it's effects. | If '''target''' is the current state a state change does not happen nor does any of it's effects. | ||
Revision as of 21:54, 2 March 2007
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
- The correct title of this article is state. The initial letter is shown capitalized due to technical restrictions.
state target;
state target;| • label | target | – | name of a state to run |
When encountered at runtime, if the old state and the new state are different states:
- Trigger state_exit in the current state (if it exists) and clear the event queue.
- Change state to target, any open listens are unregistered.
- Trigger state_entry in the new state if it exists.
If target is the current state a state change does not happen nor does any of it's effects.
state target{ events }
| • label | target | – | state name | |
| • event | events | – | one or more events |
State definition.
Caveats
- On state change all listens are released.
Examples
state hello
{
state_entry()
{
llOwnerSay("Hello");
state default;
}
state_exit()
{
llOwnerSay("Goodbye");
}
}
default
{
touch_start(integer a)
{
state hello;
}
}
See Also