Bugs_Larnia

LSL: Prim(s) Phantom on Touch

Jan 13th, 2021 (edited)
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Prim(s) Phantom on Touch - by Bugs Larnia
  2. //Created 2016-10-07
  3. //This script will set the prim it's in to phantom (and back) on touch. It will revert after gfInterval if it's set to higher than 0.
  4. //Please keep annotations
  5.  
  6. float gfDefaultAlpha = 1.0;      // Default (inactive) alpha.
  7. float gfPhantomAlpha = 0.3;      // Touched (active) alpha.
  8. float gfInterval = 10.0;     // seconds the bridge remains active.
  9. integer giSteps = 10; //The transparency steps
  10. integer giLinkType = LINK_SET; //LINK_THIS, LINK_SET, LINK_ROOT, LINK_ALL_OTHERS, LINK_ALL_CHILDREN or link number
  11.  
  12. Init()
  13. {
  14.     if (giLinkType == 0)
  15.     {
  16.         giLinkType = LINK_THIS;
  17.     }
  18.    
  19.     if (gfInterval < 0.0)
  20.     {
  21.         gfInterval == 10.0;
  22.     }
  23.    
  24.     if (giSteps < 1)
  25.     {
  26.         giSteps = 1;
  27.     }
  28. }
  29.  
  30. SetPhantom(integer piPhantom)
  31. {
  32.     float fStep;
  33.     float fRange = (gfPhantomAlpha - gfDefaultAlpha);
  34.    
  35.     if (piPhantom)
  36.     {
  37.         llSetStatus(STATUS_PHANTOM, TRUE);
  38.         for (fStep = 1.0; fStep >= 0.0; fStep -= 1.0 / giSteps)
  39.         {            
  40.             ChangeAlpha(fStep * fRange);
  41.         }
  42.         llSetLinkAlpha(giLinkType, gfPhantomAlpha, ALL_SIDES);
  43.         llSetTimerEvent(gfInterval);
  44.     }
  45.     else
  46.     {
  47.         //Fade to default alpha
  48.         for (fStep = 0.0; fStep <= 1.0; fStep += 1.0 / giSteps)
  49.         {
  50.             ChangeAlpha(fStep * fRange);
  51.         }
  52.         llSetLinkAlpha(giLinkType, gfDefaultAlpha, ALL_SIDES);
  53.         llSetStatus(STATUS_PHANTOM, FALSE);
  54.         llSetTimerEvent(0.0);
  55.     }    
  56. }
  57.  
  58. ChangeAlpha(float pfChange)
  59. {
  60.     llSetLinkAlpha(giLinkType, gfPhantomAlpha - pfChange, ALL_SIDES);            
  61.     llSleep(0.25);
  62. }
  63.  
  64. default
  65. {
  66.     state_entry()
  67.     {
  68.         Init();
  69.         SetPhantom(FALSE);
  70.     }
  71.    
  72.     touch_start(integer piNum)
  73.     {
  74.         SetPhantom(!llGetStatus(STATUS_PHANTOM));
  75.     }
  76.    
  77.     timer()
  78.     {
  79.         SetPhantom(FALSE);
  80.     }
  81.    
  82.     on_rez(integer piParam)
  83.     {
  84.         llResetScript();
  85.     }
  86. }
  87.  
Add Comment
Please, Sign In to add comment