// V3 //
float auto_close = 10.0; // The time the door remains open before auto closing. Set to zero for no auto closure.
integer open;
OperateDoors()
{
if(!open)
{
float f = 0.0;
while((f += 0.01) <= 1.0)
llSetLinkPrimitiveParamsFast(LINK_THIS, [9, 0, 0, <0.375,0.875,0.0>, 0.95, ZERO_VECTOR, , ZERO_VECTOR]);
}
else
{
float f = 1.0;
while((f -= 0.01) >= -1.0)
llSetLinkPrimitiveParamsFast(LINK_THIS, [9, 0, 0, <0.375,0.875,0.0>, 0.95, ZERO_VECTOR, , ZERO_VECTOR]);
}
llSetTimerEvent(auto_close);
open = (!open);
}
default
{
state_entry()
{
vector pos = llGetPos();
llSetLinkPrimitiveParamsFast(LINK_THIS, [9, 0, 0, <0.375,0.875,0.0>, 0.95, ZERO_VECTOR, <0.0,1.0,0.0>, ZERO_VECTOR,
17, -1, TEXTURE_BLANK, <1.0,1.0,0.0>, ZERO_VECTOR, 0.0,
6, ,
18, -1, ZERO_VECTOR, 0.4,
8, ,
7, <3.0,5.0,0.01>]);
}
touch_start(integer nd)
{
if(llToLower(llGetObjectDesc()) == "owner")
{
while(nd)
{
if(llDetectedKey(--nd) == llGetOwner())
OperateDoors();
}
}
else
OperateDoors();
}
timer()
{
llSetTimerEvent(0.0);
if(open)
OperateDoors();
}
}