|
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
|
12-26-2005 10:39
This is a suggestion that might require too much of a change to how sit-targets are handled, but IMO it would be EXTREMELY handy.
One thing that frustrates me in SL is designing seats, I can spend ages making a reall nice, low-prim seat only to find that avatars can't sit on it properly, or it requires several attempts to sit down. The only solution therefore would be to either design the seat with more prims (which can still end up with odd sitting positions) or add multiple pose-balls to it (lots of extra prims!).
Take for example a simple bench, one prim is sufficient for this, however sitting on these can be a pain!
What I would like to suggest therefore is the addition of:
llSitTargets() function in addition to llSitTarget(). and llAvatarsOnSitTargets() in addition to llAvatarOnSitTarget().
This first function would be the same as llSitTarget except that it takes it's information as a strided list, where each 'row' is a pair of a vector and a rotation specifying where and how the avatar should sit. Similarly the llAvatarsOnSitTargets() function returns a list of keys, where each key corresponds to a sit-target (in the order in which they were passed to the llSitTargets() function) and either has a key for the avatar on it, or is set to NULL_KEY to indicate no avatar.
This is flexible enough that you can happily add a large number of sit-targets, allowing for a long, single-prim bench, while still being able to do things like animate the avatars and so on. Using the 'old' llSitTarget() function would remove any existing list and replace it with a single target. Using llAvatarsOnSitTargets() afterwards would return a single value. Similarly feeding llSitTargets() a list with one 'row' will set only a single sit target. llAvatarOnSitTarget() when used with a multiple sit-target enabled prim will return the first sit-target.
When an avatar comes to sit on a multi sit-target enabled prim, it would simply select the nearest sit-target to where the avatar clicked. e.g I click at <0.5,0.25,0.35> (relative to the prim) and there is a sit target at <0.4,0.25,0.35> and one at <0.65,0.25,0.35>. I would sit down at the first sit-target if it is not already occupied, otherwise I would sit at the second, or be told there is no more space to sit on.
|
|
Torley Linden
Enlightenment!
Join date: 15 Sep 2004
Posts: 16,530
|
12-26-2005 13:52
Looks like you've thot this one out really well. On a very basic, experiential level: From: Haravikk Mistral Take for example a simple bench, one prim is sufficient for this, however sitting on these can be a pain! I cannot agree more. One of the worst things for me, as a new Resident, was trying to figure out how to sit on that damn (now treasured by way of historical authenticity) bench in the "classic" Ahern-Morris Welcome Area. I was thankfully guided by helpful bystanders, who made it clear to me I had to face AWAY from the bench at first, and then not be clicking on the top part, or I'd end up perching on the backrest (something which became somewhat of a signature later, but not intended at the beginning). This area of control needs to be made much more intuitive. It frankly looks ridiculous goofing up on sitting so often. Avatars in SL have sort of a gaping deficiency in this regard.
|
|
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
|
12-26-2005 14:28
Yeah, the ability to mark objects as 'unsittable' would be another plus. In-fact, not wanting to complicate this idea too much, but another function: llAllowAvatarSit()
Would be extremely handy, give this TRUE and it behaves as normal, give it FALSE and an avatar cannot sit on this object at all (however all information on sit targets would be preserved).
This would be extremely hany for security reasons, as sitting on an object which is otherwise unreachable (e.g a poseball in a locked room) can allow you to circumvent walls. It is by no means an absolute solution but it would help prevent exploits for some games. Possibly allowing a careful home-owner to remove the exploit from their land entirely when they leave.
|
|
Ben Bacon
Registered User
Join date: 14 Jul 2005
Posts: 809
|
12-27-2005 02:43
Until LL give us more sit functionality, Haravikk, I would recommend that you contact Hiro Pendragon. I think his posecube technology might work for you.
|
|
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
|
12-27-2005 04:06
Hmm, thanks for the suggestion, but my poseballs are actually more flexible than those. But I'd rather not use them. For example, I've got a fountain outside my shop which actually respawns every so-often to keep prims down. But you can't really do that with seats. So I devised a simple bench, just using a hollowed cube cut horizontally in half, leaving a flat bench with two 'legs' at either end. But for some reason this is difficult to sit on, and frequently ends with people sitting 'in' the bench (ie with their legs through it). It would be a huge waste to add pose-balls to these, as five people could comfortably sit on each one, but that's a total of six prims per "simple" bench 
|
|
Alan Kiesler
Retired Resident
Join date: 29 Jun 2004
Posts: 354
|
12-27-2005 23:50
If you can generate a listing of sittarget positions on the prim (via fiddling with script), you can probably create a complex script to have people get on-off a single prim with multiple 'seats.'
Send a note over to Scripting Tips forum, they'd be able to help.
_____________________
Timothy S. Kimball (RL) -- aka 'Alan Kiesler' The Kind Healer -- http://sungak.net
No ending is EVER written; Communities will continue on their own.
|
|
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
|
12-28-2005 15:11
I just tried this script: default { state_entry() { llSitTarget(<0,0,1>,ZERO_ROTATION); } changed(integer x) { if (x & CHANGED_LINK) { if (llAvatarOnSitTarget() != NULL_KEY) llSitTarget(<1,0,1>,ZERO_ROTATION); } } }That script sets a sit target, then when someone sits on it sets another one. The theory was that somone else could then sit on this new sit-target, but it doesn't appear to work like that. If the first person on stands up then someone can now sit down (on the new sit target) but still only one at a time as far as I can tell. Unless there's a trick to it I don't understand or it simply decided to stop playing fair when I tried it. It definitely would need a new function.
|