From 5fa4b8b1445829af66a63869672b76624d51a525 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 9 Jan 2013 00:01:48 +0000
Subject: minor: Allow "script *" console commands to take multiple script item
 ids

---
 OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 62 +++++++++++++-------------
 1 file changed, 32 insertions(+), 30 deletions(-)

diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 79cec04..ba63bb6 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -324,40 +324,40 @@ namespace OpenSim.Region.ScriptEngine.XEngine
                 HandleShowStatus);
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "scripts show", "scripts show [<script-item-uuid>]", "Show script information",
+                "Scripts", false, "scripts show", "scripts show [<script-item-uuid>+]", "Show script information",
                 "Show information on all scripts known to the script engine.\n"
-                    + "If a <script-item-uuid> is given then only information on that script will be shown.",
+                    + "If one or more <script-item-uuid>s are given then only information on that script will be shown.",
                 HandleShowScripts);
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "show scripts", "show scripts [<script-item-uuid>]", "Show script information",
+                "Scripts", false, "show scripts", "show scripts [<script-item-uuid>+]", "Show script information",
                 "Synonym for scripts show command", HandleShowScripts);
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "scripts suspend", "scripts suspend [<script-item-uuid>]", "Suspends all running scripts",
+                "Scripts", false, "scripts suspend", "scripts suspend [<script-item-uuid>+]", "Suspends all running scripts",
                 "Suspends all currently running scripts.  This only suspends event delivery, it will not suspend a"
                     + " script that is currently processing an event.\n"
                     + "Suspended scripts will continue to accumulate events but won't process them.\n"
-                    + "If a <script-item-uuid> is given then only that script will be suspended.  Otherwise, all suitable scripts are suspended.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be suspended.  Otherwise, all suitable scripts are suspended.",
                  (module, cmdparams) => HandleScriptsAction(cmdparams, HandleSuspendScript));
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "scripts resume", "scripts resume [<script-item-uuid>]", "Resumes all suspended scripts",
+                "Scripts", false, "scripts resume", "scripts resume [<script-item-uuid>+]", "Resumes all suspended scripts",
                 "Resumes all currently suspended scripts.\n"
                     + "Resumed scripts will process all events accumulated whilst suspended.\n"
-                    + "If a <script-item-uuid> is given then only that script will be resumed.  Otherwise, all suitable scripts are resumed.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be resumed.  Otherwise, all suitable scripts are resumed.",
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript));
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "scripts stop", "scripts stop [<script-item-uuid>]", "Stops all running scripts",
+                "Scripts", false, "scripts stop", "scripts stop [<script-item-uuid>+]", "Stops all running scripts",
                 "Stops all running scripts.\n"
-                    + "If a <script-item-uuid> is given then only that script will be stopped.  Otherwise, all suitable scripts are stopped.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be stopped.  Otherwise, all suitable scripts are stopped.",
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript));
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "scripts start", "scripts start [<script-item-uuid>]", "Starts all stopped scripts",
+                "Scripts", false, "scripts start", "scripts start [<script-item-uuid>+]", "Starts all stopped scripts",
                 "Starts all stopped scripts.\n"
-                    + "If a <script-item-uuid> is given then only that script will be started.  Otherwise, all suitable scripts are started.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be started.  Otherwise, all suitable scripts are started.",
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript));
 
             MainConsole.Instance.Commands.AddCommand(
@@ -478,29 +478,31 @@ namespace OpenSim.Region.ScriptEngine.XEngine
                     return;
                 }
     
-                rawItemId = cmdparams[2];
-    
-                if (!UUID.TryParse(rawItemId, out itemId))
+                for (int i = 2; i < cmdparams.Length; i++)
                 {
-                    MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid UUID", rawItemId);
-                    return;
-                }
-    
-                if (itemId != UUID.Zero)
-                {
-                    IScriptInstance instance = GetInstance(itemId);
-                    if (instance == null)
+                    rawItemId = cmdparams[i];
+        
+                    if (!UUID.TryParse(rawItemId, out itemId))
                     {
-                        // Commented out for now since this will cause false reports on simulators with more than
-                        // one scene where the current command line set region is 'root' (which causes commands to
-                        // go to both regions... (sigh)
-//                        MainConsole.Instance.OutputFormat("Error - No item found with id {0}", itemId);
-                        return;
+                        MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid UUID", rawItemId);
+                        continue;
                     }
-                    else
+        
+                    if (itemId != UUID.Zero)
                     {
-                        action(instance);
-                        return;
+                        IScriptInstance instance = GetInstance(itemId);
+                        if (instance == null)
+                        {
+                            // Commented out for now since this will cause false reports on simulators with more than
+                            // one scene where the current command line set region is 'root' (which causes commands to
+                            // go to both regions... (sigh)
+    //                        MainConsole.Instance.OutputFormat("Error - No item found with id {0}", itemId);
+                            continue;
+                        }
+                        else
+                        {
+                            action(instance);
+                        }
                     }
                 }
             }
-- 
cgit v1.1


From 3d5e3e35b799fe777066ac0cb27cf1bd3e104651 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 9 Jan 2013 00:08:08 +0000
Subject: minor: Fix command match of "debug script" command to "debug scripts"
 to match other scripts commands (and it's own short help text)

---
 OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index ba63bb6..4bbcb7c 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -361,7 +361,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript));
 
             MainConsole.Instance.Commands.AddCommand(
-                "Scripts", false, "debug script log", "debug scripts log <item-id> <log-level>", "Extra debug logging for a script",
+                "Scripts", false, "debug scripts log", "debug scripts log <item-id> <log-level>", "Extra debug logging for a script",
                 "Activates or deactivates extra debug logging for the given script.\n"
                     + "Level == 0, deactivate extra debug logging.\n"
                     + "Level >= 1, log state changes.\n"
-- 
cgit v1.1


From df1d7414adbf329e139201cdb7578c7b64bb50c8 Mon Sep 17 00:00:00 2001
From: Robert Adams
Date: Tue, 8 Jan 2013 16:09:15 -0800
Subject: BulletSim: Fix hover height (boats float at the correct level). Fix
 problem of vehicles going crazy when backing up.

---
 OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs     | 16 ++++++++++------
 OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt |  4 ++--
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index eb695d9..c34c05a 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -856,6 +856,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
             // The movement computed in the linear motor is relative to the vehicle
             //     coordinates. Rotate the movement to world coordinates.
             linearMotorContribution *= VehicleOrientation;
+            // All the contributions after this are world relative (mostly Z modifications)
 
             // ==================================================================
             // Buoyancy: force to overcome gravity.
@@ -982,14 +983,11 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                     float verticalCorrectionVelocity = verticalError / m_VhoverTimescale;
 
                     // TODO: implement m_VhoverEfficiency correctly
-                    if (Math.Abs(verticalError) > m_VhoverEfficiency)
-                    {
-                        ret = new Vector3(0f, 0f, verticalCorrectionVelocity);
-                    }
+                    ret = new Vector3(0f, 0f, verticalCorrectionVelocity);
                 }
 
-                VDetailLog("{0},  MoveLinear,hover,pos={1},ret={2},hoverTS={3},height={4},target={5}",
-                                Prim.LocalID, VehiclePosition, ret, m_VhoverTimescale, m_VhoverHeight, m_VhoverTargetHeight);
+                VDetailLog("{0},  MoveLinear,hover,pos={1},eff={2},hoverTS={3},height={4},target={5},ret={6}",
+                                Prim.LocalID, VehiclePosition, m_VhoverEfficiency, m_VhoverTimescale, m_VhoverHeight, m_VhoverTargetHeight, ret);
             }
 
             return ret;
@@ -1238,6 +1236,9 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 Vector3 movingDirection = VehicleVelocity;
                 movingDirection.Normalize();
 
+                // If the vehicle is going backward, it is still pointing forward
+                movingDirection *= Math.Sign(VehicleForwardSpeed);
+
                 // The direction the vehicle is pointing
                 Vector3 pointingDirection = Vector3.UnitX * VehicleOrientation;
                 pointingDirection.Normalize();
@@ -1246,6 +1247,9 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 Vector3 deflectionError = movingDirection - pointingDirection;
 
                 // Don't try to correct very large errors (not our job)
+                // if (Math.Abs(deflectionError.X) > PIOverFour) deflectionError.X = PIOverTwo * Math.Sign(deflectionError.X);
+                // if (Math.Abs(deflectionError.Y) > PIOverFour) deflectionError.Y = PIOverTwo * Math.Sign(deflectionError.Y);
+                // if (Math.Abs(deflectionError.Z) > PIOverFour) deflectionError.Z = PIOverTwo * Math.Sign(deflectionError.Z);
                 if (Math.Abs(deflectionError.X) > PIOverFour) deflectionError.X = 0f;
                 if (Math.Abs(deflectionError.Y) > PIOverFour) deflectionError.Y = 0f;
                 if (Math.Abs(deflectionError.Z) > PIOverFour) deflectionError.Z = 0f;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index 794a6af..29bd4e4 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -1,9 +1,9 @@
 CURRENT PRIORITIES
 =================================================
-Avatars walking up stairs
+Avatars walking up stairs (HALF DONE)
 Vehicle movement on terrain smoothness
 limitMotorUp calibration (more down?)
-Preferred orientatino angular correction fix
+Preferred orientation angular correction fix
 Surfboard go wonky when turning
 	Angular motor direction is global coordinates rather than local coordinates?
 Boats float low in the water
-- 
cgit v1.1