Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Accordion Style Door Movement - Folding Door

VonGklugelstein Alter
Bedah Profeshinal Tekstur
Join date: 22 Dec 2007
Posts: 808
12-18-2008 19:34
I am trying to figure out how to make a Accordion Style Door Movement that looks nice.

Thanks in advance.
_____________________
Escort DeFarge
Together
Join date: 18 Nov 2004
Posts: 681
12-18-2008 23:54
your best bet is to get some sculpty stairs (they are cheap and readily available), upend them and scale them.

/esc
_____________________
http://slurl.com/secondlife/Together
Yingzi Xue
Registered User
Join date: 11 Jun 2008
Posts: 144
12-19-2008 03:16
I've seen folding doors in a build before, so I know it's possible. I would assume you would use two swinging doors (or more) and move them appropriately as they rotate, making them appear to fold as one door.
Lightwave Valkyrie
Registered User
Join date: 30 Jan 2004
Posts: 666
12-19-2008 18:35
i used llGetLocalPos() and llGetLocalRot() for open and closed.
then move them with llSetPrimitiveParams PRIM_POSITION and PRIM_ROTATION using link messages and preset linked positions and rotations
_____________________
L$ is the root of all evil
videos work! thanks SL :)
Innula Zenovka
Registered User
Join date: 20 Jun 2007
Posts: 1,825
12-20-2008 05:25
Me too. I link up all the components of the door, with it in the closed position, and then put this handy little snippet of code into each moving part:
CODE
vector locPos;
rotation locRot;
grab_params()
{
locPos = llGetLocalPos();
locRot = llGetLocalRot();
llOwnerSay("\n \nLoc Position: " + (string)locPos + "\n \nLoc Rotation: " + (string)locRot + "\n \n");

}
default
{
state_entry()
{
grab_params();
}

touch_start(integer total_number)
{
grab_params();
}
}
I make a note of the result, obviously.

Then I write a script including the following bits and pieces:
CODE

vector p_closed;
rotation r_closed;

vector p_open;
rotation r_open;

rotation LocalRot(rotation localrot)
{
rotation LocRot = localrot / ( (ZERO_ROTATION / llGetLocalRot()) * llGetRot());
return LocRot;
}

open()
{
llSetPrimitiveParams([PRIM_ROTATION, LocalRot(r_open), PRIM_POSITION, p_open]);

}

close()
{
llSetPrimitiveParams([PRIM_ROTATION, LocalRot(r_closed), PRIM_POSITION, p_closed]);
}
I call these two functions, open() and close(), where and how I need them in the script: typically start with close() in state_entry() and then toggle between calling open() and close() with a touch_start().

I paste in the readings I've just obtained to give values to p_closed and r_closed.

I then move each moving part of the door into the open position, take a fresh set of readings, and use these to paste in values for vector p_open and rotation r_open.

It's a rather laborious process. Sue Stonebender has a very helpful free, set of scripts and demos on http://shop.onrez.com/item/789956 for free which people might find useful if they aren't familiar with using llSetPrimitiveParams to move child prims. I wish the kit had been available when I was trying to get my head round it.