Difference between revisions of "Window Control"

From Second Life Wiki
Jump to navigation Jump to search
(New page: == What it does == Window Control is basically just to change the opacity of windows and such, helpful for buildings. == Window == Put this in the windows; // script that changes opaci...)
 
m (fix)
Line 6: Line 6:


Put this in the windows;
Put this in the windows;
 
<lsl>
// script that changes opacity of object based on external messages
// script that changes opacity of object based on external messages


Line 12: Line 12:
integer gLastListen; // id of last listen command
integer gLastListen; // id of last listen command


<lsl>default
default
  {
  {
     state_entry()
     state_entry()
Line 37: Line 37:


Put this in a switch;
Put this in a switch;
 
<lsl>
  // script for a switch that controls window opacity
  // script for a switch that controls window opacity
  integer gOpacityLevel = 0; // current opacity level of windows
  integer gOpacityLevel = 0; // current opacity level of windows
  integer gChannel = 5; // channel that controls which windows respond to this switch
  integer gChannel = 5; // channel that controls which windows respond to this switch


<lsl>default
default
  {
  {
     state_entry()
     state_entry()

Revision as of 00:18, 26 December 2008

What it does

Window Control is basically just to change the opacity of windows and such, helpful for buildings.

Window

Put this in the windows; <lsl> // script that changes opacity of object based on external messages

integer gChannel = 5; // communication channel on which we listen for opacity change commands integer gLastListen; // id of last listen command

default

{
    state_entry()
    {
        gLastListen = llListen(gChannel, "", "", "0");
    }
   
    listen(integer channel, string name, key id, string msg)
    {
        llListenRemove(gLastListen);
        
        integer nextOpacityLvl = (integer)msg;
        nextOpacityLvl += 1;
        if (nextOpacityLvl > 3) nextOpacityLvl = 0;
        gLastListen = llListen(gChannel, "", "", (string)nextOpacityLvl);
        
        float opacityLvl = (float)msg;
        opacityLvl = 1.1 - ((opacityLvl / 3) * 0.9);
        llSetAlpha(opacityLvl, ALL_SIDES);
    } 
}</lsl>

Window Switch

Put this in a switch; <lsl>

// script for a switch that controls window opacity
integer gOpacityLevel = 0; // current opacity level of windows
integer gChannel = 5; // channel that controls which windows respond to this switch

default

{
    state_entry()
    {
       
    }
    
    touch_start(integer num_touchers)
    {
        gOpacityLevel += 1;
        if (gOpacityLevel > 3)
        {
            gOpacityLevel = 0;
        }
        string opacityCmd = "";
        opacityCmd = opacityCmd + (string)gOpacityLevel;
        llSay(gChannel, opacityCmd);
    }
}</lsl>

How to work it

When you've put all the window opacity scripts in and done the switch, just click the switch to cycle through transparent and opaque.