• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-4580
Type: Bug Bug
Status: Open Open
Priority: Showstopper Showstopper
Assignee: Unassigned
Reporter: Prospero Frobozz
Votes: 2
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

Positioning & rotating of linked objects changed in server 1.27

Created: 17/Jul/09 10:27 AM   Updated: 23/Jul/09 07:09 AM
Return to search
Component/s: Scripts
Affects Version/s: 1.27 Server
Fix Version/s: None

Issue Links:
Relates
 

Last Triaged: 20/Jul/09 11:40 AM
Linden Lab Issue ID: DEV-35890


 Description  « Hide
Look at the object "Presentation Screen v7.0" which you can find in my inventory. I know several Lindens have this, because I passed it on to various Lindens when I was one. You can find locations to get this object in world here : http://www.sonic.net/~rknop/php/vw/preso.php

Rez out the screen.

Add yourself to the list of authorized users to the list in the script in the screen. Instructions are in the screen.

Rotate it to some random angle.

Type '/1 laseron' to make the laser turn on.

Click somewhere on the screen. Notice that the laser is rotated at some strange angle to the screen, and is NOT aligned with the screen. In 1.26 and earlier versions, the laser spot was aligned with the screen. (You should be able to repro this if you still have internal grids for regression tests.)

The block of code that is affected is almost certainly in the script that's in the laser spot. There is the following:

llSetPrimitiveParams([PRIM_POSITION, v,
PRIM_ROTATION, llEuler2Rot(<PI/2., 0, PI>)]);

v is a vector passed to the laser spot through a link message.

In previous versions of the server, the PRIM_ROTATION for a child object was relative to the parent object . It appears that it's absolute now in 1.27.

Please revert this to the previous behavior...!



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Day Oh added a comment - 17/Jul/09 12:00 PM
This has been expected behavior for as long as I've been here... please see https://jira.secondlife.com/browse/SVC-93

Quote:

If you must set a child prim to a local rotation "rot" using PRIM_ROTATION, use this:

llSetPrimitiveParams([PRIM_ROTATION, rot / llGetRootRotation()]);


Prospero Frobozz added a comment - 17/Jul/09 12:25 PM
Hurm.

OK. Behavior changes will break things, especially when "wrong" behaviors are left in place for so long.

The question I need answered is : will it keep working the 1.27 way, or will it be reverted? Because if I add the fix in, it will cause the "fixed" script to break if the behavior is reverted to 1.26 behavior.

What's the plan? This needs to be resolved soon, or there will be no good resolution. Either we have to say "behavior changed, old scripts are broken, but now it works this way and will keep working that way," or we have to go back to the old behavior and document that.


Prospero Frobozz added a comment - 17/Jul/09 12:29 PM
Note that Rob Linden asked the following question in September 2007:

<i>Are we past the point of no return with this? I.e. is there now too much content that relies on the broken behavior for us to change it now?</i>

If that question was asked (with Lex Neva saying "probably yes") *two years ago*, it's probably too late to change the behavior now....!


Harleen Gretzky added a comment - 17/Jul/09 02:01 PM
So are we saying 1.27 fixes SVC-93?

Moon Metty added a comment - 17/Jul/09 03:02 PM
-Create a cube.
-Drag a copy.
-Link the cubes.
-Give each face of the child-prim a different color.
-Add this script:
rotation rot = <1, 0, 0, 0>;
default
{
    touch_start(integer total_number)
    {
        llSetPrimitiveParams([PRIM_ROTATION, rot / llGetRootRotation()]);
    }
}

-Touch the child-prim.

Observe: the child rotates to it's new orientation.

-Rotate the whole object a bit.
-Touch the child-prim again.

Observe: the child-prim rotates to the same orientation relative to the root-prim.

So this is still the way to set the local orientation.

=======

Second Life 1.23.4 (123908) Jun 11 2009 15:16:56 (Second Life Release)
Built with MSVC version 1400

You are at 302567.1, 279176.1, 401.0 in Egglebury located at sim7580.agni.lindenlab.com (216.82.36.188:13001)
Second Life Server 1.27.0.127440

CPU: Intel Core 2 Series Processor (2401 MHz)
Memory: 2048 MB
OS Version: Microsoft Windows XP Service Pack 3 (Build 2600)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce GTS 250/PCI/SSE2
Windows Graphics Driver Version: 6.14.0011.8206
OpenGL Version: 3.0.0

libcurl Version: libcurl/7.18.1 OpenSSL/0.9.8j zlib/1.2.3
J2C Decoder Version: KDU
Audio Driver Version: FMOD version 3.740000
LLMozLib Version: [LLMediaImplLLMozLib] - 2.01.25440 (Mozilla GRE version 1.8.1.21_0000000000)
Packets Lost: 32/868722 (0.0%)


Moon Metty added a comment - 17/Jul/09 03:18 PM
And this script always sets the child-prim to the same world-orientation:
rotation rot = <1, 0, 0, 0>;
default
{
    touch_start(integer total_number)
    {
        llSetPrimitiveParams([PRIM_ROTATION, (rot / llGetRootRotation()) / llGetRootRotation()]);
    }
}

Just like in SVC-93.


Harleen Gretzky added a comment - 17/Jul/09 03:43 PM
Still confused as to what changed in 1.27

Prospero Frobozz added a comment - 17/Jul/09 03:45 PM
Did (rot / llGetRootRotation()) work in 1.26? Odd if so-- because it did work without llGetRootRotation(). Indeed, I'm not sure how it could work both with and without that, except at one specific rotation.

In any event, behavior did change. If there is a way to write it that uses both, I can update my script, and try to inform as many people as possible who have it.... However, before I start doing that, I want to make sure that things will stay the new way and not be reverted.


Tobias Houston added a comment - 17/Jul/09 04:10 PM
I don't think the behavior of setting rotations changed – a lot of content would break then (including some of mine, which seems to work fine, and has code to work around SVC-93). I can't reproduce. Is there anything else which might produce the behavior you observe?

Harleen Gretzky added a comment - 19/Jul/09 07:31 PM
I tested Prospero and Troy's Presentation Screen on Aditi, I used two screens, one unmodified and one where the laser pointer is modified to include the division by llGetRootRotation. On Ahern where it is still 1.26.4 both lasers react the same and stay rotated with the screen. On Morris where it is 1.27.0 the lasers react differently, the unmodified one does not rotate correctly, only the modified one stays rotated with the screen.

So it seems on 1.26.4 it works with and without the division by llGetRootRotation() and on 1.27.0 it only works with the division by llGetRootRotation().

1.26.4 tests done on:
Second Life 1.23.4 (123908) Jun 11 2009 15:16:56 (Second Life Release)
Release Notes

Built with MSVC version 1400

You are at 255424.8, 256526.5, 35.1 in Ahern located at sim3002.aditi.lindenlab.com (216.82.49.228:13000)
Second Life Production Server 1.26.4.120562
Release Notes

1.27.0 tests done on:
Second Life 1.23.4 (123908) Jun 11 2009 15:16:56 (Second Life Release)
Release Notes

Built with MSVC version 1400

You are at 255423.9, 256497.7, 35.5 in Morris located at sim3004.aditi.lindenlab.com (216.82.49.230:12035)
Second Life Server 1.27.0.127435
Release Notes


Prospero Frobozz added a comment - 23/Jul/09 07:09 AM
Harleen – thank you for doing that test! It does indicate that the behavior change in 1.27 has something to do with local rotations. It also means that I can fix it for 1.27 without (much) fear that the fix will cause it to break in a future version.

Of course, this does mean that everybody who has a current version of the object now has a broken one...