Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0001773 [opensim] [REGION] OpenSim Core major always 2008-07-18 08:10 2009-09-18 06:52
Reporter mohax View Status public  
Assigned To
Priority normal Resolution open  
Status feedback   Product Version
Summary 0001773: llSitTarget behaves inconsistently unlike SL (might also be handling of sit target prim property persistence)
Description [Listing as OpenSim Core since not convinced this is just an llSitTarget function problem]

Summary:

llSitTarget and the persistence expected from SL is simply and confusingly not the same causing furniture and other pose related objects to be horribly frusterating to create and debug. I suspect this is a compound problem: sit target is not persisting in objects taken into inventory or even in-world for a long time; and repositioning of sit target in a root prim is being lost after linked sets are taken into inventory.

Longer Explanation:

In order to understand this confusing bug, we have to start by recapping current SL sit target behavior and then how it differs from current OpenSim behavior:

In SL when llSitTarget is called even once for any script within a prim the sit target offset and rotation become persistent properties of that prim, until another llSitTarget is called. This includes taking the object into inventory and rerezzing it.

Furthermore, when a sit target is set in a root prim in a linked set then sitting anywhere on any of the prims in the linked set observes the root prim sit target. The only exception to this is if another prim also has had llSitTarget called from within it and there are two sitters, say in a couch for example. In this case, the first sitter, on _any_ prim in the couch always gets the root prim sit target and the second gets the sit target in the next prim. If the root prim does not have a sit target but one or more other prims do have them, then the prim(s) with the sit target(s) 'wins'. If there are two and neither are root, SL seems to randomly pick between them but always repositions to a sit target if _any_ sit target for any linked prim has been defined. If an avatar sits specifically on a prim with a sit target then that sit target position is always observed, even if it is not in the root prim. This is how people are able to specify position on a multi-user couch, for instance. Never at any time is the position of any non-sit-target prim used to calculate sit position if even one prim has ever had a llSitTarget() called for it.

The OpenSim Bug:

Currently OpenSim appears to observe this behavior _only_ for the first time the set is linked and the llSitTarget is set and _only_ while the new linked set remains in-world. When working sitting on any prim puts the avatar on the defined sit target rather than that of the sit-target-less prim they may have sat on.

However, taking that same linked set into inventory and rerezzing it causes the set to allow the avatar to sit on _any_ prim, with or without a sit target, and OpenSim attempts to resolve the sit position from that specific prim's position rather than allowing the sit target that should have persisted from llSitTarget call to direct avatar positioning. It seems, strangely, that all the prims have had a sit target defined and persisted rather than just the one and their sit targets are all off, almost the exact inverse of the actual llSitTarget call originally.

Recreation Steps:

* rez three prims
* link them so that the middle prim is root
* create a script in root prim that calls llSetTarget(<0.0,0.0,0.4>,ZERO_ROTATION)
* include on_rez(integer param){llResetScript();)
* add something to script to know it has initialized correctly (llSay,etc)
* save and wait for script to init
* sit on root prim, observe position
* sit on other prim, observe position
* note that sit target is authoritivative for all possible sit positions
* take linked set into inventory
* rez in world
* attempt same sit test, observe each prim now apparently has (incorrect) authoritative sit target even if original sit target for root prim is still observed for that prim only

Work arounds:

One work around is to rez furniture and then rez a poseball that remains unlinked and which contains llSitTarget in it, but even that is unreliable.
Additional Information
Tags No tags attached.
Git Revision
SVN Revision 5494 (but also in earlier versions)
Run Mode Standalone (1 Region) , Standalone (Multiple Regions) , Grid (1 Region per Sim) , Grid (Multiple Regions per Sim)
Physics Engine ODE
Environment Mono / Linux32, Mono / Windows
Mono Version None
Attached Files

- Relationships

-  Notes
(0003864)
Twitch (manager)
2008-07-18 08:24

I can confirm this issue. It was introduced in r5432.
(0004215)
nlin (developer)
2008-08-04 20:40

Confirmed, but it also appears earlier in r5431. Investigating further.
(0005110)
nlin (developer)
2008-09-08 23:01

I think this has been fixed. Could the original reporter please confirm.
(0013421)
Fly-Man- (developer)
2009-09-18 06:52

This issue was automatically checked by Mantis Issue Check:

Feedback was added after original submit date

- Issue History
Date Modified Username Field Change
2008-07-18 08:10 mohax New Issue
2008-07-18 08:10 mohax SVN Revision => 5494 (but also in earlier versions)
2008-07-18 08:10 mohax Run Mode => Standalone (1 Region) , Standalone (Multiple Regions) , Grid (1 Region per Sim) , Grid (Multiple Regions per Sim)
2008-07-18 08:10 mohax Physics Engine => ODE
2008-07-18 08:10 mohax Environment => Mono / Linux32, Mono / Windows
2008-07-18 08:25 Twitch Note Added: 0003864
2008-08-01 12:07 chernega Issue Monitored: chernega
2008-08-04 18:03 nlin Issue Monitored: nlin
2008-08-04 20:40 nlin Note Added: 0004215
2008-09-08 23:01 nlin Note Added: 0005110
2009-09-18 06:52 Fly-Man- Note Added: 0013421
2009-09-18 06:52 Fly-Man- Status new => feedback


Mantis 1.1.1[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker