Materialization Effects 2
Revision as of 03:01, 24 April 2011 by Nika Rugani (talk | contribs)
<lsl> integer links = LINK_SET;
float alpha_increment = 0.01;
nrFadeAlpha(float start_point, float end_point, float speed) {
start_point = nrFloatCheck(start_point); end_point = nrFloatCheck(end_point); speed = nrFloatCheck(speed); if(start_point!=end_point) { if(start_point<end_point) { do { start_point = nrFloatCheck((start_point+speed)); llSetLinkPrimitiveParamsFast(links, [PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), start_point]); }while(start_point<end_point); } else { do { start_point = nrFloatCheck((start_point-speed)); llSetLinkPrimitiveParamsFast(links, [PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), start_point]); }while(start_point>end_point); } }
}
float nrFloatCheck(float src) {
if(src<=0) { return 0.0; } else if(src>=1) { return 1.0; } return src;
}
float nrGetGlow() {
return (float)llList2String(llGetPrimitiveParams([PRIM_GLOW, ALL_SIDES]), 0);
} nrSetGlow(integer link_num, float glow, integer sides) {
llSetLinkPrimitiveParamsFast(link_num, [PRIM_GLOW,sides,glow]);
}
default {
on_rez(integer a) { nrSetGlow(LINK_SET, 0.1, ALL_SIDES); nrFadeAlpha(0, 1.0, alpha_increment); nrSetGlow(LINK_SET, 0.0, ALL_SIDES); } touch_start(integer num) { if(llGetAlpha(ALL_SIDES)>0.5) { nrSetGlow(LINK_SET, 0.1, ALL_SIDES); nrFadeAlpha(1.0, 0.0, alpha_increment); nrSetGlow(LINK_SET, 0.0, ALL_SIDES); } else { nrSetGlow(LINK_SET, 0.1, ALL_SIDES); nrFadeAlpha(0.0, 1.0, alpha_increment); nrSetGlow(LINK_SET, 0.0, ALL_SIDES); } }
}</lsl>