Difference between revisions of "State"

From Second Life Wiki
Jump to navigation Jump to search
Line 7: Line 7:
}}{{#vardefine:header_text|{{{!}}
}}{{#vardefine:header_text|{{{!}}
{{LSL DefineRow|label|target|{{#var:p_jump_state_desc}}}}
{{LSL DefineRow|label|target|{{#var:p_jump_state_desc}}}}
{{!}}}
{{!}}}<br/>
Causes the script to exit the current state (and triggering the [[state_exit]] if it exists) and enter the state '''target'''. If the old state and the new state are the same state, neither the [[state_entry]] or [[state_exit]] are queued.
If the old state and the new state are different states:
#Trigger [[state_exit]] in the current state if it exists.
#Changes state to '''target'''
#Trigger [[state_entry]] in the new state if it exists.
If not, do nothing.
}}{{#vardefine:constants_nb|
}}{{#vardefine:constants_nb|
<div id="box">
<div id="box">

Revision as of 22:49, 2 March 2007

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

If the old state and the new state are different states:

  1. Trigger state_exit in the current state if it exists.
  2. Changes state to target
  3. Trigger state_entry in the new state if it exists.

If not, do nothing.

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

Keywords

•  jump
•  return