// Sliding door LSL script #3 // Handles the touch event. // Handles the collision event. // Handles closing the door automatically via a timer event. float delay = 3.0; // time to wait before // automatically closing door vector delta = <1.0, 0.0, 0.0>; // amount to move door // when we open it vector closed_position; // original position of the // door when closed // Processing for the script when it first starts up default { // What we do when we first enter this state state_entry() { closed_position = llGetPos(); // Save position when door is closed state closed; // Move to the closed state } } // Processing for the script when it is in the closed state state closed { // What we do when we first enter this state state_entry() { llSetPos(closed_position); // Move door to closed position } // What we do when the door is clicked ("touched") with the mouse touch_start(integer total_number) { state open; // Move to the open state } // What to do when something hits the door collision_start(integer total_number) { state open; // Move to the open state } // What to do when the timer goes off timer() { llSetTimerEvent(0.0); // Set the timer to 0.0 to turn it off } } // Processing for the script when it is in the open state state open { // What we do when we first enter this state state_entry() { llSetPos(closed_position + delta); // Move door to open position llSetTimerEvent(delay); // Set the timer to automatically close it } // What we do when the door is clicked ("touched") with the mouse touch_start(integer total_number) { state closed; // Move to the closed state } // What to do when something hits the door collision_start(integer total_number) { // Do nothing, the door is already open } // What to do when the timer goes off timer() { llSetTimerEvent(0.0); // Set the timer to 0.0 to turn it off state closed; // Move to the closed state } }