OpenSim Mantis Tracker
| Anonymous | Login | Signup for a new account | 2010-09-02 07:48 PDT |
| Main | My View | View Issues | Change Log | Roadmap | Summary | Docs | My Account |
| 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 | ||||||||||||
|
|
||||||||||||
| Mantis 1.1.1[^] Copyright © 2000 - 2008 Mantis Group |