User/Digit Ditko/experience hud basic script

From Second Life Wiki
< User
Revision as of 20:52, 12 September 2015 by Digit Ditko (talk | contribs) (Created page with "{{TOCright}} == HUD Experience Detection == If you need a HUD that will activate and inactivate itself as an avatar moves about Second Life© then this example shows the...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

HUD Experience Detection

If you need a HUD that will activate and inactivate itself as an avatar moves about Second Life© then this example shows the minimum necessary to do that.

// the color of the HUD for the active mode
vector ACTIVE_COLOR = <0.0, 1.0, 0.0>;

// the color of the HUD in inactive mode
vector INACTIVE_COLOR = <1.0, 0.0, 0.0>;


// simple function to change the HUD color. 
setColor (vector inColor)
{
    llSetLinkPrimitiveParamsFast (
        LINK_SET, [PRIM_COLOR, ALL_SIDES, inColor, 1.0]); 
}



// -----------------------------------------------------------------------------
// Default state
// The default state is the logical "inactive" state of the HUD.  
 
default
{
    state_entry ()
    {
        // for the initial setup of the HUD, just set the color to inactive.  
        setColor (INACTIVE_COLOR);  
        
        // after the setup is complete , determing is the HUD should go 
        // to the active state.  If the script is NOT compiled to use an 
        // experience, then the agent in experience API call will return false.   
        if (llAgentInExperience (llGetOwner ()))
        {
            state active;
        }  
    }
    
    
    attach (key inAvatar)
    {
        // if the HUD is beinf attached, check if the agent is in the experience
        // and swich to the active state. 
        if (inAvatar)
        { 
            if (llAgentInExperience (inAvatar))
            {
                state active;
            }  
        } 
    }
    
    changed (integer inMask)
    {   
        // if the owner changes or if the avatar goes to a different 
        // region, chesk it the avatar is in the experience again and 
        // change to the active state if neeed.
        if (inMask & (CHANGED_REGION | CHANGED_OWNER))
        {
            key av = llGetOwner ();
            if (llAgentInExperience (av))
            {
                state active;
            }
        }      
    }
}


// --------------------------------------------------------------------------
// in the "active" state the HUD should have all standard functions.
// All this demo script does is turn the HUD to the active color.

state active
{
    state_entry ()
    {
        // set the HUD color to active.  
        // This would usually be more elabotrate in a real script
        setColor (ACTIVE_COLOR); 
    }
    
    
    on_rez (integer inParam)
    {
        // When the object is trezzed, the state of the HUD is unknown. 
        // Just change to the default state to run through the initialization 
        // logic as needed.
        state default;   
    }
    

    attach (key inAvatar)
    {
        // when attached, check if the agent is in the experience and 
        // change to the default inactive state ias needed.
        if (inAvatar)
        { 
            if (! llAgentInExperience (inAvatar))
            {
                state default;
            }  
        } 
    }
    
    changed (integer inMask)
    {   
        // need to go through initialization logic if the owner changes or if 
        // the avatar goes to a different region.  NOTE: This does not detect
        // individual parcel changes.    
        if (inMask & (CHANGED_REGION | CHANGED_OWNER))
        {
            key av = llGetOwner ();
            if (! llAgentInExperience (av))
            {
                state default;
            }
        }      
    }
}