• 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-3001
Type: Bug Bug
Status: Resolved Resolved
Resolution: Cannot Reproduce
Priority: Major Major
Assignee: Simon Linden
Reporter: Zwagoth Klaar
Votes: 17
Watchers: 6
Operations

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

Scripted Physics functions no longer function on prims with mass since 1.24

Created: 04/Sep/08 03:57 PM   Updated: 30/Sep/08 01:31 PM
Component/s: Physics, Scripts
Affects Version/s: 1.24 Server
Fix Version/s: None

Environment:
You are at 221655.1, 256078.0, 21.0 in Caisteal
Second Life Server 1.24.4.95600

CPU: AMD (Unknown model) (1890 MHz)
Memory: 1536 MB
OS Version: Microsoft Windows 2000 Service Pack 4 (Build 2195)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce 7800 GT/PCI/SSE2/3DNOW!
OpenGL Version: 2.0.3
LLMozLib Version: [LLMediaImplLLMozLib] - 2.01.17856 (Mozilla GRE version 1.8.1.11_0000000000)
Packets Lost: 3768/750878 (0.5%)
Issue Links:
Relates
 

Linden Lab Issue ID: DEV-20194


 Description  « Hide
Since the introduction of the 1.24 server branch the following script functions no longer take effect on prims with a fair amount of mass, it breaks functionality and is just illogical.

llSetBuoyancy
llMoveToTarget
llSetForce
llSetHoverHeight

The larger the prim the less effect the script function has. This also causes the very odd effect of things seeming to not function at all. A linked platform that is physical often will not hover even with typical move to target function. In 1.23 any size object could use move to target and achieve a hover or movelock effect.

To reproduce you simply need create any solid prim that is 10x10x10 make it physical and use one of the affected script functions. They fail to take any effect.

The most noticeable is buoyancy. A buoyancy of 10 should send any prim high into the air flying upwards, but on a physical 10x10x10 it falls to the ground like a heavy rock.

default

{ state_entry() { llSetBuoynacy(10.); } }

 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Harleen Gretzky added a comment - 04/Sep/08 04:21 PM
Can you give examples of content that is now broken by this?

Ezian Ecksol added a comment - 04/Sep/08 04:33 PM - edited
Edit:
>> The most noticeable is buoyancy. A buoyancy of 10 should send any prim high into the air fly upwards, but on a physical 10x10x10 it falls to the ground like a heavy rock.

I can repro this. Even a 5x5x5m prim is enough. With buoyancy of 10 it flys some meters up and then falls down. This is a bug.

And I tested llMoveToTarget(llGetPos()+<0.,0.,50.>,1.);. Even with a 5x5x5m prim it doesn't work/move anymore.


Zwagoth Klaar added a comment - 04/Sep/08 06:24 PM
There are many decorative vehicles such as trollys that use llMoveToTarget to achieve a smooth movement effect that also can move people around between places. Most of these are fairly large and therefore cannot function anymore. Even basic movelock on avatars doesnt behave as responseively with this change.

To give better detail of scope, it seems that any physical function that requires a force to be applied each frame, does not behave as expected under the new changes.

The original object was a large hemisphere platform that used to float up and down very slowly using the move to target function, it had to be made non physical because it fell to the ground and rolled off sim.


Maggie Darwin added a comment - 05/Sep/08 10:54 AM
Ok, this explains some of the strange content behavior I've been seeing. Voted.

Cheshyr Pontchartrain added a comment - 05/Sep/08 11:16 AM
I wondered why emDash's /gravity tool changed without me touching the code. Voted.

Maggie Darwin added a comment - 05/Sep/08 11:18 AM
emDash was the first content I was thinking of.

I really really wish Havok 4 had been properly cleaned up before Mono was tossed into the act.


Simon Linden added a comment - 11/Sep/08 10:20 AM
This looks like an energy issue ... my initial experiments aren't showing any difference between 1.23 and 1.24, but a 10x10x10 (or 5x5x5) cube using llMoveToTarget() just won't get to the goal and stay there.

BTW, here's a hint for builders: call llApplyRotationalImpulse(<0,0,0>, FALSE) any time you want to re-set the energy level. It's a residual bug from Havok1 days that I had to re-implement in Havok4 to prevent breaking content.

I really hope we can get rid of the #$@ energy system someday. I'm not sure how we can do that without breaking stuff, but it's a pain.


Simon Linden added a comment - 11/Sep/08 11:20 AM
FYI I ran some tests - made two 5x5x5 physical cubes.

Cube A has the script:

integer floating = 0;

default
{
    state_entry()
    {
    }

    touch_start(integer total_number)
    {
        if ( floating == 0 )
        {
            llSay(0, "Moving up");
            llSetBuoyancy( 10 );
            floating = 1;
        }
        else
        {
            llSay(0, "Off");
            llSetBuoyancy( 0 );
            floating = 0;
        }
    }
}

Cube B has the same script but uses llMoveToTarget( llGetPos() + <0,0,10>, 0.5 ); instead of llSetBuoyancy()

I tried them on 1.19.2 Server (Havok1), 1.23 Serer (Havok 4, pre-Mono) and 1.24 Server (Mono). Both cubes behaved the same - they would rise a bit, then fall back to the ground.

If you add a timer and a call to llApplyRotationalImpulse(<0,0,0>, FALSE) it works the way you'd expect (the buoyancy cube goes through the roof, etc). I realize that's a hack, but might be useful for builders.

Can someone point me to an object that is definitely behaving differently?


Ezian Ecksol added a comment - 11/Sep/08 12:52 PM
Sorry, I did not know that the 'physics functions don't work at high masses' problem is a pre havok4 one. Unfortunetly I don't have old differently behaving stuff.

But would be nice to make llSetBuoyancy/llMoveToTarget etc. run on any objects regardless their mass.

Thanks for the work-around so far


Bridie Linden added a comment - 30/Sep/08 01:31 PM
Simon Linden was unable to repro.