Difference between revisions of "GetGlow"
Line 39: | Line 39: | ||
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()){//To note: I have no idea why llGetAlpha returns the value TRUE | if(ia > llGetNumberOfSides()){//To note: I have no idea why llGetAlpha returns the value TRUE | ||
return TRUE; //-when we ask for a side > GetNumberOfSides, | |||
} //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, | |||
//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--){//To save memory space, we'll reuse integer ia, assigning it the # of Sides. | |||
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.--- | //---Below is an example of LLGetGlow's usage, and it's Comparison to llGetAlpha.--- |
Revision as of 00:01, 1 February 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()){//To note: I have no idea why llGetAlpha returns the value TRUE return 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--){//To save memory space, we'll reuse integer ia, assigning it the # of Sides. 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