Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0006121opensim[REGION] Script Functionspublic2012-08-01 05:222014-08-11 09:33
ReporterSignpostMarv 
Assigned Tomelanie 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Versionmaster (dev code) 
Summary0006121: llSetLinkPrimitiveParams, llSetLinkPrimitiveParamsFast, llGetLinkPrimitiveParams do not work on avatars
DescriptionI've noticed for a while that the link prim params family of functions don't work on avatars. I started to implement them, but ran into a wall trying to get ScenePresence objects to return from GetLinkNumPart()
Additional Informationdefault
{
    state_entry(){
        llSitTarget(<0,0,0.00001>,ZERO_ROTATION);
    }
    
    touch_start(integer total_number)
    {
        llOwnerSay(llList2CSV(["PRIM_BUMP_SHINY"] + llGetLinkPrimitiveParams(2, [PRIM_BUMP_SHINY, 1])));
        llOwnerSay(llList2CSV(["PRIM_CAST_SHADOWS"] + llGetLinkPrimitiveParams(2, [PRIM_CAST_SHADOWS])));
        llOwnerSay(llList2CSV(["PRIM_COLOR"] + llGetLinkPrimitiveParams(2, [PRIM_COLOR, 1])));
        llOwnerSay(llList2CSV(["PRIM_DESC"] + llGetLinkPrimitiveParams(2, [PRIM_DESC])));
        llOwnerSay(llList2CSV(["PRIM_FLEXIBLE"] + llGetLinkPrimitiveParams(2, [PRIM_FLEXIBLE])));
        llOwnerSay(llList2CSV(["PRIM_FULLBRIGHT"] + llGetLinkPrimitiveParams(2, [PRIM_FULLBRIGHT, 1])));
        llOwnerSay(llList2CSV(["PRIM_GLOW"] + llGetLinkPrimitiveParams(2, [PRIM_GLOW, 1])));
        llOwnerSay(llList2CSV(["PRIM_LINK_TARGET"] + llGetLinkPrimitiveParams(2, [PRIM_LINK_TARGET, 2, PRIM_NAME])));
        llOwnerSay(llList2CSV(["PRIM_MATERIAL"] + llGetLinkPrimitiveParams(2, [PRIM_MATERIAL])));
        llOwnerSay(llList2CSV(["PRIM_NAME"] + llGetLinkPrimitiveParams(2, [PRIM_NAME])));
        llOwnerSay(llList2CSV(["PRIM_OMEGA"] + llGetLinkPrimitiveParams(2, [PRIM_OMEGA])));
        llOwnerSay(llList2CSV(["PRIM_PHANTOM"] + llGetLinkPrimitiveParams(2, [PRIM_PHANTOM])));
        llOwnerSay(llList2CSV(["PRIM_PHYSICS"] + llGetLinkPrimitiveParams(2, [PRIM_PHYSICS])));
        llOwnerSay(llList2CSV(["PRIM_PHYSICS_SHAPE_TYPE"] + llGetLinkPrimitiveParams(2, [PRIM_PHYSICS_SHAPE_TYPE])));
        llOwnerSay(llList2CSV(["PRIM_POINT_LIGHT"] + llGetLinkPrimitiveParams(2, [PRIM_POINT_LIGHT])));
        llOwnerSay(llList2CSV(["PRIM_POS_LOCAL"] + llGetLinkPrimitiveParams(2, [PRIM_POS_LOCAL])));
        llOwnerSay(llList2CSV(["PRIM_POSITION"] + llGetLinkPrimitiveParams(2, [PRIM_POSITION])));
        llOwnerSay(llList2CSV(["PRIM_ROT_LOCAL"] + llGetLinkPrimitiveParams(2, [PRIM_ROT_LOCAL])));
        llOwnerSay(llList2CSV(["PRIM_ROTATION"] + llGetLinkPrimitiveParams(2, [PRIM_ROTATION])));
        llOwnerSay(llList2CSV(["PRIM_SIZE"] + llGetLinkPrimitiveParams(2, [PRIM_SIZE])));
        llOwnerSay(llList2CSV(["PRIM_SLICE"] + llGetLinkPrimitiveParams(2, [PRIM_SLICE])));
        llOwnerSay(llList2CSV(["PRIM_TEMP_ON_REZ"] + llGetLinkPrimitiveParams(2, [PRIM_TEMP_ON_REZ])));
        llOwnerSay(llList2CSV(["PRIM_TEXGEN"] + llGetLinkPrimitiveParams(2, [PRIM_TEXGEN, 1])));
        llOwnerSay(llList2CSV(["PRIM_TEXT"] + llGetLinkPrimitiveParams(2, [PRIM_TEXT])));
        llOwnerSay(llList2CSV(["PRIM_TEXTURE"] + llGetLinkPrimitiveParams(2, [PRIM_TEXTURE, 1])));
        llOwnerSay(llList2CSV(["PRIM_TYPE"] + llGetLinkPrimitiveParams(2, [PRIM_TYPE])));
// llOwnerSay(llList2CSV(["PRIM_TYPE_LEGACY"] + llGetLinkPrimitiveParams(2, [PRIM_TYPE_LEGACY])));
    }
}
[04:08 AM] Object: PRIM_BUMP_SHINY
[04:08 AM] Object: PRIM_CAST_SHADOWS
[04:08 AM] Object: PRIM_COLOR
[04:08 AM] Object: PRIM_DESC,
[04:08 AM] Object: PRIM_FLEXIBLE, 0, 0, 0.000000, 0.000000, 0.000000, 0.000000, <0.000000, 0.000000, 0.000000>
[04:08 AM] Object: PRIM_FULLBRIGHT
[04:08 AM] Object: PRIM_GLOW
[04:08 AM] Object: PRIM_LINK_TARGET, SignpostMarv Martin
[04:08 AM] Object: PRIM_MATERIAL, 4
[04:08 AM] Object: PRIM_NAME, SignpostMarv Martin
[04:08 AM] Object: PRIM_OMEGA, <0.000000, 0.000000, 0.000000>, 0.000000, 0.000000
[04:08 AM] Object: PRIM_PHANTOM, 0
[04:08 AM] Object: PRIM_PHYSICS, 0
[04:08 AM] Object: PRIM_PHYSICS_SHAPE_TYPE, 0
[04:08 AM] Object: PRIM_POINT_LIGHT, 0, <0.000000, 0.000000, 0.000000>, 0.000000, 0.000000, 0.000000
[04:08 AM] Object: PRIM_POS_LOCAL, <0.000000, 0.000000, 0.350010>
[04:08 AM] Object: PRIM_POSITION, <23.225866, 16.266962, 29.168310>
[04:08 AM] Object: PRIM_ROT_LOCAL, <0.000000, 0.000000, 0.000000, 1.000000>
[04:08 AM] Object: PRIM_ROTATION, <0.000000, 0.000000, 0.000000, 1.000000>
[04:08 AM] Object: PRIM_SIZE, <0.450000, 0.600000, 1.934201>
[04:08 AM] Object: PRIM_SLICE, <0.000000, 1.000000, 0.000000>
[04:08 AM] Object: PRIM_TEMP_ON_REZ, 0
[04:08 AM] Object: PRIM_TEXGEN
[04:08 AM] Object: PRIM_TEXT, , <0.000000, 0.000000, 0.000000>, 1.000000
[04:08 AM] Object: PRIM_TEXTURE
[04:08 AM] Object: PRIM_TYPE, 0, 0, <0.000000, 1.000000, 0.000000>, 0.000000, <0.000000, 0.000000, 0.000000>, <1.000000, 1.000000, 0.000000>, <0.000000, 0.000000, 0.000000>

[04:08 AM] Error: Invalid String [SignpostMarv Martin]: llGetPrimitiveParams error: Param 0 error, texture info cannot be accessed for avatars.
[04:08 AM] Error: Invalid String [SignpostMarv Martin]: llGetPrimitiveParams error: Param 0 error, unknown parameter
[04:08 AM] Error: Invalid String [SignpostMarv Martin]: llGetPrimitiveParams error: Param 0 error, texture info cannot be accessed for avatars.
[04:08 AM] Error: Invalid String [SignpostMarv Martin]: llGetPrimitiveParams error: Param 0 error, texture info cannot be accessed for avatars.
[04:08 AM] Error: Invalid String [SignpostMarv Martin]: llGetPrimitiveParams error: Param 0 error, texture info cannot be accessed for avatars.
TagsNo tags attached.
Git Revision or version number69a5bee
Run ModeStandalone (1 Region)
Physics EngineBasicPhysics
Environment.NET / Windows32
Mono VersionNone
Viewer
Attached Filespatch file icon LinkPrimitiveParams-partial-non-functional.patch [^] (66,743 bytes) 2012-08-01 05:22 [Show Content]

- Relationships
related to 0006988assignedmelanie Master report for issues caused by Avinaion code drop - please link issues that qualify to this as children 
related to 0006421closedmelanie llSetLinkPrimitiveParams cannot move seated avatars 
related to 0006573closedmelanie LSL get and set link primitive paramaters functions are broken when the link number is an avatar 
related to 0006657closedjustincc llSetLinkPrimitiveParams STILL cannot move or rotate seated avatars 
related to 0007044closedjustincc llSetLinkPrimitiveParams, llSetLinkPrimitiveParamsFast, llGetLinkPrimitiveParams do not work CORRECTLY on avatars 
related to 0007299closedjustincc llSetLinkPrimitiveParams* functionality differs from SL 

-  Notes
(0021954)
SignpostMarv (reporter)
2012-08-01 05:23

The additional info field contains the test script, script output and error output that I used to determine the appropriate values from Second Life.
(0023686)
Bolivar Shagnasty (reporter)
2013-03-23 20:14

SetLinkPrimitiveParams seems to have problems on prims as well. Attempting to make one of the prims in a linked set phantom makes them all phantom.
(0023687)
melanie (administrator)
2013-03-23 22:16

That is design behavior. An object cannot be partially phantom.
(0023688)
Bolivar Shagnasty (reporter)
2013-03-24 00:37

That is most unfortunate and there doesn't seem to be anyway to change it so I will have to accomplish the task another way. Thank you for pointing this out.
(0023690)
Mata Hari (reporter)
2013-03-25 05:13

This is the same issue I reported in 0006573

While I concur with Melanie that many of those function parameters shouldn't be possible to get or set when the link is an avatar, there are other applications that these functions are commonly used for that are supposed to work (and do currently work in SL).

Examples include several very common applications that need llSetLinkPrimitiveParamsFast(PRIM_POSITION|PRIM_ROTATION|PRIM_POS_LOCAL|PRIM_ROT_LOCAL:

- in-region teleporter systems that use llSetLinkPrimParamasFast) to adjust avatar position (often in multiple steps) no longer work. Yes, one can use osTeleportAgent() as a substitute but many users do not host their own sims and do not have that OSSL function enabled.

- a host of the most popular "next generation" furniture in SL now allows multiple avatar animations without poseballs, accomplished by having the avatars simply sit on the object and then moving them into correct position. These scripts all fail when used in OpenSim

- photo studios using linked props as the sit-target (rather than a separate poseball) use the same technique for correctly positioning avatars and work perfectly in SL
(0023691)
Richardus Raymaker (reporter)
2013-03-25 05:27
edited on: 2013-03-25 05:29

I just tried the above script on 0.7.5 release. but its generating error
"PRIM_PHYSICS_SHAPE_TYPE" does not exists. and the bug report
creator forgot to add what physics engine and opensim version he used.
ok, physics he add, but cant believe someone is still useing basicphysics. ?

(0023992)
Kayaker Magic (reporter)
2013-06-04 11:30

Why mantis 6121, 6421 and 6573 should be fixed: Move and rotate a seated avatar. The ability to move an avatar after seated has 1000 uses. Here are a few:

1. Pose systems like AVstitter in SL depend on it, these cannot port to OpenSim without the fix.
2. Couples furniture often have a “swap” button to exchange the animation and POSITION of two seated avatars.
3. Animations rarely have the same offset, you cannot change the animation of an avatar without the ability to adjust the position to match.
4. RP/sex animations are dependent on smooth seamless animations. (SEX SELLS!)
5. The Wiki says we can do it: http://wiki.secondlife.com/wiki/LlSitTarget#UpdateSitTarget [^]
6. It can be used to allow different sized avatars to adjust their seated position in vehicles.
7. There are some teleporters that are based on it.
8. I have a “Little Prince” planetoid that I walk the avatar around using this feature. In SL but not in OpenSim.
9. I have a version of M.C.Escher's “Gravitation” that uses it to let you walk on the stairs and surfaces at any angle, in SL but not in OpenSim.
10. I have a prim called “Jesus Boots” that uses it to allow your avatar to walk on the “Void Sea” off the edge of a sim in SL but not in OpenSim.
11. I used it to make Off-SIM surfboards so avatars can surf SIM extender waves. “Don't give up valuable land to surf, surf off-SIM!” In SL but not in OpenSim.
12. I used it to make an “Anti-Grav Hot Tub”, a sphere of water where avatars hang in it with their heads sticking out in the direction of the normal, and can swim from one location to another, in SL but not in OpenSim. http://youtu.be/E9zeQ24XJEM [^]
(0023993)
melanie (administrator)
2013-06-04 12:14

This is an ages old bug report. This and all related have long since been fixed.

PRIM_PHYSICS_SHAPE_TYPE is unrelated but should also be fixed. That fix may not yet be in a release.
(0023996)
melanie (administrator)
2013-06-04 14:07

After a code review this was found to not be resolved. Getting avatar position is implemented, however, setting it is not.
(0024074)
melanie (administrator)
2013-06-11 11:04

You didn't check your facts. This report was already OPEN again at the time you posted your comment. Please don't open duplicates!

We are currently waiting for the upcoming release before making major changes. Avination has fixed this and the code will be donated along with a slew of other code once the currently pending release is out.
(0024176)
Kayaker Magic (reporter)
2013-07-02 11:13

I thought of ANOTHER reason why this bug needs to get fixed.
13) It is impossible to accurately place an avatar on a chair. If you make a perfect chair for the male avatar, the female avatar has a different center of mass and lands in the wrong place. The solution in SL to allow avatars to adjust their position after they sit. WHICH WE CANNOT DO IN OPENSIM!
(0024206)
Kayaker Magic (reporter)
2013-07-23 12:15

Here's ANOTHER reason why this bug should be elevated in priority:
14) Lots of people in OpenSim use a posing script called MLP (Magic Love Pose? But used in regular chairs) It is a total hack, you right-click, touch, select a pose from a menu, it rezzes a pose-ball (only works in public rez areas) then you sit on the ball.
All just so you can adjust your position after you sit.
I made some chairs that you sit on in the 'usual' way, by left clicking. Once. People used to MLP can't get them to work. MPL is has trained them to right-click and they have forgotten that you can just left-click on a CLICK_ACTION_SIT object.
(0024248)
aleric (reporter)
2013-08-05 14:37

I hope too that this will be fixed soon. All my pose adjust scripts depend on this. Sitting on a "pose ball" is ancient and not the right way anymore; but we need this function to work before the new way to adjust avatars will work.
(0024452)
Mata Hari (reporter)
2013-10-11 16:24

Not wishing to be a pest, but with 0.7.6 now released is there any chance of getting that Avination code fix applied to resolve this one (or creating a new code fix if the Avination one is not available for some reason)? It's a pretty significant bug to he having a birthday without being resolved since I don't think I'd be exaggerating to say it's considered a core scripting feature (and works) in SL.
(0024544)
SeanSB (reporter)
2013-10-20 05:21

With the greatest respect to all. I am sure that Melanie is very busy and is likely taking a well earned break after the punishing 0.7.6 release and start of 0.8.0 on 2012-08-01 in commit: 42bdf4 by Justin.

But hopefully soon she can please apply the patch that has been on Avination for at least 10 months (according to comment #23261 on 6421) into the public master branch. Even a cherry pick of it would be nice and I am sure hugely appreciated.

I have quite a few items that I need this functionality for I would like to move from my waiting pile into my finished pile, and into use.

With my weak google-fu I note that the following Mantis documents have been raised on this so far:

* 4477 - 2009-12-31 - Snoopy (Open)
* 6121 - 2012-08-01 - Signpost Marv (This mantis)
* 6421 - 2012-11-11 - Kayaker Magic (Resolved Dupe)
* 6573 - 2013-03-12 - Mata Hari (Resolved Dupe)
* 6657 - 2013-06-04 - Kayaker Magic (Open but yet another Dupe)

It's a very old bug, it's an important piece of functionality though in terms of sitting without poseballs wasting clock cycles, plus other advanced features.

I have yet to trawl through the view issues function in Mantis to find any more, if I do, I will link them here too.
(0024762)
Mata Hari (reporter)
2013-11-22 20:08

Justin, I notice you were doing some work on avatars sitting on non-rorot prims. Any chance that your fixes to that will affect/resolve this long-standing bug?
(0024765)
SeanSB (reporter)
2013-11-23 18:24

Melanie, you are obviously too busy to deal with this bug as you promised by releasing the Avination code you have been sitting on for years. We don't want all your advantages, but this is crucial functionality that you did offer to help with.

As an offer, can you please just cherry pick out this commit(s) and paste it here, I am sure there are more than enough developers who NEED this patch very badly to refactor it into 0.8.0dev for you.

Sadly, if you can't do this, it's getting to the point where we are going to just fix this ourselves and push it to Justin/Nebadon/Whomever to trunk for us. This is bad for you as it pushes the core away from avination.

Please? Post the raw patch to fix this crucial requirement, we can factor it in for you. You will make a lot of people very happy and you will go a long way to reducing the growing impression I see that you are holding back OpenSim Core for your own monetary gain.

Again, thanks.
(0024963)
Mata Hari (reporter)
2014-01-10 07:42

Now that Melanie has finished (or mostly finished) her December updates I thought I'd test to see whether her changes included the long-awaited fix for this bug. Sadly, it does not appear to since it is still broken for me as of r/24172

The script test I did was as follows:



// tests whether avatars can now be moved using llSetLinkPrimitiveParamsFast()
// it is assumed that if it works for this, it will also work for llSetLinkPrimitiveParams()
// Also makes sure it's still working for a regular child prim of the linkset
//
// - Rez 2 cubes on the ground
// - Link them
// - place this script in the root prim
// - sit on the prim
//
// If the base functions is still working the child prim should move vertically by 1m for a few seconds and then return
// If the function is now working correctly for avatars, this should be followed by the avi being moved vertically by 1m for
// a few seconds and then returned to its starting positiong for a few seconds, and will continue to do this until you stand up


integer childPrims;
default
{
    state_entry()
    {
        llSitTarget(<0,0,0.0001>,ZERO_ROTATION); // ensures there's a sit target
        childPrims=llGetNumberOfPrims();
        if (childPrims>1 && llGetLinkNumber()!=1) llSay(0,"This script is not in the root prim. Please place it in the root or the linkset, not a child");
    }
    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            if (llGetNumberOfPrims()==childPrims) return; // assumes this is avi standing up
            if (childPrims>1)
            {
                llSay(0,"Beginning test by moving the first child prim of this linkset vertically by 1m for a few seconds");
                llSleep(1);
                vector childLoc=llList2Vector(llGetLinkPrimitiveParams(2,[PRIM_POS_LOCAL]),0);
                llSetLinkPrimitiveParamsFast(2,[PRIM_POS_LOCAL,childLoc+<0,0,1>]);
                llSleep(3.0);
                llSetLinkPrimitiveParamsFast(2,[PRIM_POS_LOCAL,childLoc]);
                llSleep(2.0);
            }
            llSay(0,"You should now be moved vertically by 1m for a few seconds, then moved back. Stand to end the test.");
            vector aviLoc=llList2Vector(llGetLinkPrimitiveParams(childPrims+1,[PRIM_POS_LOCAL]),0); // avi is always last prim in set
            while (llGetNumberOfPrims()>childPrims)
            {
                llSetLinkPrimitiveParamsFast(childPrims+1,[PRIM_POS_LOCAL,aviLoc+<0,0,1>]);
                llSleep(3.0);
                llSetLinkPrimitiveParamsFast(childPrims+1,[PRIM_POS_LOCAL,aviLoc]);
                llSleep(3.0);
            }
        }
    }
}

Is there any chance that a fix for this could be made something of a priority? As has been highlighted above, it's a function capability that has multiple uses that are of significant interest to many in the OpenSim community.
(0025118)
dz (reporter)
2014-02-04 17:33

Mata Hari...

I'm not sure what the master record for problems caused by the Avination code drop is for... but this Bug was NOT caused by the code drop..

I'm all for getting it noticed again, but I'd hate to see it get passed over as "another one of those to fix later" by lumping it into the new group...
(0025119)
Mata Hari (reporter)
2014-02-05 03:17

@Dz...

On June 11 Melanie indicated that the fix for this would be included in the next Avination code drop. The December drop was the next time that Avination donated code so I then tested to see whether this fixed the issue. It did not, therefore the fix was either not included or the included fix is buggy. Either way, this bug's continued existence is related.
(0025120)
melanie (administrator)
2014-02-05 04:17

Yes, that is correct. I fell seriously ill before Christmas an are only now on a good way to full recovery. During that time, the code drop was in limbo and I only continued it a week ago. It's not yet done, but the reported appearance issues necessitated my upgrading the priority on appearance rather than LSL. It won't be long now for this fix to make it in, too. LSL is a beast, though.
(0025325)
Mata Hari (reporter)
2014-02-26 17:08

Tested with r/24385 and confirmed that avi positioning using set now works correctly.

Huge thanks to Freaky & Justin for making this fix!

- Issue History
Date Modified Username Field Change
2012-08-01 05:22 SignpostMarv New Issue
2012-08-01 05:22 SignpostMarv File Added: LinkPrimitiveParams-partial-non-functional.patch
2012-08-01 05:23 SignpostMarv Note Added: 0021954
2013-03-23 20:14 Bolivar Shagnasty Note Added: 0023686
2013-03-23 22:16 melanie Note Added: 0023687
2013-03-24 00:37 Bolivar Shagnasty Note Added: 0023688
2013-03-25 05:13 Mata Hari Note Added: 0023690
2013-03-25 05:27 Richardus Raymaker Note Added: 0023691
2013-03-25 05:29 Richardus Raymaker Note Edited: 0023691 View Revisions
2013-03-26 17:03 justincc Relationship added related to 0006421
2013-03-26 17:04 justincc Relationship added related to 0006573
2013-06-04 11:30 Kayaker Magic Note Added: 0023992
2013-06-04 12:14 melanie Note Added: 0023993
2013-06-04 12:14 melanie Status new => resolved
2013-06-04 12:14 melanie Resolution open => fixed
2013-06-04 12:14 melanie Assigned To => melanie
2013-06-04 14:07 melanie Note Added: 0023996
2013-06-04 14:07 melanie Status resolved => new
2013-06-11 10:19 dz Note Added: 0024072
2013-06-11 11:04 melanie Note Added: 0024074
2013-07-02 11:13 Kayaker Magic Note Added: 0024176
2013-07-23 12:15 Kayaker Magic Note Added: 0024206
2013-08-05 14:37 aleric Note Added: 0024248
2013-10-11 16:24 Mata Hari Note Added: 0024452
2013-10-20 05:21 SeanSB Note Added: 0024544
2013-11-22 20:08 Mata Hari Note Added: 0024762
2013-11-23 18:24 SeanSB Note Added: 0024765
2013-12-06 12:38 SeanSB Relationship added related to 0006657
2014-01-10 07:42 Mata Hari Note Added: 0024963
2014-01-30 09:34 dz Note Deleted: 0024072
2014-02-02 04:08 Mata Hari Relationship added related to 0006988
2014-02-04 17:33 dz Note Added: 0025118
2014-02-05 03:17 Mata Hari Note Added: 0025119
2014-02-05 04:17 melanie Note Added: 0025120
2014-02-26 17:08 Mata Hari Note Added: 0025325
2014-02-26 17:08 Mata Hari Status new => resolved
2014-02-26 17:08 Mata Hari Fixed in Version => master (dev code)
2014-03-03 10:46 aleric Relationship added related to 0007044
2014-07-29 13:42 chi11ken Status resolved => closed
2014-08-11 09:33 Blackdog Ashbourne Relationship added related to 0007299


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker