DoorHax

From Second Life Wiki
Jump to: navigation, search

DoorHax v0.1.0

--BETLOG Hax UTC+10: 20091110 2120 [SLT: 20091110 0420]

A smooth swinging door.
It seemed to work. Almost completely untested.

//==============================================================
// BETLOG Hax
// UTC+10: 20091110 2001 [SLT: 20091110 0301]
// For Gutterblood Spoonhammer
//----------------------------------
//        **** LICENCE START ****
// http://creativecommons.org/licenses/by-sa/3.0/
//             Attribution licence:
// You must:
//    -Include this unaltered licence information.
//    -Supply my original script with your modified version.
//    -Retain the original scripts' SL permissions. [+c/+m/+t]
// Or:
//    -Link to the wiki URL from which you copied this script.
//          https://wiki.secondlife.com/wiki/DoorHax
//    -Document: "Uses parts of <scriptname> by BETLOG Hax"
//        **** LICENCE END ****
//----------------------------------
// SHARED CONFIGURATION
//----------------------------------
// CONFIGURATION
float       gShutAngle      = 0.0;
float       gShutTau        = 3.0;
//
float       gOpenAngle      = 90.0;
float       gOpenTau        = 0.75;
//
string      gSndOpening     = "cb340647-9680-dd5e-49c0-86edfa01b3ac";
float       gVolOpening     = 1.0;
string      gSndOpened      = "2ffd48fb-293c-d8c8-f2c5-c0ca76126baa";
float       gVolOpened      = 1.0;
 
string      gSndClosing     = "e7ff1054-003d-d134-66be-207573f2b535";
float       gVolClosing     = 1.0;
string      gSndClosed      = "31b0c4db-e126-47c5-ac1c-60edb1c0103a";
float       gVolClosed      = 1.0;
//----------------------------------
// CORE CODE
integer     gOpen;
//=========================================================================
f_toggle()
{   float f;
    llResetTime();
    if(gOpen)
    {   llTriggerSound(gSndOpening, gVolOpening);//opening
        do{ f=gShutAngle+(llGetTime()/gOpenTau*llFabs(gShutAngle-gOpenAngle));
//llSetText((string)f, <.0, 1.0, .0>, 1.0);
            llRotLookAt(llEuler2Rot(<0.0, 0.0, f>*DEG_TO_RAD),0.05,0.05);
        }while(f<=gOpenAngle);
        llTriggerSound(gSndOpened,gVolOpened);//opening end
    }
    else
    {   llTriggerSound(gSndClosing, gVolClosing);//closing
        do{ f=gOpenAngle-(llGetTime()/gShutTau*llFabs(gShutAngle-gOpenAngle));
//llSetText((string)f, <1.0, .0, .0>, 1.0);        
            llRotLookAt(llEuler2Rot(<0.0, 0.0, f>*DEG_TO_RAD),0.05,0.05);
        }while(f>=gShutAngle);
        llTriggerSound(gSndClosed, gVolClosed);//closing end
    }
//llOwnerSay((string)llGetTime());
}
//----------------------------------
default
{   state_entry()
    {   llSetText("", <1.0, 1.0, 1.0>, 1.0);
        f_toggle();
    }
    touch_start(integer num)
    {   gOpen=!gOpen;
        f_toggle();
    }
}
//----------------------------------