Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Prim(s) Phantom on Touch - by Bugs Larnia
- //Created 2016-10-07
- //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.
- //Please keep annotations
- float gfDefaultAlpha = 1.0; // Default (inactive) alpha.
- float gfPhantomAlpha = 0.3; // Touched (active) alpha.
- float gfInterval = 10.0; // seconds the bridge remains active.
- integer giSteps = 10; //The transparency steps
- integer giLinkType = LINK_SET; //LINK_THIS, LINK_SET, LINK_ROOT, LINK_ALL_OTHERS, LINK_ALL_CHILDREN or link number
- Init()
- {
- if (giLinkType == 0)
- {
- giLinkType = LINK_THIS;
- }
- if (gfInterval < 0.0)
- {
- gfInterval == 10.0;
- }
- if (giSteps < 1)
- {
- giSteps = 1;
- }
- }
- SetPhantom(integer piPhantom)
- {
- float fStep;
- float fRange = (gfPhantomAlpha - gfDefaultAlpha);
- if (piPhantom)
- {
- llSetStatus(STATUS_PHANTOM, TRUE);
- for (fStep = 1.0; fStep >= 0.0; fStep -= 1.0 / giSteps)
- {
- ChangeAlpha(fStep * fRange);
- }
- llSetLinkAlpha(giLinkType, gfPhantomAlpha, ALL_SIDES);
- llSetTimerEvent(gfInterval);
- }
- else
- {
- //Fade to default alpha
- for (fStep = 0.0; fStep <= 1.0; fStep += 1.0 / giSteps)
- {
- ChangeAlpha(fStep * fRange);
- }
- llSetLinkAlpha(giLinkType, gfDefaultAlpha, ALL_SIDES);
- llSetStatus(STATUS_PHANTOM, FALSE);
- llSetTimerEvent(0.0);
- }
- }
- ChangeAlpha(float pfChange)
- {
- llSetLinkAlpha(giLinkType, gfPhantomAlpha - pfChange, ALL_SIDES);
- llSleep(0.25);
- }
- default
- {
- state_entry()
- {
- Init();
- SetPhantom(FALSE);
- }
- touch_start(integer piNum)
- {
- SetPhantom(!llGetStatus(STATUS_PHANTOM));
- }
- timer()
- {
- SetPhantom(FALSE);
- }
- on_rez(integer piParam)
- {
- llResetScript();
- }
- }
Add Comment
Please, Sign In to add comment