LlCastRay

De DigiWiki.

integer filter = 0;
 
default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }
 
    touch_start(integer total_number)
    {
        vector start = llGetPos();
        vector end = start - <0,-25,0>;
 
        if ( filter > 8 )
        {
            filter = 0;
        }
 
        llOwnerSay("Filter " + (string)filter);
 
        list results = llCastRay(start, end, [RC_REJECT_TYPES, filter, RC_MAX_HITS, 4] );
 
        integer hitNum = 0;
        // Handle error conditions here by checking llList2Integer(results, -1) >= 0
        for ( hitNum = 0; hitNum < llList2Integer(results, -1); hitNum++ )
        {
            // Stride is 2 because we didn't request normals or link numbers
            key uuid = llList2Key(results, 2*hitNum);
            string name;
            if ( uuid == NULL_KEY )
            {
                name = "Land";
            }                
            else
            {
                name = llKey2Name(uuid);
            }
            llOwnerSay("Hit " + name);
        }
 
        filter += 1;
    }
}
Outils personnels
  • Cette page a été consultée 596 fois.
donate
Google Ads