Difference between revisions of "GetGlow"
m (Edited to update to 2015 formatting.) |
|||
(16 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Since a lot of people have asked, me included, I decided to write a function to compensate for the missing [[llGetGlow|llGetGlow(integer face)]] compliment to [[llGetAlpha|llGetAlpha(integer face)]]. | |||
To this effect, I have reverse engineered the '''llGetAlpha()''' process fairly accurately, and written '''GetGlow()''' to mimic it's functionality to the best of my knowledge. | |||
To this | -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 '''GetGlow(integer face)''' within. | |||
<syntaxhighlight lang="lsl2"> | |||
Place the following function at the top of each script you wish to use | float GetGlow(integer i){ // This function is similar to llGetAlpha(). Usage: float GetGlow(integer face) | ||
< | if(i > llGetNumberOfSides()){ return FALSE; } | ||
float | |||
if( | |||
else{ | else{ | ||
list | float f; | ||
list l = llGetPrimitiveParams([PRIM_GLOW, i]); | |||
i = llGetListLength(l); | |||
return | do{f+=llList2Float(l,i);}while(i--); | ||
return f; | |||
} | } | ||
} | }</syntaxhighlight> | ||
</ | ''Function float GetGlow(integer face) by -ThumpieBunnyEve Hax'' | ||
Here is the Equivalent LSL Portal page formatting for use with it. | Here is the Equivalent LSL Portal page formatting for use with it. | ||
<h1>[ | <h1>[[float]] GetGlow([[integer]] face)</h1> | ||
[ | [[Return]]s the [[Glow]] (intensity) of the given face. | ||
If face is [ | If face is [[ALL_SIDES]], the value returned is the sum of glows on all faces. To obtain the mean value, use the following: | ||
< | <syntaxhighlight lang="lsl2">float meanGlow = GetGlow(ALL_SIDES) / ((float)llGetNumberOfSides());</syntaxhighlight> | ||
Line 35: | Line 34: | ||
Verbosely commented Example: | Verbosely commented Example: | ||
< | <syntaxhighlight lang="lsl2"> | ||
//Blackbox Tech Revealed! Usage: float | //Blackbox Tech Revealed! Usage: float GetGlow(integer face) | ||
float | float GetGlow(integer i)// This function is similar in many if not all capacities to llGetAlpha(); | ||
if( | { | ||
if(i > llGetNumberOfSides()) //To note: I'm not sure why llGetAlpha returns the value TRUE for non existent sides, | |||
{ //but I'm going to assume that it's relevant to the way the Clients editor- | |||
else{ | return FALSE; //adds sides when you alter a prims properties. | ||
} | |||
else | |||
{ | |||
float f; //memory space for the addition of float data derived from (l) below. | |||
list l = llGetPrimitiveParams([PRIM_GLOW, i]);//This list may contain floats derived from multiple sides if (i) is Negitive, | |||
//a single side if (i) Positive, or no sides if (i) > llGetNumberOfSides(). | |||
i = llGetListLength(l);//To save memory space, we'll reuse integer (i), assigning it the # of Sides passed to this function. | |||
do{f+=llList2Float(l,i);}while(i--); //Here we loop through the # of Sides, adding each glow value to the float (f). | |||
return f; //finally we return the cumulative glow total of (i)'s side(s). | |||
} | } | ||
} | } | ||
//---Below is an example of | //---Below is an example of GetGlow's usage, and it's Comparison to llGetAlpha.--- | ||
default | default | ||
Line 60: | Line 61: | ||
llSetPrimitiveParams([PRIM_COLOR, -1, <0,0,1>, .5,PRIM_GLOW,-1,.5]); | llSetPrimitiveParams([PRIM_COLOR, -1, <0,0,1>, .5,PRIM_GLOW,-1,.5]); | ||
llOwnerSay(" \n"+ | llOwnerSay(" \n"+ | ||
" | "GetGlow(ALL_SIDES)= " +(string)GetGlow(ALL_SIDES)+"\n"+ | ||
"llGetAlpha(ALL_SIDES)= "+(string)llGetAlpha(ALL_SIDES)+"\n"+ | "llGetAlpha(ALL_SIDES)= "+(string)llGetAlpha(ALL_SIDES)+"\n"+ | ||
" | "GetGlow(-1)= " +(string)GetGlow(-1) +"\n"+ | ||
"llGetAlpha(-1)= "+(string)llGetAlpha(-1)+"\n"+ | "llGetAlpha(-1)= "+(string)llGetAlpha(-1)+"\n"+ | ||
" | "GetGlow(2)= " +(string)GetGlow(2) +"\n"+ | ||
"llGetAlpha(2)= " +(string)llGetAlpha(2) +"\n"+ | "llGetAlpha(2)= " +(string)llGetAlpha(2) +"\n"+ | ||
" | "GetGlow(0)= " +(string)GetGlow(0) +"\n"+ | ||
"llGetAlpha(0)= " +(string)llGetAlpha(0) +"\n"+ | "llGetAlpha(0)= " +(string)llGetAlpha(0) +"\n"+ | ||
" | "GetGlow(25)= " +(string)GetGlow(25) +"\n"+ | ||
"llGetAlpha(25)= "+(string)llGetAlpha(25)); | "llGetAlpha(25)= "+(string)llGetAlpha(25)); | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight>''Example of usage by -ThumpieBunnyEve Hax'' | ||
Line 78: | Line 79: | ||
<code><br> | <code><br> | ||
To Owner:<br> | To Owner:<br> | ||
GetGlow(ALL_SIDES)= 3.000000<br> | |||
llGetAlpha(ALL_SIDES)= 3.000000<br> | llGetAlpha(ALL_SIDES)= 3.000000<br> | ||
GetGlow(-1)= 3.000000<br> | |||
llGetAlpha(-1)= 3.000000<br> | llGetAlpha(-1)= 3.000000<br> | ||
GetGlow(2)= 0.500000<br> | |||
llGetAlpha(2)= 0.500000<br> | llGetAlpha(2)= 0.500000<br> | ||
GetGlow(0)= 0.500000<br> | |||
llGetAlpha(0)= 0.500000<br> | llGetAlpha(0)= 0.500000<br> | ||
GetGlow(25)= 0.000000<br> | |||
llGetAlpha(25)= 1.000000<br> | llGetAlpha(25)= 1.000000<br> | ||
</code> | </code> |
Latest revision as of 00:02, 3 March 2015
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 GetGlow() 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 GetGlow(integer face) within.
float GetGlow(integer i){ // This function is similar to llGetAlpha(). Usage: float GetGlow(integer face)
if(i > llGetNumberOfSides()){ return FALSE; }
else{
float f;
list l = llGetPrimitiveParams([PRIM_GLOW, i]);
i = llGetListLength(l);
do{f+=llList2Float(l,i);}while(i--);
return f;
}
}
Function float GetGlow(integer face) by -ThumpieBunnyEve Hax
Here is the Equivalent LSL Portal page formatting for use with it.
float GetGlow(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:
float meanGlow = GetGlow(ALL_SIDES) / ((float)llGetNumberOfSides());
Verbosely commented Example:
//Blackbox Tech Revealed! Usage: float GetGlow(integer face)
float GetGlow(integer i)// This function is similar in many if not all capacities to llGetAlpha();
{
if(i > llGetNumberOfSides()) //To note: I'm not sure why llGetAlpha returns the value TRUE for non existent sides,
{ //but I'm going to assume that it's relevant to the way the Clients editor-
return FALSE; //adds sides when you alter a prims properties.
}
else
{
float f; //memory space for the addition of float data derived from (l) below.
list l = llGetPrimitiveParams([PRIM_GLOW, i]);//This list may contain floats derived from multiple sides if (i) is Negitive,
//a single side if (i) Positive, or no sides if (i) > llGetNumberOfSides().
i = llGetListLength(l);//To save memory space, we'll reuse integer (i), assigning it the # of Sides passed to this function.
do{f+=llList2Float(l,i);}while(i--); //Here we loop through the # of Sides, adding each glow value to the float (f).
return f; //finally we return the cumulative glow total of (i)'s side(s).
}
}
//---Below is an example of GetGlow'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"+
"GetGlow(ALL_SIDES)= " +(string)GetGlow(ALL_SIDES)+"\n"+
"llGetAlpha(ALL_SIDES)= "+(string)llGetAlpha(ALL_SIDES)+"\n"+
"GetGlow(-1)= " +(string)GetGlow(-1) +"\n"+
"llGetAlpha(-1)= "+(string)llGetAlpha(-1)+"\n"+
"GetGlow(2)= " +(string)GetGlow(2) +"\n"+
"llGetAlpha(2)= " +(string)llGetAlpha(2) +"\n"+
"GetGlow(0)= " +(string)GetGlow(0) +"\n"+
"llGetAlpha(0)= " +(string)llGetAlpha(0) +"\n"+
"GetGlow(25)= " +(string)GetGlow(25) +"\n"+
"llGetAlpha(25)= "+(string)llGetAlpha(25));
}
}
Example of usage by -ThumpieBunnyEve Hax
Example output of the script above.
To Owner:
GetGlow(ALL_SIDES)= 3.000000
llGetAlpha(ALL_SIDES)= 3.000000
GetGlow(-1)= 3.000000
llGetAlpha(-1)= 3.000000
GetGlow(2)= 0.500000
llGetAlpha(2)= 0.500000
GetGlow(0)= 0.500000
llGetAlpha(0)= 0.500000
GetGlow(25)= 0.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