Materialization Effects 2

From Second Life Wiki
Revision as of 03:01, 24 April 2011 by Nika Rugani (talk | contribs)
Jump to navigation Jump to search

<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>