Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0008068opensim[REGION] Script Functionspublic2016-11-25 03:542017-10-23 00:20
ReporterLotek 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionno change required 
PlatformLinuxOSUbuntuOS Version14.04LTS
Product Versionmaster (dev code) 
Target VersionFixed in Version 
Summary0008068: Boats stop moving forward after sim crossing
DescriptionWhen driving a motorboat, the boat stops moving forward after a sim crossing. It's like the engine (is this the linear one?) just stops or gets reset, but the steering still works.
Steps To ReproduceMost motorboats use the same base script in OpenSim, so acquire any motorboat like Wayda's excellent Speedboat in OsGrid.

There is a check for the sim edge but it will only shout to steer away, it does not do anything else. I just comment out those lines.

The water regions around Fishguard/Seven Oaks can be used for testing the sim crossings. The sims run at most a few days behind master.
Additional InformationThis bug I can confirm in Singularity and Firestorm.

In the lesser known Cool VL Viewer this bug does not occur.
TagsNo tags attached.
Git Revision or version number
Run Mode Grid (1 Region per Sim)
Physics EngineubODE
EnvironmentMono / Linux64
Mono VersionOther
ViewerFirestorm / Singularity
Attached Files

- Relationships
related to 0008253new UP/DOWN Keys stop Function after physical vehicle SimBorder Crossing in Grid Mode 

-  Notes
(0031307)
Lotek (reporter)
2016-11-25 04:20

Occurs in BulletSim too, will update the bug title
(0031433)
watcher64 (reporter)
2016-12-12 21:49
edited on: 2016-12-12 21:51

I have noticed this problem as well, from what I can tell, unless you have
AllowScriptCrossing = true set, the script tends to reset setting the throttle to 0. In some scripts, depending on the VEHICLE_LINEAR_MOTOR_TIMESCALE setting , with a 0 throttle the boats are forced to a stop ..

Setting AllowScriptCrossing = true, does seem to mitigate the problem with a minor(annoying) delay.

One way I have overcome this is to store the "current" throttle setting in the description, and then recall it on border crossing ..

(0031434)
UbitUmarov (administrator)
2016-12-13 08:32

ok where can I find on of those boats?
(0031438)
Lotek (reporter)
2016-12-13 12:30

Wayda's freebies @ hop://login.osgrid.org/Zaius%20Plaza/78/39/22 [^]

All motor boats I've seen use this script
(0031440)
melanie (administrator)
2016-12-13 13:29

Physical vehicle crossing wasn't designed to be compatible with AllowScriptCrossing=false. It was developed with true, so that controls state is not lost on transition. It may be possible to code around it but in general, grids should keep script crossings enabled if vehicles written for SL are expected to work.
(0031442)
UbitUmarov (administrator)
2016-12-13 15:01

got near that position a thing called "Chanel Lady Jetskit Noir Edition"
testing at sandbox II to the other next I did notice problems, but one of those sandboxes is behaving strange at the moment
on my test set, of course.. all worked as expected :(
(0031443)
UbitUmarov (administrator)
2016-12-13 15:34

Sorry Sandbox plaza was strange because:
[15:22] Object: Script running OpenDynamicsEngine 1.0
but telling ubOde on name.
naturally all was strange with the boat.
And old ODE does not do vehicle crossings as ubOde and bullet.
so please make sure like Melanie said you have AllowScriptCrossing = true ( the option you want always false is TrustBinaries) and that none of the regions is using old ODE. Best is both on similar simulator versions and engines.
(0031472)
Lotek (reporter)
2016-12-15 12:37

All regions have always been running with AllowScriptCrossing = true.
The boat loses all control input after crossing. No steering, no speed.
Happens on BulletSim and ubODE.

Tried with and without:
ScriptDistanceLimitFactor = 10.0

Further settings:
ThreadStackSize = 262144
ScriptStopStragegy = co-op
AppDomainLoading = false

ScriptEnginesPath is shared by all simulators but this doesn't pose a problem for other vehicles or anything.

I tried also deleting everything in ScriptEngines (and restarting the sims)

My own sailboat crosses just fine. The motorboats I found around the hypergrid are typically made for BulletSim.
(0031473)
melanie (administrator)
2016-12-15 13:04

In order to use a script with ubODE and region crossings, you need a script that is made for SL, NOT for opensim/bullet. Practically all scripts made for opensim make assumptions that simply aren't true for this combination. As you are saying that your other vehicles work, this really isn't a bug and Mantis is not a scripting support forum.
(0031474)
watcher64 (reporter)
2016-12-15 13:30

Might not be the problem but in some scripts I have found, they have the script reset on (change & CHANGED_REGION) , which robs you of control even if you are seated.
(0031476)
Lotek (reporter)
2016-12-15 14:56

I only came to point out a bug, really.

Here's proof of concept code you can't get a more basic boat than this.

float MOTOR_SPEED=15;
float TURN_SPEED=15;

default
{
    state_entry()
    {
        llSitTarget(<0,0,0.1>, ZERO_ROTATION);
        llSetVehicleType(VEHICLE_TYPE_BOAT);
        llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, ZERO_ROTATION);
        vector vPos = llGetPos();
        llSetRegionPos(<vPos.x,vPos.y,llWater(ZERO_VECTOR)>);
    }
    
    changed (integer iChange)
    {
        if (iChange & CHANGED_LINK)
        {
            key kAV = llAvatarOnSitTarget();
            if (kAV != NULL_KEY)
            {
                llSetStatus(STATUS_PHYSICS, TRUE);
                llRequestPermissions(kAV, PERMISSION_TAKE_CONTROLS);
            } else {
                llSetStatus(STATUS_PHYSICS, FALSE);
                llReleaseControls();
            }
        }
    }
    
    run_time_permissions(integer perm)
    {
        if (perm & PERMISSION_TAKE_CONTROLS)
        {
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);
        }
    }
    
    control(key kID, integer iLevel, integer iEdge)
    {
        vector vAngularMotor;
        
        if (iLevel & ~iEdge & CONTROL_FWD) {
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <MOTOR_SPEED,0,0>);
        }
        
        if (iLevel & ~iEdge & CONTROL_BACK) {
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-MOTOR_SPEED,0,0>);
        }
        
        if ((~iLevel) & iEdge & CONTROL_FWD || (~iLevel) & iEdge & CONTROL_BACK) {
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0,0,0>);
        }
        
        if (iLevel & ~iEdge & CONTROL_ROT_LEFT)
        {
            vAngularMotor.z += TURN_SPEED;
        }

        if (iLevel & ~iEdge & CONTROL_ROT_RIGHT)
        {
            vAngularMotor.z -= TURN_SPEED;
        }

        llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, vAngularMotor);
    }
}

As you see after crossing, controls pass through (TRUE, TRUE) and now affect camera rotation, while we really took controls with TRUE, FALSE:

llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);

When after crossing switching to mouselook mode (while still in the vehicle), the controls for the linear motor do respond correct, but still not the angular one (for steering).
(0031477)
melanie (administrator)
2016-12-15 14:59

That would be an actual bug.
(0031478)
UbitUmarov (administrator)
2016-12-15 16:05

sorry im lost now...
I did test that model I found, and seems to work with no visible issues
you report now that parameter pass_on is lost on crossings?
(0031481)
Lotek (reporter)
2016-12-15 20:34

This is caused by a (now patched) collar script (oc_bell) that does a llRequestPermissions in the on_rez() handler, and then follows up with:

llTakeControls(CONTROL_FWD etc, TRUE, TRUE);

On every crossing this line in the collar script caused the controls taken in the whole linkset (boat+avi) to be (TRUE, TRUE), passing through any taken controls to the viewer (pass_on) and thus overriding the (TRUE, FALSE) that was taken and required by the boat script to drive/steer.
(0031482)
UbitUmarov (administrator)
2016-12-15 20:37

ok, let us know how things are, and if I need to go test on your regions with you, since on mine I don't notice this problem

- Issue History
Date Modified Username Field Change
2016-11-25 03:54 Lotek New Issue
2016-11-25 04:20 Lotek Note Added: 0031307
2016-11-25 04:21 Lotek Summary [ubOde] Boats stop moving forward after sim crossing => [physics] Boats stop moving forward after sim crossing
2016-12-12 21:49 watcher64 Note Added: 0031433
2016-12-12 21:51 watcher64 Note Edited: 0031433 View Revisions
2016-12-13 08:32 UbitUmarov Note Added: 0031434
2016-12-13 12:30 Lotek Note Added: 0031438
2016-12-13 13:29 melanie Note Added: 0031440
2016-12-13 15:01 UbitUmarov Note Added: 0031442
2016-12-13 15:34 UbitUmarov Note Added: 0031443
2016-12-15 12:37 Lotek Note Added: 0031472
2016-12-15 13:04 melanie Note Added: 0031473
2016-12-15 13:30 watcher64 Note Added: 0031474
2016-12-15 14:56 Lotek Note Added: 0031476
2016-12-15 14:59 melanie Note Added: 0031477
2016-12-15 16:05 UbitUmarov Note Added: 0031478
2016-12-15 20:34 Lotek Note Added: 0031481
2016-12-15 20:34 Lotek Resolution open => no change required
2016-12-15 20:34 Lotek Category [REGION] Physics Engines => [REGION] Script Functions
2016-12-15 20:34 Lotek Summary [physics] Boats stop moving forward after sim crossing => Boats stop moving forward after sim crossing
2016-12-15 20:37 UbitUmarov Note Added: 0031482
2016-12-15 21:01 Lotek Status new => resolved
2017-10-23 00:20 Lotek Relationship added related to 0008253


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker