//**** Auto-adjust Sliding door script **** //**** detects the door size automatically and adjust movement **** //**** detects orientation of the door **** //**** remembers the door's last position through a region restart or script reset default { state_entry() { llOwnerSay("Door script is active"); if(llGetObjectDesc()=="") llSetObjectDesc("0"); // if any, initialize Object's Description as storage variable } touch_start(integer total_number) { { vector mySize = llGetScale(); vector myPos = llGetPos(); rotation myRot = llGetRot(); vector unitForward = llRot2Fwd(myRot); vector unitHorizontal = llRot2Left(myRot); vector unitVertical = llRot2Up(myRot); float myWidth = mySize.x; integer opened =(integer)llGetObjectDesc(); if (opened == 0) { rotation rot = llGetRot(); rotation delta = llEuler2Rot(<0,0,PI/4>); rot = delta * rot; llSetRot(rot); llSleep(0.25); rot = delta * rot; llSetRot(rot); llPlaySound("12741__Leady__opening_a_creaky_door",1); } if (opened == 1) { rotation rot = llGetRot(); rotation delta = llEuler2Rot(<0,0,-PI/4>); rot = delta * rot; llSetRot(rot); llSleep(0.25); rot = delta * rot; llSetRot(rot); llPlaySound("53270__THE_bizniss__door_close_3",1); } opened = opened + 1; if (opened == 2) { opened = 0; } llSetObjectDesc((string)opened); } } }