secondlife / viewer

🖥️ Second Life's official client
GNU Lesser General Public License v2.1
209 stars 53 forks source link

Selecting an object that is moving with llSetRot() triggers unexpected texture rotations #2666

Open maestrolinden opened 3 weeks ago

maestrolinden commented 3 weeks ago

Environment

Second Life Release 7.1.10.10800445603 (64bit) Release Notes

You are at 22.0, 230.9, 34.1 in Main Channel Sandbox1 located at simhost-0baaa98c62c736f81.agni SLURL: http://maps.secondlife.com/secondlife/Main%20Channel%20Sandbox1/22/231/34 (global coordinates 336662.0, 306663.0, 34.1) Second Life Server 2024-07-22.10048683488 Release Notes

CPU: Apple M1 Pro (2400 MHz) Memory: 16384 MB OS Version: macOS 14.6.1 Darwin 23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:14:30 PDT 2024; root:xnu-10063.141.2~1/RELEASE_ARM64_T6000 x86_64 Graphics Card Vendor: Apple Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 88.1

Window size: 1262x690 Font Size Adjustment: 96pt UI Scaling: 0.75 Draw distance: 96m Bandwidth: 10000kbit/s LOD factor: 1.125 Render quality: 1 Texture memory: 10922MB Disk cache: Max size 1638.4 MB (100.0% used) HiDPI display mode:

J2C Decoder Version: KDU v7.10.4 Audio Driver Version: OpenAL, version 1.1 ALSOFT 1.23.1 / OpenAL Community / OpenAL Soft: OpenAL Soft Dullahan: 1.14.0.202408091638 CEF: 118.4.1+g3dd6078+chromium-118.0.5993.54 Chromium: 118.0.5993.54 LibVLC Version: 3.0.21 Voice Server Version: Not Connected Packets Lost: 3/95975 (0.0%) September 24 2024 09:34:28

Description

If an object is rotated nonphysically using llSetRot(), the viewer temporarily suppresses the movement, but incorrectly rotates some of the textures applied to the object.

Reproduction steps

  1. Rez a box and place the script below in it
  2. Observe that this script rotates the box by 45 degrees on the z-axis every second
  3. Select the box, and note its appearance while selected

Expected results: As a viewer-side effect, the box should remain frozen while selected. Any other viewers present will continue to see the object moving.

Actual results: While the object is selected, the shape stops spinning (as expected), but the textures on the top and bottom faces appear to rotate by 90 degrees every 1 second or so (unexpected). Here is an illustration: https://youtu.be/pYVphnDbSn4

default
{
    state_entry()
    {
        llSetTimerEvent(1);
        llSetTexture("bca29a42-c2f3-bf92-c614-ed91654c7bf7", ALL_SIDES);
    }

    timer()
    {
        rotation newrot = llGetRot() * llEuler2Rot(<0, 0, PI_BY_TWO>);
        llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_ROTATION, newrot]);
    }
}
kylelinden commented 3 weeks ago

May be viewer and server issue, triage as a viewer issue first.