Difference between revisions of "GetGlow"

From Second Life Wiki
Jump to navigation Jump to search
Line 12: Line 12:
<lsl>
<lsl>
float llGetGlow(integer ia){// This function is similar to llGetAlpha().  Usage: float llGetGlow(integer face)
float llGetGlow(integer ia){// This function is similar to llGetAlpha().  Usage: float llGetGlow(integer face)
     if(ia>llGetNumberOfSides()) return TRUE;  
     if(ia>llGetNumberOfSides()) { return TRUE; }
     else{
     else{
         list la=llGetPrimitiveParams([PRIM_GLOW,ia]);
         list la=llGetPrimitiveParams([PRIM_GLOW,ia]);
Line 38: Line 38:
//Blackbox Tech Revealed!  Usage: float llGetGlow(integer face)
//Blackbox Tech Revealed!  Usage: float llGetGlow(integer face)
float llGetGlow(integer ia){// This function is similar in many if not all capacities to llGetAlpha();
float llGetGlow(integer ia){// This function is similar in many if not all capacities to llGetAlpha();
if(ia>llGetNumberOfSides()) return TRUE; //I have no idea why llGetAlpha returns the value TRUE
if(ia>llGetNumberOfSides()) { return TRUE; } //I have no idea why llGetAlpha returns the value TRUE
                                        //-when we ask for a side > GetNumberOfSides,  
                                            //-when we ask for a side > GetNumberOfSides,  
                                        //but I've reproduced the effect here in llGetGlow for continuity.
                                            //but I've reproduced the effect here in llGetGlow for continuity.
else{
else{
     list la=llGetPrimitiveParams([PRIM_GLOW,ia]); //This list may contain floats derived from multiple sides if (ia) is Negitive,  
     list la=llGetPrimitiveParams([PRIM_GLOW,ia]); //This list may contain floats derived from multiple sides if (ia) is Negitive,  

Revision as of 23:21, 31 January 2009

llGetGlow

Since a lot of people have asked, me included, I decided to write a function to compensate for the missing llGetGlow(integer face) compliment to llGetAlpha(integer face).

To this effect, I have reverse engineered the llGetAlpha() process fairly accurately, and written llGetGlow() to mimic it's functionality to the best of my knowledge.

-To date- I have been unable to find a post providing this function. That may be because it is deeply buried far from places where it would be relevantly visible, or, possibly because a function of this design has not been offered before. Either way, Until LSL incorporates an actual llGetGlow() function, you can use this provision to generate the same effect.

I submit for your convenience, a functional equivalent to llGetGlow().

Place the following function at the top of each script you wish to use llGetGlow(integer face) within. <lsl> float llGetGlow(integer ia){// This function is similar to llGetAlpha(). Usage: float llGetGlow(integer face)

   if(ia>llGetNumberOfSides()) { return TRUE; }
   else{
       list la=llGetPrimitiveParams([PRIM_GLOW,ia]);
       float fa;
       for(ia=llGetListLength(la);ia>-1;ia--)fa+=llList2Float(la, ia);
       return fa;    
       }

} </lsl>Function float llGetGlow(integer face) by -ThumpieBunnyEve Hax

Here is the Equivalent LSL Portal page formatting for use with it.

float llGetGlow(integer face)

Returns the Glow (intensity) of the given face.

If face is ALL_SIDES, the value returned is the sum of glows on all faces. To obtain the mean value, use the following: <lsl>float meanGlow = llGetGlow(ALL_SIDES) / ((float)llGetNumberOfSides());</lsl>



Verbosely commented Example: <lsl> //Blackbox Tech Revealed! Usage: float llGetGlow(integer face) float llGetGlow(integer ia){// This function is similar in many if not all capacities to llGetAlpha(); if(ia>llGetNumberOfSides()) { return TRUE; } //I have no idea why llGetAlpha returns the value TRUE

                                            //-when we ask for a side > GetNumberOfSides, 
                                            //but I've reproduced the effect here in llGetGlow for continuity.

else{

   list la=llGetPrimitiveParams([PRIM_GLOW,ia]); //This list may contain floats derived from multiple sides if (ia) is Negitive, 
                                                 //a single side if (ia) Positive, or no sides if (ia) > llGetNumberOfSides().
   float fa; //memory space for the addition of float data derived from (la) below.
   for(ia=llGetListLength(la);ia>-1;ia--)fa+=llList2Float(la, ia);//add together all available floats from list (la)
   return fa;//return the cumulative glow total of (ia)'s side(s).
   }

}

//---Below is an example of LLGetGlow's usage, and it's Comparison to llGetAlpha.---

default { state_entry(){

            llSetPrimitiveParams([PRIM_COLOR, -1, <0,0,1>, .5,PRIM_GLOW,-1,.5]);
            llOwnerSay(" \n"+
            "llGetGlow(ALL_SIDES)= " +(string)llGetGlow(ALL_SIDES)+"\n"+
            "llGetAlpha(ALL_SIDES)= "+(string)llGetAlpha(ALL_SIDES)+"\n"+
            "llGetGlow(-1)= " +(string)llGetGlow(-1)+ "\n"+
            "llGetAlpha(-1)= "+(string)llGetAlpha(-1)+"\n"+
            "llGetGlow(2)= "  +(string)llGetGlow(2)+  "\n"+
            "llGetAlpha(2)= " +(string)llGetAlpha(2)+ "\n"+
            "llGetGlow(0)= "  +(string)llGetGlow(0)+  "\n"+
            "llGetAlpha(0)= " +(string)llGetAlpha(0)+ "\n"+
            "llGetGlow(25)= " +(string)llGetGlow(25)+ "\n"+
            "llGetAlpha(25)= "+(string)llGetAlpha(25));
            }

} </lsl>Example of usage by -ThumpieBunnyEve Hax


Example output of the script above.
To Owner:
llGetGlow(ALL_SIDES)= 3.000000
llGetAlpha(ALL_SIDES)= 3.000000
llGetGlow(-1)= 3.000000
llGetAlpha(-1)= 3.000000
llGetGlow(2)= 0.500000
llGetAlpha(2)= 0.500000
llGetGlow(0)= 0.500000
llGetAlpha(0)= 0.500000
llGetGlow(25)= 1.000000
llGetAlpha(25)= 1.000000


Sorry if the Formatting is off, I could really use some help making this page look more professional, This is my first provisionary page. Edits and corrections welcome, but especially page formatting assistance! -ThumpieBunnyEve Hax