From caad1edabf755c2ef8e00f94f39a8b4c524012b4 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Thu, 17 Jan 2013 14:44:54 -0800
Subject: [PATCH 01/36] Add utility function to clamp a vector to a maximum
 magnitude.

---
 OpenSim/Framework/Util.cs | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index f51149435d..f6c9d15450 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -299,6 +299,18 @@ namespace OpenSim.Framework
                 x;
         }
 
+        // Clamp the maximum magnitude of a vector
+        public static Vector3 ClampV(Vector3 x, float max)
+        {
+            Vector3 ret = x;
+            float lenSq = x.LengthSquared();
+            if (lenSq > (max * max))
+            {
+                x = x / x.Length() * max;
+            }
+            return x;
+        }
+
         // Inclusive, within range test (true if equal to the endpoints)
         public static bool InRange<T>(T x, T min, T max)
             where T : IComparable<T>

From 75f710f1e70a3c9d3459d549eb4334a445aca834 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Thu, 17 Jan 2013 14:47:35 -0800
Subject: [PATCH 02/36] BulletSim: Add one function that all actors who act on
 the physical can use to know if the object is currently active. Code cleaning
 including use of Util.ClampV function.

---
 .../Physics/BulletSPlugin/BSCharacter.cs      |  3 ++
 .../Physics/BulletSPlugin/BSDynamics.cs       |  3 +-
 .../Physics/BulletSPlugin/BSPhysObject.cs     | 10 ++++--
 .../Region/Physics/BulletSPlugin/BSPrim.cs    | 33 ++++++++-----------
 .../Physics/BulletSPlugin/BulletSimTODO.txt   |  6 +++-
 5 files changed, 31 insertions(+), 24 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index 87a06c1453..6d5e23f7d9 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -652,6 +652,9 @@ public sealed class BSCharacter : BSPhysObject
     public override bool IsStatic {
         get { return false; }
     }
+    public override bool IsPhysicallyActive {
+        get { return true; }
+    }
     public override bool Flying {
         get { return _flying; }
         set {
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index 6601479d62..f2c7cec0b3 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -35,6 +35,7 @@ using System.Collections.Generic;
 using System.Reflection;
 using System.Runtime.InteropServices;
 using OpenMetaverse;
+using OpenSim.Framework;
 using OpenSim.Region.Physics.Manager;
 
 namespace OpenSim.Region.Physics.BulletSPlugin
@@ -154,7 +155,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         // Return 'true' if this vehicle is doing vehicle things
         public bool IsActive
         {
-            get { return (Type != Vehicle.TYPE_NONE && !Prim.IsStatic); }
+            get { return (Type != Vehicle.TYPE_NONE && Prim.IsPhysicallyActive); }
         }
 
         #region Vehicle parameter setting
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index 821f470bd2..bac0427274 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -139,6 +139,11 @@ public abstract class BSPhysObject : PhysicsActor
     public abstract bool IsStatic { get; }
     public abstract bool IsSelected { get; }
 
+    // It can be confusing for an actor to know if it should move or update an object
+    //    depeneding on the setting of 'selected', 'physical, ...
+    // This flag is the true test -- if true, the object is being acted on in the physical world
+    public abstract bool IsPhysicallyActive { get; }
+
     // Materialness
     public MaterialAttributes.Material Material { get; private set; }
     public override void SetMaterial(int material)
@@ -302,8 +307,9 @@ public abstract class BSPhysObject : PhysicsActor
     public virtual bool SendCollisions()
     {
         bool ret = true;
+
         // If the 'no collision' call, force it to happen right now so quick collision_end
-        bool force = (CollisionCollection.Count == 0);
+        bool force = (CollisionCollection.Count == 0 && CollisionsLastTick.Count != 0);
 
         // throttle the collisions to the number of milliseconds specified in the subscription
         if (force || (PhysicsScene.SimulationNowTime >= NextCollisionOkTime))
@@ -318,7 +324,7 @@ public abstract class BSPhysObject : PhysicsActor
                 ret = false;
             }
 
-            // DetailLog("{0},{1}.SendCollisionUpdate,call,numCollisions={2}", LocalID, TypeName, CollisionCollection.Count);
+            DetailLog("{0},{1}.SendCollisionUpdate,call,numCollisions={2}", LocalID, TypeName, CollisionCollection.Count);
             base.SendCollisionUpdate(CollisionCollection);
 
             // Remember the collisions from this tick for some collision specific processing.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 79fe632a8e..7aa2d92ca6 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -132,8 +132,8 @@ public sealed class BSPrim : BSPhysObject
         base.Destroy();
 
         // Undo any links between me and any other object
-        BSPhysObject parentBefore = Linkset.LinksetRoot;
-        int childrenBefore = Linkset.NumberOfChildren;
+        BSPhysObject parentBefore = Linkset.LinksetRoot;    // DEBUG DEBUG
+        int childrenBefore = Linkset.NumberOfChildren;      // DEBUG DEBUG
 
         Linkset = Linkset.RemoveMeFromLinkset(this);
 
@@ -727,6 +727,12 @@ public sealed class BSPrim : BSPhysObject
         get { return !IsPhantom && !_isVolumeDetect; }
     }
 
+    // The object is moving and is actively being dynamic in the physical world
+    public override bool IsPhysicallyActive
+    {
+        get { return !_isSelected && IsPhysical; }
+    }
+
     // Make gravity work if the object is physical and not selected
     // Called at taint-time!!
     private void SetObjectDynamic(bool forceRebuild)
@@ -1174,18 +1180,11 @@ public sealed class BSPrim : BSPhysObject
     // This added force will only last the next simulation tick.
     public void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) {
         // for an object, doesn't matter if force is a pushforce or not
-        if (!IsStatic)
+        if (IsPhysicallyActive)
         {
             if (force.IsFinite())
             {
-                float magnitude = force.Length();
-                if (magnitude > BSParam.MaxAddForceMagnitude)
-                {
-                    // Force has a limit
-                    force = force / magnitude * BSParam.MaxAddForceMagnitude;
-                }
-
-                OMV.Vector3 addForce = force;
+                OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
                 // DetailLog("{0},BSPrim.addForce,call,force={1}", LocalID, addForce);
 
                 PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate()
@@ -1209,19 +1208,13 @@ public sealed class BSPrim : BSPhysObject
 
     public void AddForceImpulse(OMV.Vector3 impulse, bool pushforce, bool inTaintTime) {
         // for an object, doesn't matter if force is a pushforce or not
-        if (!IsStatic)
+        if (!IsPhysicallyActive)
         {
             if (impulse.IsFinite())
             {
-                float magnitude = impulse.Length();
-                if (magnitude > BSParam.MaxAddForceMagnitude)
-                {
-                    // Force has a limit
-                    impulse = impulse / magnitude * BSParam.MaxAddForceMagnitude;
-                }
-
+                OMV.Vector3 addImpulse = Util.ClampV(impulse, BSParam.MaxAddForceMagnitude);
                 // DetailLog("{0},BSPrim.addForceImpulse,call,impulse={1}", LocalID, impulse);
-                OMV.Vector3 addImpulse = impulse;
+
                 PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddImpulse", delegate()
                 {
                     // Bullet adds this impulse immediately to the velocity
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index d4545f7ffc..9bfec19e0e 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -16,6 +16,7 @@ vehicle angular banking
 Avatars walking up stairs (HALF DONE)
     Radius of the capsule affects ability to climb edges.
 Vehicle movement on terrain smoothness
+When is force introduced by SetForce removed? The prestep action could go forever.
 Boats float low in the water (DONE)
 Avatar movement
 	flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE)
@@ -72,8 +73,11 @@ Incorporate inter-relationship of angular corrections. For instance, angularDefl
 
 GENERAL TODO LIST:
 =================================================
+Implement llSetPhysicalMaterial.
+Implement llSetForceAndTorque.
 Implement an avatar mesh shape. The Bullet capsule is way too limited.
 	Consider just hand creating a vertex/index array in a new BSShapeAvatar.
+Verify/fix phantom, volume-detect objects do not fall to infinity. Should stop at terrain.
 Revisit CollisionMargin. Builders notice the 0.04 spacing between prims.
 Duplicating a physical prim causes old prim to jump away
 	Dup a phys prim and the original become unselected and thus interacts w/ selected prim.
@@ -121,7 +125,7 @@ Physical and phantom will drop through the terrain
 LINKSETS
 ======================================================
 Editing a child of a linkset causes the child to go phantom
-	Move a child prim once when it is physical and can never move it again without it going phantom
+	Move a child prim once when it is physical and can never move it again without it going phantom
 Offset the center of the linkset to be the geometric center of all the prims
 	Not quite the same as the center-of-gravity
 Linksets should allow collisions to individual children

From 482c7b5368faa034b73b3434fd90ce3702644cb8 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Fri, 18 Jan 2013 11:37:36 -0800
Subject: [PATCH 03/36] BulletSim: add logic to turn off pre-step actions when
 object goes non-active. This turns off 'setForce', 'setTorque' and
 'moveToTarget' when the object is selected or made non-physical.

---
 .../Region/Physics/BulletSPlugin/BSPrim.cs    | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 7aa2d92ca6..aaa6fe580d 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -502,6 +502,12 @@ public sealed class BSPrim : BSPhysObject
                 RegisterPreStepAction("BSPrim.setForce", LocalID,
                     delegate(float timeStep)
                     {
+                        if (!IsPhysicallyActive)
+                        {
+                            UnRegisterPreStepAction("BSPrim.setForce", LocalID);
+                            return;
+                        }
+
                         DetailLog("{0},BSPrim.setForce,preStep,force={1}", LocalID, _force);
                         if (PhysBody.HasPhysicalBody)
                         {
@@ -627,6 +633,12 @@ public sealed class BSPrim : BSPhysObject
                 RegisterPreStepAction("BSPrim.setTorque", LocalID,
                     delegate(float timeStep)
                     {
+                        if (!IsPhysicallyActive)
+                        {
+                            UnRegisterPreStepAction("BSPrim.setTorque", LocalID);
+                            return;
+                        }
+
                         if (PhysBody.HasPhysicalBody)
                             AddAngularForce(_torque, false, true);
                     }
@@ -1061,6 +1073,12 @@ public sealed class BSPrim : BSPhysObject
 
                 RegisterPreStepAction("BSPrim.PIDTarget", LocalID, delegate(float timeStep)
                 {
+                    if (!IsPhysicallyActive)
+                    {
+                        UnRegisterPreStepAction("BSPrim.PIDTarget", LocalID);
+                        return;
+                    }
+
                     OMV.Vector3 origPosition = RawPosition;     // DEBUG DEBUG (for printout below)
 
                     // 'movePosition' is where we'd like the prim to be at this moment.
@@ -1108,6 +1126,9 @@ public sealed class BSPrim : BSPhysObject
 
                 RegisterPreStepAction("BSPrim.Hover", LocalID, delegate(float timeStep)
                 {
+                    if (!IsPhysicallyActive)
+                        return;
+
                     _hoverMotor.SetCurrent(RawPosition.Z);
                     _hoverMotor.SetTarget(ComputeCurrentPIDHoverHeight());
                     float targetHeight = _hoverMotor.Step(timeStep);

From c6b6c94ccbbbd5226a377a510a988bedec7a418c Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Fri, 18 Jan 2013 11:39:24 -0800
Subject: [PATCH 04/36] BulletSim: reduce jitter in avatar velocity when
 walking or flying. OpenSimulator is VERY sensitive to changes in avatar
 velocity and will send an avatar update message when velocity changes more
 than 0.001m/s. This significantly reduces the number of avatar update
 messages by smoothing the avatar velocity returned by Bullet.

---
 OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs  | 9 ++++++++-
 OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index 6d5e23f7d9..478aeab799 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -853,7 +853,14 @@ public sealed class BSCharacter : BSPhysObject
     {
         _position = entprop.Position;
         _orientation = entprop.Rotation;
-        _velocity = entprop.Velocity;
+
+        // Smooth velocity. OpenSimulator is very sensitive to changes in velocity of the avatar
+        //    and will send agent updates to the clients if velocity changes by more than
+        //    0.001m/s. Bullet introduces a lot of jitter in the velocity which causes many
+        //    extra updates.
+        if (!entprop.Velocity.ApproxEquals(_velocity, 0.1f))
+            _velocity = entprop.Velocity;
+
         _acceleration = entprop.Acceleration;
         _rotationalVelocity = entprop.RotationalVelocity;
 
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index bac0427274..5353c756cf 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -141,7 +141,7 @@ public abstract class BSPhysObject : PhysicsActor
 
     // It can be confusing for an actor to know if it should move or update an object
     //    depeneding on the setting of 'selected', 'physical, ...
-    // This flag is the true test -- if true, the object is being acted on in the physical world
+    // This flag is the true test -- if true, the object is being acted on in the physical world
     public abstract bool IsPhysicallyActive { get; }
 
     // Materialness

From 74256c0cc47870f6057b64ce117479af79f02ab0 Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Fri, 18 Jan 2013 22:57:09 +0000
Subject: [PATCH 05/36] Restore previous client AO behaviour by not allowing
 them to remove the default animation but continue to allow scripts to do so.

This keeps the fix from http://opensimulator.org/mantis/view.php?id=6327
and fixes the behaviour regression in http://opensimulator.org/mantis/view.php?id=6483
Animations may still exhibit different behaviour if both scripts and clients are adjusting animations.
A change in the behaviour of client AO to not remove all animations may be a better long term approach.
---
 .../Framework/Scenes/Animation/AnimationSet.cs    | 15 +++++++++++++--
 .../Scenes/Animation/ScenePresenceAnimator.cs     | 14 +++++++++++---
 OpenSim/Region/Framework/Scenes/ScenePresence.cs  |  2 +-
 .../Shared/Api/Implementation/LSL_Api.cs          |  2 +-
 .../Shared/Api/Implementation/OSSL_Api.cs         |  2 +-
 5 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs b/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs
index 65ae445950..66edfed393 100644
--- a/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs
+++ b/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs
@@ -87,13 +87,24 @@ namespace OpenSim.Region.Framework.Scenes.Animation
             return false;
         }
 
-        public bool Remove(UUID animID)
+        /// <summary>
+        /// Remove the specified animation
+        /// </summary>
+        /// <param name='animID'></param>
+        /// <param name='allowNoDefault'>
+        /// If true, then the default animation can be entirely removed. 
+        /// If false, then removing the default animation will reset it to the simulator default (currently STAND).
+        /// </param>
+        public bool Remove(UUID animID, bool allowNoDefault)
         {
             lock (m_animations)
             {
                 if (m_defaultAnimation.AnimID == animID)
                 {
-                    m_defaultAnimation = new OpenSim.Framework.Animation(UUID.Zero, 1, UUID.Zero);
+                    if (allowNoDefault)
+                        m_defaultAnimation = new OpenSim.Framework.Animation(UUID.Zero, 1, UUID.Zero);
+                    else
+                        ResetDefaultAnimation();
                 }
                 else if (HasAnimation(animID))
                 {
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
index 5b16b67916..3657dc4ebc 100644
--- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
+++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
@@ -109,14 +109,22 @@ namespace OpenSim.Region.Framework.Scenes.Animation
             AddAnimation(animID, objectID);
         }
 
-        public void RemoveAnimation(UUID animID)
+        /// <summary>
+        /// Remove the specified animation
+        /// </summary>
+        /// <param name='animID'></param>
+        /// <param name='allowNoDefault'>
+        /// If true, then the default animation can be entirely removed. 
+        /// If false, then removing the default animation will reset it to the simulator default (currently STAND).
+        /// </param>
+        public void RemoveAnimation(UUID animID, bool allowNoDefault)
         {
             if (m_scenePresence.IsChildAgent)
                 return;
 
 //            m_log.DebugFormat("[SCENE PRESENCE ANIMATOR]: Removing animation {0} for {1}", animID, m_scenePresence.Name);
 
-            if (m_animations.Remove(animID))
+            if (m_animations.Remove(animID, allowNoDefault))
                 SendAnimPack();
         }
 
@@ -132,7 +140,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation
             if (animID == UUID.Zero)
                 return;
 
-            RemoveAnimation(animID);
+            RemoveAnimation(animID, true);
         }
 
         public void ResetAnimations()
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 6979c33d11..c295305a7d 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2260,7 +2260,7 @@ namespace OpenSim.Region.Framework.Scenes
 
         public void HandleStopAnim(IClientAPI remoteClient, UUID animID)
         {
-            Animator.RemoveAnimation(animID);
+            Animator.RemoveAnimation(animID, false);
         }
 
         /// <summary>
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index d47fd6b5ac..a2f1ff2e95 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3364,7 +3364,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                     if (animID == UUID.Zero)
                         presence.Animator.RemoveAnimation(anim);
                     else
-                        presence.Animator.RemoveAnimation(animID);
+                        presence.Animator.RemoveAnimation(animID, true);
                 }
             }
         }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 25635ff767..5c0ff1c6c4 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -986,7 +986,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                     if (animID == UUID.Zero)
                         target.Animator.RemoveAnimation(animation);
                     else
-                        target.Animator.RemoveAnimation(animID);
+                        target.Animator.RemoveAnimation(animID, true);
                 }
             }
         }

From 115e1c2abb7755eb7b5ffeafbc0aecd255ccfc4e Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Fri, 18 Jan 2013 23:22:02 +0000
Subject: [PATCH 06/36] Add "debug set set animations true|false" region
 console command.

Setting this logs extra information about animation add/remove, such as uuid and animation name
Unfortunately cannot be done per client yet
---
 .../Scenes/Animation/ScenePresenceAnimator.cs | 33 ++++++++++++++++---
 OpenSim/Region/Framework/Scenes/Scene.cs      |  5 +++
 .../Animations/AnimationsCommandModule.cs     | 23 +++----------
 .../SceneCommands/SceneCommandsModule.cs      | 11 +++++++
 4 files changed, 48 insertions(+), 24 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
index 3657dc4ebc..e92a087625 100644
--- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
+++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
@@ -86,7 +86,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation
             if (m_scenePresence.IsChildAgent)
                 return;
 
-//            m_log.DebugFormat("[SCENE PRESENCE ANIMATOR]: Adding animation {0} for {1}", animID, m_scenePresence.Name);
+            if (m_scenePresence.Scene.DebugAnimations)
+                m_log.DebugFormat(
+                    "[SCENE PRESENCE ANIMATOR]: Adding animation {0} {1} for {2}", 
+                    GetAnimName(animID), animID, m_scenePresence.Name);
 
             if (m_animations.Add(animID, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, objectID))
                 SendAnimPack();
@@ -122,7 +125,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation
             if (m_scenePresence.IsChildAgent)
                 return;
 
-//            m_log.DebugFormat("[SCENE PRESENCE ANIMATOR]: Removing animation {0} for {1}", animID, m_scenePresence.Name);
+            if (m_scenePresence.Scene.DebugAnimations)
+                m_log.DebugFormat(
+                    "[SCENE PRESENCE ANIMATOR]: Removing animation {0} {1} for {2}", 
+                    GetAnimName(animID), animID, m_scenePresence.Name);
 
             if (m_animations.Remove(animID, allowNoDefault))
                 SendAnimPack();
@@ -145,9 +151,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation
 
         public void ResetAnimations()
         {
-//            m_log.DebugFormat(
-//                "[SCENE PRESENCE ANIMATOR]: Resetting animations for {0} in {1}",
-//                m_scenePresence.Name, m_scenePresence.Scene.RegionInfo.RegionName);
+            if (m_scenePresence.Scene.DebugAnimations)
+                m_log.DebugFormat(
+                    "[SCENE PRESENCE ANIMATOR]: Resetting animations for {0} in {1}",
+                    m_scenePresence.Name, m_scenePresence.Scene.RegionInfo.RegionName);
 
             m_animations.Clear();
         }
@@ -558,5 +565,21 @@ namespace OpenSim.Region.Framework.Scenes.Animation
 
             SendAnimPack(animIDs, sequenceNums, objectIDs);
         }
+
+        public string GetAnimName(UUID animId)
+        {
+            string animName;
+
+            if (!DefaultAvatarAnimations.AnimsNames.TryGetValue(animId, out animName))
+            {
+                AssetMetadata amd = m_scenePresence.Scene.AssetService.GetMetadata(animId.ToString());
+                if (amd != null)
+                    animName = amd.Name;
+                else
+                    animName = "Unknown";
+            }
+
+            return animName;
+        }
     }
 }
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 4859dffadb..5778176e44 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -67,6 +67,11 @@ namespace OpenSim.Region.Framework.Scenes
 
         public bool EmergencyMonitoring = false;
 
+        /// <summary>
+        /// Show debug information about animations.
+        /// </summary>
+        public bool DebugAnimations { get; set; }
+
         /// <summary>
         /// Show debug information about teleports.
         /// </summary>
diff --git a/OpenSim/Region/OptionalModules/Avatar/Animations/AnimationsCommandModule.cs b/OpenSim/Region/OptionalModules/Avatar/Animations/AnimationsCommandModule.cs
index e951d9e37c..84211a9ba9 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Animations/AnimationsCommandModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Animations/AnimationsCommandModule.cs
@@ -161,12 +161,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Animations
             UUID defaultAnimId = anims.DefaultAnimation.AnimID;
             cdl.AddRow(
                 "Default anim", 
-                string.Format("{0}, {1}", defaultAnimId, GetAnimName(sp.Scene.AssetService, defaultAnimId)));
+                string.Format("{0}, {1}", defaultAnimId, sp.Animator.GetAnimName(defaultAnimId)));
 
             UUID implicitDefaultAnimId = anims.ImplicitDefaultAnimation.AnimID;
             cdl.AddRow(
                 "Implicit default anim", 
-                string.Format("{0}, {1}", implicitDefaultAnimId, GetAnimName(sp.Scene.AssetService, implicitDefaultAnimId)));
+                string.Format("{0}, {1}", 
+                    implicitDefaultAnimId, sp.Animator.GetAnimName(implicitDefaultAnimId)));
 
             cdl.AddToStringBuilder(sb);
 
@@ -185,7 +186,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Animations
             for (int i = 0; i < animIds.Length; i++)
             {
                 UUID animId = animIds[i];
-                string animName = GetAnimName(sp.Scene.AssetService, animId);
+                string animName = sp.Animator.GetAnimName(animId);
                 int seq = sequenceNumbers[i];
                 UUID objectId = objectIds[i];
 
@@ -195,21 +196,5 @@ namespace OpenSim.Region.OptionalModules.Avatar.Animations
             cdt.AddToStringBuilder(sb);
             sb.Append("\n");
         }
-
-        private string GetAnimName(IAssetService assetService, UUID animId)
-        {
-            string animName;
-
-            if (!DefaultAvatarAnimations.AnimsNames.TryGetValue(animId, out animName))
-            {
-                AssetMetadata amd = assetService.GetMetadata(animId.ToString());
-                if (amd != null)
-                    animName = amd.Name;
-                else
-                    animName = "Unknown";
-            }
-
-            return animName;
-        }
     }
 }
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs b/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs
index 8b8758e59c..521141a851 100644
--- a/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs
+++ b/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs
@@ -94,6 +94,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
                 "debug scene get",
                 "List current scene options.",
                 "If active     is false then main scene update and maintenance loops are suspended.\n"
+                    + "If animations is true  then extra animations debug information is logged.\n"
                     + "If collisions is false then collisions with other objects are turned off.\n"
                     + "If pbackup    is false then periodic scene backup is turned off.\n"
                     + "If physics    is false then all physics objects are non-physical.\n"
@@ -107,6 +108,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
                 "debug scene set active|collisions|pbackup|physics|scripting|teleport|updates true|false",
                 "Turn on scene debugging options.",
                 "If active     is false then main scene update and maintenance loops are suspended.\n"
+                    + "If animations is true  then extra animations debug information is logged.\n"
                     + "If collisions is false then collisions with other objects are turned off.\n"
                     + "If pbackup    is false then periodic scene backup is turned off.\n"
                     + "If physics    is false then all physics objects are non-physical.\n"
@@ -135,6 +137,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
         {
             ConsoleDisplayList cdl = new ConsoleDisplayList();
             cdl.AddRow("active", m_scene.Active);
+            cdl.AddRow("animations", m_scene.DebugAnimations);
             cdl.AddRow("pbackup", m_scene.PeriodicBackup);
             cdl.AddRow("physics", m_scene.PhysicsEnabled);
             cdl.AddRow("scripting", m_scene.ScriptsEnabled);
@@ -178,6 +181,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
                     m_scene.Active = active;
             }
 
+            if (options.ContainsKey("animations"))
+            {
+                bool active;
+
+                if (bool.TryParse(options["animations"], out active))
+                    m_scene.DebugAnimations = active;
+            }
+
             if (options.ContainsKey("pbackup"))
             {
                 bool active;

From 652cfa2ee2ce54c4b53fc4001a715406d66c3cf1 Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Sat, 19 Jan 2013 00:27:17 +0000
Subject: [PATCH 07/36] Fix use of scene debug commands when region is set to
 root or a specific region where there is more than one region on the
 simulator.

---
 .../SceneCommands/SceneCommandsModule.cs      | 27 +++++++++----------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs b/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs
index 521141a851..12169ab617 100644
--- a/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs
+++ b/OpenSim/Region/OptionalModules/World/SceneCommands/SceneCommandsModule.cs
@@ -122,10 +122,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
         {
             if (args.Length == 3)
             {
-                if (MainConsole.Instance.ConsoleScene == null)
-                    MainConsole.Instance.Output("Please use 'change region <regioname>' first");
-                else
-                    OutputSceneDebugOptions();
+                if (MainConsole.Instance.ConsoleScene != m_scene && MainConsole.Instance.ConsoleScene != null)
+                    return;
+
+                OutputSceneDebugOptions();
             }
             else
             {
@@ -144,6 +144,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
             cdl.AddRow("teleport", m_scene.DebugTeleporting);
             cdl.AddRow("updates", m_scene.DebugUpdates);
 
+            MainConsole.Instance.OutputFormat("Scene {0} options:", m_scene.Name);
             MainConsole.Instance.Output(cdl.ToString());
         }
 
@@ -151,18 +152,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
         {
             if (args.Length == 5)
             {
-                if (MainConsole.Instance.ConsoleScene == null)
-                {
-                    MainConsole.Instance.Output("Please use 'change region <regioname>' first");
-                }
-                else
-                {
-                    string key = args[3];
-                    string value = args[4];
-                    SetSceneDebugOptions(new Dictionary<string, string>() { { key, value } });
+                if (MainConsole.Instance.ConsoleScene != m_scene && MainConsole.Instance.ConsoleScene != null)
+                    return;
 
-                    MainConsole.Instance.OutputFormat("Set debug scene {0} = {1}", key, value);
-                }
+                string key = args[3];
+                string value = args[4];
+                SetSceneDebugOptions(new Dictionary<string, string>() { { key, value } });
+
+                MainConsole.Instance.OutputFormat("Set {0} debug scene {1} = {2}", m_scene.Name, key, value);
             }
             else
             {

From 4f70e423df97f3fd52f4a36ac296f696f46b7d34 Mon Sep 17 00:00:00 2001
From: Talun <None>
Date: Fri, 18 Jan 2013 19:16:21 +0000
Subject: [PATCH 08/36] Mantis 6507 keys returned by llGetAgentList incorrect
 for llList2Key

The type of the keys returned by llGetAgentList corrected to LSL_Key
---
 .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index a2f1ff2e95..50597b7fda 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -5793,13 +5793,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                                 if (parcelOwned && land.LandData.OwnerID == id ||
                                     parcel && land.LandData.GlobalID == id)
                                 {
-                                    result.Add(ssp.UUID.ToString());
+                                    result.Add(new LSL_Key(ssp.UUID.ToString()));
                                 }
                             }
                         }
                         else
                         {
-                            result.Add(ssp.UUID.ToString());
+                            result.Add(new LSL_Key(ssp.UUID.ToString()));
                         }
                     }
                     // Maximum of 100 results

From 607558fe21ab6c200789a148e419f39730d3c420 Mon Sep 17 00:00:00 2001
From: Talun <None>
Date: Mon, 14 Jan 2013 18:17:33 +0000
Subject: [PATCH 09/36] New constants for llGetObjectDetails

New constants for llGetObjectDetails OBJECT_CHARACTER_TIME,
OBJECT_ROOT, OBJECT_ATTACHED_POINT, OBJECT_PATHFINDING_TYPE,
OBJECT_PHYSICS, OBJECT_PHANTOM and OBJECT_TEMP_ON_REZ
also Pathfining constants, 3 of which are used by llGetObjectDetails
---
 .../Shared/Api/Implementation/LSL_Api.cs      | 75 +++++++++++++++++++
 .../Shared/Api/Runtime/LSL_Constants.cs       | 17 +++++
 2 files changed, 92 insertions(+)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 50597b7fda..db5add19e6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -10590,6 +10590,35 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                             case ScriptBaseClass.OBJECT_PHYSICS_COST:
                                 ret.Add(new LSL_Float(0));
                                 break;
+                            case ScriptBaseClass.OBJECT_CHARACTER_TIME: // Pathfinding
+                                ret.Add(new LSL_Float(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_ROOT:
+                                SceneObjectPart p = av.ParentPart;
+                                if (p != null)
+                                {
+                                    ret.Add(new LSL_String(p.ParentGroup.RootPart.UUID.ToString()));
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_String(id));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_ATTACHED_POINT:
+                                ret.Add(new LSL_Integer(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_PATHFINDING_TYPE: // Pathfinding
+                                ret.Add(new LSL_Integer(ScriptBaseClass.OPT_AVATAR));
+                                break;
+                            case ScriptBaseClass.OBJECT_PHYSICS:
+                                ret.Add(new LSL_Integer(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_PHANTOM:
+                                ret.Add(new LSL_Integer(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_TEMP_ON_REZ:
+                                ret.Add(new LSL_Integer(0));
+                                break;
                             default:
                                 // Invalid or unhandled constant.
                                 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
@@ -10685,6 +10714,52 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                                 // The value returned in SL for normal prims looks like the prim count
                                 ret.Add(new LSL_Float(0));
                                 break;
+                            case ScriptBaseClass.OBJECT_CHARACTER_TIME: // Pathfinding
+                                ret.Add(new LSL_Float(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_ROOT:
+                                ret.Add(new LSL_String(obj.ParentGroup.RootPart.UUID.ToString()));
+                                break;
+                            case ScriptBaseClass.OBJECT_ATTACHED_POINT:
+                                ret.Add(new LSL_Integer(obj.ParentGroup.AttachmentPoint));
+                                break;
+                            case ScriptBaseClass.OBJECT_PATHFINDING_TYPE:
+                                byte pcode = obj.Shape.PCode;
+                                if (obj.ParentGroup.AttachmentPoint != 0
+                                   || pcode == (byte)PCode.Grass
+                                   || pcode == (byte)PCode.Tree
+                                   || pcode == (byte)PCode.NewTree)
+                                {
+                                    ret.Add(new LSL_Integer(ScriptBaseClass.OPT_OTHER));
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_Integer(ScriptBaseClass.OPT_LEGACY_LINKSET));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_PHYSICS:
+                                if (obj.ParentGroup.AttachmentPoint != 0)
+                                {
+                                    ret.Add(new LSL_Integer(0)); // Always false if attached
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_Integer(obj.ParentGroup.UsesPhysics ? 1 : 0));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_PHANTOM:
+                                if (obj.ParentGroup.AttachmentPoint != 0)
+                                {
+                                    ret.Add(new LSL_Integer(0)); // Always false if attached
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_Integer(obj.ParentGroup.IsPhantom ? 1 : 0));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_TEMP_ON_REZ:
+                                ret.Add(new LSL_Integer(obj.ParentGroup.IsTemporary ? 1 : 0));
+                                break;
                             default:
                                 // Invalid or unhandled constant.
                                 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 880841b5d9..9bf1a64cf9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -556,6 +556,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
         public const int OBJECT_SERVER_COST = 14;
         public const int OBJECT_STREAMING_COST = 15;
         public const int OBJECT_PHYSICS_COST = 16;
+        public const int OBJECT_CHARACTER_TIME = 17;
+        public const int OBJECT_ROOT = 18;
+        public const int OBJECT_ATTACHED_POINT = 19;
+        public const int OBJECT_PATHFINDING_TYPE = 20;
+        public const int OBJECT_PHYSICS = 21;
+        public const int OBJECT_PHANTOM = 22;
+        public const int OBJECT_TEMP_ON_REZ = 23;
+
+        // Pathfinding types
+        public const int OPT_OTHER = -1;
+        public const int OPT_LEGACY_LINKSET = 0;
+        public const int OPT_AVATAR = 1;
+        public const int OPT_CHARACTER = 2;
+        public const int OPT_WALKABLE = 3;
+        public const int OPT_STATIC_OBSTACLE = 4;
+        public const int OPT_MATERIAL_VOLUME = 5;
+        public const int OPT_EXCLUSION_VOLUME = 6;
 
         // for llGetAgentList
         public const int AGENT_LIST_PARCEL = 1;

From 27e2ec177a7e44e5456c7f18c1256b79a9655151 Mon Sep 17 00:00:00 2001
From: Talun <None>
Date: Mon, 14 Jan 2013 18:17:33 +0000
Subject: [PATCH 10/36] New constants for llGetObjectDetails

New constants for llGetObjectDetails OBJECT_CHARACTER_TIME,
OBJECT_ROOT, OBJECT_ATTACHED_POINT, OBJECT_PATHFINDING_TYPE,
OBJECT_PHYSICS, OBJECT_PHANTOM and OBJECT_TEMP_ON_REZ
also Pathfining constants, 3 of which are used by llGetObjectDetails
---
 .../Shared/Api/Implementation/LSL_Api.cs      | 75 +++++++++++++++++++
 .../Shared/Api/Runtime/LSL_Constants.cs       | 17 +++++
 2 files changed, 92 insertions(+)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 50597b7fda..db5add19e6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -10590,6 +10590,35 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                             case ScriptBaseClass.OBJECT_PHYSICS_COST:
                                 ret.Add(new LSL_Float(0));
                                 break;
+                            case ScriptBaseClass.OBJECT_CHARACTER_TIME: // Pathfinding
+                                ret.Add(new LSL_Float(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_ROOT:
+                                SceneObjectPart p = av.ParentPart;
+                                if (p != null)
+                                {
+                                    ret.Add(new LSL_String(p.ParentGroup.RootPart.UUID.ToString()));
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_String(id));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_ATTACHED_POINT:
+                                ret.Add(new LSL_Integer(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_PATHFINDING_TYPE: // Pathfinding
+                                ret.Add(new LSL_Integer(ScriptBaseClass.OPT_AVATAR));
+                                break;
+                            case ScriptBaseClass.OBJECT_PHYSICS:
+                                ret.Add(new LSL_Integer(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_PHANTOM:
+                                ret.Add(new LSL_Integer(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_TEMP_ON_REZ:
+                                ret.Add(new LSL_Integer(0));
+                                break;
                             default:
                                 // Invalid or unhandled constant.
                                 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
@@ -10685,6 +10714,52 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                                 // The value returned in SL for normal prims looks like the prim count
                                 ret.Add(new LSL_Float(0));
                                 break;
+                            case ScriptBaseClass.OBJECT_CHARACTER_TIME: // Pathfinding
+                                ret.Add(new LSL_Float(0));
+                                break;
+                            case ScriptBaseClass.OBJECT_ROOT:
+                                ret.Add(new LSL_String(obj.ParentGroup.RootPart.UUID.ToString()));
+                                break;
+                            case ScriptBaseClass.OBJECT_ATTACHED_POINT:
+                                ret.Add(new LSL_Integer(obj.ParentGroup.AttachmentPoint));
+                                break;
+                            case ScriptBaseClass.OBJECT_PATHFINDING_TYPE:
+                                byte pcode = obj.Shape.PCode;
+                                if (obj.ParentGroup.AttachmentPoint != 0
+                                   || pcode == (byte)PCode.Grass
+                                   || pcode == (byte)PCode.Tree
+                                   || pcode == (byte)PCode.NewTree)
+                                {
+                                    ret.Add(new LSL_Integer(ScriptBaseClass.OPT_OTHER));
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_Integer(ScriptBaseClass.OPT_LEGACY_LINKSET));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_PHYSICS:
+                                if (obj.ParentGroup.AttachmentPoint != 0)
+                                {
+                                    ret.Add(new LSL_Integer(0)); // Always false if attached
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_Integer(obj.ParentGroup.UsesPhysics ? 1 : 0));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_PHANTOM:
+                                if (obj.ParentGroup.AttachmentPoint != 0)
+                                {
+                                    ret.Add(new LSL_Integer(0)); // Always false if attached
+                                }
+                                else
+                                {
+                                    ret.Add(new LSL_Integer(obj.ParentGroup.IsPhantom ? 1 : 0));
+                                }
+                                break;
+                            case ScriptBaseClass.OBJECT_TEMP_ON_REZ:
+                                ret.Add(new LSL_Integer(obj.ParentGroup.IsTemporary ? 1 : 0));
+                                break;
                             default:
                                 // Invalid or unhandled constant.
                                 ret.Add(new LSL_Integer(ScriptBaseClass.OBJECT_UNKNOWN_DETAIL));
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 880841b5d9..9bf1a64cf9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -556,6 +556,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
         public const int OBJECT_SERVER_COST = 14;
         public const int OBJECT_STREAMING_COST = 15;
         public const int OBJECT_PHYSICS_COST = 16;
+        public const int OBJECT_CHARACTER_TIME = 17;
+        public const int OBJECT_ROOT = 18;
+        public const int OBJECT_ATTACHED_POINT = 19;
+        public const int OBJECT_PATHFINDING_TYPE = 20;
+        public const int OBJECT_PHYSICS = 21;
+        public const int OBJECT_PHANTOM = 22;
+        public const int OBJECT_TEMP_ON_REZ = 23;
+
+        // Pathfinding types
+        public const int OPT_OTHER = -1;
+        public const int OPT_LEGACY_LINKSET = 0;
+        public const int OPT_AVATAR = 1;
+        public const int OPT_CHARACTER = 2;
+        public const int OPT_WALKABLE = 3;
+        public const int OPT_STATIC_OBSTACLE = 4;
+        public const int OPT_MATERIAL_VOLUME = 5;
+        public const int OPT_EXCLUSION_VOLUME = 6;
 
         // for llGetAgentList
         public const int AGENT_LIST_PARCEL = 1;

From 3eee991935393feeee753ced28c794f12367f19d Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Sat, 19 Jan 2013 02:04:36 +0000
Subject: [PATCH 11/36] Explicitly stop PollServiceRequestManager() rather than
 relying on its destructor.

Hopes to address occasional shutdown failures from http://opensimulator.org/mantis/view.php?id=6503
---
 .../Servers/HttpServer/BaseHttpServer.cs        |  3 +++
 .../HttpServer/PollServiceRequestManager.cs     | 17 ++++++++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 85b19c067e..251a8ad3ce 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -1731,6 +1731,7 @@ namespace OpenSim.Framework.Servers.HttpServer
 
                 // Long Poll Service Manager with 3 worker threads a 25 second timeout for no events
                 m_PollServiceManager = new PollServiceRequestManager(this, 3, 25000);
+                m_PollServiceManager.Start();
                 HTTPDRunning = true;
 
                 //HttpListenerContext context;
@@ -1781,6 +1782,8 @@ namespace OpenSim.Framework.Servers.HttpServer
             HTTPDRunning = false;
             try
             {
+                m_PollServiceManager.Stop();
+
                 m_httpListener2.ExceptionThrown -= httpServerException;
                 //m_httpListener2.DisconnectHandler = null;
 
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index 8d5015110d..3e84c55a17 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -45,19 +45,26 @@ namespace OpenSim.Framework.Servers.HttpServer
         private uint m_WorkerThreadCount = 0;
         private Thread[] m_workerThreads;
         private PollServiceWorkerThread[] m_PollServiceWorkerThreads;
-        private bool m_running = true;
+        private volatile bool m_running = true;
+        private int m_pollTimeout;
 
         public PollServiceRequestManager(BaseHttpServer pSrv, uint pWorkerThreadCount, int pTimeout)
         {
             m_server = pSrv;
             m_WorkerThreadCount = pWorkerThreadCount;
+            m_pollTimeout = pTimeout;
+        }
+
+        public void Start()
+        {
+            m_running = true;
             m_workerThreads = new Thread[m_WorkerThreadCount];
             m_PollServiceWorkerThreads = new PollServiceWorkerThread[m_WorkerThreadCount];
 
             //startup worker threads
             for (uint i = 0; i < m_WorkerThreadCount; i++)
             {
-                m_PollServiceWorkerThreads[i] = new PollServiceWorkerThread(m_server, pTimeout);
+                m_PollServiceWorkerThreads[i] = new PollServiceWorkerThread(m_server, m_pollTimeout);
                 m_PollServiceWorkerThreads[i].ReQueue += ReQueueEvent;
 
                 m_workerThreads[i]
@@ -136,8 +143,10 @@ namespace OpenSim.Framework.Servers.HttpServer
             
         }
 
-        ~PollServiceRequestManager()
+        public void Stop()
         {
+            m_running = false;
+
             foreach (object o in m_requests)
             {
                 PollServiceHttpRequest req = (PollServiceHttpRequest) o;
@@ -151,8 +160,6 @@ namespace OpenSim.Framework.Servers.HttpServer
             {
                 t.Abort();
             }
-            
-            m_running = false;
         }
     }
 }
\ No newline at end of file

From b77da5039eba6db0f904bfa9ca0852d640436055 Mon Sep 17 00:00:00 2001
From: Oren Hurvitz <orenh@kitely.com>
Date: Fri, 4 Jan 2013 08:43:05 +0200
Subject: [PATCH 12/36] Assign the SmartThreadPool name in the constructor

This is required because some threads are created in the constructor, so assigning the name afterwards would be too late.
---
 OpenSim/Framework/Util.cs                      |  9 +++++++--
 OpenSim/Region/ScriptEngine/XEngine/XEngine.cs |  4 ++--
 ThirdParty/SmartThreadPool/STPStartInfo.cs     | 14 ++++++++++++++
 ThirdParty/SmartThreadPool/SmartThreadPool.cs  |  8 +++++++-
 4 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index f6c9d15450..9b1e97d237 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1658,8 +1658,13 @@ namespace OpenSim.Framework
             if (m_ThreadPool != null)
                 throw new InvalidOperationException("SmartThreadPool is already initialized");
 
-            m_ThreadPool = new SmartThreadPool(2000, maxThreads, 2);
-            m_ThreadPool.Name = "Util";
+            STPStartInfo startInfo = new STPStartInfo();
+            startInfo.ThreadPoolName = "Util";
+            startInfo.IdleTimeout = 2000;
+            startInfo.MaxWorkerThreads = maxThreads;
+            startInfo.MinWorkerThreads = 2;
+
+            m_ThreadPool = new SmartThreadPool(startInfo);
         }
 
         public static int FireAndForgetCount()
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index a17a0188bb..72646f6ccb 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -1486,7 +1486,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
             m_MaxScriptQueue = maxScriptQueue;
 
             STPStartInfo startInfo = new STPStartInfo();
-            startInfo.IdleTimeout = idleTimeout*1000; // convert to seconds as stated in .ini
+            startInfo.ThreadPoolName = "XEngine";
+            startInfo.IdleTimeout = idleTimeout * 1000; // convert to seconds as stated in .ini
             startInfo.MaxWorkerThreads = maxThreads;
             startInfo.MinWorkerThreads = minThreads;
             startInfo.ThreadPriority = threadPriority;;
@@ -1494,7 +1495,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
             startInfo.StartSuspended = true;
 
             m_ThreadPool = new SmartThreadPool(startInfo);
-            m_ThreadPool.Name = "XEngine";
         }
 
         //
diff --git a/ThirdParty/SmartThreadPool/STPStartInfo.cs b/ThirdParty/SmartThreadPool/STPStartInfo.cs
index d1815639db..fa9ceb4bb5 100644
--- a/ThirdParty/SmartThreadPool/STPStartInfo.cs
+++ b/ThirdParty/SmartThreadPool/STPStartInfo.cs
@@ -32,6 +32,11 @@ namespace Amib.Threading
         /// </summary>
         private ThreadPriority _threadPriority;
 
+        /// <summary>
+        /// The thread pool name. Threads will get names depending on this.
+        /// </summary>
+        private string _threadPoolName;
+
         /// <summary>
         /// If this field is not null then the performance counters are enabled
         /// and use the string as the name of the instance.
@@ -46,6 +51,7 @@ namespace Amib.Threading
             _minWorkerThreads = SmartThreadPool.DefaultMinWorkerThreads;
             _maxWorkerThreads = SmartThreadPool.DefaultMaxWorkerThreads;
             _threadPriority = SmartThreadPool.DefaultThreadPriority;
+            _threadPoolName = SmartThreadPool.DefaultThreadPoolName;
             _pcInstanceName = SmartThreadPool.DefaultPerformanceCounterInstanceName;
             _stackSize = SmartThreadPool.DefaultStackSize;
         }
@@ -56,6 +62,7 @@ namespace Amib.Threading
             _minWorkerThreads = stpStartInfo._minWorkerThreads;
             _maxWorkerThreads = stpStartInfo._maxWorkerThreads;
             _threadPriority = stpStartInfo._threadPriority;
+            _threadPoolName = stpStartInfo._threadPoolName;
             _pcInstanceName = stpStartInfo._pcInstanceName;
             _stackSize = stpStartInfo._stackSize;
         }
@@ -84,6 +91,13 @@ namespace Amib.Threading
             set { _threadPriority = value; }
         }
 
+        public virtual string ThreadPoolName
+        {
+            get { return _threadPoolName; }
+            set { _threadPoolName = value; }
+        }
+
+
         public string PerformanceCounterInstanceName
         {
             get { return _pcInstanceName; }
diff --git a/ThirdParty/SmartThreadPool/SmartThreadPool.cs b/ThirdParty/SmartThreadPool/SmartThreadPool.cs
index bd52f6245a..19a000717e 100644
--- a/ThirdParty/SmartThreadPool/SmartThreadPool.cs
+++ b/ThirdParty/SmartThreadPool/SmartThreadPool.cs
@@ -135,6 +135,11 @@ namespace Amib.Threading
         /// </summary>
         public const ThreadPriority DefaultThreadPriority = ThreadPriority.Normal;
 
+        /// <summary>
+        /// The default thread pool name
+        /// </summary>
+        public const string DefaultThreadPoolName = "SmartThreadPool";
+
         #endregion
 
         #region Member Variables
@@ -143,7 +148,7 @@ namespace Amib.Threading
         /// Contains the name of this instance of SmartThreadPool.
         /// Can be changed by the user.
         /// </summary>
-        private string _name = "SmartThreadPool";
+        private string _name = DefaultThreadPoolName;
 
         /// <summary>
         /// Hashtable of all the threads in the thread pool.
@@ -307,6 +312,7 @@ namespace Amib.Threading
 
         private void Initialize()
         {
+            Name = _stpStartInfo.ThreadPoolName;
             ValidateSTPStartInfo();
 
             if (null != _stpStartInfo.PerformanceCounterInstanceName)

From fc6115f77755734d5a60b9eeebef25b98696f4e4 Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Sat, 19 Jan 2013 02:29:02 +0000
Subject: [PATCH 13/36] Check the existing ScenePresence.ParentPart to make
 sure we're not trying to sit on a prim we're already sat upon, rather than
 looking up the part from scratch.

An adaptation of commit 055b8a2
Having both ParentID and ParentPart references now is redundant.  ParentID should probably be eliminated.
---
 OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index c295305a7d..a90872e541 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1954,8 +1954,7 @@ namespace OpenSim.Region.Framework.Scenes
         {
             if (ParentID != 0)
             {
-                var targetPart = m_scene.GetSceneObjectPart(targetID);
-                if (targetPart != null && targetPart.LocalId == ParentID)
+                if (ParentPart.UUID == targetID)
                     return; // already sitting here, ignore
 
                 StandUp();

From 41ae006e9bd602f425fc9fae9e9ab35ab646af9d Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Sat, 19 Jan 2013 02:32:41 +0000
Subject: [PATCH 14/36] minor: adjust formatting in TESTING.txt to make headers
 more wiki-like

---
 TESTING.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/TESTING.txt b/TESTING.txt
index a7346ff34b..e7ab0882a8 100644
--- a/TESTING.txt
+++ b/TESTING.txt
@@ -1,4 +1,4 @@
-===== The Quick Guide to OpenSim Unit Testing ===
+= The Quick Guide to OpenSim Unit Testing =
 
 == Running Tests ==
 
@@ -27,7 +27,7 @@ must list it in both ".nant/local.include"
 for it to be accessible to Linux users and to the continuous
 integration system.
 
-==TESTING ON WINDOWS==
+== TESTING ON WINDOWS ==
 
 To use nunit testing on opensim code, you have a variety of methods.  The
 easiast methods involve using IDE capabilities to test code.  Using
@@ -58,14 +58,14 @@ Nunit console allows you to execute the nunit tests of assemblies via console.
 Its output will show test failures and successes and a summary of what
 happened.  This is very useful for a quick overview and/or automated testing.
 
-Windows
+=== Windows ===
 Windows version of nunit-console is by default .Net 2.0 if you downloaded the
 .Net 2.0 version  of Nunit.  Be sure to setup your PATH environment variable.
 
-Linux & OSX
+=== Linux & OSX ===
 On these operating systems you will have to use the command "nunit-console2"
 
-Example
+=== Example ===
 
 nunit-console2 OpenSim.Framework.Tests.dll (on linux)
 nunit-console OpenSim.Framework.Tests.dll (on windows)

From 9c590e51b6a1457ccb9eaee525d1e5a244b50274 Mon Sep 17 00:00:00 2001
From: PixelTomsen <pixel.tomsen@gridnet.info>
Date: Sun, 13 Jan 2013 20:18:40 +0100
Subject: [PATCH 15/36] IRCBridgeModule: optional agent-alertbox for IRC
 enabled Regions look in OpenSimDefaults.ini / section [IRC]

http://opensimulator.org/mantis/view.php?id=6470

idea: https://github.com/ssm2017/IrcBridgeAlert
---
 .../Avatar/Chat/ChannelState.cs               | 154 +++++-----
 .../Avatar/Chat/IRCBridgeModule.cs            |  41 +--
 .../Avatar/Chat/IRCConnector.cs               | 289 +++++++++---------
 .../Avatar/Chat/RegionState.cs                |  96 +++---
 bin/OpenSimDefaults.ini                       |  11 +
 5 files changed, 317 insertions(+), 274 deletions(-)

diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs
index 66265d84b7..5a37fadcc2 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/ChannelState.cs
@@ -55,42 +55,42 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
         // These are the IRC Connector configurable parameters with hard-wired
         // default values (retained for compatability).
 
-        internal string Server               = null;
-        internal string Password             = null;
-        internal string IrcChannel           = null;
-        internal string BaseNickname         = "OSimBot";
-        internal uint   Port                 = 6667;
-        internal string User                 = null;
+        internal string Server = null;
+        internal string Password = null;
+        internal string IrcChannel = null;
+        internal string BaseNickname = "OSimBot";
+        internal uint Port = 6667;
+        internal string User = null;
 
-        internal bool   ClientReporting      = true;
-        internal bool   RelayChat            = true;
-        internal bool   RelayPrivateChannels = false;
-        internal int    RelayChannel         = 1;
+        internal bool ClientReporting = true;
+        internal bool RelayChat = true;
+        internal bool RelayPrivateChannels = false;
+        internal int RelayChannel = 1;
         internal List<int> ValidInWorldChannels = new List<int>();
 
         // Connector agnostic parameters. These values are NOT shared with the
         // connector and do not differentiate at an IRC level
 
         internal string PrivateMessageFormat = "PRIVMSG {0} :<{2}> {1} {3}";
-        internal string NoticeMessageFormat  = "PRIVMSG {0} :<{2}> {3}";
-        internal int    RelayChannelOut      = -1;
-        internal bool   RandomizeNickname    = true;
-        internal bool   CommandsEnabled      = false;
-        internal int    CommandChannel       = -1;
-        internal int    ConnectDelay         = 10;
-        internal int    PingDelay            = 15;
-        internal string DefaultZone          = "Sim";
+        internal string NoticeMessageFormat = "PRIVMSG {0} :<{2}> {3}";
+        internal int RelayChannelOut = -1;
+        internal bool RandomizeNickname = true;
+        internal bool CommandsEnabled = false;
+        internal int CommandChannel = -1;
+        internal int ConnectDelay = 10;
+        internal int PingDelay = 15;
+        internal string DefaultZone = "Sim";
 
-        internal string _accessPassword      = String.Empty;
-        internal Regex  AccessPasswordRegex  = null;
-        internal List<string> ExcludeList    = new List<string>();
+        internal string _accessPassword = String.Empty;
+        internal Regex AccessPasswordRegex = null;
+        internal List<string> ExcludeList = new List<string>();
         internal string AccessPassword
         {
             get { return _accessPassword; }
-            set 
+            set
             {
                 _accessPassword = value;
-                AccessPasswordRegex = new Regex(String.Format(@"^{0},\s*(?<avatar>[^,]+),\s*(?<message>.+)$", _accessPassword), 
+                AccessPasswordRegex = new Regex(String.Format(@"^{0},\s*(?<avatar>[^,]+),\s*(?<message>.+)$", _accessPassword),
                                                 RegexOptions.Compiled);
             }
         }
@@ -99,9 +99,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         // IRC connector reference
 
-        internal IRCConnector irc           = null;
+        internal IRCConnector irc = null;
 
-        internal int idn                     = _idk_++;
+        internal int idn = _idk_++;
 
         // List of regions dependent upon this connection
 
@@ -119,29 +119,29 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         internal ChannelState(ChannelState model)
         {
-            Server               = model.Server;
-            Password             = model.Password;
-            IrcChannel           = model.IrcChannel;
-            Port                 = model.Port;
-            BaseNickname         = model.BaseNickname;
-            RandomizeNickname    = model.RandomizeNickname;
-            User                 = model.User;
-            CommandsEnabled      = model.CommandsEnabled;
-            CommandChannel       = model.CommandChannel;
-            RelayChat            = model.RelayChat;
+            Server = model.Server;
+            Password = model.Password;
+            IrcChannel = model.IrcChannel;
+            Port = model.Port;
+            BaseNickname = model.BaseNickname;
+            RandomizeNickname = model.RandomizeNickname;
+            User = model.User;
+            CommandsEnabled = model.CommandsEnabled;
+            CommandChannel = model.CommandChannel;
+            RelayChat = model.RelayChat;
             RelayPrivateChannels = model.RelayPrivateChannels;
-            RelayChannelOut      = model.RelayChannelOut;
-            RelayChannel         = model.RelayChannel;
+            RelayChannelOut = model.RelayChannelOut;
+            RelayChannel = model.RelayChannel;
             ValidInWorldChannels = model.ValidInWorldChannels;
             PrivateMessageFormat = model.PrivateMessageFormat;
-            NoticeMessageFormat  = model.NoticeMessageFormat;
-            ClientReporting      = model.ClientReporting;
-            AccessPassword       = model.AccessPassword;
-            DefaultZone          = model.DefaultZone;
-            ConnectDelay         = model.ConnectDelay;
-            PingDelay            = model.PingDelay;
+            NoticeMessageFormat = model.NoticeMessageFormat;
+            ClientReporting = model.ClientReporting;
+            AccessPassword = model.AccessPassword;
+            DefaultZone = model.DefaultZone;
+            ConnectDelay = model.ConnectDelay;
+            PingDelay = model.PingDelay;
         }
-        
+
         // Read the configuration file, performing variable substitution and any
         // necessary aliasing. See accompanying documentation for how this works.
         // If you don't need variables, then this works exactly as before.
@@ -160,54 +160,54 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
             m_log.DebugFormat("[IRC-Channel-{0}] Initial request by Region {1} to connect to IRC", cs.idn, rs.Region);
 
-            cs.Server               = Substitute(rs, config.GetString("server", null));
+            cs.Server = Substitute(rs, config.GetString("server", null));
             m_log.DebugFormat("[IRC-Channel-{0}] Server : <{1}>", cs.idn, cs.Server);
-            cs.Password             = Substitute(rs, config.GetString("password", null));
+            cs.Password = Substitute(rs, config.GetString("password", null));
             // probably not a good idea to put a password in the log file
-            cs.User                 = Substitute(rs, config.GetString("user", null));
-            cs.IrcChannel           = Substitute(rs, config.GetString("channel", null));
+            cs.User = Substitute(rs, config.GetString("user", null));
+            cs.IrcChannel = Substitute(rs, config.GetString("channel", null));
             m_log.DebugFormat("[IRC-Channel-{0}] IrcChannel : <{1}>", cs.idn, cs.IrcChannel);
-            cs.Port                 = Convert.ToUInt32(Substitute(rs, config.GetString("port", Convert.ToString(cs.Port))));
+            cs.Port = Convert.ToUInt32(Substitute(rs, config.GetString("port", Convert.ToString(cs.Port))));
             m_log.DebugFormat("[IRC-Channel-{0}] Port : <{1}>", cs.idn, cs.Port);
-            cs.BaseNickname         = Substitute(rs, config.GetString("nick", cs.BaseNickname));
+            cs.BaseNickname = Substitute(rs, config.GetString("nick", cs.BaseNickname));
             m_log.DebugFormat("[IRC-Channel-{0}] BaseNickname : <{1}>", cs.idn, cs.BaseNickname);
-            cs.RandomizeNickname    = Convert.ToBoolean(Substitute(rs, config.GetString("randomize_nick", Convert.ToString(cs.RandomizeNickname))));
+            cs.RandomizeNickname = Convert.ToBoolean(Substitute(rs, config.GetString("randomize_nick", Convert.ToString(cs.RandomizeNickname))));
             m_log.DebugFormat("[IRC-Channel-{0}] RandomizeNickname : <{1}>", cs.idn, cs.RandomizeNickname);
-            cs.RandomizeNickname    = Convert.ToBoolean(Substitute(rs, config.GetString("nicknum", Convert.ToString(cs.RandomizeNickname))));
+            cs.RandomizeNickname = Convert.ToBoolean(Substitute(rs, config.GetString("nicknum", Convert.ToString(cs.RandomizeNickname))));
             m_log.DebugFormat("[IRC-Channel-{0}] RandomizeNickname : <{1}>", cs.idn, cs.RandomizeNickname);
-            cs.User                 = Substitute(rs, config.GetString("username", cs.User));
+            cs.User = Substitute(rs, config.GetString("username", cs.User));
             m_log.DebugFormat("[IRC-Channel-{0}] User : <{1}>", cs.idn, cs.User);
-            cs.CommandsEnabled      = Convert.ToBoolean(Substitute(rs, config.GetString("commands_enabled", Convert.ToString(cs.CommandsEnabled))));
+            cs.CommandsEnabled = Convert.ToBoolean(Substitute(rs, config.GetString("commands_enabled", Convert.ToString(cs.CommandsEnabled))));
             m_log.DebugFormat("[IRC-Channel-{0}] CommandsEnabled : <{1}>", cs.idn, cs.CommandsEnabled);
-            cs.CommandChannel       = Convert.ToInt32(Substitute(rs, config.GetString("commandchannel", Convert.ToString(cs.CommandChannel))));
+            cs.CommandChannel = Convert.ToInt32(Substitute(rs, config.GetString("commandchannel", Convert.ToString(cs.CommandChannel))));
             m_log.DebugFormat("[IRC-Channel-{0}] CommandChannel : <{1}>", cs.idn, cs.CommandChannel);
-            cs.CommandChannel       = Convert.ToInt32(Substitute(rs, config.GetString("command_channel", Convert.ToString(cs.CommandChannel))));
+            cs.CommandChannel = Convert.ToInt32(Substitute(rs, config.GetString("command_channel", Convert.ToString(cs.CommandChannel))));
             m_log.DebugFormat("[IRC-Channel-{0}] CommandChannel : <{1}>", cs.idn, cs.CommandChannel);
-            cs.RelayChat            = Convert.ToBoolean(Substitute(rs, config.GetString("relay_chat", Convert.ToString(cs.RelayChat))));
+            cs.RelayChat = Convert.ToBoolean(Substitute(rs, config.GetString("relay_chat", Convert.ToString(cs.RelayChat))));
             m_log.DebugFormat("[IRC-Channel-{0}] RelayChat           : <{1}>", cs.idn, cs.RelayChat);
             cs.RelayPrivateChannels = Convert.ToBoolean(Substitute(rs, config.GetString("relay_private_channels", Convert.ToString(cs.RelayPrivateChannels))));
             m_log.DebugFormat("[IRC-Channel-{0}] RelayPrivateChannels : <{1}>", cs.idn, cs.RelayPrivateChannels);
             cs.RelayPrivateChannels = Convert.ToBoolean(Substitute(rs, config.GetString("useworldcomm", Convert.ToString(cs.RelayPrivateChannels))));
             m_log.DebugFormat("[IRC-Channel-{0}] RelayPrivateChannels : <{1}>", cs.idn, cs.RelayPrivateChannels);
-            cs.RelayChannelOut      = Convert.ToInt32(Substitute(rs, config.GetString("relay_private_channel_out", Convert.ToString(cs.RelayChannelOut))));
+            cs.RelayChannelOut = Convert.ToInt32(Substitute(rs, config.GetString("relay_private_channel_out", Convert.ToString(cs.RelayChannelOut))));
             m_log.DebugFormat("[IRC-Channel-{0}] RelayChannelOut : <{1}>", cs.idn, cs.RelayChannelOut);
-            cs.RelayChannel         = Convert.ToInt32(Substitute(rs, config.GetString("relay_private_channel_in", Convert.ToString(cs.RelayChannel))));
+            cs.RelayChannel = Convert.ToInt32(Substitute(rs, config.GetString("relay_private_channel_in", Convert.ToString(cs.RelayChannel))));
             m_log.DebugFormat("[IRC-Channel-{0}] RelayChannel : <{1}>", cs.idn, cs.RelayChannel);
-            cs.RelayChannel         = Convert.ToInt32(Substitute(rs, config.GetString("inchannel", Convert.ToString(cs.RelayChannel))));
+            cs.RelayChannel = Convert.ToInt32(Substitute(rs, config.GetString("inchannel", Convert.ToString(cs.RelayChannel))));
             m_log.DebugFormat("[IRC-Channel-{0}] RelayChannel : <{1}>", cs.idn, cs.RelayChannel);
             cs.PrivateMessageFormat = Substitute(rs, config.GetString("msgformat", cs.PrivateMessageFormat));
             m_log.DebugFormat("[IRC-Channel-{0}] PrivateMessageFormat : <{1}>", cs.idn, cs.PrivateMessageFormat);
             cs.NoticeMessageFormat = Substitute(rs, config.GetString("noticeformat", cs.NoticeMessageFormat));
             m_log.DebugFormat("[IRC-Channel-{0}] NoticeMessageFormat : <{1}>", cs.idn, cs.NoticeMessageFormat);
-            cs.ClientReporting      = Convert.ToInt32(Substitute(rs, config.GetString("verbosity", cs.ClientReporting?"1":"0"))) > 0;
+            cs.ClientReporting = Convert.ToInt32(Substitute(rs, config.GetString("verbosity", cs.ClientReporting ? "1" : "0"))) > 0;
             m_log.DebugFormat("[IRC-Channel-{0}] ClientReporting : <{1}>", cs.idn, cs.ClientReporting);
-            cs.ClientReporting      = Convert.ToBoolean(Substitute(rs, config.GetString("report_clients", Convert.ToString(cs.ClientReporting))));
+            cs.ClientReporting = Convert.ToBoolean(Substitute(rs, config.GetString("report_clients", Convert.ToString(cs.ClientReporting))));
             m_log.DebugFormat("[IRC-Channel-{0}] ClientReporting : <{1}>", cs.idn, cs.ClientReporting);
-            cs.DefaultZone          = Substitute(rs, config.GetString("fallback_region", cs.DefaultZone));
+            cs.DefaultZone = Substitute(rs, config.GetString("fallback_region", cs.DefaultZone));
             m_log.DebugFormat("[IRC-Channel-{0}] DefaultZone : <{1}>", cs.idn, cs.DefaultZone);
-            cs.ConnectDelay      = Convert.ToInt32(Substitute(rs, config.GetString("connect_delay", Convert.ToString(cs.ConnectDelay))));
+            cs.ConnectDelay = Convert.ToInt32(Substitute(rs, config.GetString("connect_delay", Convert.ToString(cs.ConnectDelay))));
             m_log.DebugFormat("[IRC-Channel-{0}] ConnectDelay : <{1}>", cs.idn, cs.ConnectDelay);
-            cs.PingDelay      = Convert.ToInt32(Substitute(rs, config.GetString("ping_delay", Convert.ToString(cs.PingDelay))));
+            cs.PingDelay = Convert.ToInt32(Substitute(rs, config.GetString("ping_delay", Convert.ToString(cs.PingDelay))));
             m_log.DebugFormat("[IRC-Channel-{0}] PingDelay : <{1}>", cs.idn, cs.PingDelay);
             cs.AccessPassword = Substitute(rs, config.GetString("access_password", cs.AccessPassword));
             m_log.DebugFormat("[IRC-Channel-{0}] AccessPassword : <{1}>", cs.idn, cs.AccessPassword);
@@ -217,7 +217,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             {
                 cs.ExcludeList.Add(name.Trim().ToLower());
             }
-            
+
             // Fail if fundamental information is still missing
 
             if (cs.Server == null)
@@ -306,8 +306,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
                     IRCBridgeModule.m_channels.Add(cs);
 
-                    m_log.InfoFormat("[IRC-Channel-{0}] New channel initialized for {1}, nick: {2}, commands {3}, private channels {4}", 
-                                 cs.idn, rs.Region, cs.DefaultZone, 
+                    m_log.InfoFormat("[IRC-Channel-{0}] New channel initialized for {1}, nick: {2}, commands {3}, private channels {4}",
+                                 cs.idn, rs.Region, cs.DefaultZone,
                                  cs.CommandsEnabled ? "enabled" : "not enabled",
                                  cs.RelayPrivateChannels ? "relayed" : "not relayed");
                 }
@@ -417,7 +417,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
         private bool IsAConnectionMatchFor(ChannelState cs)
         {
             return (
-                Server == cs.Server && 
+                Server == cs.Server &&
                 IrcChannel == cs.IrcChannel &&
                 Port == cs.Port &&
                 BaseNickname == cs.BaseNickname &&
@@ -473,27 +473,27 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             {
 
                 string vvar = arg.Match(result).ToString();
-                string var  = vvar.Substring(1,vvar.Length-2).Trim();
+                string var = vvar.Substring(1, vvar.Length - 2).Trim();
 
                 switch (var.ToLower())
                 {
-                    case "%region"  :
+                    case "%region":
                         result = result.Replace(vvar, rs.Region);
                         break;
-                    case "%host"    :
+                    case "%host":
                         result = result.Replace(vvar, rs.Host);
                         break;
-                    case "%locx"    :
+                    case "%locx":
                         result = result.Replace(vvar, rs.LocX);
                         break;
-                    case "%locy"    :
+                    case "%locy":
                         result = result.Replace(vvar, rs.LocY);
                         break;
-                    case "%k"       :
+                    case "%k":
                         result = result.Replace(vvar, rs.IDK);
                         break;
-                    default         :
-                        result = result.Replace(vvar, rs.config.GetString(var,var));
+                    default:
+                        result = result.Replace(vvar, rs.config.GetString(var, var));
                         break;
                 }
                 // m_log.DebugFormat("[IRC-Channel] Parse[2]: {0}", result);
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
index 2e1d03d530..351dbfe78c 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
@@ -46,18 +46,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        internal static bool m_pluginEnabled = false;
+        internal static bool Enabled = false;
         internal static IConfig m_config = null;
 
         internal static List<ChannelState> m_channels = new List<ChannelState>();
-        internal static List<RegionState>  m_regions  = new List<RegionState>();
+        internal static List<RegionState> m_regions = new List<RegionState>();
 
         internal static string m_password = String.Empty;
         internal RegionState m_region = null;
 
         #region INonSharedRegionModule Members
 
-        public Type ReplaceableInterface 
+        public Type ReplaceableInterface
         {
             get { return null; }
         }
@@ -72,13 +72,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             m_config = config.Configs["IRC"];
             if (m_config == null)
             {
-//                m_log.InfoFormat("[IRC-Bridge] module not configured");
+                //                m_log.InfoFormat("[IRC-Bridge] module not configured");
                 return;
             }
 
             if (!m_config.GetBoolean("enabled", false))
             {
-//                m_log.InfoFormat("[IRC-Bridge] module disabled in configuration");
+                //                m_log.InfoFormat("[IRC-Bridge] module disabled in configuration");
                 return;
             }
 
@@ -87,19 +87,22 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                 m_password = config.Configs["RemoteAdmin"].GetString("access_password", m_password);
             }
 
-            m_pluginEnabled = true;
-            m_log.InfoFormat("[IRC-Bridge]: Module enabled");
+            Enabled = true;
+
+            m_log.InfoFormat("[IRC-Bridge]: Module is enabled");
         }
 
         public void AddRegion(Scene scene)
         {
-            if (m_pluginEnabled)
+            if (Enabled)
             {
                 try
                 {
                     m_log.InfoFormat("[IRC-Bridge] Connecting region {0}", scene.RegionInfo.RegionName);
+
                     if (!String.IsNullOrEmpty(m_password))
                         MainServer.Instance.AddXmlRPCHandler("irc_admin", XmlRpcAdminMethod, false);
+
                     m_region = new RegionState(scene, m_config);
                     lock (m_regions) m_regions.Add(m_region);
                     m_region.Open();
@@ -123,7 +126,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         public void RemoveRegion(Scene scene)
         {
-            if (!m_pluginEnabled)
+            if (!Enabled)
                 return;
 
             if (m_region == null)
@@ -150,12 +153,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             m_log.Debug("[IRC-Bridge]: XML RPC Admin Entry");
 
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable  responseData = new Hashtable();
+            Hashtable responseData = new Hashtable();
 
             try
             {
                 Hashtable requestData = (Hashtable)request.Params[0];
-                bool    found = false;
+                bool found = false;
                 string region = String.Empty;
 
                 if (m_password != String.Empty)
@@ -169,18 +172,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                 if (!requestData.ContainsKey("region"))
                     throw new Exception("No region name specified");
                 region = (string)requestData["region"];
-                
+
                 foreach (RegionState rs in m_regions)
                 {
                     if (rs.Region == region)
                     {
-                        responseData["server"]    = rs.cs.Server;
-                        responseData["port"]      = (int)rs.cs.Port;
-                        responseData["user"]      = rs.cs.User;
-                        responseData["channel"]   = rs.cs.IrcChannel;
-                        responseData["enabled"]   = rs.cs.irc.Enabled;
+                        responseData["server"] = rs.cs.Server;
+                        responseData["port"] = (int)rs.cs.Port;
+                        responseData["user"] = rs.cs.User;
+                        responseData["channel"] = rs.cs.IrcChannel;
+                        responseData["enabled"] = rs.cs.irc.Enabled;
                         responseData["connected"] = rs.cs.irc.Connected;
-                        responseData["nickname"]  = rs.cs.irc.Nick;
+                        responseData["nickname"] = rs.cs.irc.Nick;
                         found = true;
                         break;
                     }
@@ -195,7 +198,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                 m_log.ErrorFormat("[IRC-Bridge] XML RPC Admin request failed : {0}", e.Message);
 
                 responseData["success"] = "false";
-                responseData["error"]   = e.Message;
+                responseData["error"] = e.Message;
             }
             finally
             {
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs
index a01479896e..c5cba8e22c 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs
@@ -53,16 +53,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
         // Local constants
 
         private static readonly Vector3 CenterOfRegion = new Vector3(((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), 20);
-        private static readonly char[]  CS_SPACE = { ' ' };
+        private static readonly char[] CS_SPACE = { ' ' };
 
-        private const  int  WD_INTERVAL = 1000;     // base watchdog interval
-        private static int  PING_PERIOD = 15;       // WD intervals per PING
-        private static int  ICCD_PERIOD = 10;       // WD intervals between Connects
-        private static int  L_TIMEOUT   = 25;       // Login time out interval
+        private const int WD_INTERVAL = 1000;     // base watchdog interval
+        private static int PING_PERIOD = 15;       // WD intervals per PING
+        private static int ICCD_PERIOD = 10;       // WD intervals between Connects
+        private static int L_TIMEOUT = 25;       // Login time out interval
 
-        private static int _idk_        = 0;        // core connector identifier
-        private static int _pdk_        = 0;        // ping interval counter
-        private static int _icc_        = ICCD_PERIOD; // IRC connect counter
+        private static int _idk_ = 0;        // core connector identifier
+        private static int _pdk_ = 0;        // ping interval counter
+        private static int _icc_ = ICCD_PERIOD; // IRC connect counter
 
         // List of configured connectors
 
@@ -113,7 +113,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         private Object msyncConnect = new Object();
 
-        internal bool   m_randomizeNick = true; // add random suffix
+        internal bool m_randomizeNick = true; // add random suffix
         internal string m_baseNick = null;      // base name for randomizing
         internal string m_nick = null;          // effective nickname
 
@@ -122,7 +122,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             get { return m_nick; }
             set { m_nick = value; }
         }
-        
+
         private bool m_enabled = false;            // connector enablement
         public bool Enabled
         {
@@ -130,8 +130,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
         }
 
         private bool m_connected = false;        // connection status
-        private bool m_pending   = false;        // login disposition
-        private int  m_timeout   = L_TIMEOUT;    // login timeout counter
+        private bool m_pending = false;        // login disposition
+        private int m_timeout = L_TIMEOUT;    // login timeout counter
         public bool Connected
         {
             get { return m_connected; }
@@ -143,9 +143,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             get { return m_ircChannel; }
             set { m_ircChannel = value; }
         }
-        
+
         private uint m_port = 6667;                // session port
-        public uint Port 
+        public uint Port
         {
             get { return m_port; }
             set { m_port = value; }
@@ -172,10 +172,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         // Network interface
 
-        private TcpClient     m_tcp;
+        private TcpClient m_tcp;
         private NetworkStream m_stream = null;
-        private StreamReader  m_reader;
-        private StreamWriter  m_writer;
+        private StreamReader m_reader;
+        private StreamWriter m_writer;
 
         // Channel characteristic info (if available)
 
@@ -193,26 +193,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
             // Prepare network interface
 
-            m_tcp    = null;
+            m_tcp = null;
             m_writer = null;
             m_reader = null;
 
             // Setup IRC session parameters
 
-            m_server        = cs.Server;
-            m_password      = cs.Password;
-            m_baseNick      = cs.BaseNickname;
+            m_server = cs.Server;
+            m_password = cs.Password;
+            m_baseNick = cs.BaseNickname;
             m_randomizeNick = cs.RandomizeNickname;
-            m_ircChannel    = cs.IrcChannel;
-            m_port          = cs.Port;
-            m_user          = cs.User;
+            m_ircChannel = cs.IrcChannel;
+            m_port = cs.Port;
+            m_user = cs.User;
 
             if (m_watchdog == null)
             {
                 // Non-differentiating
 
-                ICCD_PERIOD     = cs.ConnectDelay;
-                PING_PERIOD     = cs.PingDelay;
+                ICCD_PERIOD = cs.ConnectDelay;
+                PING_PERIOD = cs.PingDelay;
 
                 // Smaller values are not reasonable
 
@@ -235,7 +235,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
             if (m_randomizeNick)
                 m_nick = m_baseNick + Util.RandomClass.Next(1, 99);
-            else 
+            else
                 m_nick = m_baseNick;
 
             m_log.InfoFormat("[IRC-Connector-{0}]: Initialization complete", idn);
@@ -295,18 +295,22 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                                 m_nick, m_ircChannel, m_server));
                             m_writer.Flush();
                         }
-                        catch (Exception) {}
-       
+                        catch (Exception) { }
+
 
                         m_connected = false;
 
-                        try { m_writer.Close(); } catch (Exception) {}
-                        try { m_reader.Close(); } catch (Exception) {}
-                        try { m_stream.Close(); } catch (Exception) {}
-                        try { m_tcp.Close();    } catch (Exception) {}
+                        try { m_writer.Close(); }
+                        catch (Exception) { }
+                        try { m_reader.Close(); }
+                        catch (Exception) { }
+                        try { m_stream.Close(); }
+                        catch (Exception) { }
+                        try { m_tcp.Close(); }
+                        catch (Exception) { }
 
                     }
-       
+
                     lock (m_connectors)
                         m_connectors.Remove(this);
 
@@ -347,15 +351,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                     if (m_connected) return;
 
                     m_connected = true;
-                    m_pending   = true;
-                    m_timeout   = L_TIMEOUT;
+                    m_pending = true;
+                    m_timeout = L_TIMEOUT;
 
-                    m_tcp    = new TcpClient(m_server, (int)m_port);
+                    m_tcp = new TcpClient(m_server, (int)m_port);
                     m_stream = m_tcp.GetStream();
                     m_reader = new StreamReader(m_stream);
                     m_writer = new StreamWriter(m_stream);
 
-                    m_log.InfoFormat("[IRC-Connector-{0}]: Connected to {1}:{2}", idn, m_server, m_port); 
+                    m_log.InfoFormat("[IRC-Connector-{0}]: Connected to {1}:{2}", idn, m_server, m_port);
 
                     m_listener = new Thread(new ThreadStart(ListenerRun));
                     m_listener.Name = "IRCConnectorListenerThread";
@@ -418,12 +422,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                     // the socket and it will disappear of its own accord, once this
                     // processing is completed.
 
-                    try { m_writer.Close(); } catch (Exception) {}
-                    try { m_reader.Close(); } catch (Exception) {}
-                    try { m_tcp.Close();    } catch (Exception) {}
+                    try { m_writer.Close(); }
+                    catch (Exception) { }
+                    try { m_reader.Close(); }
+                    catch (Exception) { }
+                    try { m_tcp.Close(); }
+                    catch (Exception) { }
 
                     m_connected = false;
-                    m_pending   = false;
+                    m_pending = false;
                     m_resetk++;
 
                 }
@@ -495,7 +502,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
         {
 
             string inputLine;
-            int    resetk = m_resetk;
+            int resetk = m_resetk;
 
             try
             {
@@ -555,7 +562,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                 Reconnect();
         }
 
-        private Regex RE = new Regex(@":(?<nick>[\w-]*)!(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)", 
+        private Regex RE = new Regex(@":(?<nick>[\w-]*)!(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)",
                                      RegexOptions.Multiline);
 
         private Dictionary<string, string> ExtractMsg(string input)
@@ -617,8 +624,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             string[] commArgs;
             string c_server = m_server;
 
-            string pfx   = String.Empty;
-            string cmd   = String.Empty;
+            string pfx = String.Empty;
+            string cmd = String.Empty;
             string parms = String.Empty;
 
             // ":" indicates that a prefix is present
@@ -627,15 +634,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             // ":" indicates that the remainder of the
             // line is a single parameter value.
 
-            commArgs = command.Split(CS_SPACE,2);
+            commArgs = command.Split(CS_SPACE, 2);
 
             if (commArgs[0].StartsWith(":"))
             {
                 pfx = commArgs[0].Substring(1);
-                commArgs = commArgs[1].Split(CS_SPACE,2);
+                commArgs = commArgs[1].Split(CS_SPACE, 2);
             }
 
-            cmd   = commArgs[0];
+            cmd = commArgs[0];
             parms = commArgs[1];
 
             // m_log.DebugFormat("[IRC-Connector-{0}] prefix = <{1}> cmd = <{2}>", idn, pfx, cmd);
@@ -646,44 +653,44 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                 // Messages 001-004 are always sent
                 // following signon.
 
-                case "001" : // Welcome ...
-                case "002" : // Server information
-                case "003" : // Welcome ...
+                case "001": // Welcome ...
+                case "002": // Server information
+                case "003": // Welcome ...
                     break;
-                case "004" : // Server information
+                case "004": // Server information
                     m_log.DebugFormat("[IRC-Connector-{0}] [{1}] parms = <{2}>", idn, cmd, parms);
                     commArgs = parms.Split(CS_SPACE);
                     c_server = commArgs[1];
                     m_server = c_server;
-                    version  = commArgs[2];
-                    usermod  = commArgs[3];
-                    chanmod  = commArgs[4];
+                    version = commArgs[2];
+                    usermod = commArgs[3];
+                    chanmod = commArgs[4];
                     break;
-                case "005" : // Server information
+                case "005": // Server information
                     break;
-                case "042" :
-                case "250" :
-                case "251" :
-                case "252" :
-                case "254" :
-                case "255" :
-                case "265" :
-                case "266" :
-                case "332" : // Subject
-                case "333" : // Subject owner (?)
-                case "353" : // Name list
-                case "366" : // End-of-Name list marker
-                case "372" : // MOTD body
-                case "375" : // MOTD start
+                case "042":
+                case "250":
+                case "251":
+                case "252":
+                case "254":
+                case "255":
+                case "265":
+                case "266":
+                case "332": // Subject
+                case "333": // Subject owner (?)
+                case "353": // Name list
+                case "366": // End-of-Name list marker
+                case "372": // MOTD body
+                case "375": // MOTD start
                     // m_log.InfoFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE,2)[1]);
                     break;
-                case "376" : // MOTD end
+                case "376": // MOTD end
                     // m_log.InfoFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE,2)[1]);
                     motd = true;
                     break;
-                case "451" : // Not registered
+                case "451": // Not registered
                     break;
-                case "433" : // Nickname in use
+                case "433": // Nickname in use
                     // Gen a new name
                     m_nick = m_baseNick + Util.RandomClass.Next(1, 99);
                     m_log.ErrorFormat("[IRC-Connector-{0}]: [{1}] IRC SERVER reports NicknameInUse, trying {2}", idn, cmd, m_nick);
@@ -695,29 +702,29 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                     m_writer.WriteLine(String.Format("JOIN {0}", m_ircChannel));
                     m_writer.Flush();
                     break;
-                case "479" : // Bad channel name, etc. This will never work, so disable the connection
-                    m_log.ErrorFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE,2)[1]);
+                case "479": // Bad channel name, etc. This will never work, so disable the connection
+                    m_log.ErrorFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE, 2)[1]);
                     m_log.ErrorFormat("[IRC-Connector-{0}] [{1}] Connector disabled", idn, cmd);
-                    m_enabled   = false;
+                    m_enabled = false;
                     m_connected = false;
-                    m_pending   = false;
+                    m_pending = false;
                     break;
-                case "NOTICE" :
+                case "NOTICE":
                     // m_log.WarnFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE,2)[1]);
                     break;
-                case "ERROR"  :
-                    m_log.ErrorFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE,2)[1]);
+                case "ERROR":
+                    m_log.ErrorFormat("[IRC-Connector-{0}] [{1}] {2}", idn, cmd, parms.Split(CS_SPACE, 2)[1]);
                     if (parms.Contains("reconnect too fast"))
                         ICCD_PERIOD++;
-                    m_pending   = false;
+                    m_pending = false;
                     Reconnect();
                     break;
-                case "PING"   :
+                case "PING":
                     m_log.DebugFormat("[IRC-Connector-{0}] [{1}] parms = <{2}>", idn, cmd, parms);
                     m_writer.WriteLine(String.Format("PONG {0}", parms));
                     m_writer.Flush();
                     break;
-                case "PONG"   :
+                case "PONG":
                     break;
                 case "JOIN":
                     if (m_pending)
@@ -748,19 +755,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                     m_log.DebugFormat("[IRC-Connector-{0}] [{1}] parms = <{2}>", idn, cmd, parms);
                     eventIrcQuit(pfx, cmd, parms);
                     break;
-                default    :
+                default:
                     m_log.DebugFormat("[IRC-Connector-{0}] Command '{1}' ignored, parms = {2}", idn, cmd, parms);
                     break;
             }
 
             // m_log.DebugFormat("[IRC-Connector-{0}] prefix = <{1}> cmd = <{2}> complete", idn, pfx, cmd);
-  
+
         }
 
         public void eventIrcJoin(string prefix, string command, string parms)
         {
-            string[]     args = parms.Split(CS_SPACE,2);
-            string IrcUser    = prefix.Split('!')[0];
+            string[] args = parms.Split(CS_SPACE, 2);
+            string IrcUser = prefix.Split('!')[0];
             string IrcChannel = args[0];
 
             if (IrcChannel.StartsWith(":"))
@@ -772,8 +779,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         public void eventIrcPart(string prefix, string command, string parms)
         {
-            string[]     args = parms.Split(CS_SPACE,2);
-            string    IrcUser = prefix.Split('!')[0];
+            string[] args = parms.Split(CS_SPACE, 2);
+            string IrcUser = prefix.Split('!')[0];
             string IrcChannel = args[0];
 
             m_log.DebugFormat("[IRC-Connector-{0}] Event: IRCPart {1}:{2}", idn, m_server, m_ircChannel);
@@ -782,7 +789,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         public void eventIrcMode(string prefix, string command, string parms)
         {
-            string[]   args = parms.Split(CS_SPACE,2);
+            string[] args = parms.Split(CS_SPACE, 2);
             string UserMode = args[1];
 
             m_log.DebugFormat("[IRC-Connector-{0}] Event: IRCMode {1}:{2}", idn, m_server, m_ircChannel);
@@ -794,7 +801,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         public void eventIrcNickChange(string prefix, string command, string parms)
         {
-            string[]      args = parms.Split(CS_SPACE,2);
+            string[] args = parms.Split(CS_SPACE, 2);
             string UserOldNick = prefix.Split('!')[0];
             string UserNewNick = args[0].Remove(0, 1);
 
@@ -804,11 +811,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         public void eventIrcKick(string prefix, string command, string parms)
         {
-            string[]      args = parms.Split(CS_SPACE,3);
-            string UserKicker  = prefix.Split('!')[0];
-            string IrcChannel  = args[0];
-            string UserKicked  = args[1];
-            string KickMessage = args[2]; 
+            string[] args = parms.Split(CS_SPACE, 3);
+            string UserKicker = prefix.Split('!')[0];
+            string IrcChannel = args[0];
+            string UserKicked = args[1];
+            string KickMessage = args[2];
 
             m_log.DebugFormat("[IRC-Connector-{0}] Event: IRCKick {1}:{2}", idn, m_server, m_ircChannel);
             BroadcastSim(UserKicker, "/me kicks kicks {0} off {1} saying \"{2}\"", UserKicked, IrcChannel, KickMessage);
@@ -822,7 +829,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         public void eventIrcQuit(string prefix, string command, string parms)
         {
-            string     IrcUser = prefix.Split('!')[0];
+            string IrcUser = prefix.Split('!')[0];
             string QuitMessage = parms;
 
             m_log.DebugFormat("[IRC-Connector-{0}] Event: IRCQuit {1}:{2}", idn, m_server, m_ircChannel);
@@ -842,65 +849,65 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
             // m_log.InfoFormat("[IRC-Watchdog] Status scan, pdk = {0}, icc = {1}", _pdk_, _icc_);
 
-            _pdk_ = (_pdk_+1)%PING_PERIOD;    // cycle the ping trigger
+            _pdk_ = (_pdk_ + 1) % PING_PERIOD;    // cycle the ping trigger
             _icc_++;    // increment the inter-consecutive-connect-delay counter
 
             lock (m_connectors)
-            foreach (IRCConnector connector in m_connectors)
-            {
-
-                // m_log.InfoFormat("[IRC-Watchdog] Scanning {0}", connector);
-
-                if (connector.Enabled)
+                foreach (IRCConnector connector in m_connectors)
                 {
-                    if (!connector.Connected)
+
+                    // m_log.InfoFormat("[IRC-Watchdog] Scanning {0}", connector);
+
+                    if (connector.Enabled)
                     {
-                        try
-                        {
-                            // m_log.DebugFormat("[IRC-Watchdog] Connecting {1}:{2}", connector.idn, connector.m_server, connector.m_ircChannel);
-                            connector.Connect();
-                        }
-                        catch (Exception e)
-                        {
-                            m_log.ErrorFormat("[IRC-Watchdog] Exception on connector {0}: {1} ", connector.idn, e.Message);
-                        }
-                    }
-                    else
-                    {
-
-                        if (connector.m_pending)
-                        {
-                            if (connector.m_timeout == 0)
-                            {
-                                m_log.ErrorFormat("[IRC-Watchdog] Login timed-out for connector {0}, reconnecting", connector.idn);
-                                connector.Reconnect();
-                            }
-                            else
-                                connector.m_timeout--;
-                        }
-
-                        // Being marked connected is not enough to ping. Socket establishment can sometimes take a long
-                        // time, in which case the watch dog might try to ping the server before the socket has been 
-                        // set up, with nasty side-effects.
-
-                        else if (_pdk_ == 0)
+                        if (!connector.Connected)
                         {
                             try
                             {
-                                connector.m_writer.WriteLine(String.Format("PING :{0}", connector.m_server));
-                                connector.m_writer.Flush();
+                                // m_log.DebugFormat("[IRC-Watchdog] Connecting {1}:{2}", connector.idn, connector.m_server, connector.m_ircChannel);
+                                connector.Connect();
                             }
                             catch (Exception e)
                             {
-                                m_log.ErrorFormat("[IRC-PingRun] Exception on connector {0}: {1} ", connector.idn, e.Message);
-                                m_log.Debug(e);
-                                connector.Reconnect();
+                                m_log.ErrorFormat("[IRC-Watchdog] Exception on connector {0}: {1} ", connector.idn, e.Message);
                             }
                         }
+                        else
+                        {
 
+                            if (connector.m_pending)
+                            {
+                                if (connector.m_timeout == 0)
+                                {
+                                    m_log.ErrorFormat("[IRC-Watchdog] Login timed-out for connector {0}, reconnecting", connector.idn);
+                                    connector.Reconnect();
+                                }
+                                else
+                                    connector.m_timeout--;
+                            }
+
+                            // Being marked connected is not enough to ping. Socket establishment can sometimes take a long
+                            // time, in which case the watch dog might try to ping the server before the socket has been 
+                            // set up, with nasty side-effects.
+
+                            else if (_pdk_ == 0)
+                            {
+                                try
+                                {
+                                    connector.m_writer.WriteLine(String.Format("PING :{0}", connector.m_server));
+                                    connector.m_writer.Flush();
+                                }
+                                catch (Exception e)
+                                {
+                                    m_log.ErrorFormat("[IRC-PingRun] Exception on connector {0}: {1} ", connector.idn, e.Message);
+                                    m_log.Debug(e);
+                                    connector.Reconnect();
+                                }
+                            }
+
+                        }
                     }
                 }
-            }
 
             // m_log.InfoFormat("[IRC-Watchdog] Status scan completed");
 
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs
index 53b103e8ca..d4fe5e0cde 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/RegionState.cs
@@ -41,49 +41,71 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
     internal class RegionState
     {
-
         private static readonly ILog m_log =
             LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         private static readonly OpenMetaverse.Vector3 CenterOfRegion = new OpenMetaverse.Vector3(((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), 20);
-        private const  int DEBUG_CHANNEL = 2147483647;
+        private const int DEBUG_CHANNEL = 2147483647;
 
-        private static int _idk_         = 0;
+        private static int _idk_ = 0;
 
         // Runtime variables; these values are assigned when the
         // IrcState is created and remain constant thereafter.
 
-        internal string Region               = String.Empty;
-        internal string Host                 = String.Empty;
-        internal string LocX                 = String.Empty;
-        internal string LocY                 = String.Empty;
-        internal string IDK                  = String.Empty;
+        internal string Region = String.Empty;
+        internal string Host = String.Empty;
+        internal string LocX = String.Empty;
+        internal string LocY = String.Empty;
+        internal string IDK = String.Empty;
 
         // System values - used only be the IRC classes themselves
 
-        internal ChannelState cs             = null; // associated IRC configuration
-        internal Scene scene                 = null; // associated scene
-        internal IConfig config              = null; // configuration file reference
-        internal bool enabled                = true; 
- 
+        internal ChannelState cs = null; // associated IRC configuration
+        internal Scene scene = null; // associated scene
+        internal IConfig config = null; // configuration file reference
+        internal bool enabled = true;
+
+        //AgentAlert
+        internal bool showAlert = false;
+        internal string alertMessage = String.Empty;
+        internal IDialogModule dialogModule = null;
+
         // This list is used to keep track of who is here, and by
         // implication, who is not.
 
-        internal List<IClientAPI> clients    = new List<IClientAPI>();
+        internal List<IClientAPI> clients = new List<IClientAPI>();
 
         // Setup runtime variable values
 
         public RegionState(Scene p_scene, IConfig p_config)
         {
-
-            scene  = p_scene;
+            scene = p_scene;
             config = p_config;
 
             Region = scene.RegionInfo.RegionName;
-            Host   = scene.RegionInfo.ExternalHostName;
-            LocX   = Convert.ToString(scene.RegionInfo.RegionLocX);
-            LocY   = Convert.ToString(scene.RegionInfo.RegionLocY);
-            IDK    = Convert.ToString(_idk_++);
+            Host = scene.RegionInfo.ExternalHostName;
+            LocX = Convert.ToString(scene.RegionInfo.RegionLocX);
+            LocY = Convert.ToString(scene.RegionInfo.RegionLocY);
+            IDK = Convert.ToString(_idk_++);
+
+            showAlert = config.GetBoolean("alert_show", false);
+            string alertServerInfo = String.Empty;
+
+            if (showAlert)
+            {
+                bool showAlertServerInfo = config.GetBoolean("alert_show_serverinfo", true);
+
+                if (showAlertServerInfo)
+                    alertServerInfo = String.Format("\nServer: {0}\nPort: {1}\nChannel: {2}\n\n",
+                        config.GetString("server", ""), config.GetString("port", ""), config.GetString("channel", ""));
+
+                string alertPreMessage = config.GetString("alert_msg_pre", "This region is linked to Irc.");
+                string alertPostMessage = config.GetString("alert_msg_post", "Everything you say in public chat can be listened.");
+
+                alertMessage = String.Format("{0}\n{1}{2}", alertPreMessage, alertServerInfo, alertPostMessage);
+
+                dialogModule = scene.RequestModuleInterface<IDialogModule>();
+            }
 
             // OpenChannel conditionally establishes a connection to the
             // IRC server. The request will either succeed, or it will
@@ -93,9 +115,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
             // Connect channel to world events
 
-            scene.EventManager.OnChatFromWorld  += OnSimChat;
+            scene.EventManager.OnChatFromWorld += OnSimChat;
             scene.EventManager.OnChatFromClient += OnSimChat;
-            scene.EventManager.OnMakeRootAgent  += OnMakeRootAgent;
+            scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;
             scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
 
             m_log.InfoFormat("[IRC-Region {0}] Initialization complete", Region);
@@ -106,8 +128,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         ~RegionState()
         {
-          if (cs != null)
-              cs.RemoveRegion(this);
+            if (cs != null)
+                cs.RemoveRegion(this);
         }
 
         // Called by PostInitialize after all regions have been created
@@ -138,7 +160,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             {
                 if (clients.Contains(client))
                 {
-                    if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting)) 
+                    if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting))
                     {
                         m_log.InfoFormat("[IRC-Region {0}]: {1} has left", Region, client.Name);
                         //Check if this person is excluded from IRC
@@ -147,7 +169,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                             cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has left", client.Name));
                         }
                     }
-                    client.OnLogout           -= OnClientLoggedOut;
+                    client.OnLogout -= OnClientLoggedOut;
                     client.OnConnectionClosed -= OnClientLoggedOut;
                     clients.Remove(client);
                 }
@@ -171,13 +193,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
             {
                 if (clients.Contains(client))
                 {
-                    if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting)) 
+                    if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting))
                     {
                         string clientName = String.Format("{0} {1}", presence.Firstname, presence.Lastname);
                         m_log.DebugFormat("[IRC-Region {0}] {1} has left", Region, clientName);
                         cs.irc.PrivMsg(cs.NoticeMessageFormat, cs.irc.Nick, Region, String.Format("{0} has left", clientName));
                     }
-                    client.OnLogout           -= OnClientLoggedOut;
+                    client.OnLogout -= OnClientLoggedOut;
                     client.OnConnectionClosed -= OnClientLoggedOut;
                     clients.Remove(client);
                 }
@@ -195,14 +217,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
         private void OnMakeRootAgent(ScenePresence presence)
         {
-
             IClientAPI client = presence.ControllingClient;
 
             try
             {
                 if (!clients.Contains(client))
                 {
-                    client.OnLogout           += OnClientLoggedOut;
+                    client.OnLogout += OnClientLoggedOut;
                     client.OnConnectionClosed += OnClientLoggedOut;
                     clients.Add(client);
                     if (enabled && (cs.irc.Enabled) && (cs.irc.Connected) && (cs.ClientReporting))
@@ -216,17 +237,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                         }
                     }
                 }
+
+                if (dialogModule != null && showAlert)
+                    dialogModule.SendAlertToUser(client, alertMessage, true);
             }
             catch (Exception ex)
             {
                 m_log.ErrorFormat("[IRC-Region {0}]: MakeRootAgent exception: {1}", Region, ex.Message);
                 m_log.Debug(ex);
             }
-
         }
 
         // This handler detects chat events int he virtual world.
-
         public void OnSimChat(Object sender, OSChatMessage msg)
         {
 
@@ -317,14 +339,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                         // that evident.
 
                         default:
-                            m_log.DebugFormat("[IRC-Region {0}] Forwarding unrecognized command to IRC : {1}", 
+                            m_log.DebugFormat("[IRC-Region {0}] Forwarding unrecognized command to IRC : {1}",
                                             Region, msg.Message);
                             cs.irc.Send(msg.Message);
                             break;
                     }
                 }
                 catch (Exception ex)
-                { 
+                {
                     m_log.WarnFormat("[IRC-Region {0}] error processing in-world command channel input: {1}",
                                     Region, ex.Message);
                     m_log.Debug(ex);
@@ -366,7 +388,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
 
             m_log.DebugFormat("[IRC-Region {0}] heard on channel {1} : {2}", Region, msg.Channel, msg.Message);
 
-            if (null != avatar && cs.RelayChat && (msg.Channel == 0 || msg.Channel == DEBUG_CHANNEL)) 
+            if (null != avatar && cs.RelayChat && (msg.Channel == 0 || msg.Channel == DEBUG_CHANNEL))
             {
                 string txt = msg.Message;
                 if (txt.StartsWith("/me "))
@@ -376,13 +398,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
                 return;
             }
 
-            if (null == avatar && cs.RelayPrivateChannels && null != cs.AccessPassword && 
+            if (null == avatar && cs.RelayPrivateChannels && null != cs.AccessPassword &&
                 msg.Channel == cs.RelayChannelOut)
             {
                 Match m = cs.AccessPasswordRegex.Match(msg.Message);
                 if (null != m)
                 {
-                    m_log.DebugFormat("[IRC] relaying message from {0}: {1}", m.Groups["avatar"].ToString(), 
+                    m_log.DebugFormat("[IRC] relaying message from {0}: {1}", m.Groups["avatar"].ToString(),
                                       m.Groups["message"].ToString());
                     cs.irc.PrivMsg(cs.PrivateMessageFormat, m.Groups["avatar"].ToString(),
                                    scene.RegionInfo.RegionName, m.Groups["message"].ToString());
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 45c3d401c9..54b88b4875 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -1109,6 +1109,17 @@
 
     ;exclude_list=User 1,User 2,User 3
 
+    ;;Shows modal alertbox for entering agent on IRC enabled regions
+    ;;
+    ;; Enable Alert, default = false
+    ;alert_show = false
+    ;;
+    ;; Show IRC serverinfo, default = true
+    ;alert_show_serverinfo = true
+    ;;
+    ;alert_msg_pre = "This region is linked to Irc."
+    ;alert_msg_post = "Everything you say in public chat can be listened."
+
 
 ; The following settings control the progression of daytime
 ; in the Sim.  The defaults are the same as the commented out settings

From 10de5d81697c645d10d5aab605f89daba85b654b Mon Sep 17 00:00:00 2001
From: teravus <teravus@gmail.com>
Date: Sun, 20 Jan 2013 08:03:17 -0500
Subject: [PATCH 16/36] * Allow unsafe code with BulletSim

---
 prebuild.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/prebuild.xml b/prebuild.xml
index abf8f364d7..bb9b7d6de4 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1727,11 +1727,13 @@
       <Configuration name="Debug">
         <Options>
           <OutputPath>../../../../bin/Physics/</OutputPath>
+          <AllowUnsafe>true</AllowUnsafe>
         </Options>
       </Configuration>
       <Configuration name="Release">
         <Options>
           <OutputPath>../../../../bin/Physics/</OutputPath>
+          <AllowUnsafe>true</AllowUnsafe>
         </Options>
       </Configuration>
 

From 82b954b2125acf3c3647422fbbe543e96b6d4e91 Mon Sep 17 00:00:00 2001
From: teravus <teravus@gmail.com>
Date: Sun, 20 Jan 2013 08:06:15 -0500
Subject: [PATCH 17/36] * Tweak the BulletSimN API a bit.

---
 .../Region/Physics/BulletSNPlugin/BSScene.cs  |  8 +++---
 .../Physics/BulletSNPlugin/BulletSimAPI.cs    | 27 ++++++++++---------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs
index 1a7c34b4ff..4fc3e2a55c 100644
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs
@@ -106,11 +106,11 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
 
     // Pinned memory used to pass step information between managed and unmanaged
     internal int m_maxCollisionsPerFrame;
-    private List<BulletXNA.CollisionDesc> m_collisionArray;
+    private BulletXNA.CollisionDesc[] m_collisionArray;
     //private GCHandle m_collisionArrayPinnedHandle;
 
     internal int m_maxUpdatesPerFrame;
-    private List<BulletXNA.EntityProperties> m_updateArray;
+    private BulletXNA.EntityProperties[] m_updateArray;
     //private GCHandle m_updateArrayPinnedHandle;
 
 
@@ -201,9 +201,9 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
         GetInitialParameterValues(config);
 
         // allocate more pinned memory close to the above in an attempt to get the memory all together
-        m_collisionArray = new List<BulletXNA.CollisionDesc>();
+        m_collisionArray = new BulletXNA.CollisionDesc[0];
         //m_collisionArrayPinnedHandle = GCHandle.Alloc(m_collisionArray, GCHandleType.Pinned);
-        m_updateArray = new List<BulletXNA.EntityProperties>();
+        m_updateArray = new BulletXNA.EntityProperties[0];
         //m_updateArrayPinnedHandle = GCHandle.Alloc(m_updateArray, GCHandleType.Pinned);
 
         // Enable very detailed logging.
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs b/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs
index 93643c9f50..ba969058bc 100644
--- a/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs
+++ b/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs
@@ -894,7 +894,7 @@ static class BulletSimAPI {
         return capsuleShapeZ;
     }
 
-    public static object Initialize2(Vector3 worldExtent, ConfigurationParameters[] o, int mMaxCollisionsPerFrame, ref List<BulletXNA.CollisionDesc> collisionArray, int mMaxUpdatesPerFrame, ref List<BulletXNA.EntityProperties> updateArray, object mDebugLogCallbackHandle)
+    public static object Initialize2(Vector3 worldExtent, ConfigurationParameters[] o, int mMaxCollisionsPerFrame, ref BulletXNA.CollisionDesc[] collisionArray, int mMaxUpdatesPerFrame, ref BulletXNA.EntityProperties[] updateArray, object mDebugLogCallbackHandle)
     {
         CollisionWorld.WorldData.ParamData p = new CollisionWorld.WorldData.ParamData();
 
@@ -1436,14 +1436,14 @@ static class BulletSimAPI {
 
     }
 
-    internal static int PhysicsStep2(object pWorld, float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out List<BulletXNA.EntityProperties> updatedEntities, out int collidersCount, out List<BulletXNA.CollisionDesc>colliders)
+    internal static int PhysicsStep2(object pWorld, float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out BulletXNA.EntityProperties[] updatedEntities, out int collidersCount, out BulletXNA.CollisionDesc[] colliders)
     {
         int epic = PhysicsStepint2(pWorld, timeStep, m_maxSubSteps, m_fixedTimeStep, out updatedEntityCount, out updatedEntities,
                                 out collidersCount, out colliders);
         return epic;
     }
 
-    private static int PhysicsStepint2(object pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out List<BulletXNA.EntityProperties> updatedEntities, out int collidersCount, out List<BulletXNA.CollisionDesc> colliders)
+    private static int PhysicsStepint2(object pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out BulletXNA.EntityProperties[] updatedEntities, out int collidersCount, out BulletXNA.CollisionDesc[] colliders)
     {
         int numSimSteps = 0;
       
@@ -1462,16 +1462,16 @@ static class BulletSimAPI {
             numSimSteps = world.StepSimulation(timeStep, m_maxSubSteps, m_fixedTimeStep);
             int updates = 0;
 
-            updatedEntityCount = world.UpdatedObjects.Count;
-            updatedEntities = new List<BulletXNA.EntityProperties>(world.UpdatedObjects);
-            updatedEntityCount = updatedEntities.Count;
-            world.UpdatedObjects.Clear();
+            updatedEntityCount = world.UpdatedObjects.Length;
+            updatedEntities = (world.UpdatedObjects);
+            updatedEntityCount = updatedEntities.Length;
+            //world.UpdatedObjects = ;
             
 
-            collidersCount = world.UpdatedCollisions.Count;
-            colliders = new List<BulletXNA.CollisionDesc>(world.UpdatedCollisions);
+            collidersCount = world.UpdatedCollisions.Length;
+            colliders = (world.UpdatedCollisions);
 
-            world.UpdatedCollisions.Clear();
+            world.UpdatedCollisions = new BulletXNA.CollisionDesc[0];
             m_collisionsThisFrame = 0;
             int numManifolds = world.GetDispatcher().GetNumManifolds();
             for (int j = 0; j < numManifolds; j++)
@@ -1501,10 +1501,10 @@ static class BulletSimAPI {
         else
         {
             //if (updatedEntities is null)
-            updatedEntities = new List<BulletXNA.EntityProperties>();
+            updatedEntities = new BulletXNA.EntityProperties[0];
             updatedEntityCount = 0;
             //if (colliders is null)
-            colliders = new List<BulletXNA.CollisionDesc>();
+            colliders = new BulletXNA.CollisionDesc[0];
             collidersCount = 0;
         }
         return numSimSteps;
@@ -1538,7 +1538,8 @@ static class BulletSimAPI {
                                                 point = contact,
                                                 normal = contactNormal
                                             };
-        world.UpdatedCollisions.Add(cDesc);
+        if (world.LastCollisionDesc < world.UpdatedCollisions.Length)
+            world.UpdatedCollisions[world.LastCollisionDesc++] = (cDesc);
         m_collisionsThisFrame++;
 
 

From 6a75949323dedce1e141190cc90175f04afdad0a Mon Sep 17 00:00:00 2001
From: teravus <teravus@gmail.com>
Date: Sun, 20 Jan 2013 08:07:49 -0500
Subject: [PATCH 18/36] * Dumping BulletSimNPlugin in favor of combining the
 API

---
 .../Physics/BulletSNPlugin/BSCharacter.cs     |  814 ---------
 .../Physics/BulletSNPlugin/BSConstraint.cs    |  135 --
 .../BulletSNPlugin/BSConstraint6Dof.cs        |  153 --
 .../BulletSNPlugin/BSConstraintCollection.cs  |  180 --
 .../BulletSNPlugin/BSConstraintHinge.cs       |   57 -
 .../Physics/BulletSNPlugin/BSDynamics.cs      | 1377 --------------
 .../Physics/BulletSNPlugin/BSLinkset.cs       |  329 ----
 .../BulletSNPlugin/BSLinksetCompound.cs       |  397 ----
 .../BulletSNPlugin/BSLinksetConstraints.cs    |  316 ----
 .../Physics/BulletSNPlugin/BSMaterials.cs     |  200 --
 .../Region/Physics/BulletSNPlugin/BSMotors.cs |  347 ----
 .../Region/Physics/BulletSNPlugin/BSParam.cs  |  559 ------
 .../Physics/BulletSNPlugin/BSPhysObject.cs    |  346 ----
 .../Region/Physics/BulletSNPlugin/BSPlugin.cs |   81 -
 .../Region/Physics/BulletSNPlugin/BSPrim.cs   | 1494 ---------------
 .../Region/Physics/BulletSNPlugin/BSScene.cs  |  957 ----------
 .../BulletSNPlugin/BSShapeCollection.cs       | 1015 -----------
 .../Region/Physics/BulletSNPlugin/BSShapes.cs |  208 ---
 .../BulletSNPlugin/BSTerrainHeightmap.cs      |  175 --
 .../BulletSNPlugin/BSTerrainManager.cs        |  461 -----
 .../Physics/BulletSNPlugin/BSTerrainMesh.cs   |  267 ---
 .../Physics/BulletSNPlugin/BulletSimAPI.cs    | 1604 -----------------
 .../Physics/BulletSNPlugin/BulletSimData.cs   |  280 ---
 23 files changed, 11752 deletions(-)
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSCharacter.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSConstraint.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSConstraint6Dof.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSConstraintCollection.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSConstraintHinge.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSDynamics.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSLinkset.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSLinksetCompound.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSLinksetConstraints.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSMaterials.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSMotors.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSParam.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSPhysObject.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSPlugin.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSPrim.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSShapeCollection.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSShapes.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSTerrainHeightmap.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSTerrainManager.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BSTerrainMesh.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs
 delete mode 100644 OpenSim/Region/Physics/BulletSNPlugin/BulletSimData.cs

diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSCharacter.cs
deleted file mode 100644
index d91c47f1a3..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSCharacter.cs
+++ /dev/null
@@ -1,814 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using log4net;
-using OMV = OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Physics.Manager;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public sealed class BSCharacter : BSPhysObject
-{
-    private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-    private static readonly string LogHeader = "[BULLETS CHAR]";
-
-    // private bool _stopped;
-    private OMV.Vector3 _size;
-    private bool _grabbed;
-    private bool _selected;
-    private OMV.Vector3 _position;
-    private float _mass;
-    private float _avatarDensity;
-    private float _avatarVolume;
-    private OMV.Vector3 _force;
-    private OMV.Vector3 _velocity;
-    private OMV.Vector3 _torque;
-    private float _collisionScore;
-    private OMV.Vector3 _acceleration;
-    private OMV.Quaternion _orientation;
-    private int _physicsActorType;
-    private bool _isPhysical;
-    private bool _flying;
-    private bool _setAlwaysRun;
-    private bool _throttleUpdates;
-    private bool _isColliding;
-    private bool _collidingObj;
-    private bool _floatOnWater;
-    private OMV.Vector3 _rotationalVelocity;
-    private bool _kinematic;
-    private float _buoyancy;
-
-    // The friction and velocity of the avatar is modified depending on whether walking or not.
-    private OMV.Vector3 _appliedVelocity;   // the last velocity applied to the avatar
-    private float _currentFriction;         // the friction currently being used (changed by setVelocity).
-
-    private BSVMotor _velocityMotor;
-
-    private OMV.Vector3 _PIDTarget;
-    private bool _usePID;
-    private float _PIDTau;
-    private bool _useHoverPID;
-    private float _PIDHoverHeight;
-    private PIDHoverType _PIDHoverType;
-    private float _PIDHoverTao;
-
-    public BSCharacter(uint localID, String avName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size, bool isFlying)
-            : base(parent_scene, localID, avName, "BSCharacter")
-    {
-        _physicsActorType = (int)ActorTypes.Agent;
-        _position = pos;
-
-        // Old versions of ScenePresence passed only the height. If width and/or depth are zero,
-        //     replace with the default values.
-        _size = size;
-        if (_size.X == 0f) _size.X = BSParam.AvatarCapsuleDepth;
-        if (_size.Y == 0f) _size.Y = BSParam.AvatarCapsuleWidth;
-
-        // A motor to control the acceleration and deceleration of the avatar movement.
-        // _velocityMotor = new BSVMotor("BSCharacter.Velocity", 3f, 5f, BSMotor.InfiniteVector, 1f);
-        // _velocityMotor = new BSPIDVMotor("BSCharacter.Velocity", 3f, 5f, BSMotor.InfiniteVector, 1f);
-        // Infinite decay and timescale values so motor only changes current to target values.
-        _velocityMotor = new BSVMotor("BSCharacter.Velocity", 
-                                            0.2f,                       // time scale
-                                            BSMotor.Infinite,           // decay time scale
-                                            BSMotor.InfiniteVector,     // friction timescale
-                                            1f                          // efficiency
-        );
-        _velocityMotor.PhysicsScene = PhysicsScene; // DEBUG DEBUG so motor will output detail log messages.
-
-        _flying = isFlying;
-        _orientation = OMV.Quaternion.Identity;
-        _velocity = OMV.Vector3.Zero;
-        _appliedVelocity = OMV.Vector3.Zero;
-        _buoyancy = ComputeBuoyancyFromFlying(isFlying);
-        _currentFriction = BSParam.AvatarStandingFriction;
-        _avatarDensity = BSParam.AvatarDensity;
-
-        // The dimensions of the avatar capsule are kept in the scale.
-        // Physics creates a unit capsule which is scaled by the physics engine.
-        ComputeAvatarScale(_size);
-        // set _avatarVolume and _mass based on capsule size, _density and Scale
-        ComputeAvatarVolumeAndMass();
-        DetailLog("{0},BSCharacter.create,call,size={1},scale={2},density={3},volume={4},mass={5}",
-                            LocalID, _size, Scale, _avatarDensity, _avatarVolume, RawMass);
-
-        // do actual creation in taint time
-        PhysicsScene.TaintedObject("BSCharacter.create", delegate()
-        {
-            DetailLog("{0},BSCharacter.create,taint", LocalID);
-            // New body and shape into PhysBody and PhysShape
-            PhysicsScene.Shapes.GetBodyAndShape(true, PhysicsScene.World, this);
-
-            SetPhysicalProperties();
-        });
-        return;
-    }
-
-    // called when this character is being destroyed and the resources should be released
-    public override void Destroy()
-    {
-        base.Destroy();
-
-        DetailLog("{0},BSCharacter.Destroy", LocalID);
-        PhysicsScene.TaintedObject("BSCharacter.destroy", delegate()
-        {
-            PhysicsScene.Shapes.DereferenceBody(PhysBody, true, null);
-            PhysBody.Clear();
-            PhysicsScene.Shapes.DereferenceShape(PhysShape, true, null);
-            PhysShape.Clear();
-        });
-    }
-
-    private void SetPhysicalProperties()
-    {
-        BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, PhysBody.ptr);
-
-        ZeroMotion(true);
-        ForcePosition = _position;
-        // Set the velocity and compute the proper friction
-        ForceVelocity = _velocity;
-        // Setting the current and target in the motor will cause it to start computing any deceleration.
-        _velocityMotor.Reset();
-        _velocityMotor.SetCurrent(_velocity);
-        _velocityMotor.SetTarget(_velocity);
-        _velocityMotor.Enabled = false;
-
-        // This will enable or disable the flying buoyancy of the avatar.
-        // Needs to be reset especially when an avatar is recreated after crossing a region boundry.
-        Flying = _flying;
-
-        BulletSimAPI.SetRestitution2(PhysBody.ptr, BSParam.AvatarRestitution);
-        BulletSimAPI.SetMargin2(PhysShape.ptr, PhysicsScene.Params.collisionMargin);
-        BulletSimAPI.SetLocalScaling2(PhysShape.ptr, Scale);
-        BulletSimAPI.SetContactProcessingThreshold2(PhysBody.ptr, BSParam.ContactProcessingThreshold);
-        if (BSParam.CcdMotionThreshold > 0f)
-        {
-            BulletSimAPI.SetCcdMotionThreshold2(PhysBody.ptr, BSParam.CcdMotionThreshold);
-            BulletSimAPI.SetCcdSweptSphereRadius2(PhysBody.ptr, BSParam.CcdSweptSphereRadius);
-        }
-
-        UpdatePhysicalMassProperties(RawMass, false);
-
-        // Make so capsule does not fall over
-        BulletSimAPI.SetAngularFactorV2(PhysBody.ptr, OMV.Vector3.Zero);
-
-        BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_CHARACTER_OBJECT);
-
-        BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, PhysBody.ptr, _position, _orientation);
-
-        // BulletSimAPI.ForceActivationState2(BSBody.ptr, ActivationState.ACTIVE_TAG);
-        BulletSimAPI.ForceActivationState2(PhysBody.ptr, ActivationState.DISABLE_DEACTIVATION);
-        BulletSimAPI.UpdateSingleAabb2(PhysicsScene.World.ptr, PhysBody.ptr);
-
-        // Do this after the object has been added to the world
-        PhysBody.collisionType = CollisionType.Avatar;
-        PhysBody.ApplyCollisionMask();
-    }
-
-    public override void RequestPhysicsterseUpdate()
-    {
-        base.RequestPhysicsterseUpdate();
-    }
-    // No one calls this method so I don't know what it could possibly mean
-    public override bool Stopped { get { return false; } }
-
-    public override OMV.Vector3 Size {
-        get
-        {
-            // Avatar capsule size is kept in the scale parameter.
-            return _size;
-        }
-
-        set {
-            // When an avatar's size is set, only the height is changed.
-            _size = value;
-            // Old versions of ScenePresence passed only the height. If width and/or depth are zero,
-            //     replace with the default values.
-            if (_size.X == 0f) _size.X = BSParam.AvatarCapsuleDepth;
-            if (_size.Y == 0f) _size.Y = BSParam.AvatarCapsuleWidth;
-
-            ComputeAvatarScale(_size);
-            ComputeAvatarVolumeAndMass();
-            DetailLog("{0},BSCharacter.setSize,call,size={1},scale={2},density={3},volume={4},mass={5}",
-                            LocalID, _size, Scale, _avatarDensity, _avatarVolume, RawMass);
-
-            PhysicsScene.TaintedObject("BSCharacter.setSize", delegate()
-            {
-                if (PhysBody.HasPhysicalBody && PhysShape.HasPhysicalShape)
-                {
-                    BulletSimAPI.SetLocalScaling2(PhysShape.ptr, Scale);
-                    UpdatePhysicalMassProperties(RawMass, true);
-                    // Make sure this change appears as a property update event
-                    BulletSimAPI.PushUpdate2(PhysBody.ptr);
-                }
-            });
-
-        }
-    }
-
-    public override PrimitiveBaseShape Shape
-    {
-        set { BaseShape = value; }
-    }
-    // I want the physics engine to make an avatar capsule
-    public override BSPhysicsShapeType PreferredPhysicalShape
-    {
-        get {return BSPhysicsShapeType.SHAPE_CAPSULE; }
-    }
-
-    public override bool Grabbed {
-        set { _grabbed = value; }
-    }
-    public override bool Selected {
-        set { _selected = value; }
-    }
-    public override void CrossingFailure() { return; }
-    public override void link(PhysicsActor obj) { return; }
-    public override void delink() { return; }
-
-    // Set motion values to zero.
-    // Do it to the properties so the values get set in the physics engine.
-    // Push the setting of the values to the viewer.
-    // Called at taint time!
-    public override void ZeroMotion(bool inTaintTime)
-    {
-        _velocity = OMV.Vector3.Zero;
-        _acceleration = OMV.Vector3.Zero;
-        _rotationalVelocity = OMV.Vector3.Zero;
-
-        // Zero some other properties directly into the physics engine
-        PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.ZeroMotion", delegate()
-        {
-            if (PhysBody.HasPhysicalBody)
-                BulletSimAPI.ClearAllForces2(PhysBody.ptr);
-        });
-    }
-    public override void ZeroAngularMotion(bool inTaintTime)
-    {
-        _rotationalVelocity = OMV.Vector3.Zero;
-
-        PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.ZeroMotion", delegate()
-        {
-            if (PhysBody.HasPhysicalBody)
-            {
-                BulletSimAPI.SetInterpolationAngularVelocity2(PhysBody.ptr, OMV.Vector3.Zero);
-                BulletSimAPI.SetAngularVelocity2(PhysBody.ptr, OMV.Vector3.Zero);
-                // The next also get rid of applied linear force but the linear velocity is untouched.
-                BulletSimAPI.ClearForces2(PhysBody.ptr);
-            }
-        });
-    }
-
-
-    public override void LockAngularMotion(OMV.Vector3 axis) { return; }
-
-    public override OMV.Vector3 RawPosition
-    {
-        get { return _position; }
-        set { _position = value; }
-    }
-    public override OMV.Vector3 Position {
-        get {
-            // Don't refetch the position because this function is called a zillion times
-            // _position = BulletSimAPI.GetObjectPosition2(Scene.World.ptr, LocalID);
-            return _position;
-        }
-        set {
-            _position = value;
-            PositionSanityCheck();
-
-            PhysicsScene.TaintedObject("BSCharacter.setPosition", delegate()
-            {
-                DetailLog("{0},BSCharacter.SetPosition,taint,pos={1},orient={2}", LocalID, _position, _orientation);
-                if (PhysBody.HasPhysicalBody)
-                    BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-            });
-        }
-    }
-    public override OMV.Vector3 ForcePosition {
-        get {
-            _position = BulletSimAPI.GetPosition2(PhysBody.ptr);
-            return _position;
-        }
-        set {
-            _position = value;
-            PositionSanityCheck();
-            BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-        }
-    }
-
-
-    // Check that the current position is sane and, if not, modify the position to make it so.
-    // Check for being below terrain or on water.
-    // Returns 'true' of the position was made sane by some action.
-    private bool PositionSanityCheck()
-    {
-        bool ret = false;
-
-        // TODO: check for out of bounds
-        if (!PhysicsScene.TerrainManager.IsWithinKnownTerrain(_position))
-        {
-            // The character is out of the known/simulated area.
-            // Upper levels of code will handle the transition to other areas so, for
-            //     the time, we just ignore the position.
-            return ret;
-        }
-
-        // If below the ground, move the avatar up
-        float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(_position);
-        if (Position.Z < terrainHeight)
-        {
-            DetailLog("{0},BSCharacter.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, _position, terrainHeight);
-            _position.Z = terrainHeight + 2.0f;
-            ret = true;
-        }
-        if ((CurrentCollisionFlags & CollisionFlags.BS_FLOATS_ON_WATER) != 0)
-        {
-            float waterHeight = PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(_position);
-            if (Position.Z < waterHeight)
-            {
-                _position.Z = waterHeight;
-                ret = true;
-            }
-        }
-
-        return ret;
-    }
-
-    // A version of the sanity check that also makes sure a new position value is
-    //    pushed back to the physics engine. This routine would be used by anyone
-    //    who is not already pushing the value.
-    private bool PositionSanityCheck(bool inTaintTime)
-    {
-        bool ret = false;
-        if (PositionSanityCheck())
-        {
-            // The new position value must be pushed into the physics engine but we can't
-            //    just assign to "Position" because of potential call loops.
-            PhysicsScene.TaintedObject(inTaintTime, "BSCharacter.PositionSanityCheck", delegate()
-            {
-                DetailLog("{0},BSCharacter.PositionSanityCheck,taint,pos={1},orient={2}", LocalID, _position, _orientation);
-                if (PhysBody.HasPhysicalBody)
-                    BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-            });
-            ret = true;
-        }
-        return ret;
-    }
-
-    public override float Mass { get { return _mass; } }
-
-    // used when we only want this prim's mass and not the linkset thing
-    public override float RawMass { 
-        get {return _mass; }
-    }
-    public override void UpdatePhysicalMassProperties(float physMass, bool inWorld)
-    {
-        OMV.Vector3 localInertia = BulletSimAPI.CalculateLocalInertia2(PhysShape.ptr, physMass);
-        BulletSimAPI.SetMassProps2(PhysBody.ptr, physMass, localInertia);
-    }
-
-    public override OMV.Vector3 Force {
-        get { return _force; }
-        set {
-            _force = value;
-            // m_log.DebugFormat("{0}: Force = {1}", LogHeader, _force);
-            PhysicsScene.TaintedObject("BSCharacter.SetForce", delegate()
-            {
-                DetailLog("{0},BSCharacter.setForce,taint,force={1}", LocalID, _force);
-                if (PhysBody.HasPhysicalBody)
-                    BulletSimAPI.SetObjectForce2(PhysBody.ptr, _force);
-            });
-        }
-    }
-
-    public bool TouchingGround()
-    {
-        bool ret = BulletSimAPI.RayCastGround(PhysicsScene.World.ptr,_position,_size.Z * 0.55f, PhysBody.ptr);
-        return ret;
-    }
-    // Avatars don't do vehicles
-    public override int VehicleType { get { return (int)Vehicle.TYPE_NONE; } set { return; } }
-    public override void VehicleFloatParam(int param, float value) { }
-    public override void VehicleVectorParam(int param, OMV.Vector3 value) {}
-    public override void VehicleRotationParam(int param, OMV.Quaternion rotation) { }
-    public override void VehicleFlags(int param, bool remove) { }
-
-    // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more
-    public override void SetVolumeDetect(int param) { return; }
-
-    public override OMV.Vector3 GeometricCenter { get { return OMV.Vector3.Zero; } }
-    public override OMV.Vector3 CenterOfMass { get { return OMV.Vector3.Zero; } }
-
-    // Sets the target in the motor. This starts the changing of the avatar's velocity.
-    public override OMV.Vector3 TargetVelocity
-    {
-        get
-        {
-            return _velocityMotor.TargetValue;
-        }
-        set
-        {
-            DetailLog("{0},BSCharacter.setTargetVelocity,call,vel={1}", LocalID, value);
-
-            if (!_flying)
-                if ((value.Z >= 0.0001f) || (value.Z <= -0.0001f) || _velocity.Z < -0.0001f)
-                    if (!TouchingGround())
-                        value.Z = _velocity.Z;
-            if (_setAlwaysRun)
-                value *= 1.3f;
-
-            OMV.Vector3 targetVel = value;
-
-            PhysicsScene.TaintedObject("BSCharacter.setTargetVelocity", delegate()
-            {
-                                                                                
-                _velocityMotor.Reset();
-                _velocityMotor.SetTarget(targetVel);
-                _velocityMotor.SetCurrent(_velocity);
-                _velocityMotor.Enabled = true;
-
-                // Make sure a property update happens next step so the motor gets incorporated.
-                BulletSimAPI.PushUpdate2(PhysBody.ptr);
-            });
-        }
-    }
-    // Directly setting velocity means this is what the user really wants now.
-    public override OMV.Vector3 Velocity {
-        get { return _velocity; }
-        set {
-            _velocity = value;
-            // m_log.DebugFormat("{0}: set velocity = {1}", LogHeader, _velocity);
-            PhysicsScene.TaintedObject("BSCharacter.setVelocity", delegate()
-            {
-                _velocityMotor.Reset();
-                _velocityMotor.SetCurrent(_velocity);
-                _velocityMotor.SetTarget(_velocity);
-                // Even though the motor is initialized, it's not used and the velocity goes straight into the avatar.
-                _velocityMotor.Enabled = false;
-
-                DetailLog("{0},BSCharacter.setVelocity,taint,vel={1}", LocalID, _velocity);
-                ForceVelocity = _velocity;
-            });
-        }
-    }
-    public override OMV.Vector3 ForceVelocity {
-        get { return _velocity; }
-        set {
-            PhysicsScene.AssertInTaintTime("BSCharacter.ForceVelocity");
-
-            _velocity = value;
-            // Depending on whether the avatar is moving or not, change the friction
-            //    to keep the avatar from slipping around
-            if (_velocity.Length() == 0)
-            {
-                if (_currentFriction != BSParam.AvatarStandingFriction)
-                {
-                    _currentFriction = BSParam.AvatarStandingFriction;
-                    if (PhysBody.HasPhysicalBody)
-                        BulletSimAPI.SetFriction2(PhysBody.ptr, _currentFriction);
-                }
-            }
-            else
-            {
-                if (_currentFriction != BSParam.AvatarFriction)
-                {
-                    _currentFriction = BSParam.AvatarFriction;
-                    if (PhysBody.HasPhysicalBody)
-                        BulletSimAPI.SetFriction2(PhysBody.ptr, _currentFriction);
-                }
-            }
-            // Remember the set velocity so we can suppress the reduction by friction, ...
-            _appliedVelocity = value;
-
-            BulletSimAPI.SetLinearVelocity2(PhysBody.ptr, _velocity);
-            BulletSimAPI.Activate2(PhysBody.ptr, true);
-        }
-    }
-    public override OMV.Vector3 Torque {
-        get { return _torque; }
-        set { _torque = value;
-        }
-    }
-    public override float CollisionScore {
-        get { return _collisionScore; }
-        set { _collisionScore = value;
-        }
-    }
-    public override OMV.Vector3 Acceleration {
-        get { return _acceleration; }
-        set { _acceleration = value; }
-    }
-    public override OMV.Quaternion RawOrientation
-    {
-        get { return _orientation; }
-        set { _orientation = value; }
-    }
-    public override OMV.Quaternion Orientation {
-        get { return _orientation; }
-        set {
-            _orientation = value;
-            // m_log.DebugFormat("{0}: set orientation to {1}", LogHeader, _orientation);
-            PhysicsScene.TaintedObject("BSCharacter.setOrientation", delegate()
-            {
-                if (PhysBody.HasPhysicalBody)
-                {
-                    // _position = BulletSimAPI.GetPosition2(BSBody.ptr);
-                    BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-                }
-            });
-        }
-    }
-    // Go directly to Bullet to get/set the value.
-    public override OMV.Quaternion ForceOrientation
-    {
-        get
-        {
-            _orientation = BulletSimAPI.GetOrientation2(PhysBody.ptr);
-            return _orientation;
-        }
-        set
-        {
-            _orientation = value;
-            BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-        }
-    }
-    public override int PhysicsActorType {
-        get { return _physicsActorType; }
-        set { _physicsActorType = value;
-        }
-    }
-    public override bool IsPhysical {
-        get { return _isPhysical; }
-        set { _isPhysical = value;
-        }
-    }
-    public override bool IsSolid {
-        get { return true; }
-    }
-    public override bool IsStatic {
-        get { return false; }
-    }
-    public override bool Flying {
-        get { return _flying; }
-        set {
-            _flying = value;
-
-            // simulate flying by changing the effect of gravity
-            Buoyancy = ComputeBuoyancyFromFlying(_flying);
-        }
-    }
-    // Flying is implimented by changing the avatar's buoyancy.
-    // Would this be done better with a vehicle type?
-    private float ComputeBuoyancyFromFlying(bool ifFlying) {
-        return ifFlying ? 1f : 0f;
-    }
-    public override bool
-        SetAlwaysRun {
-        get { return _setAlwaysRun; }
-        set { _setAlwaysRun = value; }
-    }
-    public override bool ThrottleUpdates {
-        get { return _throttleUpdates; }
-        set { _throttleUpdates = value; }
-    }
-    public override bool IsColliding {
-        get { return (CollidingStep == PhysicsScene.SimulationStep); }
-        set { _isColliding = value; }
-    }
-    public override bool CollidingGround {
-        get { return (CollidingGroundStep == PhysicsScene.SimulationStep); }
-        set { CollidingGround = value; }
-    }
-    public override bool CollidingObj {
-        get { return _collidingObj; }
-        set { _collidingObj = value; }
-    }
-    public override bool FloatOnWater {
-        set {
-            _floatOnWater = value;
-            PhysicsScene.TaintedObject("BSCharacter.setFloatOnWater", delegate()
-            {
-                if (PhysBody.HasPhysicalBody)
-                {
-                    if (_floatOnWater)
-                        CurrentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_FLOATS_ON_WATER);
-                    else
-                        CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_FLOATS_ON_WATER);
-                }
-            });
-        }
-    }
-    public override OMV.Vector3 RotationalVelocity {
-        get { return _rotationalVelocity; }
-        set { _rotationalVelocity = value; }
-    }
-    public override OMV.Vector3 ForceRotationalVelocity {
-        get { return _rotationalVelocity; }
-        set { _rotationalVelocity = value; }
-    }
-    public override bool Kinematic {
-        get { return _kinematic; }
-        set { _kinematic = value; }
-    }
-    // neg=fall quickly, 0=1g, 1=0g, pos=float up
-    public override float Buoyancy {
-        get { return _buoyancy; }
-        set { _buoyancy = value;
-            PhysicsScene.TaintedObject("BSCharacter.setBuoyancy", delegate()
-            {
-                DetailLog("{0},BSCharacter.setBuoyancy,taint,buoy={1}", LocalID, _buoyancy);
-                ForceBuoyancy = _buoyancy;
-            });
-        }
-    }
-    public override float ForceBuoyancy {
-        get { return _buoyancy; }
-        set { 
-            PhysicsScene.AssertInTaintTime("BSCharacter.ForceBuoyancy");
-
-            _buoyancy = value;
-            DetailLog("{0},BSCharacter.setForceBuoyancy,taint,buoy={1}", LocalID, _buoyancy);
-            // Buoyancy is faked by changing the gravity applied to the object
-            float grav = PhysicsScene.Params.gravity * (1f - _buoyancy);
-            if (PhysBody.HasPhysicalBody)
-                BulletSimAPI.SetGravity2(PhysBody.ptr, new OMV.Vector3(0f, 0f, grav));
-        }
-    }
-
-    // Used for MoveTo
-    public override OMV.Vector3 PIDTarget {
-        set { _PIDTarget = value; }
-    }
-    public override bool PIDActive {
-        set { _usePID = value; }
-    }
-    public override float PIDTau {
-        set { _PIDTau = value; }
-    }
-
-    // Used for llSetHoverHeight and maybe vehicle height
-    // Hover Height will override MoveTo target's Z
-    public override bool PIDHoverActive {
-        set { _useHoverPID = value; }
-    }
-    public override float PIDHoverHeight {
-        set { _PIDHoverHeight = value; }
-    }
-    public override PIDHoverType PIDHoverType {
-        set { _PIDHoverType = value; }
-    }
-    public override float PIDHoverTau {
-        set { _PIDHoverTao = value; }
-    }
-
-    // For RotLookAt
-    public override OMV.Quaternion APIDTarget { set { return; } }
-    public override bool APIDActive { set { return; } }
-    public override float APIDStrength { set { return; } }
-    public override float APIDDamping { set { return; } }
-
-    public override void AddForce(OMV.Vector3 force, bool pushforce) {
-        if (force.IsFinite())
-        {
-            _force.X += force.X;
-            _force.Y += force.Y;
-            _force.Z += force.Z;
-            // m_log.DebugFormat("{0}: AddForce. adding={1}, newForce={2}", LogHeader, force, _force);
-            PhysicsScene.TaintedObject("BSCharacter.AddForce", delegate()
-            {
-                DetailLog("{0},BSCharacter.setAddForce,taint,addedForce={1}", LocalID, _force);
-                if (PhysBody.HasPhysicalBody)
-                    BulletSimAPI.SetObjectForce2(PhysBody.ptr, _force);
-            });
-        }
-        else
-        {
-            m_log.ErrorFormat("{0}: Got a NaN force applied to a Character", LogHeader);
-        }
-        //m_lastUpdateSent = false;
-    }
-
-    public override void AddAngularForce(OMV.Vector3 force, bool pushforce) {
-    }
-    public override void SetMomentum(OMV.Vector3 momentum) {
-    }
-
-    private void ComputeAvatarScale(OMV.Vector3 size)
-    {
-        OMV.Vector3 newScale = size;
-        // newScale.X = PhysicsScene.Params.avatarCapsuleWidth;
-        // newScale.Y = PhysicsScene.Params.avatarCapsuleDepth;
-
-        // From the total height, remove the capsule half spheres that are at each end
-        // The 1.15f came from ODE. Not sure what this factors in.
-        // newScale.Z = (size.Z * 1.15f) - (newScale.X + newScale.Y);
-
-        // The total scale height is the central cylindar plus the caps on the two ends.
-        newScale.Z = size.Z + (Math.Min(size.X, size.Y) * 2f);
-
-        // Convert diameters to radii and height to half height -- the way Bullet expects it.
-        Scale = newScale / 2f;
-    }
-
-    // set _avatarVolume and _mass based on capsule size, _density and Scale
-    private void ComputeAvatarVolumeAndMass()
-    {
-        _avatarVolume = (float)(
-                        Math.PI
-                        * Scale.X
-                        * Scale.Y    // the area of capsule cylinder
-                        * Scale.Z    // times height of capsule cylinder
-                      + 1.33333333f
-                        * Math.PI
-                        * Scale.X
-                        * Math.Min(Scale.X, Scale.Y)
-                        * Scale.Y    // plus the volume of the capsule end caps
-                        );
-        _mass = _avatarDensity * _avatarVolume;
-    }
-
-    // The physics engine says that properties have updated. Update same and inform
-    // the world that things have changed.
-    public override void UpdateProperties(EntityProperties entprop)
-    {
-        _position = entprop.Position;
-        _orientation = entprop.Rotation;
-        _velocity = entprop.Velocity;
-        _acceleration = entprop.Acceleration;
-        _rotationalVelocity = entprop.RotationalVelocity;
-
-        // Do some sanity checking for the avatar. Make sure it's above ground and inbounds.
-        PositionSanityCheck(true);
-
-        if (_velocityMotor.Enabled)
-        {
-            // TODO: Decide if the step parameters should be changed depending on the avatar's
-            //     state (flying, colliding, ...).
-
-            OMV.Vector3 stepVelocity = _velocityMotor.Step(PhysicsScene.LastTimeStep);
-
-            // If falling, we keep the world's downward vector no matter what the other axis specify.
-            if (!Flying && !IsColliding)
-            {
-                stepVelocity.Z = entprop.Velocity.Z;
-                DetailLog("{0},BSCharacter.UpdateProperties,taint,overrideStepZWithWorldZ,stepVel={1}", LocalID, stepVelocity);
-            }
-
-            // If the user has said stop and we've stopped applying velocity correction,
-            //     the motor can be turned off. Set the velocity to zero so the zero motion is sent to the viewer.
-            if (_velocityMotor.TargetValue.ApproxEquals(OMV.Vector3.Zero, 0.01f) && _velocityMotor.ErrorIsZero)
-            {
-                ZeroMotion(true);
-                stepVelocity = OMV.Vector3.Zero;
-                _velocityMotor.Enabled = false;
-                DetailLog("{0},BSCharacter.UpdateProperties,taint,disableVelocityMotor,m={1}", LocalID, _velocityMotor);
-            }
-
-            _velocity = stepVelocity;
-            entprop.Velocity = _velocity;
-            BulletSimAPI.SetLinearVelocity2(PhysBody.ptr, _velocity);
-        }
-
-        // remember the current and last set values
-        LastEntityProperties = CurrentEntityProperties;
-        CurrentEntityProperties = entprop;
-
-        // Tell the linkset about value changes
-        Linkset.UpdateProperties(this, true);
-
-        // Avatars don't report their changes the usual way. Changes are checked for in the heartbeat loop.
-        // base.RequestPhysicsterseUpdate();
-
-        DetailLog("{0},BSCharacter.UpdateProperties,call,pos={1},orient={2},vel={3},accel={4},rotVel={5}",
-                LocalID, _position, _orientation, _velocity, _acceleration, _rotationalVelocity);
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraint.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSConstraint.cs
deleted file mode 100644
index f1bed3987b..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraint.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-public abstract class BSConstraint : IDisposable
-{
-    private static string LogHeader = "[BULLETSIM CONSTRAINT]";
-
-    protected BulletWorld m_world;
-    protected BulletBody m_body1;
-    protected BulletBody m_body2;
-    protected BulletConstraint m_constraint;
-    protected bool m_enabled = false;
-
-    public BulletBody Body1 { get { return m_body1; } }
-    public BulletBody Body2 { get { return m_body2; } }
-    public BulletConstraint Constraint { get { return m_constraint; } }
-    public abstract ConstraintType Type { get; }
-    public bool IsEnabled { get { return m_enabled; } }
-
-    public BSConstraint()
-    {
-    }
-
-    public virtual void Dispose()
-    {
-        if (m_enabled)
-        {
-            m_enabled = false;
-            if (m_constraint.HasPhysicalConstraint)
-            {
-                bool success = BulletSimAPI.DestroyConstraint2(m_world.ptr, m_constraint.ptr);
-                m_world.physicsScene.DetailLog("{0},BSConstraint.Dispose,taint,id1={1},body1={2},id2={3},body2={4},success={5}",
-                                    BSScene.DetailLogZero,
-                                    m_body1.ID, m_body1.ptr.ToString(),
-                                    m_body2.ID, m_body2.ptr.ToString(),
-                                    success);
-                m_constraint.Clear();
-            }
-        }
-    }
-
-    public virtual bool SetLinearLimits(Vector3 low, Vector3 high)
-    {
-        bool ret = false;
-        if (m_enabled)
-            ret = BulletSimAPI.SetLinearLimits2(m_constraint.ptr, low, high);
-        return ret;
-    }
-
-    public virtual bool SetAngularLimits(Vector3 low, Vector3 high)
-    {
-        bool ret = false;
-        if (m_enabled)
-            ret = BulletSimAPI.SetAngularLimits2(m_constraint.ptr, low, high);
-        return ret;
-    }
-
-    public virtual bool SetSolverIterations(float cnt)
-    {
-        bool ret = false;
-        if (m_enabled)
-        {
-            BulletSimAPI.SetConstraintNumSolverIterations2(m_constraint.ptr, cnt);
-            ret = true;
-        }
-        return ret;
-    }
-
-    public virtual bool CalculateTransforms()
-    {
-        bool ret = false;
-        if (m_enabled)
-        {
-            // Recompute the internal transforms
-            BulletSimAPI.CalculateTransforms2(m_constraint.ptr);
-            ret = true;
-        }
-        return ret;
-    }
-
-    // Reset this constraint making sure it has all its internal structures
-    //    recomputed and is enabled and ready to go.
-    public virtual bool RecomputeConstraintVariables(float mass)
-    {
-        bool ret = false;
-        if (m_enabled)
-        {
-            ret = CalculateTransforms();
-            if (ret)
-            {
-                // Setting an object's mass to zero (making it static like when it's selected)
-                //     automatically disables the constraints.
-                // If the link is enabled, be sure to set the constraint itself to enabled.
-                BulletSimAPI.SetConstraintEnable2(m_constraint.ptr, BSParam.NumericBool(true));
-            }
-            else
-            {
-                m_world.physicsScene.Logger.ErrorFormat("{0} CalculateTransforms failed. A={1}, B={2}", LogHeader, Body1.ID, Body2.ID);
-            }
-        }
-        return ret;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraint6Dof.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSConstraint6Dof.cs
deleted file mode 100644
index d1e3f550a1..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraint6Dof.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-public sealed class BSConstraint6Dof : BSConstraint
-{
-    private static string LogHeader = "[BULLETSIM 6DOF CONSTRAINT]";
-
-    public override ConstraintType Type { get { return ConstraintType.D6_CONSTRAINT_TYPE; } }
-
-    // Create a btGeneric6DofConstraint
-    public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2,
-                    Vector3 frame1, Quaternion frame1rot,
-                    Vector3 frame2, Quaternion frame2rot,
-                    bool useLinearReferenceFrameA, bool disableCollisionsBetweenLinkedBodies)
-    {
-        m_world = world;
-        m_body1 = obj1;
-        m_body2 = obj2;
-        m_constraint = new BulletConstraint(
-                            BulletSimAPI.Create6DofConstraint2(m_world.ptr, m_body1.ptr, m_body2.ptr,
-                                frame1, frame1rot,
-                                frame2, frame2rot,
-                                useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies));
-        m_enabled = true;
-        world.physicsScene.DetailLog("{0},BS6DofConstraint,createFrame,wID={1}, rID={2}, rBody={3}, cID={4}, cBody={5}",
-                            BSScene.DetailLogZero, world.worldID,
-                            obj1.ID, obj1.ptr.ToString(), obj2.ID, obj2.ptr.ToString());
-    }
-
-    public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2,
-                    Vector3 joinPoint,
-                    bool useLinearReferenceFrameA, bool disableCollisionsBetweenLinkedBodies)
-    {
-        m_world = world;
-        m_body1 = obj1;
-        m_body2 = obj2;
-        if (!obj1.HasPhysicalBody || !obj2.HasPhysicalBody)
-        {
-            world.physicsScene.DetailLog("{0},BS6DOFConstraint,badBodyPtr,wID={1}, rID={2}, rBody={3}, cID={4}, cBody={5}",
-                            BSScene.DetailLogZero, world.worldID,
-                            obj1.ID, obj1.ptr.ToString(), obj2.ID, obj2.ptr.ToString());
-            world.physicsScene.Logger.ErrorFormat("{0} Attempt to build 6DOF constraint with missing bodies: wID={1}, rID={2}, rBody={3}, cID={4}, cBody={5}",
-                            LogHeader, world.worldID, obj1.ID, obj1.ptr.ToString(), obj2.ID, obj2.ptr.ToString());
-            m_enabled = false;
-        }
-        else
-        {
-            m_constraint = new BulletConstraint(
-                                BulletSimAPI.Create6DofConstraintToPoint2(m_world.ptr, m_body1.ptr, m_body2.ptr,
-                                    joinPoint,
-                                    useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies));
-            world.physicsScene.DetailLog("{0},BS6DofConstraint,createMidPoint,wID={1}, csrt={2}, rID={3}, rBody={4}, cID={5}, cBody={6}",
-                                BSScene.DetailLogZero, world.worldID, m_constraint.ptr.ToString(),
-                                obj1.ID, obj1.ptr.ToString(), obj2.ID, obj2.ptr.ToString());
-            if (!m_constraint.HasPhysicalConstraint)
-            {
-                world.physicsScene.Logger.ErrorFormat("{0} Failed creation of 6Dof constraint. rootID={1}, childID={2}",
-                                LogHeader, obj1.ID, obj2.ID);
-                m_enabled = false;
-            }
-            else
-            {
-                m_enabled = true;
-            }
-        }
-    }
-
-    public bool SetFrames(Vector3 frameA, Quaternion frameArot, Vector3 frameB, Quaternion frameBrot)
-    {
-        bool ret = false;
-        if (m_enabled)
-        {
-            BulletSimAPI.SetFrames2(m_constraint.ptr, frameA, frameArot, frameB, frameBrot);
-            ret = true;
-        }
-        return ret;
-    }
-
-    public bool SetCFMAndERP(float cfm, float erp)
-    {
-        bool ret = false;
-        if (m_enabled)
-        {
-            BulletSimAPI.SetConstraintParam2(m_constraint.ptr, ConstraintParams.BT_CONSTRAINT_STOP_CFM, cfm, ConstraintParamAxis.AXIS_ALL);
-            BulletSimAPI.SetConstraintParam2(m_constraint.ptr, ConstraintParams.BT_CONSTRAINT_STOP_ERP, erp, ConstraintParamAxis.AXIS_ALL);
-            BulletSimAPI.SetConstraintParam2(m_constraint.ptr, ConstraintParams.BT_CONSTRAINT_CFM, cfm, ConstraintParamAxis.AXIS_ALL);
-            ret = true;
-        }
-        return ret;
-    }
-
-    public bool UseFrameOffset(bool useOffset)
-    {
-        bool ret = false;
-        float onOff = useOffset ? ConfigurationParameters.numericTrue : ConfigurationParameters.numericFalse;
-        if (m_enabled)
-            ret = BulletSimAPI.UseFrameOffset2(m_constraint.ptr, onOff);
-        return ret;
-    }
-
-    public bool TranslationalLimitMotor(bool enable, float targetVelocity, float maxMotorForce)
-    {
-        bool ret = false;
-        float onOff = enable ? ConfigurationParameters.numericTrue : ConfigurationParameters.numericFalse;
-        if (m_enabled)
-        {
-            ret = BulletSimAPI.TranslationalLimitMotor2(m_constraint.ptr, onOff, targetVelocity, maxMotorForce);
-            m_world.physicsScene.DetailLog("{0},BS6DOFConstraint,TransLimitMotor,enable={1},vel={2},maxForce={3}",
-                            BSScene.DetailLogZero, enable, targetVelocity, maxMotorForce);
-        }
-        return ret;
-    }
-
-    public bool SetBreakingImpulseThreshold(float threshold)
-    {
-        bool ret = false;
-        if (m_enabled)
-            ret = BulletSimAPI.SetBreakingImpulseThreshold2(m_constraint.ptr, threshold);
-        return ret;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraintCollection.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSConstraintCollection.cs
deleted file mode 100644
index 87d1e44d30..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraintCollection.cs
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using log4net;
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-public sealed class BSConstraintCollection : IDisposable
-{
-    // private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
-    // private static readonly string LogHeader = "[CONSTRAINT COLLECTION]";
-
-    delegate bool ConstraintAction(BSConstraint constrain);
-
-    private List<BSConstraint> m_constraints;
-    private BulletWorld m_world;
-
-    public BSConstraintCollection(BulletWorld world)
-    {
-        m_world = world;
-        m_constraints = new List<BSConstraint>();
-    }
-
-    public void Dispose()
-    {
-        this.Clear();
-    }
-
-    public void Clear()
-    {
-        lock (m_constraints)
-        {
-            foreach (BSConstraint cons in m_constraints)
-            {
-                cons.Dispose();
-            }
-            m_constraints.Clear();
-        }
-    }
-
-    public bool AddConstraint(BSConstraint cons)
-    {
-        lock (m_constraints)
-        {
-            // There is only one constraint between any bodies. Remove any old just to make sure.
-            RemoveAndDestroyConstraint(cons.Body1, cons.Body2);
-
-            m_constraints.Add(cons);
-        }
-
-        return true;
-    }
-
-    // Get the constraint between two bodies. There can be only one.
-    // Return 'true' if a constraint was found.
-    public bool TryGetConstraint(BulletBody body1, BulletBody body2, out BSConstraint returnConstraint)
-    {
-        bool found = false;
-        BSConstraint foundConstraint = null;
-
-        uint lookingID1 = body1.ID;
-        uint lookingID2 = body2.ID;
-        lock (m_constraints)
-        {
-            foreach (BSConstraint constrain in m_constraints)
-            {
-                if ((constrain.Body1.ID == lookingID1 && constrain.Body2.ID == lookingID2)
-                    || (constrain.Body1.ID == lookingID2 && constrain.Body2.ID == lookingID1))
-                {
-                    foundConstraint = constrain;
-                    found = true;
-                    break;
-                }
-            }
-        }
-        returnConstraint = foundConstraint;
-        return found;
-    }
-
-    // Remove any constraint between the passed bodies.
-    // Presumed there is only one such constraint possible.
-    // Return 'true' if a constraint was found and destroyed.
-    public bool RemoveAndDestroyConstraint(BulletBody body1, BulletBody body2)
-    {
-        bool ret = false;
-        lock (m_constraints)
-        {
-            BSConstraint constrain;
-            if (this.TryGetConstraint(body1, body2, out constrain))
-            {
-                // remove the constraint from our collection
-                RemoveAndDestroyConstraint(constrain);
-                ret = true;
-            }
-        }
-
-        return ret;
-    }
-
-    // The constraint MUST exist in the collection
-    public bool RemoveAndDestroyConstraint(BSConstraint constrain)
-    {
-        lock (m_constraints)
-        {
-            // remove the constraint from our collection
-            m_constraints.Remove(constrain);
-        }
-        // tell the engine that all its structures need to be freed
-        constrain.Dispose();
-        // we destroyed something
-        return true;
-    }
-
-    // Remove all constraints that reference the passed body.
-    // Return 'true' if any constraints were destroyed.
-    public bool RemoveAndDestroyConstraint(BulletBody body1)
-    {
-        List<BSConstraint> toRemove = new List<BSConstraint>();
-        uint lookingID = body1.ID;
-        lock (m_constraints)
-        {
-            foreach (BSConstraint constrain in m_constraints)
-            {
-                if (constrain.Body1.ID == lookingID || constrain.Body2.ID == lookingID)
-                {
-                    toRemove.Add(constrain);
-                }
-            }
-            foreach (BSConstraint constrain in toRemove)
-            {
-                m_constraints.Remove(constrain);
-                constrain.Dispose();
-            }
-        }
-        return (toRemove.Count > 0);
-    }
-
-    public bool RecalculateAllConstraints()
-    {
-        bool ret = false;
-        lock (m_constraints)
-        {
-            foreach (BSConstraint constrain in m_constraints)
-            {
-                constrain.CalculateTransforms();
-                ret = true;
-            }
-        }
-        return ret;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraintHinge.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSConstraintHinge.cs
deleted file mode 100644
index fbd1bc0c21..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSConstraintHinge.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-public sealed class BSConstraintHinge : BSConstraint
-{
-    public override ConstraintType Type { get { return ConstraintType.HINGE_CONSTRAINT_TYPE; } }
-
-    public BSConstraintHinge(BulletWorld world, BulletBody obj1, BulletBody obj2,
-                    Vector3 pivotInA, Vector3 pivotInB,
-                    Vector3 axisInA, Vector3 axisInB,
-                    bool useLinearReferenceFrameA, bool disableCollisionsBetweenLinkedBodies)
-    {
-        m_world = world;
-        m_body1 = obj1;
-        m_body2 = obj2;
-        m_constraint = new BulletConstraint(
-                            BulletSimAPI.CreateHingeConstraint2(m_world.ptr, m_body1.ptr, m_body2.ptr,
-                                pivotInA, pivotInB,
-                                axisInA, axisInB,
-                                useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies));
-        m_enabled = true;
-    }
-
-}
-
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSDynamics.cs
deleted file mode 100644
index 415ad4f34f..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSDynamics.cs
+++ /dev/null
@@ -1,1377 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The quotations from http://wiki.secondlife.com/wiki/Linden_Vehicle_Tutorial
- * are Copyright (c) 2009 Linden Research, Inc and are used under their license
- * of Creative Commons Attribution-Share Alike 3.0
- * (http://creativecommons.org/licenses/by-sa/3.0/).
- */
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using OpenMetaverse;
-using OpenSim.Region.Physics.Manager;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-    public sealed class BSDynamics
-    {
-        private static string LogHeader = "[BULLETSIM VEHICLE]";
-
-        private BSScene PhysicsScene { get; set; }
-        // the prim this dynamic controller belongs to
-        private BSPrim Prim { get; set; }
-
-        // mass of the vehicle fetched each time we're calles
-        private float m_vehicleMass;
-
-        // Vehicle properties
-        public Vehicle Type { get; set; }
-
-        // private Quaternion m_referenceFrame = Quaternion.Identity;   // Axis modifier
-        private VehicleFlag m_flags = (VehicleFlag) 0;                  // Boolean settings:
-                                                                        // HOVER_TERRAIN_ONLY
-                                                                        // HOVER_GLOBAL_HEIGHT
-                                                                        // NO_DEFLECTION_UP
-                                                                        // HOVER_WATER_ONLY
-                                                                        // HOVER_UP_ONLY
-                                                                        // LIMIT_MOTOR_UP
-                                                                        // LIMIT_ROLL_ONLY
-        private Vector3 m_BlockingEndPoint = Vector3.Zero;
-        private Quaternion m_RollreferenceFrame = Quaternion.Identity;
-        private Quaternion m_referenceFrame = Quaternion.Identity;
-
-        // Linear properties
-        private BSVMotor m_linearMotor = new BSVMotor("LinearMotor");
-        private Vector3 m_linearMotorDirection = Vector3.Zero;          // velocity requested by LSL, decayed by time
-        private Vector3 m_linearMotorOffset = Vector3.Zero;             // the point of force can be offset from the center
-        private Vector3 m_linearMotorDirectionLASTSET = Vector3.Zero;   // velocity requested by LSL
-        private Vector3 m_linearFrictionTimescale = Vector3.Zero;
-        private float m_linearMotorDecayTimescale = 0;
-        private float m_linearMotorTimescale = 0;
-        private Vector3 m_lastLinearVelocityVector = Vector3.Zero;
-        private Vector3 m_lastPositionVector = Vector3.Zero;
-        // private bool m_LinearMotorSetLastFrame = false;
-        // private Vector3 m_linearMotorOffset = Vector3.Zero;
-
-        //Angular properties
-        private BSVMotor m_angularMotor = new BSVMotor("AngularMotor");
-        private Vector3 m_angularMotorDirection = Vector3.Zero;         // angular velocity requested by LSL motor
-        // private int m_angularMotorApply = 0;                            // application frame counter
-        private Vector3 m_angularMotorVelocity = Vector3.Zero;          // current angular motor velocity
-        private float m_angularMotorTimescale = 0;                      // motor angular velocity ramp up rate
-        private float m_angularMotorDecayTimescale = 0;                 // motor angular velocity decay rate
-        private Vector3 m_angularFrictionTimescale = Vector3.Zero;      // body angular velocity  decay rate
-        private Vector3 m_lastAngularVelocity = Vector3.Zero;
-        private Vector3 m_lastVertAttractor = Vector3.Zero;             // what VA was last applied to body
-
-        //Deflection properties
-        private BSVMotor m_angularDeflectionMotor = new BSVMotor("AngularDeflection");
-        private float m_angularDeflectionEfficiency = 0;
-        private float m_angularDeflectionTimescale = 0;
-        private float m_linearDeflectionEfficiency = 0;
-        private float m_linearDeflectionTimescale = 0;
-
-        //Banking properties
-        private float m_bankingEfficiency = 0;
-        private float m_bankingMix = 0;
-        private float m_bankingTimescale = 0;
-
-        //Hover and Buoyancy properties
-        private BSVMotor m_hoverMotor = new BSVMotor("Hover");
-        private float m_VhoverHeight = 0f;
-        private float m_VhoverEfficiency = 0f;
-        private float m_VhoverTimescale = 0f;
-        private float m_VhoverTargetHeight = -1.0f;     // if <0 then no hover, else its the current target height
-        private float m_VehicleBuoyancy = 0f;           //KF: m_VehicleBuoyancy is set by VEHICLE_BUOYANCY for a vehicle.
-                    // Modifies gravity. Slider between -1 (double-gravity) and 1 (full anti-gravity)
-                    // KF: So far I have found no good method to combine a script-requested .Z velocity and gravity.
-                    // Therefore only m_VehicleBuoyancy=1 (0g) will use the script-requested .Z velocity.
-
-        //Attractor properties
-        private BSVMotor m_verticalAttractionMotor = new BSVMotor("VerticalAttraction");
-        private float m_verticalAttractionEfficiency = 1.0f; // damped
-        private float m_verticalAttractionCutoff = 500f;     // per the documentation
-        // Timescale > cutoff  means no vert attractor.
-        private float m_verticalAttractionTimescale = 510f;
-
-        // Just some recomputed constants:
-        static readonly float PIOverFour = ((float)Math.PI) / 4f;
-        static readonly float PIOverTwo = ((float)Math.PI) / 2f;
-
-        public BSDynamics(BSScene myScene, BSPrim myPrim)
-        {
-            PhysicsScene = myScene;
-            Prim = myPrim;
-            Type = Vehicle.TYPE_NONE;
-        }
-
-        // Return 'true' if this vehicle is doing vehicle things
-        public bool IsActive
-        {
-            get { return Type != Vehicle.TYPE_NONE && Prim.IsPhysical; }
-        }
-
-        internal void ProcessFloatVehicleParam(Vehicle pParam, float pValue)
-        {
-            VDetailLog("{0},ProcessFloatVehicleParam,param={1},val={2}", Prim.LocalID, pParam, pValue);
-            switch (pParam)
-            {
-                case Vehicle.ANGULAR_DEFLECTION_EFFICIENCY:
-                    m_angularDeflectionEfficiency = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.ANGULAR_DEFLECTION_TIMESCALE:
-                    m_angularDeflectionTimescale = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.ANGULAR_MOTOR_DECAY_TIMESCALE:
-                    m_angularMotorDecayTimescale = ClampInRange(0.01f, pValue, 120);
-                    m_angularMotor.TargetValueDecayTimeScale = m_angularMotorDecayTimescale;
-                    break;
-                case Vehicle.ANGULAR_MOTOR_TIMESCALE:
-                    m_angularMotorTimescale = Math.Max(pValue, 0.01f);
-                    m_angularMotor.TimeScale = m_angularMotorTimescale;
-                    break;
-                case Vehicle.BANKING_EFFICIENCY:
-                    m_bankingEfficiency = ClampInRange(-1f, pValue, 1f);
-                    break;
-                case Vehicle.BANKING_MIX:
-                    m_bankingMix = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.BANKING_TIMESCALE:
-                    m_bankingTimescale = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.BUOYANCY:
-                    m_VehicleBuoyancy = ClampInRange(-1f, pValue, 1f);
-                    break;
-                case Vehicle.HOVER_EFFICIENCY:
-                    m_VhoverEfficiency = ClampInRange(0f, pValue, 1f);
-                    break;
-                case Vehicle.HOVER_HEIGHT:
-                    m_VhoverHeight = pValue;
-                    break;
-                case Vehicle.HOVER_TIMESCALE:
-                    m_VhoverTimescale = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.LINEAR_DEFLECTION_EFFICIENCY:
-                    m_linearDeflectionEfficiency = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.LINEAR_DEFLECTION_TIMESCALE:
-                    m_linearDeflectionTimescale = Math.Max(pValue, 0.01f);
-                    break;
-                case Vehicle.LINEAR_MOTOR_DECAY_TIMESCALE:
-                    m_linearMotorDecayTimescale = ClampInRange(0.01f, pValue, 120);
-                    m_linearMotor.TargetValueDecayTimeScale = m_linearMotorDecayTimescale;
-                    break;
-                case Vehicle.LINEAR_MOTOR_TIMESCALE:
-                    m_linearMotorTimescale = Math.Max(pValue, 0.01f);
-                    m_linearMotor.TimeScale = m_linearMotorTimescale;
-                    break;
-                case Vehicle.VERTICAL_ATTRACTION_EFFICIENCY:
-                    m_verticalAttractionEfficiency = ClampInRange(0.1f, pValue, 1f);
-                    m_verticalAttractionMotor.Efficiency = m_verticalAttractionEfficiency;
-                    break;
-                case Vehicle.VERTICAL_ATTRACTION_TIMESCALE:
-                    m_verticalAttractionTimescale = Math.Max(pValue, 0.01f);
-                    m_verticalAttractionMotor.TimeScale = m_verticalAttractionTimescale;
-                    break;
-
-                // These are vector properties but the engine lets you use a single float value to
-                // set all of the components to the same value
-                case Vehicle.ANGULAR_FRICTION_TIMESCALE:
-                    m_angularFrictionTimescale = new Vector3(pValue, pValue, pValue);
-                    m_angularMotor.FrictionTimescale = m_angularFrictionTimescale;
-                    break;
-                case Vehicle.ANGULAR_MOTOR_DIRECTION:
-                    m_angularMotorDirection = new Vector3(pValue, pValue, pValue);
-                    m_angularMotor.SetTarget(m_angularMotorDirection);
-                    break;
-                case Vehicle.LINEAR_FRICTION_TIMESCALE:
-                    m_linearFrictionTimescale = new Vector3(pValue, pValue, pValue);
-                    m_linearMotor.FrictionTimescale = m_linearFrictionTimescale;
-                    break;
-                case Vehicle.LINEAR_MOTOR_DIRECTION:
-                    m_linearMotorDirection = new Vector3(pValue, pValue, pValue);
-                    m_linearMotorDirectionLASTSET = new Vector3(pValue, pValue, pValue);
-                    m_linearMotor.SetTarget(m_linearMotorDirection);
-                    break;
-                case Vehicle.LINEAR_MOTOR_OFFSET:
-                    m_linearMotorOffset = new Vector3(pValue, pValue, pValue);
-                    break;
-
-            }
-        }//end ProcessFloatVehicleParam
-
-        internal void ProcessVectorVehicleParam(Vehicle pParam, Vector3 pValue)
-        {
-            VDetailLog("{0},ProcessVectorVehicleParam,param={1},val={2}", Prim.LocalID, pParam, pValue);
-            switch (pParam)
-            {
-                case Vehicle.ANGULAR_FRICTION_TIMESCALE:
-                    m_angularFrictionTimescale = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    m_angularMotor.FrictionTimescale = m_angularFrictionTimescale;
-                    break;
-                case Vehicle.ANGULAR_MOTOR_DIRECTION:
-                    // Limit requested angular speed to 2 rps= 4 pi rads/sec
-                    pValue.X = ClampInRange(-12.56f, pValue.X, 12.56f);
-                    pValue.Y = ClampInRange(-12.56f, pValue.Y, 12.56f);
-                    pValue.Z = ClampInRange(-12.56f, pValue.Z, 12.56f);
-                    m_angularMotorDirection = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    m_angularMotor.SetTarget(m_angularMotorDirection);
-                    break;
-                case Vehicle.LINEAR_FRICTION_TIMESCALE:
-                    m_linearFrictionTimescale = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    m_linearMotor.FrictionTimescale = m_linearFrictionTimescale;
-                    break;
-                case Vehicle.LINEAR_MOTOR_DIRECTION:
-                    m_linearMotorDirection = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    m_linearMotorDirectionLASTSET = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    m_linearMotor.SetTarget(m_linearMotorDirection);
-                    break;
-                case Vehicle.LINEAR_MOTOR_OFFSET:
-                    m_linearMotorOffset = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    break;
-                case Vehicle.BLOCK_EXIT:
-                    m_BlockingEndPoint = new Vector3(pValue.X, pValue.Y, pValue.Z);
-                    break;
-            }
-        }//end ProcessVectorVehicleParam
-
-        internal void ProcessRotationVehicleParam(Vehicle pParam, Quaternion pValue)
-        {
-            VDetailLog("{0},ProcessRotationalVehicleParam,param={1},val={2}", Prim.LocalID, pParam, pValue);
-            switch (pParam)
-            {
-                case Vehicle.REFERENCE_FRAME:
-                    m_referenceFrame = pValue;
-                    break;
-                case Vehicle.ROLL_FRAME:
-                    m_RollreferenceFrame = pValue;
-                    break;
-            }
-        }//end ProcessRotationVehicleParam
-
-        internal void ProcessVehicleFlags(int pParam, bool remove)
-        {
-            VDetailLog("{0},ProcessVehicleFlags,param={1},remove={2}", Prim.LocalID, pParam, remove);
-            VehicleFlag parm = (VehicleFlag)pParam;
-            if (pParam == -1)
-                m_flags = (VehicleFlag)0;
-            else
-            {
-                if (remove)
-                    m_flags &= ~parm;
-                else
-                    m_flags |= parm;
-            }
-        }
-
-        internal void ProcessTypeChange(Vehicle pType)
-        {
-            VDetailLog("{0},ProcessTypeChange,type={1}", Prim.LocalID, pType);
-            // Set Defaults For Type
-            Type = pType;
-            switch (pType)
-            {
-                case Vehicle.TYPE_NONE:
-                    m_linearMotorDirection = Vector3.Zero;
-                    m_linearMotorTimescale = 0;
-                    m_linearMotorDecayTimescale = 0;
-                    m_linearFrictionTimescale = new Vector3(0, 0, 0);
-
-                    m_angularMotorDirection = Vector3.Zero;
-                    m_angularMotorDecayTimescale = 0;
-                    m_angularMotorTimescale = 0;
-                    m_angularFrictionTimescale = new Vector3(0, 0, 0);
-
-                    m_VhoverHeight = 0;
-                    m_VhoverEfficiency = 0;
-                    m_VhoverTimescale = 0;
-                    m_VehicleBuoyancy = 0;
-
-                    m_linearDeflectionEfficiency = 1;
-                    m_linearDeflectionTimescale = 1;
-
-                    m_angularDeflectionEfficiency = 0;
-                    m_angularDeflectionTimescale = 1000;
-
-                    m_verticalAttractionEfficiency = 0;
-                    m_verticalAttractionTimescale = 0;
-
-                    m_bankingEfficiency = 0;
-                    m_bankingTimescale = 1000;
-                    m_bankingMix = 1;
-
-                    m_referenceFrame = Quaternion.Identity;
-                    m_flags = (VehicleFlag)0;
-
-                    break;
-
-                case Vehicle.TYPE_SLED:
-                    m_linearMotorDirection = Vector3.Zero;
-                    m_linearMotorTimescale = 1000;
-                    m_linearMotorDecayTimescale = 120;
-                    m_linearFrictionTimescale = new Vector3(30, 1, 1000);
-
-                    m_angularMotorDirection = Vector3.Zero;
-                    m_angularMotorTimescale = 1000;
-                    m_angularMotorDecayTimescale = 120;
-                    m_angularFrictionTimescale = new Vector3(1000, 1000, 1000);
-
-                    m_VhoverHeight = 0;
-                    m_VhoverEfficiency = 10;    // TODO: this looks wrong!!
-                    m_VhoverTimescale = 10;
-                    m_VehicleBuoyancy = 0;
-
-                    m_linearDeflectionEfficiency = 1;
-                    m_linearDeflectionTimescale = 1;
-
-                    m_angularDeflectionEfficiency = 1;
-                    m_angularDeflectionTimescale = 1000;
-
-                    m_verticalAttractionEfficiency = 0;
-                    m_verticalAttractionTimescale = 0;
-
-                    m_bankingEfficiency = 0;
-                    m_bankingTimescale = 10;
-                    m_bankingMix = 1;
-
-                    m_referenceFrame = Quaternion.Identity;
-                    m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY
-                                | VehicleFlag.HOVER_TERRAIN_ONLY
-                                | VehicleFlag.HOVER_GLOBAL_HEIGHT
-                                | VehicleFlag.HOVER_UP_ONLY);
-                    m_flags |= (VehicleFlag.NO_DEFLECTION_UP
-                            | VehicleFlag.LIMIT_ROLL_ONLY
-                            | VehicleFlag.LIMIT_MOTOR_UP);
-
-                    break;
-                case Vehicle.TYPE_CAR:
-                    m_linearMotorDirection = Vector3.Zero;
-                    m_linearMotorTimescale = 1;
-                    m_linearMotorDecayTimescale = 60;
-                    m_linearFrictionTimescale = new Vector3(100, 2, 1000);
-
-                    m_angularMotorDirection = Vector3.Zero;
-                    m_angularMotorTimescale = 1;
-                    m_angularMotorDecayTimescale = 0.8f;
-                    m_angularFrictionTimescale = new Vector3(1000, 1000, 1000);
-
-                    m_VhoverHeight = 0;
-                    m_VhoverEfficiency = 0;
-                    m_VhoverTimescale = 1000;
-                    m_VehicleBuoyancy = 0;
-
-                    m_linearDeflectionEfficiency = 1;
-                    m_linearDeflectionTimescale = 2;
-
-                    m_angularDeflectionEfficiency = 0;
-                    m_angularDeflectionTimescale = 10;
-
-                    m_verticalAttractionEfficiency = 1f;
-                    m_verticalAttractionTimescale = 10f;
-
-                    m_bankingEfficiency = -0.2f;
-                    m_bankingMix = 1;
-                    m_bankingTimescale = 1;
-
-                    m_referenceFrame = Quaternion.Identity;
-                    m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY
-                                | VehicleFlag.HOVER_TERRAIN_ONLY
-                                | VehicleFlag.HOVER_GLOBAL_HEIGHT);
-                    m_flags |= (VehicleFlag.NO_DEFLECTION_UP
-                                | VehicleFlag.LIMIT_ROLL_ONLY
-                                | VehicleFlag.LIMIT_MOTOR_UP
-                                | VehicleFlag.HOVER_UP_ONLY);
-                    break;
-                case Vehicle.TYPE_BOAT:
-                    m_linearMotorDirection = Vector3.Zero;
-                    m_linearMotorTimescale = 5;
-                    m_linearMotorDecayTimescale = 60;
-                    m_linearFrictionTimescale = new Vector3(10, 3, 2);
-
-                    m_angularMotorDirection = Vector3.Zero;
-                    m_angularMotorTimescale = 4;
-                    m_angularMotorDecayTimescale = 4;
-                    m_angularFrictionTimescale = new Vector3(10,10,10);
-
-                    m_VhoverHeight = 0;
-                    m_VhoverEfficiency = 0.5f;
-                    m_VhoverTimescale = 2;
-                    m_VehicleBuoyancy = 1;
-
-                    m_linearDeflectionEfficiency = 0.5f;
-                    m_linearDeflectionTimescale = 3;
-
-                    m_angularDeflectionEfficiency = 0.5f;
-                    m_angularDeflectionTimescale = 5;
-
-                    m_verticalAttractionEfficiency = 0.5f;
-                    m_verticalAttractionTimescale = 5f;
-
-                    m_bankingEfficiency = -0.3f;
-                    m_bankingMix = 0.8f;
-                    m_bankingTimescale = 1;
-
-                    m_referenceFrame = Quaternion.Identity;
-                    m_flags &= ~(VehicleFlag.HOVER_TERRAIN_ONLY
-                                    | VehicleFlag.HOVER_GLOBAL_HEIGHT
-                                    | VehicleFlag.LIMIT_ROLL_ONLY
-                                    | VehicleFlag.HOVER_UP_ONLY);
-                    m_flags |= (VehicleFlag.NO_DEFLECTION_UP
-                                    | VehicleFlag.LIMIT_MOTOR_UP
-                                    | VehicleFlag.HOVER_WATER_ONLY);
-                    break;
-                case Vehicle.TYPE_AIRPLANE:
-                    m_linearMotorDirection = Vector3.Zero;
-                    m_linearMotorTimescale = 2;
-                    m_linearMotorDecayTimescale = 60;
-                    m_linearFrictionTimescale = new Vector3(200, 10, 5);
-
-                    m_angularMotorDirection = Vector3.Zero;
-                    m_angularMotorTimescale = 4;
-                    m_angularMotorDecayTimescale = 4;
-                    m_angularFrictionTimescale = new Vector3(20, 20, 20);
-
-                    m_VhoverHeight = 0;
-                    m_VhoverEfficiency = 0.5f;
-                    m_VhoverTimescale = 1000;
-                    m_VehicleBuoyancy = 0;
-
-                    m_linearDeflectionEfficiency = 0.5f;
-                    m_linearDeflectionTimescale = 3;
-
-                    m_angularDeflectionEfficiency = 1;
-                    m_angularDeflectionTimescale = 2;
-
-                    m_verticalAttractionEfficiency = 0.9f;
-                    m_verticalAttractionTimescale = 2f;
-
-                    m_bankingEfficiency = 1;
-                    m_bankingMix = 0.7f;
-                    m_bankingTimescale = 2;
-
-                    m_referenceFrame = Quaternion.Identity;
-                    m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY
-                                    | VehicleFlag.HOVER_TERRAIN_ONLY
-                                    | VehicleFlag.HOVER_GLOBAL_HEIGHT
-                                    | VehicleFlag.HOVER_UP_ONLY
-                                    | VehicleFlag.NO_DEFLECTION_UP
-                                    | VehicleFlag.LIMIT_MOTOR_UP);
-                    m_flags |= (VehicleFlag.LIMIT_ROLL_ONLY);
-                    break;
-                case Vehicle.TYPE_BALLOON:
-                    m_linearMotorDirection = Vector3.Zero;
-                    m_linearMotorTimescale = 5;
-                    m_linearFrictionTimescale = new Vector3(5, 5, 5);
-                    m_linearMotorDecayTimescale = 60;
-
-                    m_angularMotorDirection = Vector3.Zero;
-                    m_angularMotorTimescale = 6;
-                    m_angularFrictionTimescale = new Vector3(10, 10, 10);
-                    m_angularMotorDecayTimescale = 10;
-
-                    m_VhoverHeight = 5;
-                    m_VhoverEfficiency = 0.8f;
-                    m_VhoverTimescale = 10;
-                    m_VehicleBuoyancy = 1;
-
-                    m_linearDeflectionEfficiency = 0;
-                    m_linearDeflectionTimescale = 5;
-
-                    m_angularDeflectionEfficiency = 0;
-                    m_angularDeflectionTimescale = 5;
-
-                    m_verticalAttractionEfficiency = 1f;
-                    m_verticalAttractionTimescale = 100f;
-
-                    m_bankingEfficiency = 0;
-                    m_bankingMix = 0.7f;
-                    m_bankingTimescale = 5;
-
-                    m_referenceFrame = Quaternion.Identity;
-
-                    m_referenceFrame = Quaternion.Identity;
-                    m_flags &= ~(VehicleFlag.HOVER_WATER_ONLY
-                                    | VehicleFlag.HOVER_TERRAIN_ONLY
-                                    | VehicleFlag.HOVER_UP_ONLY
-                                    | VehicleFlag.NO_DEFLECTION_UP
-                                    | VehicleFlag.LIMIT_MOTOR_UP);
-                    m_flags |= (VehicleFlag.LIMIT_ROLL_ONLY
-                                    | VehicleFlag.HOVER_GLOBAL_HEIGHT);
-                    break;
-            }
-
-            // Update any physical parameters based on this type.
-            Refresh();
-
-            m_linearMotor = new BSVMotor("LinearMotor", m_linearMotorTimescale,
-                                m_linearMotorDecayTimescale, m_linearFrictionTimescale,
-                                1f);
-            m_linearMotor.PhysicsScene = PhysicsScene;  // DEBUG DEBUG DEBUG (enables detail logging)
-
-            m_angularMotor = new BSVMotor("AngularMotor", m_angularMotorTimescale,
-                                m_angularMotorDecayTimescale, m_angularFrictionTimescale,
-                                1f);
-            m_angularMotor.PhysicsScene = PhysicsScene;  // DEBUG DEBUG DEBUG (enables detail logging)
-
-            m_verticalAttractionMotor = new BSVMotor("VerticalAttraction", m_verticalAttractionTimescale,
-                                BSMotor.Infinite, BSMotor.InfiniteVector,
-                                m_verticalAttractionEfficiency);
-            // Z goes away and we keep X and Y
-            m_verticalAttractionMotor.FrictionTimescale = new Vector3(BSMotor.Infinite, BSMotor.Infinite, 0.1f);
-            m_verticalAttractionMotor.PhysicsScene = PhysicsScene;  // DEBUG DEBUG DEBUG (enables detail logging)
-        }
-
-        // Some of the properties of this prim may have changed.
-        // Do any updating needed for a vehicle
-        public void Refresh()
-        {
-            if (IsActive)
-            {
-                // Remember the mass so we don't have to fetch it every step
-                m_vehicleMass = Prim.Linkset.LinksetMass;
-
-                // Friction affects are handled by this vehicle code
-                float friction = 0f;
-                BulletSimAPI.SetFriction2(Prim.PhysBody.ptr, friction);
-
-                // Moderate angular movement introduced by Bullet.
-                // TODO: possibly set AngularFactor and LinearFactor for the type of vehicle.
-                //     Maybe compute linear and angular factor and damping from params.
-                float angularDamping = BSParam.VehicleAngularDamping;
-                BulletSimAPI.SetAngularDamping2(Prim.PhysBody.ptr, angularDamping);
-
-                // Vehicles report collision events so we know when it's on the ground
-                BulletSimAPI.AddToCollisionFlags2(Prim.PhysBody.ptr, CollisionFlags.BS_VEHICLE_COLLISIONS);
-
-                Vector3 localInertia = BulletSimAPI.CalculateLocalInertia2(Prim.PhysShape.ptr, m_vehicleMass);
-                BulletSimAPI.SetMassProps2(Prim.PhysBody.ptr, m_vehicleMass, localInertia);
-                BulletSimAPI.UpdateInertiaTensor2(Prim.PhysBody.ptr);
-
-                Vector3 grav = PhysicsScene.DefaultGravity * (1f - Prim.Buoyancy);
-                BulletSimAPI.SetGravity2(Prim.PhysBody.ptr, grav);
-
-                VDetailLog("{0},BSDynamics.Refresh,mass={1},frict={2},inert={3},aDamp={4}",
-                                Prim.LocalID, m_vehicleMass, friction, localInertia, angularDamping);
-            }
-            else
-            {
-                BulletSimAPI.RemoveFromCollisionFlags2(Prim.PhysBody.ptr, CollisionFlags.BS_VEHICLE_COLLISIONS);
-            }
-        }
-
-        public bool RemoveBodyDependencies(BSPhysObject prim)
-        {
-            // If active, we need to add our properties back when the body is rebuilt.
-            return IsActive;
-        }
-
-        public void RestoreBodyDependencies(BSPhysObject prim)
-        {
-            if (Prim.LocalID != prim.LocalID)
-            {
-                // The call should be on us by our prim. Error if not.
-                PhysicsScene.Logger.ErrorFormat("{0} RestoreBodyDependencies: called by not my prim. passedLocalID={1}, vehiclePrimLocalID={2}",
-                                LogHeader, prim.LocalID, Prim.LocalID);
-                return;
-            }
-            Refresh();
-        }
-
-        #region Known vehicle value functions
-        // Vehicle physical parameters that we buffer from constant getting and setting.
-        // The "m_known*" values are unknown until they are fetched and the m_knownHas flag is set.
-        //      Changing is remembered and the parameter is stored back into the physics engine only if updated.
-        //      This does two things: 1) saves continuious calls into unmanaged code, and
-        //      2) signals when a physics property update must happen back to the simulator
-        //      to update values modified for the vehicle.
-        private int m_knownChanged;
-        private int m_knownHas;
-        private float m_knownTerrainHeight;
-        private float m_knownWaterLevel;
-        private Vector3 m_knownPosition;
-        private Vector3 m_knownVelocity;
-        private Vector3 m_knownForce;
-        private Quaternion m_knownOrientation;
-        private Vector3 m_knownRotationalVelocity;
-        private Vector3 m_knownRotationalForce;
-        private Vector3 m_knownForwardVelocity;    // vehicle relative forward speed
-
-        private const int m_knownChangedPosition           = 1 << 0;
-        private const int m_knownChangedVelocity           = 1 << 1;
-        private const int m_knownChangedForce              = 1 << 2;
-        private const int m_knownChangedOrientation        = 1 << 3;
-        private const int m_knownChangedRotationalVelocity = 1 << 4;
-        private const int m_knownChangedRotationalForce    = 1 << 5;
-        private const int m_knownChangedTerrainHeight      = 1 << 6;
-        private const int m_knownChangedWaterLevel         = 1 << 7;
-        private const int m_knownChangedForwardVelocity    = 1 << 8;
-
-        private void ForgetKnownVehicleProperties()
-        {
-            m_knownHas = 0;
-            m_knownChanged = 0;
-        }
-        // Push all the changed values back into the physics engine
-        private void PushKnownChanged()
-        {
-            if (m_knownChanged != 0)
-            {
-                if ((m_knownChanged & m_knownChangedPosition) != 0)
-                    Prim.ForcePosition = m_knownPosition;
-
-                if ((m_knownChanged & m_knownChangedOrientation) != 0)
-                    Prim.ForceOrientation = m_knownOrientation;
-
-                if ((m_knownChanged & m_knownChangedVelocity) != 0)
-                {
-                    Prim.ForceVelocity = m_knownVelocity;
-                    BulletSimAPI.SetInterpolationLinearVelocity2(Prim.PhysBody.ptr, VehicleVelocity);
-                }
-
-                if ((m_knownChanged & m_knownChangedForce) != 0)
-                    Prim.AddForce((Vector3)m_knownForce, false, true);
-
-                if ((m_knownChanged & m_knownChangedRotationalVelocity) != 0)
-                {
-                    Prim.ForceRotationalVelocity = m_knownRotationalVelocity;
-                    // Fake out Bullet by making it think the velocity is the same as last time.
-                    BulletSimAPI.SetInterpolationAngularVelocity2(Prim.PhysBody.ptr, m_knownRotationalVelocity);
-                }
-
-                if ((m_knownChanged & m_knownChangedRotationalForce) != 0)
-                    Prim.AddAngularForce((Vector3)m_knownRotationalForce, false, true);
-
-                // If we set one of the values (ie, the physics engine didn't do it) we must force
-                //      an UpdateProperties event to send the changes up to the simulator.
-                BulletSimAPI.PushUpdate2(Prim.PhysBody.ptr);
-            }
-            m_knownChanged = 0;
-        }
-
-        // Since the computation of terrain height can be a little involved, this routine
-        //    is used to fetch the height only once for each vehicle simulation step.
-        private float GetTerrainHeight(Vector3 pos)
-        {
-            if ((m_knownHas & m_knownChangedTerrainHeight) == 0)
-            {
-                m_knownTerrainHeight = Prim.PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(pos);
-                m_knownHas |= m_knownChangedTerrainHeight;
-            }
-            return m_knownTerrainHeight;
-        }
-
-        // Since the computation of water level can be a little involved, this routine
-        //    is used ot fetch the level only once for each vehicle simulation step.
-        private float GetWaterLevel(Vector3 pos)
-        {
-            if ((m_knownHas & m_knownChangedWaterLevel) == 0)
-            {
-                m_knownWaterLevel = Prim.PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(pos);
-                m_knownHas |= m_knownChangedWaterLevel;
-            }
-            return (float)m_knownWaterLevel;
-        }
-
-        private Vector3 VehiclePosition
-        {
-            get
-            {
-                if ((m_knownHas & m_knownChangedPosition) == 0)
-                {
-                    m_knownPosition = Prim.ForcePosition;
-                    m_knownHas |= m_knownChangedPosition;
-                }
-                return m_knownPosition;
-            }
-            set
-            {
-                m_knownPosition = value;
-                m_knownChanged |= m_knownChangedPosition;
-                m_knownHas |= m_knownChangedPosition;
-            }
-        }
-
-        private Quaternion VehicleOrientation
-        {
-            get
-            {
-                if ((m_knownHas & m_knownChangedOrientation) == 0)
-                {
-                    m_knownOrientation = Prim.ForceOrientation;
-                    m_knownHas |= m_knownChangedOrientation;
-                }
-                return m_knownOrientation;
-            }
-            set
-            {
-                m_knownOrientation = value;
-                m_knownChanged |= m_knownChangedOrientation;
-                m_knownHas |= m_knownChangedOrientation;
-            }
-        }
-
-        private Vector3 VehicleVelocity
-        {
-            get
-            {
-                if ((m_knownHas & m_knownChangedVelocity) == 0)
-                {
-                    m_knownVelocity = Prim.ForceVelocity;
-                    m_knownHas |= m_knownChangedVelocity;
-                }
-                return (Vector3)m_knownVelocity;
-            }
-            set
-            {
-                m_knownVelocity = value;
-                m_knownChanged |= m_knownChangedVelocity;
-                m_knownHas |= m_knownChangedVelocity;
-            }
-        }
-
-        private void VehicleAddForce(Vector3 aForce)
-        {
-            if ((m_knownHas & m_knownChangedForce) == 0)
-            {
-                m_knownForce = Vector3.Zero;
-            }
-            m_knownForce += aForce;
-            m_knownChanged |= m_knownChangedForce;
-            m_knownHas |= m_knownChangedForce;
-        }
-
-        private Vector3 VehicleRotationalVelocity
-        {
-            get
-            {
-                if ((m_knownHas & m_knownChangedRotationalVelocity) == 0)
-                {
-                    m_knownRotationalVelocity = Prim.ForceRotationalVelocity;
-                    m_knownHas |= m_knownChangedRotationalVelocity;
-                }
-                return (Vector3)m_knownRotationalVelocity;
-            }
-            set
-            {
-                m_knownRotationalVelocity = value;
-                m_knownChanged |= m_knownChangedRotationalVelocity;
-                m_knownHas |= m_knownChangedRotationalVelocity;
-            }
-        }
-        private void VehicleAddAngularForce(Vector3 aForce)
-        {
-            if ((m_knownHas & m_knownChangedRotationalForce) == 0)
-            {
-                m_knownRotationalForce = Vector3.Zero;
-            }
-            m_knownRotationalForce += aForce;
-            m_knownChanged |= m_knownChangedRotationalForce;
-            m_knownHas |= m_knownChangedRotationalForce;
-        }
-        // Vehicle relative forward velocity
-        private Vector3 VehicleForwardVelocity
-        {
-            get
-            {
-                if ((m_knownHas & m_knownChangedForwardVelocity) == 0)
-                {
-                    m_knownForwardVelocity = VehicleVelocity * Quaternion.Inverse(Quaternion.Normalize(VehicleOrientation));
-                    m_knownHas |= m_knownChangedForwardVelocity;
-                }
-                return m_knownForwardVelocity;
-            }
-        }
-        private float VehicleForwardSpeed
-        {
-            get
-            {
-                return VehicleForwardVelocity.X;
-            }
-        }
-
-        #endregion // Known vehicle value functions
-
-        // One step of the vehicle properties for the next 'pTimestep' seconds.
-        internal void Step(float pTimestep)
-        {
-            if (!IsActive) return;
-
-            ForgetKnownVehicleProperties();
-
-            MoveLinear(pTimestep);
-            MoveAngular(pTimestep);
-
-            LimitRotation(pTimestep);
-
-            // remember the position so next step we can limit absolute movement effects
-            m_lastPositionVector = VehiclePosition;
-
-            // If we forced the changing of some vehicle parameters, update the values and
-            //      for the physics engine to note the changes so an UpdateProperties event will happen.
-            PushKnownChanged();
-
-            VDetailLog("{0},BSDynamics.Step,done,pos={1},force={2},velocity={3},angvel={4}",
-                    Prim.LocalID, VehiclePosition, Prim.Force, VehicleVelocity, VehicleRotationalVelocity);
-        }
-
-        // Apply the effect of the linear motor and other linear motions (like hover and float).
-        private void MoveLinear(float pTimestep)
-        {
-            Vector3 linearMotorContribution = m_linearMotor.Step(pTimestep);
-
-            // The movement computed in the linear motor is relative to the vehicle
-            //     coordinates. Rotate the movement to world coordinates.
-            linearMotorContribution *= VehicleOrientation;
-
-            // ==================================================================
-            // Buoyancy: force to overcome gravity.
-            // m_VehicleBuoyancy: -1=2g; 0=1g; 1=0g;
-            // So, if zero, don't change anything (let gravity happen). If one, negate the effect of gravity.
-            Vector3 buoyancyContribution =  Prim.PhysicsScene.DefaultGravity * m_VehicleBuoyancy;
-
-            Vector3 terrainHeightContribution = ComputeLinearTerrainHeightCorrection(pTimestep);
-
-            Vector3 hoverContribution = ComputeLinearHover(pTimestep);
-
-            ComputeLinearBlockingEndPoint(pTimestep);
-
-            Vector3 limitMotorUpContribution = ComputeLinearMotorUp(pTimestep);
-
-            // ==================================================================
-            Vector3 newVelocity = linearMotorContribution
-                            + terrainHeightContribution
-                            + hoverContribution
-                            + limitMotorUpContribution;
-
-            Vector3 newForce = buoyancyContribution;
-
-            // If not changing some axis, reduce out velocity
-            if ((m_flags & (VehicleFlag.NO_X)) != 0)
-                newVelocity.X = 0;
-            if ((m_flags & (VehicleFlag.NO_Y)) != 0)
-                newVelocity.Y = 0;
-            if ((m_flags & (VehicleFlag.NO_Z)) != 0)
-                newVelocity.Z = 0;
-
-            // ==================================================================
-            // Clamp high or low velocities
-            float newVelocityLengthSq = newVelocity.LengthSquared();
-            if (newVelocityLengthSq > 1000f)
-            {
-                newVelocity /= newVelocity.Length();
-                newVelocity *= 1000f;
-            }
-            else if (newVelocityLengthSq < 0.001f)
-                newVelocity = Vector3.Zero;
-
-            // ==================================================================
-            // Stuff new linear velocity into the vehicle.
-            // Since the velocity is just being set, it is not scaled by pTimeStep. Bullet will do that for us.
-            VehicleVelocity = newVelocity;
-
-            // Other linear forces are applied as forces.
-            Vector3 totalDownForce = newForce * m_vehicleMass;
-            if (!totalDownForce.ApproxEquals(Vector3.Zero, 0.01f))
-            {
-                VehicleAddForce(totalDownForce);
-            }
-
-            VDetailLog("{0},  MoveLinear,done,newVel={1},totDown={2},IsColliding={3}",
-                                Prim.LocalID, newVelocity, totalDownForce, Prim.IsColliding);
-            VDetailLog("{0},  MoveLinear,done,linContrib={1},terrContrib={2},hoverContrib={3},limitContrib={4},buoyContrib={5}",
-                                Prim.LocalID,
-                                linearMotorContribution, terrainHeightContribution, hoverContribution, 
-                                limitMotorUpContribution, buoyancyContribution
-            );
-
-        } // end MoveLinear()
-
-        public Vector3 ComputeLinearTerrainHeightCorrection(float pTimestep)
-        {
-            Vector3 ret = Vector3.Zero;
-            // If below the terrain, move us above the ground a little.
-            // TODO: Consider taking the rotated size of the object or possibly casting a ray.
-            if (VehiclePosition.Z < GetTerrainHeight(VehiclePosition))
-            {
-                // TODO: correct position by applying force rather than forcing position.
-                Vector3 newPosition = VehiclePosition;
-                newPosition.Z = GetTerrainHeight(VehiclePosition) + 1f;
-                VehiclePosition = newPosition;
-                VDetailLog("{0},  MoveLinear,terrainHeight,terrainHeight={1},pos={2}",
-                        Prim.LocalID, GetTerrainHeight(VehiclePosition), VehiclePosition);
-            }
-            return ret;
-        }
-
-        public Vector3 ComputeLinearHover(float pTimestep)
-        {
-            Vector3 ret = Vector3.Zero;
-
-            // m_VhoverEfficiency: 0=bouncy, 1=totally damped
-            // m_VhoverTimescale: time to achieve height
-            if ((m_flags & (VehicleFlag.HOVER_WATER_ONLY | VehicleFlag.HOVER_TERRAIN_ONLY | VehicleFlag.HOVER_GLOBAL_HEIGHT)) != 0)
-            {
-                // We should hover, get the target height
-                if ((m_flags & VehicleFlag.HOVER_WATER_ONLY) != 0)
-                {
-                    m_VhoverTargetHeight = GetWaterLevel(VehiclePosition) + m_VhoverHeight;
-                }
-                if ((m_flags & VehicleFlag.HOVER_TERRAIN_ONLY) != 0)
-                {
-                    m_VhoverTargetHeight = GetTerrainHeight(VehiclePosition) + m_VhoverHeight;
-                }
-                if ((m_flags & VehicleFlag.HOVER_GLOBAL_HEIGHT) != 0)
-                {
-                    m_VhoverTargetHeight = m_VhoverHeight;
-                }
-
-                if ((m_flags & VehicleFlag.HOVER_UP_ONLY) != 0)
-                {
-                    // If body is already heigher, use its height as target height
-                    if (VehiclePosition.Z > m_VhoverTargetHeight)
-                        m_VhoverTargetHeight = VehiclePosition.Z;
-                }
-                
-                if ((m_flags & VehicleFlag.LOCK_HOVER_HEIGHT) != 0)
-                {
-                    if (Math.Abs(VehiclePosition.Z - m_VhoverTargetHeight) > 0.2f)
-                    {
-                        Vector3 pos = VehiclePosition;
-                        pos.Z = m_VhoverTargetHeight;
-                        VehiclePosition = pos;
-                    }
-                }
-                else
-                {
-                    // Error is positive if below the target and negative if above.
-                    float verticalError = m_VhoverTargetHeight - VehiclePosition.Z;
-                    float verticalCorrectionVelocity = verticalError / m_VhoverTimescale;
-
-                    // TODO: implement m_VhoverEfficiency correctly
-                    if (Math.Abs(verticalError) > m_VhoverEfficiency)
-                    {
-                        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);
-            }
-
-            return ret;
-        }
-
-        public bool ComputeLinearBlockingEndPoint(float pTimestep)
-        {
-            bool changed = false;
-
-            Vector3 pos = VehiclePosition;
-            Vector3 posChange = pos - m_lastPositionVector;
-            if (m_BlockingEndPoint != Vector3.Zero)
-            {
-                if (pos.X >= (m_BlockingEndPoint.X - (float)1))
-                {
-                    pos.X -= posChange.X + 1;
-                    changed = true;
-                }
-                if (pos.Y >= (m_BlockingEndPoint.Y - (float)1))
-                {
-                    pos.Y -= posChange.Y + 1;
-                    changed = true;
-                }
-                if (pos.Z >= (m_BlockingEndPoint.Z - (float)1))
-                {
-                    pos.Z -= posChange.Z + 1;
-                    changed = true;
-                }
-                if (pos.X <= 0)
-                {
-                    pos.X += posChange.X + 1;
-                    changed = true;
-                }
-                if (pos.Y <= 0)
-                {
-                    pos.Y += posChange.Y + 1;
-                    changed = true;
-                }
-                if (changed)
-                {
-                    VehiclePosition = pos;
-                    VDetailLog("{0},  MoveLinear,blockingEndPoint,block={1},origPos={2},pos={3}",
-                                Prim.LocalID, m_BlockingEndPoint, posChange, pos);
-                }
-            }
-            return changed;
-        }
-
-        // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
-        //    Prevent ground vehicles from motoring into the sky. This flag has a subtle effect when
-        //    used with conjunction with banking: the strength of the banking will decay when the
-        //    vehicle no longer experiences collisions. The decay timescale is the same as
-        //    VEHICLE_BANKING_TIMESCALE. This is to help prevent ground vehicles from steering
-        //    when they are in mid jump. 
-        // TODO: this code is wrong. Also, what should it do for boats (height from water)?
-        //    This is just using the ground and a general collision check. Should really be using
-        //    a downward raycast to find what is below.
-        public Vector3 ComputeLinearMotorUp(float pTimestep)
-        {
-            Vector3 ret = Vector3.Zero;
-            float distanceAboveGround = 0f;
-
-            if ((m_flags & (VehicleFlag.LIMIT_MOTOR_UP)) != 0)
-            {
-                float targetHeight = Type == Vehicle.TYPE_BOAT ? GetWaterLevel(VehiclePosition) : GetTerrainHeight(VehiclePosition);
-                distanceAboveGround = VehiclePosition.Z - targetHeight;
-                // Not colliding if the vehicle is off the ground
-                if (!Prim.IsColliding)
-                {
-                    // downForce = new Vector3(0, 0, -distanceAboveGround / m_bankingTimescale);
-                    ret = new Vector3(0, 0, -distanceAboveGround);
-                }
-                // TODO: this calculation is wrong. From the description at
-                //     (http://wiki.secondlife.com/wiki/Category:LSL_Vehicle), the downForce
-                //     has a decay factor. This says this force should
-                //     be computed with a motor.
-                // TODO: add interaction with banking.
-            }
-            VDetailLog("{0},  MoveLinear,limitMotorUp,distAbove={1},colliding={2},ret={3}",
-                                Prim.LocalID, distanceAboveGround, Prim.IsColliding, ret);
-            return ret;
-        }
-
-        // =======================================================================
-        // =======================================================================
-        // Apply the effect of the angular motor.
-        // The 'contribution' is how much angular correction velocity each function wants.
-        //     All the contributions are added together and the resulting velocity is
-        //     set directly on the vehicle.
-        private void MoveAngular(float pTimestep)
-        {
-            // The user wants this many radians per second angular change?
-            Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep);
-
-            // ==================================================================
-            // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
-            //    This flag prevents linear deflection parallel to world z-axis. This is useful
-            //    for preventing ground vehicles with large linear deflection, like bumper cars,
-            //    from climbing their linear deflection into the sky. 
-            // That is, NO_DEFLECTION_UP says angular motion should not add any pitch or roll movement
-            if ((m_flags & (VehicleFlag.NO_DEFLECTION_UP)) != 0)
-            {
-                angularMotorContribution.X = 0f;
-                angularMotorContribution.Y = 0f;
-                VDetailLog("{0},  MoveAngular,noDeflectionUp,angularMotorContrib={1}", Prim.LocalID, angularMotorContribution);
-            }
-
-            Vector3 verticalAttractionContribution = ComputeAngularVerticalAttraction();
-
-            Vector3 deflectionContribution = ComputeAngularDeflection();
-
-            Vector3 bankingContribution = ComputeAngularBanking();
-
-            // ==================================================================
-            m_lastVertAttractor = verticalAttractionContribution;
-
-            m_lastAngularVelocity = angularMotorContribution
-                                    + verticalAttractionContribution
-                                    + deflectionContribution
-                                    + bankingContribution;
-
-            // ==================================================================
-            // Apply the correction velocity.
-            // TODO: Should this be applied as an angular force (torque)?
-            if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f))
-            {
-                VehicleRotationalVelocity = m_lastAngularVelocity;
-
-                VDetailLog("{0},  MoveAngular,done,nonZero,angMotorContrib={1},vertAttrContrib={2},bankContrib={3},deflectContrib={4},totalContrib={5}",
-                                    Prim.LocalID,
-                                    angularMotorContribution, verticalAttractionContribution,
-                                    bankingContribution, deflectionContribution,
-                                    m_lastAngularVelocity
-                                    );
-            }
-            else
-            {
-                // The vehicle is not adding anything angular wise.
-                VehicleRotationalVelocity = Vector3.Zero;
-                VDetailLog("{0},  MoveAngular,done,zero", Prim.LocalID);
-            }
-
-            // ==================================================================
-            //Offset section
-            if (m_linearMotorOffset != Vector3.Zero)
-            {
-                //Offset of linear velocity doesn't change the linear velocity,
-                //   but causes a torque to be applied, for example...
-                //
-                //      IIIII     >>>   IIIII
-                //      IIIII     >>>    IIIII
-                //      IIIII     >>>     IIIII
-                //          ^
-                //          |  Applying a force at the arrow will cause the object to move forward, but also rotate
-                //
-                //
-                // The torque created is the linear velocity crossed with the offset
-
-                // TODO: this computation should be in the linear section
-                //    because that is where we know the impulse being applied.
-                Vector3 torqueFromOffset = Vector3.Zero;
-                // torqueFromOffset = Vector3.Cross(m_linearMotorOffset, appliedImpulse);
-                if (float.IsNaN(torqueFromOffset.X))
-                    torqueFromOffset.X = 0;
-                if (float.IsNaN(torqueFromOffset.Y))
-                    torqueFromOffset.Y = 0;
-                if (float.IsNaN(torqueFromOffset.Z))
-                    torqueFromOffset.Z = 0;
-
-                VehicleAddAngularForce(torqueFromOffset * m_vehicleMass);
-                VDetailLog("{0},  BSDynamic.MoveAngular,motorOffset,applyTorqueImpulse={1}", Prim.LocalID, torqueFromOffset);
-            }
-
-        }
-        // From http://wiki.secondlife.com/wiki/Linden_Vehicle_Tutorial:
-        //      Some vehicles, like boats, should always keep their up-side up. This can be done by
-        //      enabling the "vertical attractor" behavior that springs the vehicle's local z-axis to
-        //      the world z-axis (a.k.a. "up"). To take advantage of this feature you would set the
-        //      VEHICLE_VERTICAL_ATTRACTION_TIMESCALE to control the period of the spring frequency,
-        //      and then set the VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY to control the damping. An
-        //      efficiency of 0.0 will cause the spring to wobble around its equilibrium, while an
-        //      efficiency of 1.0 will cause the spring to reach its equilibrium with exponential decay.
-        public Vector3 ComputeAngularVerticalAttraction()
-        {
-            Vector3 ret = Vector3.Zero;
-
-            // If vertical attaction timescale is reasonable
-            if (m_verticalAttractionTimescale < m_verticalAttractionCutoff)
-            {
-                // Take a vector pointing up and convert it from world to vehicle relative coords.
-                Vector3 verticalError = Vector3.UnitZ * VehicleOrientation;
-
-                // If vertical attraction correction is needed, the vector that was pointing up (UnitZ)
-                //    is now:
-                //    leaning to one side: rotated around the X axis with the Y value going
-                //        from zero (nearly straight up) to one (completely to the side)) or
-                //    leaning front-to-back: rotated around the Y axis with the value of X being between
-                //         zero and one.
-                // The value of Z is how far the rotation is off with 1 meaning none and 0 being 90 degrees.
-
-                // Y error means needed rotation around X axis and visa versa.
-                // Since the error goes from zero to one, the asin is the corresponding angle.
-                ret.X = (float)Math.Asin(verticalError.Y);
-                // (Tilt forward (positive X) needs to tilt back (rotate negative) around Y axis.)
-                ret.Y = -(float)Math.Asin(verticalError.X);
-
-                // If verticalError.Z is negative, the vehicle is upside down. Add additional push.
-                if (verticalError.Z < 0f)
-                {
-                    ret.X += PIOverFour;
-                    ret.Y += PIOverFour;
-                }
-
-                // 'ret' is now the necessary velocity to correct tilt in one second.
-                //     Correction happens over a number of seconds.
-                Vector3 unscaledContrib = ret;
-                ret /= m_verticalAttractionTimescale;
-
-                VDetailLog("{0},  MoveAngular,verticalAttraction,,verticalError={1},unscaled={2},eff={3},ts={4},vertAttr={5}",
-                                Prim.LocalID, verticalError, unscaledContrib, m_verticalAttractionEfficiency, m_verticalAttractionTimescale, ret);
-            }
-            return ret;
-        }
-
-        // Return the angular correction to correct the direction the vehicle is pointing to be
-        //      the direction is should want to be pointing.
-        // The vehicle is moving in some direction and correct its orientation to it is pointing
-        //     in that direction.
-        // TODO: implement reference frame.
-        public Vector3 ComputeAngularDeflection()
-        {
-            Vector3 ret = Vector3.Zero;
-            return ret;         // DEBUG DEBUG DEBUG
-            // Disable angular deflection for the moment.
-            // Since angularMotorUp and angularDeflection are computed independently, they will calculate
-            //     approximately the same X or Y correction. When added together (when contributions are combined)
-            //     this creates an over-correction and then wabbling as the target is overshot.
-            // TODO: rethink how the different correction computations inter-relate.
-
-            if (m_angularDeflectionEfficiency != 0)
-            {
-                // The direction the vehicle is moving
-                Vector3 movingDirection = VehicleVelocity;
-                movingDirection.Normalize();
-
-                // The direction the vehicle is pointing
-                Vector3 pointingDirection = Vector3.UnitX * VehicleOrientation;
-                pointingDirection.Normalize();
-
-                // The difference between what is and what should be.
-                Vector3 deflectionError = movingDirection - pointingDirection;
-
-                // Don't try to correct very large errors (not our job)
-                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;
-
-                // ret = m_angularDeflectionCorrectionMotor(1f, deflectionError);
-
-                // Scale the correction by recovery timescale and efficiency
-                ret = (-deflectionError) * m_angularDeflectionEfficiency;
-                ret /= m_angularDeflectionTimescale;
-
-                VDetailLog("{0},  MoveAngular,Deflection,movingDir={1},pointingDir={2},deflectError={3},ret={4}",
-                    Prim.LocalID, movingDirection, pointingDirection, deflectionError, ret);
-                VDetailLog("{0},  MoveAngular,Deflection,fwdSpd={1},defEff={2},defTS={3}",
-                    Prim.LocalID, VehicleForwardSpeed, m_angularDeflectionEfficiency, m_angularDeflectionTimescale);
-            }
-            return ret;
-        }
-
-        // Return an angular change to rotate the vehicle around the Z axis when the vehicle
-        //     is tipped around the X axis.
-        // From http://wiki.secondlife.com/wiki/Linden_Vehicle_Tutorial:
-        //      The vertical attractor feature must be enabled in order for the banking behavior to
-        //      function. The way banking works is this: a rotation around the vehicle's roll-axis will
-        //      produce a angular velocity around the yaw-axis, causing the vehicle to turn. The magnitude
-        //      of the yaw effect will be proportional to the
-        //          VEHICLE_BANKING_EFFICIENCY, the angle of the roll rotation, and sometimes the vehicle's
-        //                 velocity along its preferred axis of motion. 
-        //          The VEHICLE_BANKING_EFFICIENCY can vary between -1 and +1. When it is positive then any
-        //                  positive rotation (by the right-hand rule) about the roll-axis will effect a
-        //                  (negative) torque around the yaw-axis, making it turn to the right--that is the
-        //                  vehicle will lean into the turn, which is how real airplanes and motorcycle's work.
-        //                  Negating the banking coefficient will make it so that the vehicle leans to the
-        //                  outside of the turn (not very "physical" but might allow interesting vehicles so why not?). 
-        //           The VEHICLE_BANKING_MIX is a fake (i.e. non-physical) parameter that is useful for making
-        //                  banking vehicles do what you want rather than what the laws of physics allow.
-        //                  For example, consider a real motorcycle...it must be moving forward in order for
-        //                  it to turn while banking, however video-game motorcycles are often configured
-        //                  to turn in place when at a dead stop--because they are often easier to control
-        //                  that way using the limited interface of the keyboard or game controller. The
-        //                  VEHICLE_BANKING_MIX enables combinations of both realistic and non-realistic
-        //                  banking by functioning as a slider between a banking that is correspondingly
-        //                  totally static (0.0) and totally dynamic (1.0). By "static" we mean that the
-        //                  banking effect depends only on the vehicle's rotation about its roll-axis compared
-        //                  to "dynamic" where the banking is also proportional to its velocity along its
-        //                  roll-axis. Finding the best value of the "mixture" will probably require trial and error. 
-        //      The time it takes for the banking behavior to defeat a preexisting angular velocity about the
-        //      world z-axis is determined by the VEHICLE_BANKING_TIMESCALE. So if you want the vehicle to
-        //      bank quickly then give it a banking timescale of about a second or less, otherwise you can
-        //      make a sluggish vehicle by giving it a timescale of several seconds. 
-        public Vector3 ComputeAngularBanking()
-        {
-            Vector3 ret = Vector3.Zero;
-
-            if (m_bankingEfficiency != 0 && m_verticalAttractionTimescale < m_verticalAttractionCutoff)
-            {
-                // This works by rotating a unit vector to the orientation of the vehicle. The
-                //    roll (tilt) will be Y component of a tilting Z vector (zero for no tilt
-                //    up to one for full over).
-                Vector3 rollComponents = Vector3.UnitZ * VehicleOrientation;
-
-                // Figure out the yaw value for this much roll.
-                float turnComponent = rollComponents.Y * rollComponents.Y * m_bankingEfficiency;
-                // Keep the sign
-                if (rollComponents.Y < 0f)
-                    turnComponent = -turnComponent;
-
-                // TODO: there must be a better computation of the banking force.
-                float bankingTurnForce = turnComponent;
-
-                //        actual error  =       static turn error            +           dynamic turn error
-                float mixedBankingError = bankingTurnForce * (1f - m_bankingMix) + bankingTurnForce * m_bankingMix * VehicleForwardSpeed;
-                // TODO: the banking effect should not go to infinity but what to limit it to?
-                mixedBankingError = ClampInRange(-20f, mixedBankingError, 20f);
-
-                // Build the force vector to change rotation from what it is to what it should be
-                ret.Z = -mixedBankingError;
-
-                // Don't do it all at once.
-                ret /= m_bankingTimescale;
-
-                VDetailLog("{0},  MoveAngular,Banking,rollComp={1},speed={2},turnComp={3},bankErr={4},mixedBankErr={5},ret={6}",
-                            Prim.LocalID, rollComponents, VehicleForwardSpeed, turnComponent, bankingTurnForce, mixedBankingError, ret);
-            }
-            return ret;
-        }
-
-        // This is from previous instantiations of XXXDynamics.cs.
-        // Applies roll reference frame.
-        // TODO: is this the right way to separate the code to do this operation?
-        //    Should this be in MoveAngular()?
-        internal void LimitRotation(float timestep)
-        {
-            Quaternion rotq = VehicleOrientation;
-            Quaternion m_rot = rotq;
-            if (m_RollreferenceFrame != Quaternion.Identity)
-            {
-                if (rotq.X >= m_RollreferenceFrame.X)
-                {
-                    m_rot.X = rotq.X - (m_RollreferenceFrame.X / 2);
-                }
-                if (rotq.Y >= m_RollreferenceFrame.Y)
-                {
-                    m_rot.Y = rotq.Y - (m_RollreferenceFrame.Y / 2);
-                }
-                if (rotq.X <= -m_RollreferenceFrame.X)
-                {
-                    m_rot.X = rotq.X + (m_RollreferenceFrame.X / 2);
-                }
-                if (rotq.Y <= -m_RollreferenceFrame.Y)
-                {
-                    m_rot.Y = rotq.Y + (m_RollreferenceFrame.Y / 2);
-                }
-            }
-            if ((m_flags & VehicleFlag.LOCK_ROTATION) != 0)
-            {
-                m_rot.X = 0;
-                m_rot.Y = 0;
-            }
-            if (rotq != m_rot)
-            {
-                VehicleOrientation = m_rot;
-                VDetailLog("{0},  LimitRotation,done,orig={1},new={2}", Prim.LocalID, rotq, m_rot);
-            }
-
-        }
-
-        private float ClampInRange(float low, float val, float high)
-        {
-            return Math.Max(low, Math.Min(val, high));
-            // return Utils.Clamp(val, low, high);
-        }
-
-        // Invoke the detailed logger and output something if it's enabled.
-        private void VDetailLog(string msg, params Object[] args)
-        {
-            if (Prim.PhysicsScene.VehicleLoggingEnabled)
-                Prim.PhysicsScene.DetailLog(msg, args);
-        }
-    }
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSLinkset.cs
deleted file mode 100644
index 845a1136c5..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSLinkset.cs
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OMV = OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-// A BSPrim can get individual information about its linkedness attached
-//    to it through an instance of a subclass of LinksetInfo.
-// Each type of linkset will define the information needed for its type.
-public abstract class BSLinksetInfo
-{
-    public virtual void Clear() { }
-}
-
-public abstract class BSLinkset
-{
-    // private static string LogHeader = "[BULLETSIM LINKSET]";
-
-    public enum LinksetImplementation
-    {
-        Constraint   = 0,   // linkset tied together with constraints
-        Compound     = 1,   // linkset tied together as a compound object
-        Manual       = 2    // linkset tied together manually (code moves all the pieces)
-    }
-    // Create the correct type of linkset for this child
-    public static BSLinkset Factory(BSScene physScene, BSPhysObject parent)
-    {
-        BSLinkset ret = null;
-
-        switch ((int)BSParam.LinksetImplementation)
-        {
-            case (int)LinksetImplementation.Constraint:
-                ret = new BSLinksetConstraints(physScene, parent);
-                break;
-            case (int)LinksetImplementation.Compound:
-                ret = new BSLinksetCompound(physScene, parent);
-                break;
-            case (int)LinksetImplementation.Manual:
-                // ret = new BSLinksetManual(physScene, parent);
-                break;
-            default:
-                ret = new BSLinksetCompound(physScene, parent);
-                break;
-        }
-        return ret;
-    }
-
-    public BSPhysObject LinksetRoot { get; protected set; }
-
-    public BSScene PhysicsScene { get; private set; }
-
-    static int m_nextLinksetID = 1;
-    public int LinksetID { get; private set; }
-
-    // The children under the root in this linkset.
-    protected HashSet<BSPhysObject> m_children;
-
-    // We lock the diddling of linkset classes to prevent any badness.
-    // This locks the modification of the instances of this class. Changes
-    //    to the physical representation is done via the tainting mechenism.
-    protected object m_linksetActivityLock = new Object();
-
-    // Some linksets have a preferred physical shape.
-    // Returns SHAPE_UNKNOWN if there is no preference. Causes the correct shape to be selected.
-    public virtual BSPhysicsShapeType PreferredPhysicalShape(BSPhysObject requestor)
-    {
-        return BSPhysicsShapeType.SHAPE_UNKNOWN;
-    }
-
-    // We keep the prim's mass in the linkset structure since it could be dependent on other prims
-    public float LinksetMass { get; protected set; }
-
-    public virtual bool LinksetIsColliding { get { return false; } }
-
-    public OMV.Vector3 CenterOfMass
-    {
-        get { return ComputeLinksetCenterOfMass(); }
-    }
-
-    public OMV.Vector3 GeometricCenter
-    {
-        get { return ComputeLinksetGeometricCenter(); }
-    }
-
-    protected BSLinkset(BSScene scene, BSPhysObject parent)
-    {
-        // A simple linkset of one (no children)
-        LinksetID = m_nextLinksetID++;
-        // We create LOTS of linksets.
-        if (m_nextLinksetID <= 0)
-            m_nextLinksetID = 1;
-        PhysicsScene = scene;
-        LinksetRoot = parent;
-        m_children = new HashSet<BSPhysObject>();
-        LinksetMass = parent.RawMass;
-        Rebuilding = false;
-    }
-
-    // Link to a linkset where the child knows the parent.
-    // Parent changing should not happen so do some sanity checking.
-    // We return the parent's linkset so the child can track its membership.
-    // Called at runtime.
-    public BSLinkset AddMeToLinkset(BSPhysObject child)
-    {
-        lock (m_linksetActivityLock)
-        {
-            // Don't add the root to its own linkset
-            if (!IsRoot(child))
-                AddChildToLinkset(child);
-            LinksetMass = ComputeLinksetMass();
-        }
-        return this;
-    }
-
-    // Remove a child from a linkset.
-    // Returns a new linkset for the child which is a linkset of one (just the
-    //    orphened child).
-    // Called at runtime.
-    public BSLinkset RemoveMeFromLinkset(BSPhysObject child)
-    {
-        lock (m_linksetActivityLock)
-        {
-            if (IsRoot(child))
-            {
-                // Cannot remove the root from a linkset.
-                return this;
-            }
-            RemoveChildFromLinkset(child);
-            LinksetMass = ComputeLinksetMass();
-        }
-
-        // The child is down to a linkset of just itself
-        return BSLinkset.Factory(PhysicsScene, child);
-    }
-
-    // Return 'true' if the passed object is the root object of this linkset
-    public bool IsRoot(BSPhysObject requestor)
-    {
-        return (requestor.LocalID == LinksetRoot.LocalID);
-    }
-
-    public int NumberOfChildren { get { return m_children.Count; } }
-
-    // Return 'true' if this linkset has any children (more than the root member)
-    public bool HasAnyChildren { get { return (m_children.Count > 0); } }
-
-    // Return 'true' if this child is in this linkset
-    public bool HasChild(BSPhysObject child)
-    {
-        bool ret = false;
-        lock (m_linksetActivityLock)
-        {
-            ret = m_children.Contains(child);
-            /* Safer version but the above should work
-            foreach (BSPhysObject bp in m_children)
-            {
-                if (child.LocalID == bp.LocalID)
-                {
-                    ret = true;
-                    break;
-                }
-            }
-             */
-        }
-        return ret;
-    }
-
-    // Perform an action on each member of the linkset including root prim.
-    // Depends on the action on whether this should be done at taint time.
-    public delegate bool ForEachMemberAction(BSPhysObject obj);
-    public virtual bool ForEachMember(ForEachMemberAction action)
-    {
-        bool ret = false;
-        lock (m_linksetActivityLock)
-        {
-            action(LinksetRoot);
-            foreach (BSPhysObject po in m_children)
-            {
-                if (action(po))
-                    break;
-            }
-        }
-        return ret;
-    }
-
-    // I am the root of a linkset and a new child is being added
-    // Called while LinkActivity is locked.
-    protected abstract void AddChildToLinkset(BSPhysObject child);
-    
-    // I am the root of a linkset and one of my children is being removed.
-    // Safe to call even if the child is not really in my linkset.
-    protected abstract void RemoveChildFromLinkset(BSPhysObject child);
-
-    // When physical properties are changed the linkset needs to recalculate
-    //   its internal properties.
-    // May be called at runtime or taint-time.
-    public virtual void Refresh(BSPhysObject requestor)
-    {
-        LinksetMass = ComputeLinksetMass();
-    }
-
-    // Flag denoting the linkset is in the process of being rebuilt.
-    // Used to know not the schedule a rebuild in the middle of a rebuild.
-    protected bool Rebuilding { get; set; }
-
-    // The object is going dynamic (physical). Do any setup necessary
-    //     for a dynamic linkset.
-    // Only the state of the passed object can be modified. The rest of the linkset
-    //     has not yet been fully constructed.
-    // Return 'true' if any properties updated on the passed object.
-    // Called at taint-time!
-    public abstract bool MakeDynamic(BSPhysObject child);
-
-    // The object is going static (non-physical). Do any setup necessary
-    //     for a static linkset.
-    // Return 'true' if any properties updated on the passed object.
-    // Called at taint-time!
-    public abstract bool MakeStatic(BSPhysObject child);
-
-    // Called when a parameter update comes from the physics engine for any object
-    //      of the linkset is received.
-    // Passed flag is update came from physics engine (true) or the user (false).
-    // Called at taint-time!!
-    public abstract void UpdateProperties(BSPhysObject physObject, bool physicalUpdate);
-
-    // Routine used when rebuilding the body of the root of the linkset
-    // Destroy all the constraints have have been made to root.
-    // This is called when the root body is changing.
-    // Returns 'true' of something was actually removed and would need restoring
-    // Called at taint-time!!
-    public abstract bool RemoveBodyDependencies(BSPrim child);
-
-    // Companion to RemoveBodyDependencies(). If RemoveBodyDependencies() returns 'true',
-    //     this routine will restore the removed constraints.
-    // Called at taint-time!!
-    public abstract void RestoreBodyDependencies(BSPrim child);
-
-    // ================================================================
-    protected virtual float ComputeLinksetMass()
-    {
-        float mass = LinksetRoot.RawMass;
-        if (HasAnyChildren)
-        {
-            lock (m_linksetActivityLock)
-            {
-                foreach (BSPhysObject bp in m_children)
-                {
-                    mass += bp.RawMass;
-                }
-            }
-        }
-        return mass;
-    }
-
-    protected virtual OMV.Vector3 ComputeLinksetCenterOfMass()
-    {
-        OMV.Vector3 com;
-        lock (m_linksetActivityLock)
-        {
-            com = LinksetRoot.Position * LinksetRoot.RawMass;
-            float totalMass = LinksetRoot.RawMass;
-
-            foreach (BSPhysObject bp in m_children)
-            {
-                com += bp.Position * bp.RawMass;
-                totalMass += bp.RawMass;
-            }
-            if (totalMass != 0f)
-                com /= totalMass;
-        }
-
-        return com;
-    }
-
-    protected virtual OMV.Vector3 ComputeLinksetGeometricCenter()
-    {
-        OMV.Vector3 com;
-        lock (m_linksetActivityLock)
-        {
-            com = LinksetRoot.Position;
-
-            foreach (BSPhysObject bp in m_children)
-            {
-                com += bp.Position * bp.RawMass;
-            }
-            com /= (m_children.Count + 1);
-        }
-
-        return com;
-    }
-
-    // Invoke the detailed logger and output something if it's enabled.
-    protected void DetailLog(string msg, params Object[] args)
-    {
-        if (PhysicsScene.PhysicsLogging.Enabled)
-            PhysicsScene.DetailLog(msg, args);
-    }
-
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSLinksetCompound.cs
deleted file mode 100644
index 9a977e6ad2..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSLinksetCompound.cs
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OpenSim.Framework;
-
-using OMV = OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-// When a child is linked, the relationship position of the child to the parent
-//    is remembered so the child's world position can be recomputed when it is
-//    removed from the linkset.
-sealed class BSLinksetCompoundInfo : BSLinksetInfo
-{
-    public OMV.Vector3 OffsetPos;
-    public OMV.Quaternion OffsetRot;
-    public BSLinksetCompoundInfo(OMV.Vector3 p, OMV.Quaternion r)
-    {
-        OffsetPos = p;
-        OffsetRot = r;
-    }
-    public override void Clear()
-    {
-        OffsetPos = OMV.Vector3.Zero;
-        OffsetRot = OMV.Quaternion.Identity;
-    }
-    public override string ToString()
-    {
-        StringBuilder buff = new StringBuilder();
-        buff.Append("<p=");
-        buff.Append(OffsetPos.ToString());
-        buff.Append(",r=");
-        buff.Append(OffsetRot.ToString());
-        buff.Append(">");
-        return buff.ToString();
-    }
-};
-
-public sealed class BSLinksetCompound : BSLinkset
-{
-    private static string LogHeader = "[BULLETSIM LINKSET COMPOUND]";
-
-    public BSLinksetCompound(BSScene scene, BSPhysObject parent) : base(scene, parent)
-    {
-    }
-
-    // For compound implimented linksets, if there are children, use compound shape for the root.
-    public override BSPhysicsShapeType PreferredPhysicalShape(BSPhysObject requestor)
-    { 
-        // Returning 'unknown' means we don't have a preference.
-        BSPhysicsShapeType ret = BSPhysicsShapeType.SHAPE_UNKNOWN;
-        if (IsRoot(requestor) && HasAnyChildren)
-        {
-            ret = BSPhysicsShapeType.SHAPE_COMPOUND;
-        }
-        // DetailLog("{0},BSLinksetCompound.PreferredPhysicalShape,call,shape={1}", LinksetRoot.LocalID, ret);
-        return ret;
-    }
-
-    // When physical properties are changed the linkset needs to recalculate
-    //   its internal properties.
-    public override void Refresh(BSPhysObject requestor)
-    {
-        base.Refresh(requestor);
-
-        // Something changed so do the rebuilding thing
-        // ScheduleRebuild();
-    }
-
-    // Schedule a refresh to happen after all the other taint processing.
-    private void ScheduleRebuild(BSPhysObject requestor)
-    {
-        DetailLog("{0},BSLinksetCompound.ScheduleRebuild,,rebuilding={1}", 
-                            requestor.LocalID, Rebuilding);
-        // When rebuilding, it is possible to set properties that would normally require a rebuild.
-        //    If already rebuilding, don't request another rebuild.
-        if (!Rebuilding)
-        {
-            PhysicsScene.PostTaintObject("BSLinksetCompound.ScheduleRebuild", LinksetRoot.LocalID, delegate()
-            {
-                if (HasAnyChildren)
-                    RecomputeLinksetCompound();
-            });
-        }
-    }
-
-    // The object is going dynamic (physical). Do any setup necessary
-    //     for a dynamic linkset.
-    // Only the state of the passed object can be modified. The rest of the linkset
-    //     has not yet been fully constructed.
-    // Return 'true' if any properties updated on the passed object.
-    // Called at taint-time!
-    public override bool MakeDynamic(BSPhysObject child)
-    {
-        bool ret = false;
-        DetailLog("{0},BSLinksetCompound.MakeDynamic,call,IsRoot={1}", child.LocalID, IsRoot(child));
-        if (IsRoot(child))
-        {
-            // The root is going dynamic. Make sure mass is properly set.
-            ScheduleRebuild(LinksetRoot);
-        }
-        else
-        {
-            // The origional prims are removed from the world as the shape of the root compound
-            //     shape takes over.
-            BulletSimAPI.AddToCollisionFlags2(child.PhysBody.ptr, CollisionFlags.CF_NO_CONTACT_RESPONSE);
-            BulletSimAPI.ForceActivationState2(child.PhysBody.ptr, ActivationState.DISABLE_SIMULATION);
-            // We don't want collisions from the old linkset children.
-            BulletSimAPI.RemoveFromCollisionFlags2(child.PhysBody.ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
-
-            child.PhysBody.collisionType = CollisionType.LinksetChild;
-
-            ret = true;
-        }
-        return ret;
-    }
-
-    // The object is going static (non-physical). Do any setup necessary for a static linkset.
-    // Return 'true' if any properties updated on the passed object.
-    // This doesn't normally happen -- OpenSim removes the objects from the physical
-    //     world if it is a static linkset.
-    // Called at taint-time!
-    public override bool MakeStatic(BSPhysObject child)
-    {
-        bool ret = false;
-        DetailLog("{0},BSLinksetCompound.MakeStatic,call,IsRoot={1}", child.LocalID, IsRoot(child));
-        if (IsRoot(child))
-        {
-            ScheduleRebuild(LinksetRoot);
-        }
-        else
-        {
-            // The non-physical children can come back to life.
-            BulletSimAPI.RemoveFromCollisionFlags2(child.PhysBody.ptr, CollisionFlags.CF_NO_CONTACT_RESPONSE);
-
-            child.PhysBody.collisionType = CollisionType.LinksetChild;
-
-            // Don't force activation so setting of DISABLE_SIMULATION can stay if used.
-            BulletSimAPI.Activate2(child.PhysBody.ptr, false);
-            ret = true;
-        }
-        return ret;
-    }
-
-    public override void UpdateProperties(BSPhysObject updated, bool physicalUpdate)
-    {
-        // The user moving a child around requires the rebuilding of the linkset compound shape
-        // One problem is this happens when a border is crossed -- the simulator implementation
-        //    is to store the position into the group which causes the move of the object
-        //    but it also means all the child positions get updated.
-        //    What would cause an unnecessary rebuild so we make sure the linkset is in a
-        //    region before bothering to do a rebuild.
-        if (!IsRoot(updated) 
-                && !physicalUpdate 
-                && PhysicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition))
-        {
-            updated.LinksetInfo = null;
-            ScheduleRebuild(updated);
-        }
-    }
-
-    // Routine called when rebuilding the body of some member of the linkset.
-    // Since we don't keep in world relationships, do nothing unless it's a child changing.
-    // Returns 'true' of something was actually removed and would need restoring
-    // Called at taint-time!!
-    public override bool RemoveBodyDependencies(BSPrim child)
-    {
-        bool ret = false;
-
-        DetailLog("{0},BSLinksetCompound.RemoveBodyDependencies,refreshIfChild,rID={1},rBody={2},isRoot={3}",
-                        child.LocalID, LinksetRoot.LocalID, LinksetRoot.PhysBody.ptr.ToString(), IsRoot(child));
-
-        if (!IsRoot(child))
-        {
-            // Because it is a convenient time, recompute child world position and rotation based on
-            //    its position in the linkset.
-            RecomputeChildWorldPosition(child, true);
-        }
-
-        // Cannot schedule a refresh/rebuild here because this routine is called when
-        //     the linkset is being rebuilt.
-        // InternalRefresh(LinksetRoot);
-
-        return ret;
-    }
-
-    // Companion to RemoveBodyDependencies(). If RemoveBodyDependencies() returns 'true',
-    //     this routine will restore the removed constraints.
-    // Called at taint-time!!
-    public override void RestoreBodyDependencies(BSPrim child)
-    {
-    }
-
-    // When the linkset is built, the child shape is added to the compound shape relative to the
-    //    root shape. The linkset then moves around but this does not move the actual child
-    //    prim. The child prim's location must be recomputed based on the location of the root shape.
-    private void RecomputeChildWorldPosition(BSPhysObject child, bool inTaintTime)
-    {
-        BSLinksetCompoundInfo lci = child.LinksetInfo as BSLinksetCompoundInfo;
-        if (lci != null)
-        {
-            if (inTaintTime)
-            {
-                OMV.Vector3 oldPos = child.RawPosition;
-                child.ForcePosition = LinksetRoot.RawPosition + lci.OffsetPos;
-                child.ForceOrientation = LinksetRoot.RawOrientation * lci.OffsetRot;
-                DetailLog("{0},BSLinksetCompound.RecomputeChildWorldPosition,oldPos={1},lci={2},newPos={3}",
-                                            child.LocalID, oldPos, lci, child.RawPosition);
-            }
-            else
-            {
-                // TaintedObject is not used here so the raw position is set now and not at taint-time.
-                child.Position = LinksetRoot.RawPosition + lci.OffsetPos;
-                child.Orientation = LinksetRoot.RawOrientation * lci.OffsetRot;
-            }
-        }
-        else
-        {
-            // This happens when children have been added to the linkset but the linkset
-            //     has not been constructed yet. So like, at taint time, adding children to a linkset
-            //     and then changing properties of the children (makePhysical, for instance)
-            //     but the post-print action of actually rebuilding the linkset has not yet happened.
-            // PhysicsScene.Logger.WarnFormat("{0} Restoring linkset child position failed because of no relative position computed. ID={1}",
-            //                                 LogHeader, child.LocalID);
-            DetailLog("{0},BSLinksetCompound.recomputeChildWorldPosition,noRelativePositonInfo", child.LocalID);
-        }
-    }
-
-    // ================================================================
-
-    // Add a new child to the linkset.
-    // Called while LinkActivity is locked.
-    protected override void AddChildToLinkset(BSPhysObject child)
-    {
-        if (!HasChild(child))
-        {
-            m_children.Add(child);
-
-            DetailLog("{0},BSLinksetCompound.AddChildToLinkset,call,child={1}", LinksetRoot.LocalID, child.LocalID);
-
-            // Rebuild the compound shape with the new child shape included
-            ScheduleRebuild(child);
-        }
-        return;
-    }
-
-    // Remove the specified child from the linkset.
-    // Safe to call even if the child is not really in the linkset.
-    protected override void RemoveChildFromLinkset(BSPhysObject child)
-    {
-        if (m_children.Remove(child))
-        {
-            DetailLog("{0},BSLinksetCompound.RemoveChildFromLinkset,call,rID={1},rBody={2},cID={3},cBody={4}",
-                            child.LocalID,
-                            LinksetRoot.LocalID, LinksetRoot.PhysBody.ptr.ToString(),
-                            child.LocalID, child.PhysBody.ptr.ToString());
-
-            // Cause the child's body to be rebuilt and thus restored to normal operation
-            RecomputeChildWorldPosition(child, false);
-            child.ForceBodyShapeRebuild(false);
-
-            if (!HasAnyChildren)
-            {
-                // The linkset is now empty. The root needs rebuilding.
-                LinksetRoot.ForceBodyShapeRebuild(false);
-            }
-            else
-            {
-                // Rebuild the compound shape with the child removed
-                ScheduleRebuild(child);
-            }
-        }
-        return;
-    }
-
-    // Called before the simulation step to make sure the compound based linkset
-    //    is all initialized.
-    // Constraint linksets are rebuilt every time.
-    // Note that this works for rebuilding just the root after a linkset is taken apart.
-    // Called at taint time!!
-    private void RecomputeLinksetCompound()
-    {
-        try
-        {
-            // Suppress rebuilding while rebuilding
-            Rebuilding = true;
-
-            // Cause the root shape to be rebuilt as a compound object with just the root in it
-            LinksetRoot.ForceBodyShapeRebuild(true);
-
-            DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,start,rBody={1},rShape={2},numChildren={3}",
-                            LinksetRoot.LocalID, LinksetRoot.PhysBody, LinksetRoot.PhysShape, NumberOfChildren);
-
-            // Add a shape for each of the other children in the linkset
-            ForEachMember(delegate(BSPhysObject cPrim)
-            {
-                if (!IsRoot(cPrim))
-                {
-                    // Compute the displacement of the child from the root of the linkset.
-                    // This info is saved in the child prim so the relationship does not
-                    //    change over time and the new child position can be computed
-                    //    when the linkset is being disassembled (the linkset may have moved).
-                    BSLinksetCompoundInfo lci = cPrim.LinksetInfo as BSLinksetCompoundInfo;
-                    if (lci == null)
-                    {
-                        // Each child position and rotation is given relative to the root.
-                        OMV.Quaternion invRootOrientation = OMV.Quaternion.Inverse(LinksetRoot.RawOrientation);
-                        OMV.Vector3 displacementPos = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation;
-                        OMV.Quaternion displacementRot = cPrim.RawOrientation * invRootOrientation;
-
-                        // Save relative position for recomputing child's world position after moving linkset.
-                        lci = new BSLinksetCompoundInfo(displacementPos, displacementRot);
-                        cPrim.LinksetInfo = lci;
-                        DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,creatingRelPos,lci={1}", cPrim.LocalID, lci);
-                    }
-
-                    DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,addMemberToShape,mID={1},mShape={2},dispPos={3},dispRot={4}",
-                        LinksetRoot.LocalID, cPrim.LocalID, cPrim.PhysShape, lci.OffsetPos, lci.OffsetRot);
-
-                    if (cPrim.PhysShape.isNativeShape)
-                    {
-                        // A native shape is turning into a hull collision shape because native
-                        //    shapes are not shared so we have to hullify it so it will be tracked
-                        //    and freed at the correct time. This also solves the scaling problem
-                        //    (native shapes scaled but hull/meshes are assumed to not be).
-                        // TODO: decide of the native shape can just be used in the compound shape.
-                        //    Use call to CreateGeomNonSpecial().
-                        BulletShape saveShape = cPrim.PhysShape;
-                        cPrim.PhysShape.Clear();        // Don't let the create free the child's shape
-                        // PhysicsScene.Shapes.CreateGeomNonSpecial(true, cPrim, null);
-                        PhysicsScene.Shapes.CreateGeomMeshOrHull(cPrim, null);
-                        BulletShape newShape = cPrim.PhysShape;
-                        cPrim.PhysShape = saveShape;
-                        BulletSimAPI.AddChildShapeToCompoundShape2(LinksetRoot.PhysShape.ptr, newShape.ptr, lci.OffsetPos, lci.OffsetRot);
-                    }
-                    else
-                    {
-                        // For the shared shapes (meshes and hulls), just use the shape in the child.
-                        // The reference count added here will be decremented when the compound shape
-                        //     is destroyed in BSShapeCollection (the child shapes are looped over and dereferenced).
-                        if (PhysicsScene.Shapes.ReferenceShape(cPrim.PhysShape))
-                        {
-                            PhysicsScene.Logger.ErrorFormat("{0} Rebuilt sharable shape when building linkset! Region={1}, primID={2}, shape={3}",
-                                                LogHeader, PhysicsScene.RegionName, cPrim.LocalID, cPrim.PhysShape);
-                        }
-                        BulletSimAPI.AddChildShapeToCompoundShape2(LinksetRoot.PhysShape.ptr, cPrim.PhysShape.ptr, lci.OffsetPos, lci.OffsetRot);
-                    }
-                }
-                return false;   // 'false' says to move onto the next child in the list
-            });
-
-            // With all of the linkset packed into the root prim, it has the mass of everyone.
-            LinksetMass = LinksetMass;
-            LinksetRoot.UpdatePhysicalMassProperties(LinksetMass, true);
-        }
-        finally
-        {
-            Rebuilding = false;
-        }
-
-        BulletSimAPI.RecalculateCompoundShapeLocalAabb2(LinksetRoot.PhysShape.ptr);
-
-        // DEBUG: see of inter-linkset collisions are causing problems for constraint linksets.
-        // BulletSimAPI.SetCollisionFilterMask2(LinksetRoot.BSBody.ptr, 
-        //                     (uint)CollisionFilterGroups.LinksetFilter, (uint)CollisionFilterGroups.LinksetMask);
-
-    }
-}
-}
\ No newline at end of file
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSLinksetConstraints.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSLinksetConstraints.cs
deleted file mode 100644
index 46ff99f98d..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSLinksetConstraints.cs
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OMV = OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public sealed class BSLinksetConstraints : BSLinkset
-{
-    // private static string LogHeader = "[BULLETSIM LINKSET CONSTRAINTS]";
-
-    public BSLinksetConstraints(BSScene scene, BSPhysObject parent) : base(scene, parent)
-    {
-    }
-
-    // When physical properties are changed the linkset needs to recalculate
-    //   its internal properties.
-    // This is queued in the 'post taint' queue so the
-    //   refresh will happen once after all the other taints are applied.
-    public override void Refresh(BSPhysObject requestor)
-    {
-        base.Refresh(requestor);
-
-        // Queue to happen after all the other taint processing
-        PhysicsScene.PostTaintObject("BSLinksetContraints.Refresh", requestor.LocalID, delegate()
-            {
-                if (HasAnyChildren && IsRoot(requestor))
-                    RecomputeLinksetConstraints();
-            });
-    }
-
-    // The object is going dynamic (physical). Do any setup necessary
-    //     for a dynamic linkset.
-    // Only the state of the passed object can be modified. The rest of the linkset
-    //     has not yet been fully constructed.
-    // Return 'true' if any properties updated on the passed object.
-    // Called at taint-time!
-    public override bool MakeDynamic(BSPhysObject child)
-    {
-        // What is done for each object in BSPrim is what we want.
-        return false;
-    }
-
-    // The object is going static (non-physical). Do any setup necessary for a static linkset.
-    // Return 'true' if any properties updated on the passed object.
-    // This doesn't normally happen -- OpenSim removes the objects from the physical
-    //     world if it is a static linkset.
-    // Called at taint-time!
-    public override bool MakeStatic(BSPhysObject child)
-    {
-        // What is done for each object in BSPrim is what we want.
-        return false;
-    }
-
-    // Called at taint-time!!
-    public override void UpdateProperties(BSPhysObject updated, bool inTaintTime)
-    {
-        // Nothing to do for constraints on property updates
-    }
-
-    // Routine called when rebuilding the body of some member of the linkset.
-    // Destroy all the constraints have have been made to root and set
-    //     up to rebuild the constraints before the next simulation step.
-    // Returns 'true' of something was actually removed and would need restoring
-    // Called at taint-time!!
-    public override bool RemoveBodyDependencies(BSPrim child)
-    {
-        bool ret = false;
-
-        DetailLog("{0},BSLinksetConstraint.RemoveBodyDependencies,removeChildrenForRoot,rID={1},rBody={2}",
-                                    child.LocalID, LinksetRoot.LocalID, LinksetRoot.PhysBody.ptr.ToString());
-
-        lock (m_linksetActivityLock)
-        {
-            // Just undo all the constraints for this linkset. Rebuild at the end of the step.
-            ret = PhysicallyUnlinkAllChildrenFromRoot(LinksetRoot);
-            // Cause the constraints, et al to be rebuilt before the next simulation step.
-            Refresh(LinksetRoot);
-        }
-        return ret;
-    }
-
-    // Companion to RemoveBodyDependencies(). If RemoveBodyDependencies() returns 'true',
-    // this routine will restore the removed constraints.
-    // Called at taint-time!!
-    public override void RestoreBodyDependencies(BSPrim child)
-    {
-        // The Refresh operation queued by RemoveBodyDependencies() will build any missing constraints.
-    }
-
-    // ================================================================
-
-    // Add a new child to the linkset.
-    // Called while LinkActivity is locked.
-    protected override void AddChildToLinkset(BSPhysObject child)
-    {
-        if (!HasChild(child))
-        {
-            m_children.Add(child);
-
-            DetailLog("{0},BSLinksetConstraints.AddChildToLinkset,call,child={1}", LinksetRoot.LocalID, child.LocalID);
-
-            // Cause constraints and assorted properties to be recomputed before the next simulation step.
-            Refresh(LinksetRoot);
-        }
-        return;
-    }
-
-    // Remove the specified child from the linkset.
-    // Safe to call even if the child is not really in my linkset.
-    protected override void RemoveChildFromLinkset(BSPhysObject child)
-    {
-        if (m_children.Remove(child))
-        {
-            BSPhysObject rootx = LinksetRoot; // capture the root and body as of now
-            BSPhysObject childx = child;
-
-            DetailLog("{0},BSLinksetConstraints.RemoveChildFromLinkset,call,rID={1},rBody={2},cID={3},cBody={4}",
-                            childx.LocalID,
-                            rootx.LocalID, rootx.PhysBody.ptr.ToString(),
-                            childx.LocalID, childx.PhysBody.ptr.ToString());
-
-            PhysicsScene.TaintedObject("BSLinksetConstraints.RemoveChildFromLinkset", delegate()
-            {
-                PhysicallyUnlinkAChildFromRoot(rootx, childx);
-            });
-            // See that the linkset parameters are recomputed at the end of the taint time.
-            Refresh(LinksetRoot);
-        }
-        else
-        {
-            // Non-fatal occurance.
-            // PhysicsScene.Logger.ErrorFormat("{0}: Asked to remove child from linkset that was not in linkset", LogHeader);
-        }
-        return;
-    }
-
-    // Create a constraint between me (root of linkset) and the passed prim (the child).
-    // Called at taint time!
-    private void PhysicallyLinkAChildToRoot(BSPhysObject rootPrim, BSPhysObject childPrim)
-    {
-        // Don't build the constraint when asked. Put it off until just before the simulation step.
-        Refresh(rootPrim);
-    }
-
-    private BSConstraint BuildConstraint(BSPhysObject rootPrim, BSPhysObject childPrim)
-    {
-        // Zero motion for children so they don't interpolate
-        childPrim.ZeroMotion(true);
-
-        // Relative position normalized to the root prim
-        // Essentually a vector pointing from center of rootPrim to center of childPrim
-        OMV.Vector3 childRelativePosition = childPrim.Position - rootPrim.Position;
-
-        // real world coordinate of midpoint between the two objects
-        OMV.Vector3 midPoint = rootPrim.Position + (childRelativePosition / 2);
-
-        DetailLog("{0},BSLinksetConstraint.BuildConstraint,taint,root={1},rBody={2},child={3},cBody={4},rLoc={5},cLoc={6},midLoc={7}",
-                                        rootPrim.LocalID,
-                                        rootPrim.LocalID, rootPrim.PhysBody.ptr.ToString(),
-                                        childPrim.LocalID, childPrim.PhysBody.ptr.ToString(),
-                                        rootPrim.Position, childPrim.Position, midPoint);
-
-        // create a constraint that allows no freedom of movement between the two objects
-        // http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=4818
-
-        BSConstraint6Dof constrain = new BSConstraint6Dof(
-                            PhysicsScene.World, rootPrim.PhysBody, childPrim.PhysBody, midPoint, true, true );
-                            // PhysicsScene.World, childPrim.BSBody, rootPrim.BSBody, midPoint, true, true );
-
-        /* NOTE: below is an attempt to build constraint with full frame computation, etc.
-         *     Using the midpoint is easier since it lets the Bullet code manipulate the transforms
-         *     of the objects.
-         * Code left for future programmers.
-        // ==================================================================================
-        // relative position normalized to the root prim
-        OMV.Quaternion invThisOrientation = OMV.Quaternion.Inverse(rootPrim.Orientation);
-        OMV.Vector3 childRelativePosition = (childPrim.Position - rootPrim.Position) * invThisOrientation;
-
-        // relative rotation of the child to the parent
-        OMV.Quaternion childRelativeRotation = invThisOrientation * childPrim.Orientation;
-        OMV.Quaternion inverseChildRelativeRotation = OMV.Quaternion.Inverse(childRelativeRotation);
-
-        DetailLog("{0},BSLinksetConstraint.PhysicallyLinkAChildToRoot,taint,root={1},child={2}", rootPrim.LocalID, rootPrim.LocalID, childPrim.LocalID);
-        BS6DofConstraint constrain = new BS6DofConstraint(
-                        PhysicsScene.World, rootPrim.Body, childPrim.Body,
-                        OMV.Vector3.Zero,
-                        OMV.Quaternion.Inverse(rootPrim.Orientation),
-                        OMV.Vector3.Zero,
-                        OMV.Quaternion.Inverse(childPrim.Orientation),
-                        true,
-                        true
-                        );
-        // ==================================================================================
-        */
-
-        PhysicsScene.Constraints.AddConstraint(constrain);
-
-        // zero linear and angular limits makes the objects unable to move in relation to each other
-        constrain.SetLinearLimits(OMV.Vector3.Zero, OMV.Vector3.Zero);
-        constrain.SetAngularLimits(OMV.Vector3.Zero, OMV.Vector3.Zero);
-
-        // tweek the constraint to increase stability
-        constrain.UseFrameOffset(BSParam.BoolNumeric(BSParam.LinkConstraintUseFrameOffset));
-        constrain.TranslationalLimitMotor(BSParam.BoolNumeric(BSParam.LinkConstraintEnableTransMotor),
-                        BSParam.LinkConstraintTransMotorMaxVel,
-                        BSParam.LinkConstraintTransMotorMaxForce);
-        constrain.SetCFMAndERP(BSParam.LinkConstraintCFM, BSParam.LinkConstraintERP);
-        if (BSParam.LinkConstraintSolverIterations != 0f)
-        {
-            constrain.SetSolverIterations(BSParam.LinkConstraintSolverIterations);
-        }
-        return constrain;
-    }
-
-    // Remove linkage between the linkset root and a particular child
-    // The root and child bodies are passed in because we need to remove the constraint between
-    //      the bodies that were present at unlink time.
-    // Called at taint time!
-    private bool PhysicallyUnlinkAChildFromRoot(BSPhysObject rootPrim, BSPhysObject childPrim)
-    {
-        bool ret = false;
-        DetailLog("{0},BSLinksetConstraint.PhysicallyUnlinkAChildFromRoot,taint,root={1},rBody={2},child={3},cBody={4}",
-                            rootPrim.LocalID,
-                            rootPrim.LocalID, rootPrim.PhysBody.ptr.ToString(),
-                            childPrim.LocalID, childPrim.PhysBody.ptr.ToString());
-
-        // Find the constraint for this link and get rid of it from the overall collection and from my list
-        if (PhysicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.PhysBody, childPrim.PhysBody))
-        {
-            // Make the child refresh its location
-            BulletSimAPI.PushUpdate2(childPrim.PhysBody.ptr);
-            ret = true;
-        }
-
-        return ret;
-    }
-
-    // Remove linkage between myself and any possible children I might have.
-    // Returns 'true' of any constraints were destroyed.
-    // Called at taint time!
-    private bool PhysicallyUnlinkAllChildrenFromRoot(BSPhysObject rootPrim)
-    {
-        DetailLog("{0},BSLinksetConstraint.PhysicallyUnlinkAllChildren,taint", rootPrim.LocalID);
-
-        return PhysicsScene.Constraints.RemoveAndDestroyConstraint(rootPrim.PhysBody);
-    }
-
-    // Call each of the constraints that make up this linkset and recompute the
-    //    various transforms and variables. Create constraints of not created yet.
-    // Called before the simulation step to make sure the constraint based linkset
-    //    is all initialized.
-    // Called at taint time!!
-    private void RecomputeLinksetConstraints()
-    {
-        float linksetMass = LinksetMass;
-        LinksetRoot.UpdatePhysicalMassProperties(linksetMass, true);
-
-        // DEBUG: see of inter-linkset collisions are causing problems
-        // BulletSimAPI.SetCollisionFilterMask2(LinksetRoot.BSBody.ptr, 
-        //                     (uint)CollisionFilterGroups.LinksetFilter, (uint)CollisionFilterGroups.LinksetMask);
-        DetailLog("{0},BSLinksetConstraint.RecomputeLinksetConstraints,set,rBody={1},linksetMass={2}",
-                            LinksetRoot.LocalID, LinksetRoot.PhysBody.ptr.ToString(), linksetMass);
-
-        foreach (BSPhysObject child in m_children)
-        {
-            // A child in the linkset physically shows the mass of the whole linkset.
-            // This allows Bullet to apply enough force on the child to move the whole linkset.
-            // (Also do the mass stuff before recomputing the constraint so mass is not zero.)
-            child.UpdatePhysicalMassProperties(linksetMass, true);
-
-            BSConstraint constrain;
-            if (!PhysicsScene.Constraints.TryGetConstraint(LinksetRoot.PhysBody, child.PhysBody, out constrain))
-            {
-                // If constraint doesn't exist yet, create it.
-                constrain = BuildConstraint(LinksetRoot, child);
-            }
-            constrain.RecomputeConstraintVariables(linksetMass);
-
-            // DEBUG: see of inter-linkset collisions are causing problems
-            // BulletSimAPI.SetCollisionFilterMask2(child.BSBody.ptr, 
-            //                 (uint)CollisionFilterGroups.LinksetFilter, (uint)CollisionFilterGroups.LinksetMask);
-
-            // BulletSimAPI.DumpConstraint2(PhysicsScene.World.ptr, constrain.Constraint.ptr);    // DEBUG DEBUG
-        }
-
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSMaterials.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSMaterials.cs
deleted file mode 100644
index d7941b6f1a..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSMaterials.cs
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Reflection;
-using Nini.Config;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-public struct MaterialAttributes
-{
-    // Material type values that correspond with definitions for LSL
-    public enum Material : int
-    {
-        Stone = 0,
-        Metal,
-        Glass,
-        Wood,
-        Flesh,
-        Plastic,
-        Rubber,
-        Light,
-        // Hereafter are BulletSim additions
-        Avatar,
-        NumberOfTypes   // the count of types in the enum.
-    }
-
-    // Names must be in the order of the above enum.
-    // These names must coorespond to the lower case field names in the MaterialAttributes
-    //     structure as reflection is used to select the field to put the value in.
-    public static readonly string[] MaterialAttribs = { "Density", "Friction", "Restitution"};
-
-    public MaterialAttributes(string t, float d, float f, float r)
-    {
-        type = t;
-        density = d;
-        friction = f;
-        restitution = r;
-    }
-    public string type;
-    public float density;
-    public float friction;
-    public float restitution;
-}
-
-public static class BSMaterials
-{
-    // Attributes for each material type
-    private static readonly MaterialAttributes[] Attributes;
-
-    // Map of material name to material type code
-    public static readonly Dictionary<string, MaterialAttributes.Material> MaterialMap;
-
-    static BSMaterials()
-    {
-        // Attribute sets for both the non-physical and physical instances of materials.
-        Attributes = new MaterialAttributes[(int)MaterialAttributes.Material.NumberOfTypes * 2];
-
-        // Map of name to type code.
-        MaterialMap = new Dictionary<string, MaterialAttributes.Material>();
-        MaterialMap.Add("Stone", MaterialAttributes.Material.Stone);
-        MaterialMap.Add("Metal", MaterialAttributes.Material.Metal);
-        MaterialMap.Add("Glass", MaterialAttributes.Material.Glass);
-        MaterialMap.Add("Wood", MaterialAttributes.Material.Wood);
-        MaterialMap.Add("Flesh", MaterialAttributes.Material.Flesh);
-        MaterialMap.Add("Plastic", MaterialAttributes.Material.Plastic);
-        MaterialMap.Add("Rubber", MaterialAttributes.Material.Rubber);
-        MaterialMap.Add("Light", MaterialAttributes.Material.Light);
-        MaterialMap.Add("Avatar", MaterialAttributes.Material.Avatar);
-    }
-
-    // This is where all the default material attributes are defined.
-    public static void InitializeFromDefaults(ConfigurationParameters parms)
-    {
-        // Values from http://wiki.secondlife.com/wiki/PRIM_MATERIAL
-        float dDensity = parms.defaultDensity;
-        float dFriction = parms.defaultFriction;
-        float dRestitution = parms.defaultRestitution;
-        Attributes[(int)MaterialAttributes.Material.Stone] =
-                    new MaterialAttributes("stone",dDensity, 0.8f, 0.4f);
-        Attributes[(int)MaterialAttributes.Material.Metal] =
-                    new MaterialAttributes("metal",dDensity, 0.3f, 0.4f);
-        Attributes[(int)MaterialAttributes.Material.Glass] =
-                    new MaterialAttributes("glass",dDensity, 0.2f, 0.7f);
-        Attributes[(int)MaterialAttributes.Material.Wood] =
-                    new MaterialAttributes("wood",dDensity, 0.6f, 0.5f);
-        Attributes[(int)MaterialAttributes.Material.Flesh] =
-                    new MaterialAttributes("flesh",dDensity, 0.9f, 0.3f);
-        Attributes[(int)MaterialAttributes.Material.Plastic] =
-                    new MaterialAttributes("plastic",dDensity, 0.4f, 0.7f);
-        Attributes[(int)MaterialAttributes.Material.Rubber] =
-                    new MaterialAttributes("rubber",dDensity, 0.9f, 0.9f);
-        Attributes[(int)MaterialAttributes.Material.Light] =
-                    new MaterialAttributes("light",dDensity, dFriction, dRestitution);
-        Attributes[(int)MaterialAttributes.Material.Avatar] =
-                    new MaterialAttributes("avatar",3.5f, 0.2f, 0f);
-
-        Attributes[(int)MaterialAttributes.Material.Stone + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("stonePhysical",dDensity, 0.8f, 0.4f);
-        Attributes[(int)MaterialAttributes.Material.Metal + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("metalPhysical",dDensity, 0.3f, 0.4f);
-        Attributes[(int)MaterialAttributes.Material.Glass + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("glassPhysical",dDensity, 0.2f, 0.7f);
-        Attributes[(int)MaterialAttributes.Material.Wood + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("woodPhysical",dDensity, 0.6f, 0.5f);
-        Attributes[(int)MaterialAttributes.Material.Flesh + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("fleshPhysical",dDensity, 0.9f, 0.3f);
-        Attributes[(int)MaterialAttributes.Material.Plastic + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("plasticPhysical",dDensity, 0.4f, 0.7f);
-        Attributes[(int)MaterialAttributes.Material.Rubber + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("rubberPhysical",dDensity, 0.9f, 0.9f);
-        Attributes[(int)MaterialAttributes.Material.Light + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("lightPhysical",dDensity, dFriction, dRestitution);
-        Attributes[(int)MaterialAttributes.Material.Avatar + (int)MaterialAttributes.Material.NumberOfTypes] =
-                    new MaterialAttributes("avatarPhysical",3.5f, 0.2f, 0f);
-    }
-
-    // Under the [BulletSim] section, one can change the individual material
-    //    attribute values. The format of the configuration parameter is:
-    //        <materialName><Attribute>["Physical"] = floatValue
-    //    For instance:
-    //        [BulletSim]
-    //             StoneFriction = 0.2
-    //             FleshRestitutionPhysical = 0.8
-    // Materials can have different parameters for their static and
-    //    physical instantiations. When setting the non-physical value,
-    //    both values are changed. Setting the physical value only changes
-    //    the physical value.
-    public static void InitializefromParameters(IConfig pConfig)
-    {
-        foreach (KeyValuePair<string, MaterialAttributes.Material> kvp in MaterialMap)
-        {
-            string matName = kvp.Key;
-            foreach (string attribName in MaterialAttributes.MaterialAttribs)
-            {
-                string paramName = matName + attribName;
-                if (pConfig.Contains(paramName))
-                {
-                    float paramValue = pConfig.GetFloat(paramName);
-                    SetAttributeValue((int)kvp.Value, attribName, paramValue);
-                    // set the physical value also
-                    SetAttributeValue((int)kvp.Value + (int)MaterialAttributes.Material.NumberOfTypes, attribName, paramValue);
-                }
-                paramName += "Physical";
-                if (pConfig.Contains(paramName))
-                {
-                    float paramValue = pConfig.GetFloat(paramName);
-                    SetAttributeValue((int)kvp.Value + (int)MaterialAttributes.Material.NumberOfTypes, attribName, paramValue);
-                }
-            }
-        }
-    }
-
-    // Use reflection to set the value in the attribute structure.
-    private static void SetAttributeValue(int matType, string attribName, float val)
-    {
-        MaterialAttributes thisAttrib = Attributes[matType];
-        FieldInfo fieldInfo = thisAttrib.GetType().GetField(attribName.ToLower());
-        if (fieldInfo != null)
-        {
-            fieldInfo.SetValue(thisAttrib, val);
-            Attributes[matType] = thisAttrib;
-        }
-    }
-
-    // Given a material type, return a structure of attributes.
-    public static MaterialAttributes GetAttributes(MaterialAttributes.Material type, bool isPhysical)
-    {
-        int ind = (int)type;
-        if (isPhysical) ind += (int)MaterialAttributes.Material.NumberOfTypes;
-        return Attributes[ind];
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSMotors.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSMotors.cs
deleted file mode 100644
index 7abc9b2b78..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSMotors.cs
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-using OpenSim.Framework;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public abstract class BSMotor
-{
-    // Timescales and other things can be turned off by setting them to 'infinite'.
-    public const float Infinite = 12345.6f;
-    public readonly static Vector3 InfiniteVector = new Vector3(BSMotor.Infinite, BSMotor.Infinite, BSMotor.Infinite);
-
-    public BSMotor(string useName)
-    {
-        UseName = useName;
-        PhysicsScene = null;
-        Enabled = true;
-    }
-    public virtual bool Enabled { get; set; }
-    public virtual void Reset() { }
-    public virtual void Zero() { }
-    public virtual void GenerateTestOutput(float timeStep) { }
-
-    // A name passed at motor creation for easily identifyable debugging messages.
-    public string UseName { get; private set; }
-
-    // Used only for outputting debug information. Might not be set so check for null.
-    public BSScene PhysicsScene { get; set; }
-    protected void MDetailLog(string msg, params Object[] parms)
-    {
-        if (PhysicsScene != null)
-        {
-            if (PhysicsScene.VehicleLoggingEnabled)
-            {
-                PhysicsScene.DetailLog(msg, parms);
-            }
-        }
-    }
-}
-
-// Motor which moves CurrentValue to TargetValue over TimeScale seconds.
-// The TargetValue decays in TargetValueDecayTimeScale and
-//     the CurrentValue will be held back by FrictionTimeScale.
-// This motor will "zero itself" over time in that the targetValue will
-//    decay to zero and the currentValue will follow it to that zero.
-//    The overall effect is for the returned correction value to go from large
-//    values (the total difference between current and target minus friction)
-//    to small and eventually zero values.
-// TimeScale and TargetDelayTimeScale may be 'infinite' which means no decay.
-
-// For instance, if something is moving at speed X and the desired speed is Y,
-//    CurrentValue is X and TargetValue is Y. As the motor is stepped, new
-//    values of CurrentValue are returned that approach the TargetValue.
-// The feature of decaying TargetValue is so vehicles will eventually
-//    come to a stop rather than run forever. This can be disabled by
-//    setting TargetValueDecayTimescale to 'infinite'.
-// The change from CurrentValue to TargetValue is linear over TimeScale seconds.
-public class BSVMotor : BSMotor
-{
-    // public Vector3 FrameOfReference { get; set; }
-    // public Vector3 Offset { get; set; }
-
-    public virtual float TimeScale { get; set; }
-    public virtual float TargetValueDecayTimeScale { get; set; }
-    public virtual Vector3 FrictionTimescale { get; set; }
-    public virtual float Efficiency { get; set; }
-
-    public virtual float ErrorZeroThreshold { get; set; }
-
-    public virtual Vector3 TargetValue { get; protected set; }
-    public virtual Vector3 CurrentValue { get; protected set; }
-    public virtual Vector3 LastError { get; protected set; }
-
-    public virtual bool ErrorIsZero
-    { get {
-        return (LastError == Vector3.Zero || LastError.LengthSquared() <= ErrorZeroThreshold);
-        }
-    }
-
-    public BSVMotor(string useName)
-        : base(useName)
-    {
-        TimeScale = TargetValueDecayTimeScale = BSMotor.Infinite;
-        Efficiency = 1f;
-        FrictionTimescale = BSMotor.InfiniteVector;
-        CurrentValue = TargetValue = Vector3.Zero;
-        ErrorZeroThreshold = 0.001f;
-    }
-    public BSVMotor(string useName, float timeScale, float decayTimeScale, Vector3 frictionTimeScale, float efficiency) 
-        : this(useName)
-    {
-        TimeScale = timeScale;
-        TargetValueDecayTimeScale = decayTimeScale;
-        FrictionTimescale = frictionTimeScale;
-        Efficiency = efficiency;
-        CurrentValue = TargetValue = Vector3.Zero;
-    }
-    public void SetCurrent(Vector3 current)
-    {
-        CurrentValue = current;
-    }
-    public void SetTarget(Vector3 target)
-    {
-        TargetValue = target;
-    }
-    public override void Zero()
-    {
-        base.Zero();
-        CurrentValue = TargetValue = Vector3.Zero;
-    }
-
-    // Compute the next step and return the new current value
-    public virtual Vector3 Step(float timeStep)
-    {
-        if (!Enabled) return TargetValue;
-
-        Vector3 origTarget = TargetValue;       // DEBUG
-        Vector3 origCurrVal = CurrentValue;     // DEBUG
-
-        Vector3 correction = Vector3.Zero;
-        Vector3 error = TargetValue - CurrentValue;
-        if (!error.ApproxEquals(Vector3.Zero, ErrorZeroThreshold))
-        {
-            correction = Step(timeStep, error);
-
-            CurrentValue += correction;
-
-            // The desired value reduces to zero which also reduces the difference with current.
-            // If the decay time is infinite, don't decay at all.
-            float decayFactor = 0f;
-            if (TargetValueDecayTimeScale != BSMotor.Infinite)
-            {
-                decayFactor = (1.0f / TargetValueDecayTimeScale) * timeStep;
-                TargetValue *= (1f - decayFactor);
-            }
-
-            // The amount we can correct the error is reduced by the friction
-            Vector3 frictionFactor = Vector3.Zero;
-            if (FrictionTimescale != BSMotor.InfiniteVector)
-            {
-                // frictionFactor = (Vector3.One / FrictionTimescale) * timeStep;
-                // Individual friction components can be 'infinite' so compute each separately.
-                frictionFactor.X = (FrictionTimescale.X == BSMotor.Infinite) ? 0f : (1f / FrictionTimescale.X);
-                frictionFactor.Y = (FrictionTimescale.Y == BSMotor.Infinite) ? 0f : (1f / FrictionTimescale.Y);
-                frictionFactor.Z = (FrictionTimescale.Z == BSMotor.Infinite) ? 0f : (1f / FrictionTimescale.Z);
-                frictionFactor *= timeStep;
-                CurrentValue *= (Vector3.One - frictionFactor);
-            }
-
-            MDetailLog("{0},  BSVMotor.Step,nonZero,{1},origCurr={2},origTarget={3},timeStep={4},err={5},corr={6}",
-                                BSScene.DetailLogZero, UseName, origCurrVal, origTarget,
-                                timeStep, error, correction);
-            MDetailLog("{0},  BSVMotor.Step,nonZero,{1},tgtDecayTS={2},decayFact={3},frictTS={4},frictFact={5},tgt={6},curr={7}",
-                                BSScene.DetailLogZero, UseName,
-                                TargetValueDecayTimeScale, decayFactor, FrictionTimescale, frictionFactor,
-                                TargetValue, CurrentValue);
-        }
-        else
-        {
-            // Difference between what we have and target is small. Motor is done.
-            CurrentValue = TargetValue;
-            MDetailLog("{0},  BSVMotor.Step,zero,{1},origTgt={2},origCurr={3},ret={4}",
-                        BSScene.DetailLogZero, UseName, origCurrVal, origTarget, CurrentValue);
-        }
-
-        return CurrentValue;
-    }
-    public virtual Vector3 Step(float timeStep, Vector3 error)
-    {
-        if (!Enabled) return Vector3.Zero;
-
-        LastError = error;
-        Vector3 returnCorrection = Vector3.Zero;
-        if (!error.ApproxEquals(Vector3.Zero, ErrorZeroThreshold))
-        {
-            // correction =  error / secondsItShouldTakeToCorrect
-            Vector3 correctionAmount;
-            if (TimeScale == 0f || TimeScale == BSMotor.Infinite)
-                correctionAmount = error * timeStep;
-            else
-                correctionAmount = error / TimeScale * timeStep;
-
-            returnCorrection = correctionAmount;
-            MDetailLog("{0},  BSVMotor.Step,nonZero,{1},timeStep={2},timeScale={3},err={4},corr={5}",
-                                    BSScene.DetailLogZero, UseName, timeStep, TimeScale, error, correctionAmount);
-        }
-        return returnCorrection;
-    }
-
-    // The user sets all the parameters and calls this which outputs values until error is zero.
-    public override void GenerateTestOutput(float timeStep)
-    {
-        // maximum number of outputs to generate.
-        int maxOutput = 50;
-        MDetailLog("{0},BSVMotor.Test,{1},===================================== BEGIN Test Output", BSScene.DetailLogZero, UseName);
-        MDetailLog("{0},BSVMotor.Test,{1},timeScale={2},targDlyTS={3},frictTS={4},eff={5},curr={6},tgt={7}",
-                                BSScene.DetailLogZero, UseName,
-                                TimeScale, TargetValueDecayTimeScale, FrictionTimescale, Efficiency, 
-                                CurrentValue, TargetValue);
-
-        LastError = BSMotor.InfiniteVector;
-        while (maxOutput-- > 0 && !LastError.ApproxEquals(Vector3.Zero, ErrorZeroThreshold))
-        {
-            Vector3 lastStep = Step(timeStep);
-            MDetailLog("{0},BSVMotor.Test,{1},cur={2},tgt={3},lastError={4},lastStep={5}",
-                            BSScene.DetailLogZero, UseName, CurrentValue, TargetValue, LastError, lastStep);
-        }
-        MDetailLog("{0},BSVMotor.Test,{1},===================================== END Test Output", BSScene.DetailLogZero, UseName);
-        
-
-    }
-
-    public override string ToString()
-    {
-        return String.Format("<{0},curr={1},targ={2},decayTS={3},frictTS={4}>",
-            UseName, CurrentValue, TargetValue, TargetValueDecayTimeScale, FrictionTimescale);
-    }
-}
-
-public class BSFMotor : BSMotor
-{
-    public float TimeScale { get; set; }
-    public float DecayTimeScale { get; set; }
-    public float Friction { get; set; }
-    public float Efficiency { get; set; }
-
-    public float Target { get; private set; }
-    public float CurrentValue { get; private set; }
-
-    public BSFMotor(string useName, float timeScale, float decayTimescale, float friction, float efficiency)
-        : base(useName)
-    {
-    }
-    public void SetCurrent(float target)
-    {
-    }
-    public void SetTarget(float target)
-    {
-    }
-    public virtual float Step(float timeStep)
-    {
-        return 0f;
-    }
-}
-
-// Proportional, Integral, Derivitive Motor
-// Good description at http://www.answers.com/topic/pid-controller . Includes processes for choosing p, i and d factors.
-public class BSPIDVMotor : BSVMotor
-{
-    // Larger makes more overshoot, smaller means converge quicker. Range of 0.1 to 10.
-    public Vector3 proportionFactor { get; set; }
-    public Vector3 integralFactor { get; set; }
-    public Vector3 derivFactor { get; set; }
-
-    // Arbritrary factor range.
-    // EfficiencyHigh means move quickly to the correct number. EfficiencyLow means might over correct.
-    public float EfficiencyHigh = 0.4f;
-    public float EfficiencyLow = 4.0f;
-
-    // Running integration of the error
-    Vector3 RunningIntegration { get; set; }
-
-    public BSPIDVMotor(string useName)
-        : base(useName)
-    {
-        proportionFactor = new Vector3(1.00f, 1.00f, 1.00f);
-        integralFactor = new Vector3(1.00f, 1.00f, 1.00f);
-        derivFactor = new Vector3(1.00f, 1.00f, 1.00f);
-        RunningIntegration = Vector3.Zero;
-        LastError = Vector3.Zero;
-    }
-
-    public override void Zero()
-    {
-        base.Zero();
-    }
-
-    public override float Efficiency
-    {
-        get { return base.Efficiency; }
-        set
-        {
-            base.Efficiency = Util.Clamp(value, 0f, 1f);
-            // Compute factors based on efficiency.
-            // If efficiency is high (1f), use a factor value that moves the error value to zero with little overshoot.
-            // If efficiency is low (0f), use a factor value that overcorrects.
-            // TODO: might want to vary contribution of different factor depending on efficiency.
-            float factor = ((1f - this.Efficiency) * EfficiencyHigh + EfficiencyLow) / 3f;
-            // float factor = (1f - this.Efficiency) * EfficiencyHigh + EfficiencyLow;
-            proportionFactor = new Vector3(factor, factor, factor);
-            integralFactor = new Vector3(factor, factor, factor);
-            derivFactor = new Vector3(factor, factor, factor);
-        }
-    }
-
-    // Ignore Current and Target Values and just advance the PID computation on this error.
-    public override Vector3 Step(float timeStep, Vector3 error)
-    {
-        if (!Enabled) return Vector3.Zero;
-
-        // Add up the error so we can integrate over the accumulated errors
-        RunningIntegration += error * timeStep;
-
-        // A simple derivitive is the rate of change from the last error.
-        Vector3 derivFactor = (error - LastError) * timeStep;
-        LastError = error;
-
-        // Correction = -(proportionOfPresentError +      accumulationOfPastError    +     rateOfChangeOfError)
-        Vector3 ret   = -(
-                          error * proportionFactor
-                        + RunningIntegration * integralFactor 
-                        + derivFactor * derivFactor
-                        );
-
-        return ret;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSParam.cs
deleted file mode 100644
index 5e93a0335a..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSParam.cs
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OpenSim.Region.Physics.Manager;
-
-using OpenMetaverse;
-using Nini.Config;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public static class BSParam
-{
-    // Level of Detail values kept as float because that's what the Meshmerizer wants
-    public static float MeshLOD { get; private set; }
-    public static float MeshMegaPrimLOD { get; private set; }
-    public static float MeshMegaPrimThreshold { get; private set; }
-    public static float SculptLOD { get; private set; }
-
-    public static float MinimumObjectMass { get; private set; }
-    public static float MaximumObjectMass { get; private set; }
-
-    public static float LinearDamping { get; private set; }
-    public static float AngularDamping { get; private set; }
-    public static float DeactivationTime { get; private set; }
-    public static float LinearSleepingThreshold { get; private set; }
-    public static float AngularSleepingThreshold { get; private set; }
-	public static float CcdMotionThreshold { get; private set; }
-	public static float CcdSweptSphereRadius { get; private set; }
-    public static float ContactProcessingThreshold { get; private set; }
-
-    public static bool ShouldMeshSculptedPrim { get; private set; }   // cause scuplted prims to get meshed
-    public static bool ShouldForceSimplePrimMeshing { get; private set; }   // if a cube or sphere, let Bullet do internal shapes
-    public static bool ShouldUseHullsForPhysicalObjects { get; private set; }   // 'true' if should create hulls for physical objects
-
-    public static float TerrainImplementation { get; private set; }
-    public static float TerrainFriction { get; private set; }
-    public static float TerrainHitFraction { get; private set; }
-    public static float TerrainRestitution { get; private set; }
-    public static float TerrainCollisionMargin { get; private set; }
-
-    // Avatar parameters
-    public static float AvatarFriction { get; private set; }
-    public static float AvatarStandingFriction { get; private set; }
-    public static float AvatarDensity { get; private set; }
-    public static float AvatarRestitution { get; private set; }
-    public static float AvatarCapsuleWidth { get; private set; }
-    public static float AvatarCapsuleDepth { get; private set; }
-    public static float AvatarCapsuleHeight { get; private set; }
-	public static float AvatarContactProcessingThreshold { get; private set; }
-
-    public static float VehicleAngularDamping { get; private set; }
-
-    public static float LinksetImplementation { get; private set; }
-    public static float LinkConstraintUseFrameOffset { get; private set; }
-    public static float LinkConstraintEnableTransMotor { get; private set; }
-    public static float LinkConstraintTransMotorMaxVel { get; private set; }
-    public static float LinkConstraintTransMotorMaxForce { get; private set; }
-    public static float LinkConstraintERP { get; private set; }
-    public static float LinkConstraintCFM { get; private set; }
-    public static float LinkConstraintSolverIterations { get; private set; }
-
-    public static float PID_D { get; private set; }    // derivative
-    public static float PID_P { get; private set; }    // proportional
-
-    public delegate void ParamUser(BSScene scene, IConfig conf, string paramName, float val);
-    public delegate float ParamGet(BSScene scene);
-    public delegate void ParamSet(BSScene scene, string paramName, uint localID, float val);
-    public delegate void SetOnObject(BSScene scene, BSPhysObject obj, float val);
-
-    public struct ParameterDefn
-    {
-        public string name;         // string name of the parameter
-        public string desc;         // a short description of what the parameter means
-        public float defaultValue;  // default value if not specified anywhere else
-        public ParamUser userParam; // get the value from the configuration file
-        public ParamGet getter;     // return the current value stored for this parameter
-        public ParamSet setter;     // set the current value for this parameter
-        public SetOnObject onObject;    // set the value on an object in the physical domain
-        public ParameterDefn(string n, string d, float v, ParamUser u, ParamGet g, ParamSet s)
-        {
-            name = n;
-            desc = d;
-            defaultValue = v;
-            userParam = u;
-            getter = g;
-            setter = s;
-            onObject = null;
-        }
-        public ParameterDefn(string n, string d, float v, ParamUser u, ParamGet g, ParamSet s, SetOnObject o)
-        {
-            name = n;
-            desc = d;
-            defaultValue = v;
-            userParam = u;
-            getter = g;
-            setter = s;
-            onObject = o;
-        }
-    }
-
-    // List of all of the externally visible parameters.
-    // For each parameter, this table maps a text name to getter and setters.
-    // To add a new externally referencable/settable parameter, add the paramter storage
-    //    location somewhere in the program and make an entry in this table with the
-    //    getters and setters.
-    // It is easiest to find an existing definition and copy it.
-    // Parameter values are floats. Booleans are converted to a floating value.
-    //
-    // A ParameterDefn() takes the following parameters:
-    //    -- the text name of the parameter. This is used for console input and ini file.
-    //    -- a short text description of the parameter. This shows up in the console listing.
-    //    -- a default value (float)
-    //    -- a delegate for fetching the parameter from the ini file.
-    //          Should handle fetching the right type from the ini file and converting it.
-    //    -- a delegate for getting the value as a float
-    //    -- a delegate for setting the value from a float
-    //    -- an optional delegate to update the value in the world. Most often used to
-    //          push the new value to an in-world object.
-    //
-    // The single letter parameters for the delegates are:
-    //    s = BSScene
-    //    o = BSPhysObject
-    //    p = string parameter name
-    //    l = localID of referenced object
-    //    v = value (float)
-    //    cf = parameter configuration class (for fetching values from ini file)
-    private static ParameterDefn[] ParameterDefinitions =
-    {
-        new ParameterDefn("MeshSculptedPrim", "Whether to create meshes for sculpties",
-            ConfigurationParameters.numericTrue,
-            (s,cf,p,v) => { ShouldMeshSculptedPrim = cf.GetBoolean(p, BSParam.BoolNumeric(v)); },
-            (s) => { return BSParam.NumericBool(ShouldMeshSculptedPrim); },
-            (s,p,l,v) => { ShouldMeshSculptedPrim = BSParam.BoolNumeric(v); } ),
-        new ParameterDefn("ForceSimplePrimMeshing", "If true, only use primitive meshes for objects",
-            ConfigurationParameters.numericFalse,
-            (s,cf,p,v) => { ShouldForceSimplePrimMeshing = cf.GetBoolean(p, BSParam.BoolNumeric(v)); },
-            (s) => { return BSParam.NumericBool(ShouldForceSimplePrimMeshing); },
-            (s,p,l,v) => { ShouldForceSimplePrimMeshing = BSParam.BoolNumeric(v); } ),
-        new ParameterDefn("UseHullsForPhysicalObjects", "If true, create hulls for physical objects",
-            ConfigurationParameters.numericTrue,
-            (s,cf,p,v) => { ShouldUseHullsForPhysicalObjects = cf.GetBoolean(p, BSParam.BoolNumeric(v)); },
-            (s) => { return BSParam.NumericBool(ShouldUseHullsForPhysicalObjects); },
-            (s,p,l,v) => { ShouldUseHullsForPhysicalObjects = BSParam.BoolNumeric(v); } ),
-
-        new ParameterDefn("MeshLevelOfDetail", "Level of detail to render meshes (32, 16, 8 or 4. 32=most detailed)",
-            8f,
-            (s,cf,p,v) => { MeshLOD = (float)cf.GetInt(p, (int)v); },
-            (s) => { return MeshLOD; },
-            (s,p,l,v) => { MeshLOD = v; } ),
-        new ParameterDefn("MeshLevelOfDetailMegaPrim", "Level of detail to render meshes larger than threshold meters",
-            16f,
-            (s,cf,p,v) => { MeshMegaPrimLOD = (float)cf.GetInt(p, (int)v); },
-            (s) => { return MeshMegaPrimLOD; },
-            (s,p,l,v) => { MeshMegaPrimLOD = v; } ),
-        new ParameterDefn("MeshLevelOfDetailMegaPrimThreshold", "Size (in meters) of a mesh before using MeshMegaPrimLOD",
-            10f,
-            (s,cf,p,v) => { MeshMegaPrimThreshold = (float)cf.GetInt(p, (int)v); },
-            (s) => { return MeshMegaPrimThreshold; },
-            (s,p,l,v) => { MeshMegaPrimThreshold = v; } ),
-        new ParameterDefn("SculptLevelOfDetail", "Level of detail to render sculpties (32, 16, 8 or 4. 32=most detailed)",
-            32f,
-            (s,cf,p,v) => { SculptLOD = (float)cf.GetInt(p, (int)v); },
-            (s) => { return SculptLOD; },
-            (s,p,l,v) => { SculptLOD = v; } ),
-
-        new ParameterDefn("MaxSubStep", "In simulation step, maximum number of substeps",
-            10f,
-            (s,cf,p,v) => { s.m_maxSubSteps = cf.GetInt(p, (int)v); },
-            (s) => { return (float)s.m_maxSubSteps; },
-            (s,p,l,v) => { s.m_maxSubSteps = (int)v; } ),
-        new ParameterDefn("FixedTimeStep", "In simulation step, seconds of one substep (1/60)",
-            1f / 60f,
-            (s,cf,p,v) => { s.m_fixedTimeStep = cf.GetFloat(p, v); },
-            (s) => { return (float)s.m_fixedTimeStep; },
-            (s,p,l,v) => { s.m_fixedTimeStep = v; } ),
-        new ParameterDefn("MaxCollisionsPerFrame", "Max collisions returned at end of each frame",
-            2048f,
-            (s,cf,p,v) => { s.m_maxCollisionsPerFrame = cf.GetInt(p, (int)v); },
-            (s) => { return (float)s.m_maxCollisionsPerFrame; },
-            (s,p,l,v) => { s.m_maxCollisionsPerFrame = (int)v; } ),
-        new ParameterDefn("MaxUpdatesPerFrame", "Max updates returned at end of each frame",
-            8000f,
-            (s,cf,p,v) => { s.m_maxUpdatesPerFrame = cf.GetInt(p, (int)v); },
-            (s) => { return (float)s.m_maxUpdatesPerFrame; },
-            (s,p,l,v) => { s.m_maxUpdatesPerFrame = (int)v; } ),
-        new ParameterDefn("MaxTaintsToProcessPerStep", "Number of update taints to process before each simulation step",
-            500f,
-            (s,cf,p,v) => { s.m_taintsToProcessPerStep = cf.GetInt(p, (int)v); },
-            (s) => { return (float)s.m_taintsToProcessPerStep; },
-            (s,p,l,v) => { s.m_taintsToProcessPerStep = (int)v; } ),
-        new ParameterDefn("MinObjectMass", "Minimum object mass (0.0001)",
-            0.0001f,
-            (s,cf,p,v) => { MinimumObjectMass = cf.GetFloat(p, v); },
-            (s) => { return (float)MinimumObjectMass; },
-            (s,p,l,v) => { MinimumObjectMass = v; } ),
-        new ParameterDefn("MaxObjectMass", "Maximum object mass (10000.01)",
-            10000.01f,
-            (s,cf,p,v) => { MaximumObjectMass = cf.GetFloat(p, v); },
-            (s) => { return (float)MaximumObjectMass; },
-            (s,p,l,v) => { MaximumObjectMass = v; } ),
-
-        new ParameterDefn("PID_D", "Derivitive factor for motion smoothing",
-            2200f,
-            (s,cf,p,v) => { PID_D = cf.GetFloat(p, v); },
-            (s) => { return (float)PID_D; },
-            (s,p,l,v) => { PID_D = v; } ),
-        new ParameterDefn("PID_P", "Parameteric factor for motion smoothing",
-            900f,
-            (s,cf,p,v) => { PID_P = cf.GetFloat(p, v); },
-            (s) => { return (float)PID_P; },
-            (s,p,l,v) => { PID_P = v; } ),
-
-        new ParameterDefn("DefaultFriction", "Friction factor used on new objects",
-            0.2f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].defaultFriction = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].defaultFriction; },
-            (s,p,l,v) => { s.UnmanagedParams[0].defaultFriction = v; } ),
-        new ParameterDefn("DefaultDensity", "Density for new objects" ,
-            10.000006836f,  // Aluminum g/cm3
-            (s,cf,p,v) => { s.UnmanagedParams[0].defaultDensity = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].defaultDensity; },
-            (s,p,l,v) => { s.UnmanagedParams[0].defaultDensity = v; } ),
-        new ParameterDefn("DefaultRestitution", "Bouncyness of an object" ,
-            0f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].defaultRestitution = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].defaultRestitution; },
-            (s,p,l,v) => { s.UnmanagedParams[0].defaultRestitution = v; } ),
-        new ParameterDefn("CollisionMargin", "Margin around objects before collisions are calculated (must be zero!)",
-            0.04f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].collisionMargin = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].collisionMargin; },
-            (s,p,l,v) => { s.UnmanagedParams[0].collisionMargin = v; } ),
-        new ParameterDefn("Gravity", "Vertical force of gravity (negative means down)",
-            -9.80665f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].gravity = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].gravity; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{s.UnmanagedParams[0].gravity=x;}, p, PhysParameterEntry.APPLY_TO_NONE, v); },
-            (s,o,v) => { BulletSimAPI.SetGravity2(s.World.ptr, new Vector3(0f,0f,v)); } ),
-
-
-        new ParameterDefn("LinearDamping", "Factor to damp linear movement per second (0.0 - 1.0)",
-            0f,
-            (s,cf,p,v) => { LinearDamping = cf.GetFloat(p, v); },
-            (s) => { return LinearDamping; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{LinearDamping=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetDamping2(o.PhysBody.ptr, v, AngularDamping); } ),
-        new ParameterDefn("AngularDamping", "Factor to damp angular movement per second (0.0 - 1.0)",
-            0f,
-            (s,cf,p,v) => { AngularDamping = cf.GetFloat(p, v); },
-            (s) => { return AngularDamping; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AngularDamping=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetDamping2(o.PhysBody.ptr, LinearDamping, v); } ),
-        new ParameterDefn("DeactivationTime", "Seconds before considering an object potentially static",
-            0.2f,
-            (s,cf,p,v) => { DeactivationTime = cf.GetFloat(p, v); },
-            (s) => { return DeactivationTime; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{DeactivationTime=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetDeactivationTime2(o.PhysBody.ptr, v); } ),
-        new ParameterDefn("LinearSleepingThreshold", "Seconds to measure linear movement before considering static",
-            0.8f,
-            (s,cf,p,v) => { LinearSleepingThreshold = cf.GetFloat(p, v); },
-            (s) => { return LinearSleepingThreshold; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{LinearSleepingThreshold=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetSleepingThresholds2(o.PhysBody.ptr, v, v); } ),
-        new ParameterDefn("AngularSleepingThreshold", "Seconds to measure angular movement before considering static",
-            1.0f,
-            (s,cf,p,v) => { AngularSleepingThreshold = cf.GetFloat(p, v); },
-            (s) => { return AngularSleepingThreshold; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AngularSleepingThreshold=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetSleepingThresholds2(o.PhysBody.ptr, v, v); } ),
-        new ParameterDefn("CcdMotionThreshold", "Continuious collision detection threshold (0 means no CCD)" ,
-            0f,     // set to zero to disable
-            (s,cf,p,v) => { CcdMotionThreshold = cf.GetFloat(p, v); },
-            (s) => { return CcdMotionThreshold; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{CcdMotionThreshold=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetCcdMotionThreshold2(o.PhysBody.ptr, v); } ),
-        new ParameterDefn("CcdSweptSphereRadius", "Continuious collision detection test radius" ,
-            0f,
-            (s,cf,p,v) => { CcdSweptSphereRadius = cf.GetFloat(p, v); },
-            (s) => { return CcdSweptSphereRadius; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{CcdSweptSphereRadius=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetCcdSweptSphereRadius2(o.PhysBody.ptr, v); } ),
-        new ParameterDefn("ContactProcessingThreshold", "Distance between contacts before doing collision check" ,
-            0.1f,
-            (s,cf,p,v) => { ContactProcessingThreshold = cf.GetFloat(p, v); },
-            (s) => { return ContactProcessingThreshold; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{ContactProcessingThreshold=x;}, p, l, v); },
-            (s,o,v) => { BulletSimAPI.SetContactProcessingThreshold2(o.PhysBody.ptr, v); } ),
-
-	    new ParameterDefn("TerrainImplementation", "Type of shape to use for terrain (0=heightmap, 1=mesh)",
-            (float)BSTerrainPhys.TerrainImplementation.Heightmap,
-            (s,cf,p,v) => { TerrainImplementation = cf.GetFloat(p,v); },
-            (s) => { return TerrainImplementation; },
-            (s,p,l,v) => { TerrainImplementation = v; } ),
-        new ParameterDefn("TerrainFriction", "Factor to reduce movement against terrain surface" ,
-            0.3f,
-            (s,cf,p,v) => { TerrainFriction = cf.GetFloat(p, v); },
-            (s) => { return TerrainFriction; },
-            (s,p,l,v) => { TerrainFriction = v;  /* TODO: set on real terrain */} ),
-        new ParameterDefn("TerrainHitFraction", "Distance to measure hit collisions" ,
-            0.8f,
-            (s,cf,p,v) => { TerrainHitFraction = cf.GetFloat(p, v); },
-            (s) => { return TerrainHitFraction; },
-            (s,p,l,v) => { TerrainHitFraction = v; /* TODO: set on real terrain */ } ),
-        new ParameterDefn("TerrainRestitution", "Bouncyness" ,
-            0f,
-            (s,cf,p,v) => { TerrainRestitution = cf.GetFloat(p, v); },
-            (s) => { return TerrainRestitution; },
-            (s,p,l,v) => { TerrainRestitution = v;  /* TODO: set on real terrain */ } ),
-        new ParameterDefn("TerrainCollisionMargin", "Margin where collision checking starts" ,
-            0.04f,
-            (s,cf,p,v) => { TerrainCollisionMargin = cf.GetFloat(p, v); },
-            (s) => { return TerrainCollisionMargin; },
-            (s,p,l,v) => { TerrainCollisionMargin = v;  /* TODO: set on real terrain */ } ),
-
-        new ParameterDefn("AvatarFriction", "Factor to reduce movement against an avatar. Changed on avatar recreation.",
-            0.2f,
-            (s,cf,p,v) => { AvatarFriction = cf.GetFloat(p, v); },
-            (s) => { return AvatarFriction; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarFriction=x;}, p, l, v); } ),
-        new ParameterDefn("AvatarStandingFriction", "Avatar friction when standing. Changed on avatar recreation.",
-            10.0f,
-            (s,cf,p,v) => { AvatarStandingFriction = cf.GetFloat(p, v); },
-            (s) => { return AvatarStandingFriction; },
-            (s,p,l,v) => { AvatarStandingFriction = v; } ),
-        new ParameterDefn("AvatarDensity", "Density of an avatar. Changed on avatar recreation.",
-            3.5f,
-            (s,cf,p,v) => { AvatarDensity = cf.GetFloat(p, v); },
-            (s) => { return AvatarDensity; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarDensity=x;}, p, l, v); } ),
-        new ParameterDefn("AvatarRestitution", "Bouncyness. Changed on avatar recreation.",
-            0f,
-            (s,cf,p,v) => { AvatarRestitution = cf.GetFloat(p, v); },
-            (s) => { return AvatarRestitution; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarRestitution=x;}, p, l, v); } ),
-        new ParameterDefn("AvatarCapsuleWidth", "The distance between the sides of the avatar capsule",
-            0.6f,
-            (s,cf,p,v) => { AvatarCapsuleWidth = cf.GetFloat(p, v); },
-            (s) => { return AvatarCapsuleWidth; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarCapsuleWidth=x;}, p, l, v); } ),
-        new ParameterDefn("AvatarCapsuleDepth", "The distance between the front and back of the avatar capsule",
-            0.45f,
-            (s,cf,p,v) => { AvatarCapsuleDepth = cf.GetFloat(p, v); },
-            (s) => { return AvatarCapsuleDepth; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarCapsuleDepth=x;}, p, l, v); } ),
-        new ParameterDefn("AvatarCapsuleHeight", "Default height of space around avatar",
-            1.5f,
-            (s,cf,p,v) => { AvatarCapsuleHeight = cf.GetFloat(p, v); },
-            (s) => { return AvatarCapsuleHeight; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarCapsuleHeight=x;}, p, l, v); } ),
-	    new ParameterDefn("AvatarContactProcessingThreshold", "Distance from capsule to check for collisions",
-            0.1f,
-            (s,cf,p,v) => { AvatarContactProcessingThreshold = cf.GetFloat(p, v); },
-            (s) => { return AvatarContactProcessingThreshold; },
-            (s,p,l,v) => { s.UpdateParameterObject((x)=>{AvatarContactProcessingThreshold=x;}, p, l, v); } ),
-
-        new ParameterDefn("VehicleAngularDamping", "Factor to damp vehicle angular movement per second (0.0 - 1.0)",
-            0.95f,
-            (s,cf,p,v) => { VehicleAngularDamping = cf.GetFloat(p, v); },
-            (s) => { return VehicleAngularDamping; },
-            (s,p,l,v) => { VehicleAngularDamping = v; } ),
-
-	    new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)",
-            0f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].maxPersistantManifoldPoolSize = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].maxPersistantManifoldPoolSize; },
-            (s,p,l,v) => { s.UnmanagedParams[0].maxPersistantManifoldPoolSize = v; } ),
-	    new ParameterDefn("MaxCollisionAlgorithmPoolSize", "Number of collisions pooled (0 means default of 4096)",
-            0f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize; },
-            (s,p,l,v) => { s.UnmanagedParams[0].maxCollisionAlgorithmPoolSize = v; } ),
-	    new ParameterDefn("ShouldDisableContactPoolDynamicAllocation", "Enable to allow large changes in object count",
-            ConfigurationParameters.numericFalse,
-            (s,cf,p,v) => { s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation; },
-            (s,p,l,v) => { s.UnmanagedParams[0].shouldDisableContactPoolDynamicAllocation = v; } ),
-	    new ParameterDefn("ShouldForceUpdateAllAabbs", "Enable to recomputer AABBs every simulator step",
-            ConfigurationParameters.numericFalse,
-            (s,cf,p,v) => { s.UnmanagedParams[0].shouldForceUpdateAllAabbs = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return s.UnmanagedParams[0].shouldForceUpdateAllAabbs; },
-            (s,p,l,v) => { s.UnmanagedParams[0].shouldForceUpdateAllAabbs = v; } ),
-	    new ParameterDefn("ShouldRandomizeSolverOrder", "Enable for slightly better stacking interaction",
-            ConfigurationParameters.numericTrue,
-            (s,cf,p,v) => { s.UnmanagedParams[0].shouldRandomizeSolverOrder = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return s.UnmanagedParams[0].shouldRandomizeSolverOrder; },
-            (s,p,l,v) => { s.UnmanagedParams[0].shouldRandomizeSolverOrder = v; } ),
-	    new ParameterDefn("ShouldSplitSimulationIslands", "Enable splitting active object scanning islands",
-            ConfigurationParameters.numericTrue,
-            (s,cf,p,v) => { s.UnmanagedParams[0].shouldSplitSimulationIslands = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return s.UnmanagedParams[0].shouldSplitSimulationIslands; },
-            (s,p,l,v) => { s.UnmanagedParams[0].shouldSplitSimulationIslands = v; } ),
-	    new ParameterDefn("ShouldEnableFrictionCaching", "Enable friction computation caching",
-            ConfigurationParameters.numericFalse,
-            (s,cf,p,v) => { s.UnmanagedParams[0].shouldEnableFrictionCaching = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return s.UnmanagedParams[0].shouldEnableFrictionCaching; },
-            (s,p,l,v) => { s.UnmanagedParams[0].shouldEnableFrictionCaching = v; } ),
-	    new ParameterDefn("NumberOfSolverIterations", "Number of internal iterations (0 means default)",
-            0f,     // zero says use Bullet default
-            (s,cf,p,v) => { s.UnmanagedParams[0].numberOfSolverIterations = cf.GetFloat(p, v); },
-            (s) => { return s.UnmanagedParams[0].numberOfSolverIterations; },
-            (s,p,l,v) => { s.UnmanagedParams[0].numberOfSolverIterations = v; } ),
-
-	    new ParameterDefn("LinksetImplementation", "Type of linkset implementation (0=Constraint, 1=Compound, 2=Manual)",
-            (float)BSLinkset.LinksetImplementation.Compound,
-            (s,cf,p,v) => { LinksetImplementation = cf.GetFloat(p,v); },
-            (s) => { return LinksetImplementation; },
-            (s,p,l,v) => { LinksetImplementation = v; } ),
-	    new ParameterDefn("LinkConstraintUseFrameOffset", "For linksets built with constraints, enable frame offsetFor linksets built with constraints, enable frame offset.",
-            ConfigurationParameters.numericFalse,
-            (s,cf,p,v) => { LinkConstraintUseFrameOffset = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return LinkConstraintUseFrameOffset; },
-            (s,p,l,v) => { LinkConstraintUseFrameOffset = v; } ),
-	    new ParameterDefn("LinkConstraintEnableTransMotor", "Whether to enable translational motor on linkset constraints",
-            ConfigurationParameters.numericTrue,
-            (s,cf,p,v) => { LinkConstraintEnableTransMotor = BSParam.NumericBool(cf.GetBoolean(p, BSParam.BoolNumeric(v))); },
-            (s) => { return LinkConstraintEnableTransMotor; },
-            (s,p,l,v) => { LinkConstraintEnableTransMotor = v; } ),
-	    new ParameterDefn("LinkConstraintTransMotorMaxVel", "Maximum velocity to be applied by translational motor in linkset constraints",
-            5.0f,
-            (s,cf,p,v) => { LinkConstraintTransMotorMaxVel = cf.GetFloat(p, v); },
-            (s) => { return LinkConstraintTransMotorMaxVel; },
-            (s,p,l,v) => { LinkConstraintTransMotorMaxVel = v; } ),
-	    new ParameterDefn("LinkConstraintTransMotorMaxForce", "Maximum force to be applied by translational motor in linkset constraints",
-            0.1f,
-            (s,cf,p,v) => { LinkConstraintTransMotorMaxForce = cf.GetFloat(p, v); },
-            (s) => { return LinkConstraintTransMotorMaxForce; },
-            (s,p,l,v) => { LinkConstraintTransMotorMaxForce = v; } ),
-	    new ParameterDefn("LinkConstraintCFM", "Amount constraint can be violated. 0=no violation, 1=infinite. Default=0.1",
-            0.1f,
-            (s,cf,p,v) => { LinkConstraintCFM = cf.GetFloat(p, v); },
-            (s) => { return LinkConstraintCFM; },
-            (s,p,l,v) => { LinkConstraintCFM = v; } ),
-	    new ParameterDefn("LinkConstraintERP", "Amount constraint is corrected each tick. 0=none, 1=all. Default = 0.2",
-            0.1f,
-            (s,cf,p,v) => { LinkConstraintERP = cf.GetFloat(p, v); },
-            (s) => { return LinkConstraintERP; },
-            (s,p,l,v) => { LinkConstraintERP = v; } ),
-	    new ParameterDefn("LinkConstraintSolverIterations", "Number of solver iterations when computing constraint. (0 = Bullet default)",
-            40,
-            (s,cf,p,v) => { LinkConstraintSolverIterations = cf.GetFloat(p, v); },
-            (s) => { return LinkConstraintSolverIterations; },
-            (s,p,l,v) => { LinkConstraintSolverIterations = v; } ),
-
-        new ParameterDefn("LogPhysicsStatisticsFrames", "Frames between outputting detailed phys stats. (0 is off)",
-            0f,
-            (s,cf,p,v) => { s.UnmanagedParams[0].physicsLoggingFrames = cf.GetInt(p, (int)v); },
-            (s) => { return (float)s.UnmanagedParams[0].physicsLoggingFrames; },
-            (s,p,l,v) => { s.UnmanagedParams[0].physicsLoggingFrames = (int)v; } ),
-    };
-
-    // Convert a boolean to our numeric true and false values
-    public static float NumericBool(bool b)
-    {
-        return (b ? ConfigurationParameters.numericTrue : ConfigurationParameters.numericFalse);
-    }
-
-    // Convert numeric true and false values to a boolean
-    public static bool BoolNumeric(float b)
-    {
-        return (b == ConfigurationParameters.numericTrue ? true : false);
-    }
-
-    // Search through the parameter definitions and return the matching
-    //    ParameterDefn structure.
-    // Case does not matter as names are compared after converting to lower case.
-    // Returns 'false' if the parameter is not found.
-    internal static bool TryGetParameter(string paramName, out ParameterDefn defn)
-    {
-        bool ret = false;
-        ParameterDefn foundDefn = new ParameterDefn();
-        string pName = paramName.ToLower();
-
-        foreach (ParameterDefn parm in ParameterDefinitions)
-        {
-            if (pName == parm.name.ToLower())
-            {
-                foundDefn = parm;
-                ret = true;
-                break;
-            }
-        }
-        defn = foundDefn;
-        return ret;
-    }
-
-    // Pass through the settable parameters and set the default values
-    internal static void SetParameterDefaultValues(BSScene physicsScene)
-    {
-        foreach (ParameterDefn parm in ParameterDefinitions)
-        {
-            parm.setter(physicsScene, parm.name, PhysParameterEntry.APPLY_TO_NONE, parm.defaultValue);
-        }
-    }
-
-    // Get user set values out of the ini file.
-    internal static void SetParameterConfigurationValues(BSScene physicsScene, IConfig cfg)
-    {
-        foreach (ParameterDefn parm in ParameterDefinitions)
-        {
-            parm.userParam(physicsScene, cfg, parm.name, parm.defaultValue);
-        }
-    }
-
-    internal static PhysParameterEntry[] SettableParameters = new PhysParameterEntry[1];
-
-    // This creates an array in the correct format for returning the list of
-    //    parameters. This is used by the 'list' option of the 'physics' command.
-    internal static void BuildParameterTable()
-    {
-        if (SettableParameters.Length < ParameterDefinitions.Length)
-        {
-            List<PhysParameterEntry> entries = new List<PhysParameterEntry>();
-            for (int ii = 0; ii < ParameterDefinitions.Length; ii++)
-            {
-                ParameterDefn pd = ParameterDefinitions[ii];
-                entries.Add(new PhysParameterEntry(pd.name, pd.desc));
-            }
-
-            // make the list in alphabetical order for estetic reasons
-            entries.Sort(delegate(PhysParameterEntry ppe1, PhysParameterEntry ppe2)
-            {
-                return ppe1.name.CompareTo(ppe2.name);
-            });
-
-            SettableParameters = entries.ToArray();
-        }
-    }
-
-
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSPhysObject.cs
deleted file mode 100644
index 689da7f962..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSPhysObject.cs
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OMV = OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Physics.Manager;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-/*
- * Class to wrap all objects.
- * The rest of BulletSim doesn't need to keep checking for avatars or prims
- *        unless the difference is significant.
- * 
- *  Variables in the physicsl objects are in three forms:
- *      VariableName: used by the simulator and performs taint operations, etc
- *      RawVariableName: direct reference to the BulletSim storage for the variable value
- *      ForceVariableName: direct reference (store and fetch) to the value in the physics engine.
- *  The last two (and certainly the last one) should be referenced only in taint-time.
- */
-
-/*
- * As of 20121221, the following are the call sequences (going down) for different script physical functions:
- * llApplyImpulse       llApplyRotImpulse           llSetTorque             llSetForce
- * SOP.ApplyImpulse     SOP.ApplyAngularImpulse     SOP.SetAngularImpulse   SOP.SetForce
- * SOG.ApplyImpulse     SOG.ApplyAngularImpulse     SOG.SetAngularImpulse
- * PA.AddForce          PA.AddAngularForce          PA.Torque = v           PA.Force = v
- * BS.ApplyCentralForce BS.ApplyTorque              
- */
-
-public abstract class BSPhysObject : PhysicsActor
-{
-    protected BSPhysObject()
-    {
-    }
-    protected BSPhysObject(BSScene parentScene, uint localID, string name, string typeName)
-    {
-        PhysicsScene = parentScene;
-        LocalID = localID;
-        PhysObjectName = name;
-        TypeName = typeName;
-
-        Linkset = BSLinkset.Factory(PhysicsScene, this);
-        LastAssetBuildFailed = false;
-
-        // Default material type
-        Material = MaterialAttributes.Material.Wood;
-
-        CollisionCollection = new CollisionEventUpdate();
-        SubscribedEventsMs = 0;
-        CollidingStep = 0;
-        CollidingGroundStep = 0;
-    }
-
-    // Tell the object to clean up.
-    public virtual void Destroy()
-    {
-        UnRegisterAllPreStepActions();
-    }
-
-    public BSScene PhysicsScene { get; protected set; }
-    // public override uint LocalID { get; set; } // Use the LocalID definition in PhysicsActor
-    public string PhysObjectName { get; protected set; }
-    public string TypeName { get; protected set; }
-
-    public BSLinkset Linkset { get; set; }
-    public BSLinksetInfo LinksetInfo { get; set; }
-
-    // Return the object mass without calculating it or having side effects
-    public abstract float RawMass { get; }
-    // Set the raw mass but also update physical mass properties (inertia, ...)
-    // 'inWorld' true if the object has already been added to the dynamic world.
-    public abstract void UpdatePhysicalMassProperties(float mass, bool inWorld);
-
-    // The last value calculated for the prim's inertia
-    public OMV.Vector3 Inertia { get; set; }
-
-    // Reference to the physical body (btCollisionObject) of this object
-    public BulletBody PhysBody;
-    // Reference to the physical shape (btCollisionShape) of this object
-    public BulletShape PhysShape;
-
-    // 'true' if the mesh's underlying asset failed to build.
-    // This will keep us from looping after the first time the build failed.
-    public bool LastAssetBuildFailed { get; set; }
-
-    // The objects base shape information. Null if not a prim type shape.
-    public PrimitiveBaseShape BaseShape { get; protected set; }
-    // Some types of objects have preferred physical representations.
-    // Returns SHAPE_UNKNOWN if there is no preference.
-    public virtual BSPhysicsShapeType PreferredPhysicalShape
-    {
-        get { return BSPhysicsShapeType.SHAPE_UNKNOWN; }
-    }
-
-    // When the physical properties are updated, an EntityProperty holds the update values.
-    // Keep the current and last EntityProperties to enable computation of differences
-    //      between the current update and the previous values.
-    public EntityProperties CurrentEntityProperties { get; set; }
-    public EntityProperties LastEntityProperties { get; set; }
-
-    public virtual OMV.Vector3 Scale { get; set; }
-    public abstract bool IsSolid { get; }
-    public abstract bool IsStatic { get; }
-
-    // Materialness
-    public MaterialAttributes.Material Material { get; private set; }
-    public override void SetMaterial(int material)
-    {
-        Material = (MaterialAttributes.Material)material;
-    }
-
-    // Stop all physical motion.
-    public abstract void ZeroMotion(bool inTaintTime);
-    public abstract void ZeroAngularMotion(bool inTaintTime);
-
-    // Step the vehicle simulation for this object. A NOOP if the vehicle was not configured.
-    public virtual void StepVehicle(float timeStep) { }
-
-    // Update the physical location and motion of the object. Called with data from Bullet.
-    public abstract void UpdateProperties(EntityProperties entprop);
-
-    public abstract OMV.Vector3 RawPosition { get; set; }
-    public abstract OMV.Vector3 ForcePosition { get; set; }
-
-    public abstract OMV.Quaternion RawOrientation { get; set; }
-    public abstract OMV.Quaternion ForceOrientation { get; set; }
-
-    // The system is telling us the velocity it wants to move at.
-    // protected OMV.Vector3 m_targetVelocity;  // use the definition in PhysicsActor
-    public override OMV.Vector3 TargetVelocity
-    {
-        get { return m_targetVelocity; }
-        set
-        {
-            m_targetVelocity = value;
-            Velocity = value;
-        }
-    }
-    public abstract OMV.Vector3 ForceVelocity { get; set; }
-
-    public abstract OMV.Vector3 ForceRotationalVelocity { get; set; }
-
-    public abstract float ForceBuoyancy { get; set; }
-
-    public virtual bool ForceBodyShapeRebuild(bool inTaintTime) { return false; }
-
-    #region Collisions
-
-    // Requested number of milliseconds between collision events. Zero means disabled.
-    protected int SubscribedEventsMs { get; set; }
-    // Given subscription, the time that a collision may be passed up
-    protected int NextCollisionOkTime { get; set; }
-    // The simulation step that last had a collision
-    protected long CollidingStep { get; set; }
-    // The simulation step that last had a collision with the ground
-    protected long CollidingGroundStep { get; set; }
-    // The collision flags we think are set in Bullet
-    protected CollisionFlags CurrentCollisionFlags { get; set; }
-
-    // The collisions that have been collected this tick
-    protected CollisionEventUpdate CollisionCollection;
-
-    // The simulation step is telling this object about a collision.
-    // Return 'true' if a collision was processed and should be sent up.
-    // Called at taint time from within the Step() function
-    public virtual bool Collide(uint collidingWith, BSPhysObject collidee,
-                    OMV.Vector3 contactPoint, OMV.Vector3 contactNormal, float pentrationDepth)
-    {
-        bool ret = false;
-
-        // The following lines make IsColliding() and IsCollidingGround() work
-        CollidingStep = PhysicsScene.SimulationStep;
-        if (collidingWith <= PhysicsScene.TerrainManager.HighestTerrainID)
-        {
-            CollidingGroundStep = PhysicsScene.SimulationStep;
-        }
-
-        // prims in the same linkset cannot collide with each other
-        if (collidee != null && (this.Linkset.LinksetID == collidee.Linkset.LinksetID))
-        {
-            return ret;
-        }
-
-        // if someone has subscribed for collision events....
-        if (SubscribedEvents()) {
-            CollisionCollection.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
-            DetailLog("{0},{1}.Collison.AddCollider,call,with={2},point={3},normal={4},depth={5}",
-                            LocalID, TypeName, collidingWith, contactPoint, contactNormal, pentrationDepth);
-
-            ret = true;
-        }
-        return ret;
-    }
-
-    // Send the collected collisions into the simulator.
-    // Called at taint time from within the Step() function thus no locking problems
-    //      with CollisionCollection and ObjectsWithNoMoreCollisions.
-    // Return 'true' if there were some actual collisions passed up
-    public virtual bool SendCollisions()
-    {
-        bool ret = true;
-        // If the 'no collision' call, force it to happen right now so quick collision_end
-        bool force = (CollisionCollection.Count == 0);
-
-        // throttle the collisions to the number of milliseconds specified in the subscription
-        if (force || (PhysicsScene.SimulationNowTime >= NextCollisionOkTime))
-        {
-            NextCollisionOkTime = PhysicsScene.SimulationNowTime + SubscribedEventsMs;
-
-            // We are called if we previously had collisions. If there are no collisions
-            //   this time, send up one last empty event so OpenSim can sense collision end.
-            if (CollisionCollection.Count == 0)
-            {
-                // If I have no collisions this time, remove me from the list of objects with collisions.
-                ret = false;
-            }
-
-            // DetailLog("{0},{1}.SendCollisionUpdate,call,numCollisions={2}", LocalID, TypeName, CollisionCollection.Count);
-            base.SendCollisionUpdate(CollisionCollection);
-
-            // The CollisionCollection instance is passed around in the simulator.
-            // Make sure we don't have a handle to that one and that a new one is used for next time.
-            //    This fixes an interesting 'gotcha'. If we call CollisionCollection.Clear() here, 
-            //    a race condition is created for the other users of this instance.
-            CollisionCollection = new CollisionEventUpdate();
-        }
-        return ret;
-    }
-
-    // Subscribe for collision events.
-    // Parameter is the millisecond rate the caller wishes collision events to occur.
-    public override void SubscribeEvents(int ms) {
-        // DetailLog("{0},{1}.SubscribeEvents,subscribing,ms={2}", LocalID, TypeName, ms);
-        SubscribedEventsMs = ms;
-        if (ms > 0)
-        {
-            // make sure first collision happens
-            NextCollisionOkTime = Util.EnvironmentTickCountSubtract(SubscribedEventsMs);
-
-            PhysicsScene.TaintedObject(TypeName+".SubscribeEvents", delegate()
-            {
-                if (PhysBody.HasPhysicalBody)
-                    CurrentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
-            });
-        }
-        else
-        {
-            // Subscribing for zero or less is the same as unsubscribing
-            UnSubscribeEvents();
-        }
-    }
-    public override void UnSubscribeEvents() {
-        // DetailLog("{0},{1}.UnSubscribeEvents,unsubscribing", LocalID, TypeName);
-        SubscribedEventsMs = 0;
-        PhysicsScene.TaintedObject(TypeName+".UnSubscribeEvents", delegate()
-        {
-            // Make sure there is a body there because sometimes destruction happens in an un-ideal order.
-            if (PhysBody.HasPhysicalBody)
-                CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
-        });
-    }
-    // Return 'true' if the simulator wants collision events
-    public override bool SubscribedEvents() {
-        return (SubscribedEventsMs > 0);
-    }
-
-    #endregion // Collisions
-
-    #region Per Simulation Step actions
-    // There are some actions that must be performed for a physical object before each simulation step.
-    // These actions are optional so, rather than scanning all the physical objects and asking them
-    //     if they have anything to do, a physical object registers for an event call before the step is performed.
-    // This bookkeeping makes it easy to add, remove and clean up after all these registrations.
-    private Dictionary<string, BSScene.PreStepAction> RegisteredActions = new Dictionary<string, BSScene.PreStepAction>();
-    protected void RegisterPreStepAction(string op, uint id, BSScene.PreStepAction actn)
-    {
-        string identifier = op + "-" + id.ToString();
-        RegisteredActions[identifier] = actn;
-        PhysicsScene.BeforeStep += actn;
-        DetailLog("{0},BSPhysObject.RegisterPreStepAction,id={1}", LocalID, identifier);
-    }
-
-    // Unregister a pre step action. Safe to call if the action has not been registered.
-    protected void UnRegisterPreStepAction(string op, uint id)
-    {
-        string identifier = op + "-" + id.ToString();
-        bool removed = false;
-        if (RegisteredActions.ContainsKey(identifier))
-        {
-            PhysicsScene.BeforeStep -= RegisteredActions[identifier];
-            RegisteredActions.Remove(identifier);
-            removed = true;
-        }
-        DetailLog("{0},BSPhysObject.UnRegisterPreStepAction,id={1},removed={2}", LocalID, identifier, removed);
-    }
-
-    protected void UnRegisterAllPreStepActions()
-    {
-        foreach (KeyValuePair<string, BSScene.PreStepAction> kvp in RegisteredActions)
-        {
-            PhysicsScene.BeforeStep -= kvp.Value;
-        }
-        RegisteredActions.Clear();
-        DetailLog("{0},BSPhysObject.UnRegisterAllPreStepActions,", LocalID);
-    }
-
-    
-    #endregion // Per Simulation Step actions
-
-    // High performance detailed logging routine used by the physical objects.
-    protected void DetailLog(string msg, params Object[] args)
-    {
-        if (PhysicsScene.PhysicsLogging.Enabled)
-            PhysicsScene.DetailLog(msg, args);
-    }
-
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSPlugin.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSPlugin.cs
deleted file mode 100644
index 75963ee5e5..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSPlugin.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using OpenSim.Framework;
-using OpenSim.Region.Physics.Manager;
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-    /// <summary>
-    /// Entry for a port of Bullet (http://bulletphysics.org/) to OpenSim.
-    /// This module interfaces to an unmanaged C++ library which makes the
-    /// actual calls into the Bullet physics engine.
-    /// The unmanaged library is found in opensim-libs::trunk/unmanaged/BulletSim/.
-    /// The unmanaged library is compiled and linked statically with Bullet
-    /// to create BulletSim.dll and libBulletSim.so (for both 32 and 64 bit).
-    /// </summary>
-public class BSPlugin : IPhysicsPlugin
-{
-    //private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
-
-    private BSScene _mScene;
-
-    public BSPlugin()
-    {
-    }
-
-    public bool Init()
-    {
-        return true;
-    }
-
-    public PhysicsScene GetScene(String sceneIdentifier)
-    {
-        if (_mScene == null)
-        {
-           
-            // If not Windows, loading is performed by the
-            // Mono loader as specified in
-            // "bin/Physics/OpenSim.Region.Physics.BulletSNPlugin.dll.config".
-
-            _mScene = new BSScene(sceneIdentifier);
-        }
-        return (_mScene);
-    }
-
-    public string GetName()
-    {
-        return ("BulletSimN");
-    }
-
-    public void Dispose()
-    {
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSPrim.cs
deleted file mode 100644
index aadb5b2925..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSPrim.cs
+++ /dev/null
@@ -1,1494 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Xml;
-using log4net;
-using OMV = OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Physics.Manager;
-using OpenSim.Region.Physics.ConvexDecompositionDotNet;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-    [Serializable]
-public sealed class BSPrim : BSPhysObject
-{
-    private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-    private static readonly string LogHeader = "[BULLETS PRIM]";
-
-    // _size is what the user passed. Scale is what we pass to the physics engine with the mesh.
-    private OMV.Vector3 _size;  // the multiplier for each mesh dimension as passed by the user
-
-    private bool _grabbed;
-    private bool _isSelected;
-    private bool _isVolumeDetect;
-    private OMV.Vector3 _position;
-    private float _mass;    // the mass of this object
-    private float _density;
-    private OMV.Vector3 _force;
-    private OMV.Vector3 _velocity;
-    private OMV.Vector3 _torque;
-    private float _collisionScore;
-    private OMV.Vector3 _acceleration;
-    private OMV.Quaternion _orientation;
-    private int _physicsActorType;
-    private bool _isPhysical;
-    private bool _flying;
-    private float _friction;
-    private float _restitution;
-    private bool _setAlwaysRun;
-    private bool _throttleUpdates;
-    private bool _isColliding;
-    private bool _collidingGround;
-    private bool _collidingObj;
-    private bool _floatOnWater;
-    private OMV.Vector3 _rotationalVelocity;
-    private bool _kinematic;
-    private float _buoyancy;
-
-    private BSDynamics _vehicle;
-
-    private OMV.Vector3 _PIDTarget;
-    private bool _usePID;
-    private float _PIDTau;
-    private bool _useHoverPID;
-    private float _PIDHoverHeight;
-    private PIDHoverType _PIDHoverType;
-    private float _PIDHoverTao;
-
-    public BSPrim(uint localID, String primName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size,
-                       OMV.Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical)
-            : base(parent_scene, localID, primName, "BSPrim")
-    {
-        // m_log.DebugFormat("{0}: BSPrim creation of {1}, id={2}", LogHeader, primName, localID);
-        _physicsActorType = (int)ActorTypes.Prim;
-        _position = pos;
-        _size = size;
-        Scale = size;   // prims are the size the user wants them to be (different for BSCharactes).
-        _orientation = rotation;
-        _buoyancy = 1f;
-        _velocity = OMV.Vector3.Zero;
-        _rotationalVelocity = OMV.Vector3.Zero;
-        BaseShape = pbs;
-        _isPhysical = pisPhysical;
-        _isVolumeDetect = false;
-
-        // Someday set default attributes based on the material but, for now, we don't know the prim material yet.
-        // MaterialAttributes primMat = BSMaterials.GetAttributes(Material, pisPhysical);
-        _density = PhysicsScene.Params.defaultDensity;
-        _friction = PhysicsScene.Params.defaultFriction;
-        _restitution = PhysicsScene.Params.defaultRestitution;
-
-        _vehicle = new BSDynamics(PhysicsScene, this);            // add vehicleness
-
-        _mass = CalculateMass();
-
-        Linkset.Refresh(this);
-
-        DetailLog("{0},BSPrim.constructor,call", LocalID);
-        // do the actual object creation at taint time
-        PhysicsScene.TaintedObject("BSPrim.create", delegate()
-        {
-            CreateGeomAndObject(true);
-
-            CurrentCollisionFlags = BulletSimAPI.GetCollisionFlags2(PhysBody.ptr);
-        });
-    }
-
-    // called when this prim is being destroyed and we should free all the resources
-    public override void Destroy()
-    {
-        // m_log.DebugFormat("{0}: Destroy, id={1}", LogHeader, LocalID);
-        base.Destroy();
-
-        // Undo any links between me and any other object
-        BSPhysObject parentBefore = Linkset.LinksetRoot;
-        int childrenBefore = Linkset.NumberOfChildren;
-
-        Linkset = Linkset.RemoveMeFromLinkset(this);
-
-        DetailLog("{0},BSPrim.Destroy,call,parentBefore={1},childrenBefore={2},parentAfter={3},childrenAfter={4}",
-            LocalID, parentBefore.LocalID, childrenBefore, Linkset.LinksetRoot.LocalID, Linkset.NumberOfChildren);
-
-        // Undo any vehicle properties
-        this.VehicleType = (int)Vehicle.TYPE_NONE;
-
-        PhysicsScene.TaintedObject("BSPrim.destroy", delegate()
-        {
-            DetailLog("{0},BSPrim.Destroy,taint,", LocalID);
-            // If there are physical body and shape, release my use of same.
-            PhysicsScene.Shapes.DereferenceBody(PhysBody, true, null);
-            PhysBody.Clear();
-            PhysicsScene.Shapes.DereferenceShape(PhysShape, true, null);
-            PhysShape.Clear();
-        });
-    }
-
-    // No one uses this property.
-    public override bool Stopped {
-        get { return false; }
-    }
-    public override OMV.Vector3 Size {
-        get { return _size; }
-        set {
-            // We presume the scale and size are the same. If scale must be changed for
-            //     the physical shape, that is done when the geometry is built.
-            _size = value;
-            Scale = _size;
-            ForceBodyShapeRebuild(false);
-        }
-    }
-
-    public override PrimitiveBaseShape Shape {
-        set {
-            BaseShape = value;
-            ForceBodyShapeRebuild(false);
-        }
-    }
-    // Whatever the linkset wants is what I want.
-    public override BSPhysicsShapeType PreferredPhysicalShape
-        { get { return Linkset.PreferredPhysicalShape(this); } }
-
-    public override bool ForceBodyShapeRebuild(bool inTaintTime)
-    {
-        LastAssetBuildFailed = false;
-        PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ForceBodyShapeRebuild", delegate()
-        {
-            _mass = CalculateMass();   // changing the shape changes the mass
-            CreateGeomAndObject(true);
-        });
-        return true;
-    }
-    public override bool Grabbed {
-        set { _grabbed = value;
-        }
-    }
-    public override bool Selected {
-        set
-        {
-            if (value != _isSelected)
-            {
-                _isSelected = value;
-                PhysicsScene.TaintedObject("BSPrim.setSelected", delegate()
-                {
-                    DetailLog("{0},BSPrim.selected,taint,selected={1}", LocalID, _isSelected);
-                    SetObjectDynamic(false);
-                });
-            }
-        }
-    }
-    public override void CrossingFailure() { return; }
-
-    // link me to the specified parent
-    public override void link(PhysicsActor obj) {
-        BSPrim parent = obj as BSPrim;
-        if (parent != null)
-        {
-            BSPhysObject parentBefore = Linkset.LinksetRoot;
-            int childrenBefore = Linkset.NumberOfChildren;
-
-            Linkset = parent.Linkset.AddMeToLinkset(this);
-
-            DetailLog("{0},BSPrim.link,call,parentBefore={1}, childrenBefore=={2}, parentAfter={3}, childrenAfter={4}",
-                LocalID, parentBefore.LocalID, childrenBefore, Linkset.LinksetRoot.LocalID, Linkset.NumberOfChildren);
-        }
-        return;
-    }
-
-    // delink me from my linkset
-    public override void delink() {
-        // TODO: decide if this parent checking needs to happen at taint time
-        // Race condition here: if link() and delink() in same simulation tick, the delink will not happen
-
-        BSPhysObject parentBefore = Linkset.LinksetRoot;
-        int childrenBefore = Linkset.NumberOfChildren;
-
-        Linkset = Linkset.RemoveMeFromLinkset(this);
-
-        DetailLog("{0},BSPrim.delink,parentBefore={1},childrenBefore={2},parentAfter={3},childrenAfter={4}, ",
-            LocalID, parentBefore.LocalID, childrenBefore, Linkset.LinksetRoot.LocalID, Linkset.NumberOfChildren);
-        return;
-    }
-
-    // Set motion values to zero.
-    // Do it to the properties so the values get set in the physics engine.
-    // Push the setting of the values to the viewer.
-    // Called at taint time!
-    public override void ZeroMotion(bool inTaintTime)
-    {
-        _velocity = OMV.Vector3.Zero;
-        _acceleration = OMV.Vector3.Zero;
-        _rotationalVelocity = OMV.Vector3.Zero;
-
-        // Zero some other properties in the physics engine
-        PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ZeroMotion", delegate()
-        {
-            if (PhysBody.HasPhysicalBody)
-                BulletSimAPI.ClearAllForces2(PhysBody.ptr);
-        });
-    }
-    public override void ZeroAngularMotion(bool inTaintTime)
-    {
-        _rotationalVelocity = OMV.Vector3.Zero;
-        // Zero some other properties in the physics engine
-        PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ZeroMotion", delegate()
-        {
-            // DetailLog("{0},BSPrim.ZeroAngularMotion,call,rotVel={1}", LocalID, _rotationalVelocity);
-            if (PhysBody.HasPhysicalBody)
-            {
-                BulletSimAPI.SetInterpolationAngularVelocity2(PhysBody.ptr, _rotationalVelocity);
-                BulletSimAPI.SetAngularVelocity2(PhysBody.ptr, _rotationalVelocity);
-            }
-        });
-    }
-
-    public override void LockAngularMotion(OMV.Vector3 axis)
-    {
-        DetailLog("{0},BSPrim.LockAngularMotion,call,axis={1}", LocalID, axis);
-        return;
-    }
-
-    public override OMV.Vector3 RawPosition
-    {
-        get { return _position; }
-        set { _position = value; }
-    }
-    public override OMV.Vector3 Position {
-        get {
-            /* NOTE: this refetch is not necessary. The simulator knows about linkset children
-             *    and does not fetch this position info for children. Thus this is commented out.
-            // child prims move around based on their parent. Need to get the latest location
-            if (!Linkset.IsRoot(this))
-                _position = Linkset.PositionGet(this);
-            */
-
-            // don't do the GetObjectPosition for root elements because this function is called a zillion times.
-            // _position = BulletSimAPI.GetObjectPosition2(PhysicsScene.World.ptr, BSBody.ptr);
-            return _position;
-        }
-        set {
-            // If the position must be forced into the physics engine, use ForcePosition.
-            // All positions are given in world positions.
-            if (_position == value)
-            {
-                DetailLog("{0},BSPrim.setPosition,taint,positionNotChanging,pos={1},orient={2}", LocalID, _position, _orientation);
-                return;
-            }
-            _position = value;
-            PositionSanityCheck(false);
-
-            // A linkset might need to know if a component information changed.
-            Linkset.UpdateProperties(this, false);
-
-            PhysicsScene.TaintedObject("BSPrim.setPosition", delegate()
-            {
-                DetailLog("{0},BSPrim.SetPosition,taint,pos={1},orient={2}", LocalID, _position, _orientation);
-                ForcePosition = _position;
-            });
-        }
-    }
-    public override OMV.Vector3 ForcePosition {
-        get {
-            _position = BulletSimAPI.GetPosition2(PhysBody.ptr);
-            return _position;
-        }
-        set {
-            _position = value;
-            if (PhysBody.HasPhysicalBody)
-            {
-                BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-                ActivateIfPhysical(false);
-            }
-        }
-    }
-
-    // Check that the current position is sane and, if not, modify the position to make it so.
-    // Check for being below terrain and being out of bounds.
-    // Returns 'true' of the position was made sane by some action.
-    private bool PositionSanityCheck(bool inTaintTime)
-    {
-        bool ret = false;
-
-        if (!PhysicsScene.TerrainManager.IsWithinKnownTerrain(_position))
-        {
-            // The physical object is out of the known/simulated area.
-            // Upper levels of code will handle the transition to other areas so, for
-            //     the time, we just ignore the position.
-            return ret;
-        }
-
-        float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(_position);
-        OMV.Vector3 upForce = OMV.Vector3.Zero;
-        if (RawPosition.Z < terrainHeight)
-        {
-            DetailLog("{0},BSPrim.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, _position, terrainHeight);
-            float targetHeight = terrainHeight + (Size.Z / 2f);
-            // Upforce proportional to the distance away from the terrain. Correct the error in 1 sec.
-            upForce.Z = (terrainHeight - RawPosition.Z) * 1f;
-            ret = true;
-        }
-
-        if ((CurrentCollisionFlags & CollisionFlags.BS_FLOATS_ON_WATER) != 0)
-        {
-            float waterHeight = PhysicsScene.TerrainManager.GetWaterLevelAtXYZ(_position);
-            // TODO: a floating motor so object will bob in the water
-            if (Math.Abs(RawPosition.Z - waterHeight) > 0.1f)
-            {
-                // Upforce proportional to the distance away from the water. Correct the error in 1 sec.
-                upForce.Z = (waterHeight - RawPosition.Z) * 1f;
-                ret = true;
-            }
-        }
-
-        // The above code computes a force to apply to correct any out-of-bounds problems. Apply same.
-        // TODO: This should be intergrated with a geneal physics action mechanism.
-        // TODO: This should be moderated with PID'ness.
-        if (ret)
-        {
-            // Apply upforce and overcome gravity.
-            OMV.Vector3 correctionForce = upForce - PhysicsScene.DefaultGravity;
-            DetailLog("{0},BSPrim.PositionSanityCheck,applyForce,pos={1},upForce={2},correctionForce={3}", LocalID, _position, upForce, correctionForce);
-            AddForce(correctionForce, false, inTaintTime);
-        }
-        return ret;
-    }
-
-    // Return the effective mass of the object.
-        // The definition of this call is to return the mass of the prim.
-        // If the simulator cares about the mass of the linkset, it will sum it itself.
-    public override float Mass
-    {
-        get
-        {
-            return _mass;
-        }
-    }
-
-    // used when we only want this prim's mass and not the linkset thing
-    public override float RawMass { 
-        get { return _mass; }
-    }
-    // Set the physical mass to the passed mass.
-    // Note that this does not change _mass!
-    public override void UpdatePhysicalMassProperties(float physMass, bool inWorld)
-    {
-        if (PhysBody.HasPhysicalBody)
-        {
-            if (IsStatic)
-            {
-                Inertia = OMV.Vector3.Zero;
-                BulletSimAPI.SetMassProps2(PhysBody.ptr, 0f, Inertia);
-                BulletSimAPI.UpdateInertiaTensor2(PhysBody.ptr);
-            }
-            else
-            {
-                if (inWorld)
-                {
-                    // Changing interesting properties doesn't change proxy and collision cache
-                    //    information. The Bullet solution is to re-add the object to the world
-                    //    after parameters are changed.
-                    BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, PhysBody.ptr);
-                }
-
-                Inertia = BulletSimAPI.CalculateLocalInertia2(PhysShape.ptr, physMass);
-                BulletSimAPI.SetMassProps2(PhysBody.ptr, physMass, Inertia);
-                BulletSimAPI.UpdateInertiaTensor2(PhysBody.ptr);
-
-                // center of mass is at the zero of the object
-                // DEBUG DEBUG BulletSimAPI.SetCenterOfMassByPosRot2(PhysBody.ptr, ForcePosition, ForceOrientation);
-                DetailLog("{0},BSPrim.UpdateMassProperties,mass={1},localInertia={2},inWorld={3}", LocalID, physMass, Inertia, inWorld);
-
-                if (inWorld)
-                {
-                    BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, PhysBody.ptr,_position,_orientation);
-                }
-
-                // Must set gravity after it has been added to the world because, for unknown reasons,
-                //     adding the object resets the object's gravity to world gravity
-                OMV.Vector3 grav = PhysicsScene.DefaultGravity * (1f - Buoyancy);
-                BulletSimAPI.SetGravity2(PhysBody.ptr, grav);
-
-            }
-        }
-    }
-
-    // Is this used?
-    public override OMV.Vector3 CenterOfMass
-    {
-        get { return Linkset.CenterOfMass; }
-    }
-
-    // Is this used?
-    public override OMV.Vector3 GeometricCenter
-    {
-        get { return Linkset.GeometricCenter; }
-    }
-
-    public override OMV.Vector3 Force {
-        get { return _force; }
-        set {
-            _force = value;
-            if (_force != OMV.Vector3.Zero)
-            {
-                // If the force is non-zero, it must be reapplied each tick because
-                //    Bullet clears the forces applied last frame.
-                RegisterPreStepAction("BSPrim.setForce", LocalID,
-                    delegate(float timeStep)
-                    {
-                        DetailLog("{0},BSPrim.setForce,preStep,force={1}", LocalID, _force);
-                        if (PhysBody.HasPhysicalBody)
-                        {
-                            BulletSimAPI.ApplyCentralForce2(PhysBody.ptr, _force);
-                            ActivateIfPhysical(false);
-                        }
-                    }
-                );
-            }
-            else
-            {
-                UnRegisterPreStepAction("BSPrim.setForce", LocalID);
-            }
-        }
-    }
-
-    public override int VehicleType {
-        get {
-            return (int)_vehicle.Type;   // if we are a vehicle, return that type
-        }
-        set {
-            Vehicle type = (Vehicle)value;
-
-            PhysicsScene.TaintedObject("setVehicleType", delegate()
-            {
-                // Done at taint time so we're sure the physics engine is not using the variables
-                // Vehicle code changes the parameters for this vehicle type.
-                _vehicle.ProcessTypeChange(type);
-                ActivateIfPhysical(false);
-
-                // If an active vehicle, register the vehicle code to be called before each step
-                if (_vehicle.Type == Vehicle.TYPE_NONE)
-                    UnRegisterPreStepAction("BSPrim.Vehicle", LocalID);
-                else
-                    RegisterPreStepAction("BSPrim.Vehicle", LocalID, _vehicle.Step);
-            });
-        }
-    }
-    public override void VehicleFloatParam(int param, float value)
-    {
-        PhysicsScene.TaintedObject("BSPrim.VehicleFloatParam", delegate()
-        {
-            _vehicle.ProcessFloatVehicleParam((Vehicle)param, value);
-            ActivateIfPhysical(false);
-        });
-    }
-    public override void VehicleVectorParam(int param, OMV.Vector3 value)
-    {
-        PhysicsScene.TaintedObject("BSPrim.VehicleVectorParam", delegate()
-        {
-            _vehicle.ProcessVectorVehicleParam((Vehicle)param, value);
-            ActivateIfPhysical(false);
-        });
-    }
-    public override void VehicleRotationParam(int param, OMV.Quaternion rotation)
-    {
-        PhysicsScene.TaintedObject("BSPrim.VehicleRotationParam", delegate()
-        {
-            _vehicle.ProcessRotationVehicleParam((Vehicle)param, rotation);
-            ActivateIfPhysical(false);
-        });
-    }
-    public override void VehicleFlags(int param, bool remove)
-    {
-        PhysicsScene.TaintedObject("BSPrim.VehicleFlags", delegate()
-        {
-            _vehicle.ProcessVehicleFlags(param, remove);
-        });
-    }
-
-    // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more
-    public override void SetVolumeDetect(int param) {
-        bool newValue = (param != 0);
-        if (_isVolumeDetect != newValue)
-        {
-            _isVolumeDetect = newValue;
-            PhysicsScene.TaintedObject("BSPrim.SetVolumeDetect", delegate()
-            {
-                // DetailLog("{0},setVolumeDetect,taint,volDetect={1}", LocalID, _isVolumeDetect);
-                SetObjectDynamic(true);
-            });
-        }
-        return;
-    }
-    public override OMV.Vector3 Velocity {
-        get { return _velocity; }
-        set {
-            _velocity = value;
-            PhysicsScene.TaintedObject("BSPrim.setVelocity", delegate()
-            {
-                // DetailLog("{0},BSPrim.SetVelocity,taint,vel={1}", LocalID, _velocity);
-                ForceVelocity = _velocity;
-            });
-        }
-    }
-    public override OMV.Vector3 ForceVelocity {
-        get { return _velocity; }
-        set {
-            PhysicsScene.AssertInTaintTime("BSPrim.ForceVelocity");
-
-            _velocity = value;
-            if (PhysBody.HasPhysicalBody)
-            {
-                BulletSimAPI.SetLinearVelocity2(PhysBody.ptr, _velocity);
-                ActivateIfPhysical(false);
-            }
-        }
-    }
-    public override OMV.Vector3 Torque {
-        get { return _torque; }
-        set {
-            _torque = value;
-            if (_torque != OMV.Vector3.Zero)
-            {
-                // If the torque is non-zero, it must be reapplied each tick because
-                //    Bullet clears the forces applied last frame.
-                RegisterPreStepAction("BSPrim.setTorque", LocalID,
-                    delegate(float timeStep)
-                    {
-                        if (PhysBody.HasPhysicalBody)
-                            AddAngularForce(_torque, false, true);
-                    }
-                );
-            }
-            else
-            {
-                UnRegisterPreStepAction("BSPrim.setTorque", LocalID);
-            }
-            // DetailLog("{0},BSPrim.SetTorque,call,torque={1}", LocalID, _torque);
-        }
-    }
-    public override float CollisionScore {
-        get { return _collisionScore; }
-        set { _collisionScore = value;
-        }
-    }
-    public override OMV.Vector3 Acceleration {
-        get { return _acceleration; }
-        set { _acceleration = value; }
-    }
-    public override OMV.Quaternion RawOrientation
-    {
-        get { return _orientation; }
-        set { _orientation = value; }
-    }
-    public override OMV.Quaternion Orientation {
-        get {
-            /* NOTE: this refetch is not necessary. The simulator knows about linkset children
-             *    and does not fetch this position info for children. Thus this is commented out.
-            // Children move around because tied to parent. Get a fresh value.
-            if (!Linkset.IsRoot(this))
-            {
-                _orientation = Linkset.OrientationGet(this);
-            }
-             */
-            return _orientation;
-        }
-        set {
-            if (_orientation == value)
-                return;
-            _orientation = value;
-
-            // A linkset might need to know if a component information changed.
-            Linkset.UpdateProperties(this, false);
-
-            PhysicsScene.TaintedObject("BSPrim.setOrientation", delegate()
-            {
-                if (PhysBody.HasPhysicalBody)
-                {
-                    // _position = BulletSimAPI.GetObjectPosition2(PhysicsScene.World.ptr, BSBody.ptr);
-                    // DetailLog("{0},BSPrim.setOrientation,taint,pos={1},orient={2}", LocalID, _position, _orientation);
-                    BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-                }
-            });
-        }
-    }
-    // Go directly to Bullet to get/set the value.
-    public override OMV.Quaternion ForceOrientation
-    {
-        get
-        {
-            _orientation = BulletSimAPI.GetOrientation2(PhysBody.ptr);
-            return _orientation;
-        }
-        set
-        {
-            _orientation = value;
-            BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-        }
-    }
-    public override int PhysicsActorType {
-        get { return _physicsActorType; }
-        set { _physicsActorType = value; }
-    }
-    public override bool IsPhysical {
-        get { return _isPhysical; }
-        set {
-            if (_isPhysical != value)
-            {
-                _isPhysical = value;
-                PhysicsScene.TaintedObject("BSPrim.setIsPhysical", delegate()
-                {
-                    // DetailLog("{0},setIsPhysical,taint,isPhys={1}", LocalID, _isPhysical);
-                    SetObjectDynamic(true);
-                    // whether phys-to-static or static-to-phys, the object is not moving.
-                    ZeroMotion(true);
-                });
-            }
-        }
-    }
-
-    // An object is static (does not move) if selected or not physical
-    public override bool IsStatic
-    {
-        get { return _isSelected || !IsPhysical; }
-    }
-
-    // An object is solid if it's not phantom and if it's not doing VolumeDetect
-    public override bool IsSolid
-    {
-        get { return !IsPhantom && !_isVolumeDetect; }
-    }
-
-    // Make gravity work if the object is physical and not selected
-    // Called at taint-time!!
-    private void SetObjectDynamic(bool forceRebuild)
-    {
-        // Recreate the physical object if necessary
-        CreateGeomAndObject(forceRebuild);
-    }
-
-    // Convert the simulator's physical properties into settings on BulletSim objects.
-    // There are four flags we're interested in:
-    //     IsStatic: Object does not move, otherwise the object has mass and moves
-    //     isSolid: other objects bounce off of this object
-    //     isVolumeDetect: other objects pass through but can generate collisions
-    //     collisionEvents: whether this object returns collision events
-    private void UpdatePhysicalParameters()
-    {
-        // DetailLog("{0},BSPrim.UpdatePhysicalParameters,entry,body={1},shape={2}", LocalID, BSBody, BSShape);
-
-        // Mangling all the physical properties requires the object not be in the physical world.
-        // This is a NOOP if the object is not in the world (BulletSim and Bullet ignore objects not found).
-        BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, PhysBody.ptr);
-
-        // Set up the object physicalness (does gravity and collisions move this object)
-        MakeDynamic(IsStatic);
-
-        // Update vehicle specific parameters (after MakeDynamic() so can change physical parameters)
-        _vehicle.Refresh();
-
-        // Arrange for collision events if the simulator wants them
-        EnableCollisions(SubscribedEvents());
-
-        // Make solid or not (do things bounce off or pass through this object).
-        MakeSolid(IsSolid);
-
-        BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, PhysBody.ptr, _position, _orientation);
-
-        // Rebuild its shape
-        BulletSimAPI.UpdateSingleAabb2(PhysicsScene.World.ptr, PhysBody.ptr);
-
-        // Collision filter can be set only when the object is in the world
-        PhysBody.ApplyCollisionMask();
-
-        // Recompute any linkset parameters.
-        // When going from non-physical to physical, this re-enables the constraints that
-        //     had been automatically disabled when the mass was set to zero.
-        // For compound based linksets, this enables and disables interactions of the children.
-        Linkset.Refresh(this);
-
-        DetailLog("{0},BSPrim.UpdatePhysicalParameters,taintExit,static={1},solid={2},mass={3},collide={4},cf={5:X},body={6},shape={7}",
-                        LocalID, IsStatic, IsSolid, Mass, SubscribedEvents(), CurrentCollisionFlags, PhysBody, PhysShape);
-    }
-
-    // "Making dynamic" means changing to and from static.
-    // When static, gravity does not effect the object and it is fixed in space.
-    // When dynamic, the object can fall and be pushed by others.
-    // This is independent of its 'solidness' which controls what passes through
-    //    this object and what interacts with it.
-    private void MakeDynamic(bool makeStatic)
-    {
-        if (makeStatic)
-        {
-            // Become a Bullet 'static' object type
-            CurrentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_STATIC_OBJECT);
-            // Stop all movement
-            ZeroMotion(true);
-
-            // Set various physical properties so other object interact properly
-            MaterialAttributes matAttrib = BSMaterials.GetAttributes(Material, false);
-            BulletSimAPI.SetFriction2(PhysBody.ptr, matAttrib.friction);
-            BulletSimAPI.SetRestitution2(PhysBody.ptr, matAttrib.restitution);
-
-            // Mass is zero which disables a bunch of physics stuff in Bullet
-            UpdatePhysicalMassProperties(0f, false);
-            // Set collision detection parameters
-            if (BSParam.CcdMotionThreshold > 0f)
-            {
-                BulletSimAPI.SetCcdMotionThreshold2(PhysBody.ptr, BSParam.CcdMotionThreshold);
-                BulletSimAPI.SetCcdSweptSphereRadius2(PhysBody.ptr, BSParam.CcdSweptSphereRadius);
-            }
-
-            // The activation state is 'disabled' so Bullet will not try to act on it.
-            // BulletSimAPI.ForceActivationState2(PhysBody.ptr, ActivationState.DISABLE_SIMULATION);
-            // Start it out sleeping and physical actions could wake it up.
-            BulletSimAPI.ForceActivationState2(PhysBody.ptr, ActivationState.ISLAND_SLEEPING);
-
-            // This collides like a static object
-            PhysBody.collisionType = CollisionType.Static;
-
-            // There can be special things needed for implementing linksets
-            Linkset.MakeStatic(this);
-        }
-        else
-        {
-            // Not a Bullet static object
-            CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_STATIC_OBJECT);
-
-            // Set various physical properties so other object interact properly
-            MaterialAttributes matAttrib = BSMaterials.GetAttributes(Material, true);
-            BulletSimAPI.SetFriction2(PhysBody.ptr, matAttrib.friction);
-            BulletSimAPI.SetRestitution2(PhysBody.ptr, matAttrib.restitution);
-
-            // per http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=3382
-            // Since this can be called multiple times, only zero forces when becoming physical
-            // BulletSimAPI.ClearAllForces2(BSBody.ptr);
-
-            // For good measure, make sure the transform is set through to the motion state
-            BulletSimAPI.SetTranslation2(PhysBody.ptr, _position, _orientation);
-
-            // Center of mass is at the center of the object
-            // DEBUG DEBUG BulletSimAPI.SetCenterOfMassByPosRot2(Linkset.LinksetRoot.PhysBody.ptr, _position, _orientation);
-
-            // A dynamic object has mass
-            UpdatePhysicalMassProperties(RawMass, false);
-
-            // Set collision detection parameters
-            if (BSParam.CcdMotionThreshold > 0f)
-            {
-                BulletSimAPI.SetCcdMotionThreshold2(PhysBody.ptr, BSParam.CcdMotionThreshold);
-                BulletSimAPI.SetCcdSweptSphereRadius2(PhysBody.ptr, BSParam.CcdSweptSphereRadius);
-            }
-
-            // Various values for simulation limits
-            BulletSimAPI.SetDamping2(PhysBody.ptr, BSParam.LinearDamping, BSParam.AngularDamping);
-            BulletSimAPI.SetDeactivationTime2(PhysBody.ptr, BSParam.DeactivationTime);
-            BulletSimAPI.SetSleepingThresholds2(PhysBody.ptr, BSParam.LinearSleepingThreshold, BSParam.AngularSleepingThreshold);
-            BulletSimAPI.SetContactProcessingThreshold2(PhysBody.ptr, BSParam.ContactProcessingThreshold);
-
-            // This collides like an object.
-            PhysBody.collisionType = CollisionType.Dynamic;
-
-            // Force activation of the object so Bullet will act on it.
-            // Must do the ForceActivationState2() to overcome the DISABLE_SIMULATION from static objects.
-            BulletSimAPI.ForceActivationState2(PhysBody.ptr, ActivationState.ACTIVE_TAG);
-
-            // There might be special things needed for implementing linksets.
-            Linkset.MakeDynamic(this);
-        }
-    }
-
-    // "Making solid" means that other object will not pass through this object.
-    // To make transparent, we create a Bullet ghost object.
-    // Note: This expects to be called from the UpdatePhysicalParameters() routine as
-    //     the functions after this one set up the state of a possibly newly created collision body.
-    private void MakeSolid(bool makeSolid)
-    {
-        CollisionObjectTypes bodyType = (CollisionObjectTypes)BulletSimAPI.GetBodyType2(PhysBody.ptr);
-        if (makeSolid)
-        {
-            // Verify the previous code created the correct shape for this type of thing.
-            if ((bodyType & CollisionObjectTypes.CO_RIGID_BODY) == 0)
-            {
-                m_log.ErrorFormat("{0} MakeSolid: physical body of wrong type for solidity. id={1}, type={2}", LogHeader, LocalID, bodyType);
-            }
-            CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_NO_CONTACT_RESPONSE);
-        }
-        else
-        {
-            if ((bodyType & CollisionObjectTypes.CO_GHOST_OBJECT) == 0)
-            {
-                m_log.ErrorFormat("{0} MakeSolid: physical body of wrong type for non-solidness. id={1}, type={2}", LogHeader, LocalID, bodyType);
-            }
-            CurrentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_NO_CONTACT_RESPONSE);
-
-            // Change collision info from a static object to a ghosty collision object
-            PhysBody.collisionType = CollisionType.VolumeDetect;
-        }
-    }
-
-    // Enable physical actions. Bullet will keep sleeping non-moving physical objects so
-    //     they need waking up when parameters are changed.
-    // Called in taint-time!!
-    private void ActivateIfPhysical(bool forceIt)
-    {
-        if (IsPhysical && PhysBody.HasPhysicalBody)
-            BulletSimAPI.Activate2(PhysBody.ptr, forceIt);
-    }
-
-    // Turn on or off the flag controlling whether collision events are returned to the simulator.
-    private void EnableCollisions(bool wantsCollisionEvents)
-    {
-        if (wantsCollisionEvents)
-        {
-            CurrentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
-        }
-        else
-        {
-            CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS);
-        }
-    }
-
-    // prims don't fly
-    public override bool Flying {
-        get { return _flying; }
-        set {
-            _flying = value;
-        }
-    }
-    public override bool SetAlwaysRun {
-        get { return _setAlwaysRun; }
-        set { _setAlwaysRun = value; }
-    }
-    public override bool ThrottleUpdates {
-        get { return _throttleUpdates; }
-        set { _throttleUpdates = value; }
-    }
-    public override bool IsColliding {
-        get { return (CollidingStep == PhysicsScene.SimulationStep); }
-        set { _isColliding = value; }
-    }
-    public override bool CollidingGround {
-        get { return (CollidingGroundStep == PhysicsScene.SimulationStep); }
-        set { _collidingGround = value; }
-    }
-    public override bool CollidingObj {
-        get { return _collidingObj; }
-        set { _collidingObj = value; }
-    }
-    public bool IsPhantom {
-        get {
-            // SceneObjectPart removes phantom objects from the physics scene
-            // so, although we could implement touching and such, we never
-            // are invoked as a phantom object
-            return false;
-        }
-    }
-    public override bool FloatOnWater {
-        set {
-            _floatOnWater = value;
-            PhysicsScene.TaintedObject("BSPrim.setFloatOnWater", delegate()
-            {
-                if (_floatOnWater)
-                    CurrentCollisionFlags = BulletSimAPI.AddToCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_FLOATS_ON_WATER);
-                else
-                    CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.BS_FLOATS_ON_WATER);
-            });
-        }
-    }
-    public override OMV.Vector3 RotationalVelocity {
-        get {
-            return _rotationalVelocity;
-        }
-        set {
-            _rotationalVelocity = value;
-            // m_log.DebugFormat("{0}: RotationalVelocity={1}", LogHeader, _rotationalVelocity);
-            PhysicsScene.TaintedObject("BSPrim.setRotationalVelocity", delegate()
-            {
-                DetailLog("{0},BSPrim.SetRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
-                ForceRotationalVelocity = _rotationalVelocity;
-            });
-        }
-    }
-    public override OMV.Vector3 ForceRotationalVelocity {
-        get {
-            return _rotationalVelocity;
-        }
-        set {
-            _rotationalVelocity = value;
-            if (PhysBody.HasPhysicalBody)
-            {
-                BulletSimAPI.SetAngularVelocity2(PhysBody.ptr, _rotationalVelocity);
-                ActivateIfPhysical(false);
-            }
-        }
-    }
-    public override bool Kinematic {
-        get { return _kinematic; }
-        set { _kinematic = value;
-            // m_log.DebugFormat("{0}: Kinematic={1}", LogHeader, _kinematic);
-        }
-    }
-    public override float Buoyancy {
-        get { return _buoyancy; }
-        set {
-            _buoyancy = value;
-            PhysicsScene.TaintedObject("BSPrim.setBuoyancy", delegate()
-            {
-                ForceBuoyancy = _buoyancy;
-            });
-        }
-    }
-    public override float ForceBuoyancy {
-        get { return _buoyancy; }
-        set {
-            _buoyancy = value;
-            // DetailLog("{0},BSPrim.setForceBuoyancy,taint,buoy={1}", LocalID, _buoyancy);
-            // Force the recalculation of the various inertia,etc variables in the object
-            UpdatePhysicalMassProperties(_mass, true);
-            ActivateIfPhysical(false);
-        }
-    }
-
-    // Used for MoveTo
-    public override OMV.Vector3 PIDTarget {
-        set { _PIDTarget = value; }
-    }
-    public override bool PIDActive {
-        set { _usePID = value; }
-    }
-    public override float PIDTau {
-        set { _PIDTau = value; }
-    }
-
-    // Used for llSetHoverHeight and maybe vehicle height
-    // Hover Height will override MoveTo target's Z
-    public override bool PIDHoverActive {
-        set { _useHoverPID = value; }
-    }
-    public override float PIDHoverHeight {
-        set { _PIDHoverHeight = value; }
-    }
-    public override PIDHoverType PIDHoverType {
-        set { _PIDHoverType = value; }
-    }
-    public override float PIDHoverTau {
-        set { _PIDHoverTao = value; }
-    }
-
-    // For RotLookAt
-    public override OMV.Quaternion APIDTarget { set { return; } }
-    public override bool APIDActive { set { return; } }
-    public override float APIDStrength { set { return; } }
-    public override float APIDDamping { set { return; } }
-
-    public override void AddForce(OMV.Vector3 force, bool pushforce) {
-        // Since this force is being applied in only one step, make this a force per second.
-        OMV.Vector3 addForce = force / PhysicsScene.LastTimeStep;
-        AddForce(addForce, pushforce, false);
-    }
-    // Applying a force just adds this to the total force on the object.
-    // This added force will only last the next simulation tick.
-    public void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) {
-        // for an object, doesn't matter if force is a pushforce or not
-        if (force.IsFinite())
-        {
-            float magnitude = force.Length();
-            if (magnitude > 20000f)
-            {
-                // Force has a limit
-                force = force / magnitude * 20000f;
-            }
-
-            OMV.Vector3 addForce = force;
-            DetailLog("{0},BSPrim.addForce,call,force={1}", LocalID, addForce);
-
-            PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate()
-            {
-                // Bullet adds this central force to the total force for this tick
-                DetailLog("{0},BSPrim.addForce,taint,force={1}", LocalID, addForce);
-                if (PhysBody.HasPhysicalBody)
-                {
-                    BulletSimAPI.ApplyCentralForce2(PhysBody.ptr, addForce);
-                    ActivateIfPhysical(false);
-                }
-            });
-        }
-        else
-        {
-            m_log.WarnFormat("{0}: Got a NaN force applied to a prim. LocalID={1}", LogHeader, LocalID);
-            return;
-        }
-    }
-
-    public override void AddAngularForce(OMV.Vector3 force, bool pushforce) {
-        AddAngularForce(force, pushforce, false);
-    }
-    public void AddAngularForce(OMV.Vector3 force, bool pushforce, bool inTaintTime)
-    {
-        if (force.IsFinite())
-        {
-            OMV.Vector3 angForce = force;
-            PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddAngularForce", delegate()
-            {
-                if (PhysBody.HasPhysicalBody)
-                {
-                    BulletSimAPI.ApplyTorque2(PhysBody.ptr, angForce);
-                    ActivateIfPhysical(false);
-                }
-            });
-        }
-        else
-        {
-            m_log.WarnFormat("{0}: Got a NaN force applied to a prim. LocalID={1}", LogHeader, LocalID);
-            return;
-        }
-    }
-
-    // A torque impulse.
-    // ApplyTorqueImpulse adds torque directly to the angularVelocity.
-    // AddAngularForce accumulates the force and applied it to the angular velocity all at once.
-    // Computed as: angularVelocity += impulse * inertia;
-    public void ApplyTorqueImpulse(OMV.Vector3 impulse, bool inTaintTime)
-    {
-        OMV.Vector3 applyImpulse = impulse;
-        PhysicsScene.TaintedObject(inTaintTime, "BSPrim.ApplyTorqueImpulse", delegate()
-        {
-            if (PhysBody.HasPhysicalBody)
-            {
-                BulletSimAPI.ApplyTorqueImpulse2(PhysBody.ptr, applyImpulse);
-                ActivateIfPhysical(false);
-            }
-        });
-    }
-
-    public override void SetMomentum(OMV.Vector3 momentum) {
-        // DetailLog("{0},BSPrim.SetMomentum,call,mom={1}", LocalID, momentum);
-    }
-    #region Mass Calculation
-
-    private float CalculateMass()
-    {
-        float volume = _size.X * _size.Y * _size.Z; // default
-        float tmp;
-
-        float returnMass = 0;
-        float hollowAmount = (float)BaseShape.ProfileHollow * 2.0e-5f;
-        float hollowVolume = hollowAmount * hollowAmount;
-
-        switch (BaseShape.ProfileShape)
-        {
-            case ProfileShape.Square:
-                // default box
-
-                if (BaseShape.PathCurve == (byte)Extrusion.Straight)
-                    {
-                    if (hollowAmount > 0.0)
-                        {
-                        switch (BaseShape.HollowShape)
-                            {
-                            case HollowShape.Square:
-                            case HollowShape.Same:
-                                break;
-
-                            case HollowShape.Circle:
-
-                                hollowVolume *= 0.78539816339f;
-                                break;
-
-                            case HollowShape.Triangle:
-
-                                hollowVolume *= (0.5f * .5f);
-                                break;
-
-                            default:
-                                hollowVolume = 0;
-                                break;
-                            }
-                        volume *= (1.0f - hollowVolume);
-                        }
-                    }
-
-                else if (BaseShape.PathCurve == (byte)Extrusion.Curve1)
-                    {
-                    //a tube
-
-                    volume *= 0.78539816339e-2f * (float)(200 - BaseShape.PathScaleX);
-                    tmp= 1.0f -2.0e-2f * (float)(200 - BaseShape.PathScaleY);
-                    volume -= volume*tmp*tmp;
-
-                    if (hollowAmount > 0.0)
-                        {
-                        hollowVolume *= hollowAmount;
-
-                        switch (BaseShape.HollowShape)
-                            {
-                            case HollowShape.Square:
-                            case HollowShape.Same:
-                                break;
-
-                            case HollowShape.Circle:
-                                hollowVolume *= 0.78539816339f;;
-                                break;
-
-                            case HollowShape.Triangle:
-                                hollowVolume *= 0.5f * 0.5f;
-                                break;
-                            default:
-                                hollowVolume = 0;
-                                break;
-                            }
-                        volume *= (1.0f - hollowVolume);
-                        }
-                    }
-
-                break;
-
-            case ProfileShape.Circle:
-
-                if (BaseShape.PathCurve == (byte)Extrusion.Straight)
-                    {
-                    volume *= 0.78539816339f; // elipse base
-
-                    if (hollowAmount > 0.0)
-                        {
-                        switch (BaseShape.HollowShape)
-                            {
-                            case HollowShape.Same:
-                            case HollowShape.Circle:
-                                break;
-
-                            case HollowShape.Square:
-                                hollowVolume *= 0.5f * 2.5984480504799f;
-                                break;
-
-                            case HollowShape.Triangle:
-                                hollowVolume *= .5f * 1.27323954473516f;
-                                break;
-
-                            default:
-                                hollowVolume = 0;
-                                break;
-                            }
-                        volume *= (1.0f - hollowVolume);
-                        }
-                    }
-
-                else if (BaseShape.PathCurve == (byte)Extrusion.Curve1)
-                    {
-                    volume *= 0.61685027506808491367715568749226e-2f * (float)(200 - BaseShape.PathScaleX);
-                    tmp = 1.0f - .02f * (float)(200 - BaseShape.PathScaleY);
-                    volume *= (1.0f - tmp * tmp);
-
-                    if (hollowAmount > 0.0)
-                        {
-
-                        // calculate the hollow volume by it's shape compared to the prim shape
-                        hollowVolume *= hollowAmount;
-
-                        switch (BaseShape.HollowShape)
-                            {
-                            case HollowShape.Same:
-                            case HollowShape.Circle:
-                                break;
-
-                            case HollowShape.Square:
-                                hollowVolume *= 0.5f * 2.5984480504799f;
-                                break;
-
-                            case HollowShape.Triangle:
-                                hollowVolume *= .5f * 1.27323954473516f;
-                                break;
-
-                            default:
-                                hollowVolume = 0;
-                                break;
-                            }
-                        volume *= (1.0f - hollowVolume);
-                        }
-                    }
-                break;
-
-            case ProfileShape.HalfCircle:
-                if (BaseShape.PathCurve == (byte)Extrusion.Curve1)
-                {
-                volume *= 0.52359877559829887307710723054658f;
-                }
-                break;
-
-            case ProfileShape.EquilateralTriangle:
-
-                if (BaseShape.PathCurve == (byte)Extrusion.Straight)
-                    {
-                    volume *= 0.32475953f;
-
-                    if (hollowAmount > 0.0)
-                        {
-
-                        // calculate the hollow volume by it's shape compared to the prim shape
-                        switch (BaseShape.HollowShape)
-                            {
-                            case HollowShape.Same:
-                            case HollowShape.Triangle:
-                                hollowVolume *= .25f;
-                                break;
-
-                            case HollowShape.Square:
-                                hollowVolume *= 0.499849f * 3.07920140172638f;
-                                break;
-
-                            case HollowShape.Circle:
-                                // Hollow shape is a perfect cyllinder in respect to the cube's scale
-                                // Cyllinder hollow volume calculation
-
-                                hollowVolume *= 0.1963495f * 3.07920140172638f;
-                                break;
-
-                            default:
-                                hollowVolume = 0;
-                                break;
-                            }
-                        volume *= (1.0f - hollowVolume);
-                        }
-                    }
-                else if (BaseShape.PathCurve == (byte)Extrusion.Curve1)
-                    {
-                    volume *= 0.32475953f;
-                    volume *= 0.01f * (float)(200 - BaseShape.PathScaleX);
-                    tmp = 1.0f - .02f * (float)(200 - BaseShape.PathScaleY);
-                    volume *= (1.0f - tmp * tmp);
-
-                    if (hollowAmount > 0.0)
-                        {
-
-                        hollowVolume *= hollowAmount;
-
-                        switch (BaseShape.HollowShape)
-                            {
-                            case HollowShape.Same:
-                            case HollowShape.Triangle:
-                                hollowVolume *= .25f;
-                                break;
-
-                            case HollowShape.Square:
-                                hollowVolume *= 0.499849f * 3.07920140172638f;
-                                break;
-
-                            case HollowShape.Circle:
-
-                                hollowVolume *= 0.1963495f * 3.07920140172638f;
-                                break;
-
-                            default:
-                                hollowVolume = 0;
-                                break;
-                            }
-                        volume *= (1.0f - hollowVolume);
-                        }
-                    }
-                    break;
-
-            default:
-                break;
-            }
-
-
-
-        float taperX1;
-        float taperY1;
-        float taperX;
-        float taperY;
-        float pathBegin;
-        float pathEnd;
-        float profileBegin;
-        float profileEnd;
-
-        if (BaseShape.PathCurve == (byte)Extrusion.Straight || BaseShape.PathCurve == (byte)Extrusion.Flexible)
-            {
-            taperX1 = BaseShape.PathScaleX * 0.01f;
-            if (taperX1 > 1.0f)
-                taperX1 = 2.0f - taperX1;
-            taperX = 1.0f - taperX1;
-
-            taperY1 = BaseShape.PathScaleY * 0.01f;
-            if (taperY1 > 1.0f)
-                taperY1 = 2.0f - taperY1;
-            taperY = 1.0f - taperY1;
-            }
-        else
-            {
-            taperX = BaseShape.PathTaperX * 0.01f;
-            if (taperX < 0.0f)
-                taperX = -taperX;
-            taperX1 = 1.0f - taperX;
-
-            taperY = BaseShape.PathTaperY * 0.01f;
-            if (taperY < 0.0f)
-                taperY = -taperY;
-            taperY1 = 1.0f - taperY;
-
-            }
-
-
-        volume *= (taperX1 * taperY1 + 0.5f * (taperX1 * taperY + taperX * taperY1) + 0.3333333333f * taperX * taperY);
-
-        pathBegin = (float)BaseShape.PathBegin * 2.0e-5f;
-        pathEnd = 1.0f - (float)BaseShape.PathEnd * 2.0e-5f;
-        volume *= (pathEnd - pathBegin);
-
-        // this is crude aproximation
-        profileBegin = (float)BaseShape.ProfileBegin * 2.0e-5f;
-        profileEnd = 1.0f - (float)BaseShape.ProfileEnd * 2.0e-5f;
-        volume *= (profileEnd - profileBegin);
-
-        returnMass = _density * volume;
-
-        /* Comment out code that computes the mass of the linkset. That is done in the Linkset class.
-        if (IsRootOfLinkset)
-        {
-            foreach (BSPrim prim in _childrenPrims)
-            {
-                returnMass += prim.CalculateMass();
-            }
-        }
-         */
-
-        returnMass = Util.Clamp(returnMass, BSParam.MinimumObjectMass, BSParam.MaximumObjectMass);
-
-        return returnMass;
-    }// end CalculateMass
-    #endregion Mass Calculation
-
-    // Rebuild the geometry and object.
-    // This is called when the shape changes so we need to recreate the mesh/hull.
-    // Called at taint-time!!!
-    public void CreateGeomAndObject(bool forceRebuild)
-    {
-        // If this prim is part of a linkset, we must remove and restore the physical
-        //    links if the body is rebuilt.
-        bool needToRestoreLinkset = false;
-        bool needToRestoreVehicle = false;
-
-        // Create the correct physical representation for this type of object.
-        // Updates PhysBody and PhysShape with the new information.
-        // Ignore 'forceRebuild'. This routine makes the right choices and changes of necessary.
-        PhysicsScene.Shapes.GetBodyAndShape(false, PhysicsScene.World, this, null, delegate(BulletBody dBody)
-        {
-            // Called if the current prim body is about to be destroyed.
-            // Remove all the physical dependencies on the old body.
-            // (Maybe someday make the changing of BSShape an event to be subscribed to by BSLinkset, ...)
-            needToRestoreLinkset = Linkset.RemoveBodyDependencies(this);
-            needToRestoreVehicle = _vehicle.RemoveBodyDependencies(this);
-        });
-
-        if (needToRestoreLinkset)
-        {
-            // If physical body dependencies were removed, restore them
-            Linkset.RestoreBodyDependencies(this);
-        }
-        if (needToRestoreVehicle)
-        {
-            // If physical body dependencies were removed, restore them
-            _vehicle.RestoreBodyDependencies(this);
-        }
-
-        // Make sure the properties are set on the new object
-        UpdatePhysicalParameters();
-        return;
-    }
-
-    // The physics engine says that properties have updated. Update same and inform
-    // the world that things have changed.
-    // TODO: do we really need to check for changed? Maybe just copy values and call RequestPhysicsterseUpdate()
-    enum UpdatedProperties {
-        Position      = 1 << 0,
-        Rotation      = 1 << 1,
-        Velocity      = 1 << 2,
-        Acceleration  = 1 << 3,
-        RotationalVel = 1 << 4
-    }
-
-    const float ROTATION_TOLERANCE = 0.01f;
-    const float VELOCITY_TOLERANCE = 0.001f;
-    const float POSITION_TOLERANCE = 0.05f;
-    const float ACCELERATION_TOLERANCE = 0.01f;
-    const float ROTATIONAL_VELOCITY_TOLERANCE = 0.01f;
-
-    public override void UpdateProperties(EntityProperties entprop)
-    {
-        // Updates only for individual prims and for the root object of a linkset.
-        if (Linkset.IsRoot(this))
-        {
-            // A temporary kludge to suppress the rotational effects introduced on vehicles by Bullet
-            // TODO: handle physics introduced by Bullet with computed vehicle physics.
-            if (_vehicle.IsActive)
-            {
-                entprop.RotationalVelocity = OMV.Vector3.Zero;
-            }
-
-            // Assign directly to the local variables so the normal set action does not happen
-            _position = entprop.Position;
-            _orientation = entprop.Rotation;
-            _velocity = entprop.Velocity;
-            _acceleration = entprop.Acceleration;
-            _rotationalVelocity = entprop.RotationalVelocity;
-
-            // The sanity check can change the velocity and/or position.
-            if (IsPhysical && PositionSanityCheck(true))
-            {
-                entprop.Position = _position;
-                entprop.Velocity = _velocity;
-            }
-
-            OMV.Vector3 direction = OMV.Vector3.UnitX * _orientation;   // DEBUG DEBUG DEBUG
-            DetailLog("{0},BSPrim.UpdateProperties,call,pos={1},orient={2},dir={3},vel={4},rotVel={5}",
-                    LocalID, _position, _orientation, direction, _velocity, _rotationalVelocity);
-
-            // remember the current and last set values
-            LastEntityProperties = CurrentEntityProperties;
-            CurrentEntityProperties = entprop;
-
-            base.RequestPhysicsterseUpdate();
-        }
-            /*
-        else
-        {
-            // For debugging, report the movement of children
-            DetailLog("{0},BSPrim.UpdateProperties,child,pos={1},orient={2},vel={3},accel={4},rotVel={5}",
-                    LocalID, entprop.Position, entprop.Rotation, entprop.Velocity,
-                    entprop.Acceleration, entprop.RotationalVelocity);
-        }
-             */
-
-        // The linkset implimentation might want to know about this.
-        Linkset.UpdateProperties(this, true);
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs
deleted file mode 100644
index 4fc3e2a55c..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSScene.cs
+++ /dev/null
@@ -1,957 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading;
-using OpenSim.Framework;
-using OpenSim.Region.Framework;
-using OpenSim.Region.CoreModules;
-using Logging = OpenSim.Region.CoreModules.Framework.Statistics.Logging;
-using OpenSim.Region.Physics.Manager;
-using Nini.Config;
-using log4net;
-using OpenMetaverse;
-
-// TODOs for BulletSim (for BSScene, BSPrim, BSCharacter and BulletSim)
-// Based on material, set density and friction
-// More efficient memory usage when passing hull information from BSPrim to BulletSim
-// Do attachments need to be handled separately? Need collision events. Do not collide with VolumeDetect
-// Implement LockAngularMotion
-// Add PID movement operations. What does ScenePresence.MoveToTarget do?
-// Check terrain size. 128 or 127?
-// Raycast
-//
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public sealed class BSScene : PhysicsScene, IPhysicsParameters
-{
-    private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
-    private static readonly string LogHeader = "[BULLETS SCENE]";
-
-    // The name of the region we're working for.
-    public string RegionName { get; private set; }
-
-    public string BulletSimVersion = "?";
-
-    public Dictionary<uint, BSPhysObject> PhysObjects;
-    public BSShapeCollection Shapes;
-
-    // Keeping track of the objects with collisions so we can report begin and end of a collision
-    public HashSet<BSPhysObject> ObjectsWithCollisions = new HashSet<BSPhysObject>();
-    public HashSet<BSPhysObject> ObjectsWithNoMoreCollisions = new HashSet<BSPhysObject>();
-    // Keep track of all the avatars so we can send them a collision event
-    //    every tick so OpenSim will update its animation.
-    private HashSet<BSPhysObject> m_avatars = new HashSet<BSPhysObject>();
-
-    // let my minuions use my logger
-    public ILog Logger { get { return m_log; } }
-
-    public IMesher mesher;
-    public uint WorldID { get; private set; }
-    public BulletWorld World { get; private set; }
-
-    // All the constraints that have been allocated in this instance.
-    public BSConstraintCollection Constraints { get; private set; }
-
-    // Simulation parameters
-    internal int m_maxSubSteps;
-    internal float m_fixedTimeStep;
-    internal long m_simulationStep = 0;
-    public long SimulationStep { get { return m_simulationStep; } }
-    internal int m_taintsToProcessPerStep;
-    internal float LastTimeStep { get; private set; }
-
-    // Physical objects can register for prestep or poststep events
-    public delegate void PreStepAction(float timeStep);
-    public delegate void PostStepAction(float timeStep);
-    public event PreStepAction BeforeStep;
-    public event PreStepAction AfterStep;
-
-    // A value of the time now so all the collision and update routines do not have to get their own
-    // Set to 'now' just before all the prims and actors are called for collisions and updates
-    public int SimulationNowTime { get; private set; }
-
-    // True if initialized and ready to do simulation steps
-    private bool m_initialized = false;
-
-    // Flag which is true when processing taints.
-    // Not guaranteed to be correct all the time (don't depend on this) but good for debugging.
-    public bool InTaintTime { get; private set; }
-
-    // Pinned memory used to pass step information between managed and unmanaged
-    internal int m_maxCollisionsPerFrame;
-    private BulletXNA.CollisionDesc[] m_collisionArray;
-    //private GCHandle m_collisionArrayPinnedHandle;
-
-    internal int m_maxUpdatesPerFrame;
-    private BulletXNA.EntityProperties[] m_updateArray;
-    //private GCHandle m_updateArrayPinnedHandle;
-
-
-    public const uint TERRAIN_ID = 0;       // OpenSim senses terrain with a localID of zero
-    public const uint GROUNDPLANE_ID = 1;
-    public const uint CHILDTERRAIN_ID = 2;  // Terrain allocated based on our mega-prim childre start here
-
-    public float SimpleWaterLevel { get; set; }
-    public BSTerrainManager TerrainManager { get; private set; }
-
-    public ConfigurationParameters Params
-    {
-        get { return UnmanagedParams[0]; }
-    }
-    public Vector3 DefaultGravity
-    {
-        get { return new Vector3(0f, 0f, Params.gravity); }
-    }
-    // Just the Z value of the gravity
-    public float DefaultGravityZ
-    {
-        get { return Params.gravity; }
-    }
-
-    // When functions in the unmanaged code must be called, it is only
-    //   done at a known time just before the simulation step. The taint
-    //   system saves all these function calls and executes them in
-    //   order before the simulation.
-    public delegate void TaintCallback();
-    private struct TaintCallbackEntry
-    {
-        public String ident;
-        public TaintCallback callback;
-        public TaintCallbackEntry(string i, TaintCallback c)
-        {
-            ident = i;
-            callback = c;
-        }
-    }
-    private Object _taintLock = new Object();   // lock for using the next object
-    private List<TaintCallbackEntry> _taintOperations;
-    private Dictionary<string, TaintCallbackEntry> _postTaintOperations;
-    private List<TaintCallbackEntry> _postStepOperations;
-
-    // A pointer to an instance if this structure is passed to the C++ code
-    // Used to pass basic configuration values to the unmanaged code.
-    internal ConfigurationParameters[] UnmanagedParams;
-    //GCHandle m_paramsHandle;
-
-    // Handle to the callback used by the unmanaged code to call into the managed code.
-    // Used for debug logging.
-    // Need to store the handle in a persistant variable so it won't be freed.
-    private BulletSimAPI.DebugLogCallback m_DebugLogCallbackHandle;
-
-    // Sometimes you just have to log everything.
-    public Logging.LogWriter PhysicsLogging;
-    private bool m_physicsLoggingEnabled;
-    private string m_physicsLoggingDir;
-    private string m_physicsLoggingPrefix;
-    private int m_physicsLoggingFileMinutes;
-    private bool m_physicsLoggingDoFlush;
-    // 'true' of the vehicle code is to log lots of details
-    public bool VehicleLoggingEnabled { get; private set; }
-    public bool VehiclePhysicalLoggingEnabled { get; private set; }
-
-    #region Construction and Initialization
-    public BSScene(string identifier)
-    {
-        m_initialized = false;
-        // we are passed the name of the region we're working for.
-        RegionName = identifier;
-    }
-
-    public override void Initialise(IMesher meshmerizer, IConfigSource config)
-    {
-        mesher = meshmerizer;
-        _taintOperations = new List<TaintCallbackEntry>();
-        _postTaintOperations = new Dictionary<string, TaintCallbackEntry>();
-        _postStepOperations = new List<TaintCallbackEntry>();
-        PhysObjects = new Dictionary<uint, BSPhysObject>();
-        Shapes = new BSShapeCollection(this);
-
-        // Allocate pinned memory to pass parameters.
-        UnmanagedParams = new ConfigurationParameters[1];
-        //m_paramsHandle = GCHandle.Alloc(UnmanagedParams, GCHandleType.Pinned);
-
-        // Set default values for physics parameters plus any overrides from the ini file
-        GetInitialParameterValues(config);
-
-        // allocate more pinned memory close to the above in an attempt to get the memory all together
-        m_collisionArray = new BulletXNA.CollisionDesc[0];
-        //m_collisionArrayPinnedHandle = GCHandle.Alloc(m_collisionArray, GCHandleType.Pinned);
-        m_updateArray = new BulletXNA.EntityProperties[0];
-        //m_updateArrayPinnedHandle = GCHandle.Alloc(m_updateArray, GCHandleType.Pinned);
-
-        // Enable very detailed logging.
-        // By creating an empty logger when not logging, the log message invocation code
-        //     can be left in and every call doesn't have to check for null.
-        if (m_physicsLoggingEnabled)
-        {
-            PhysicsLogging = new Logging.LogWriter(m_physicsLoggingDir, m_physicsLoggingPrefix, m_physicsLoggingFileMinutes);
-            PhysicsLogging.ErrorLogger = m_log; // for DEBUG. Let's the logger output error messages.
-        }
-        else
-        {
-            PhysicsLogging = new Logging.LogWriter();
-        }
-
-        // If Debug logging level, enable logging from the unmanaged code
-        m_DebugLogCallbackHandle = null;
-        if (m_log.IsDebugEnabled || PhysicsLogging.Enabled)
-        {
-            m_log.DebugFormat("{0}: Initialize: Setting debug callback for unmanaged code", LogHeader);
-            if (PhysicsLogging.Enabled)
-                // The handle is saved in a variable to make sure it doesn't get freed after this call
-                m_DebugLogCallbackHandle = new BulletSimAPI.DebugLogCallback(BulletLoggerPhysLog);
-            else
-                m_DebugLogCallbackHandle = new BulletSimAPI.DebugLogCallback(BulletLogger);
-        }
-
-        // Get the version of the DLL
-        // TODO: this doesn't work yet. Something wrong with marshaling the returned string.
-        // BulletSimVersion = BulletSimAPI.GetVersion();
-        // m_log.WarnFormat("{0}: BulletSim.dll version='{1}'", LogHeader, BulletSimVersion);
-
-        // The bounding box for the simulated world. The origin is 0,0,0 unless we're
-        //    a child in a mega-region.
-        // Bullet actually doesn't care about the extents of the simulated
-        //    area. It tracks active objects no matter where they are.
-        Vector3 worldExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight);
-
-        // m_log.DebugFormat("{0}: Initialize: Calling BulletSimAPI.Initialize.", LogHeader);
-
-        World = new BulletWorld(0, this, BulletSimAPI.Initialize2(worldExtent, UnmanagedParams,
-                                        m_maxCollisionsPerFrame, ref m_collisionArray,
-                                        m_maxUpdatesPerFrame,ref m_updateArray,
-                                        m_DebugLogCallbackHandle));
-
-        Constraints = new BSConstraintCollection(World);
-
-        TerrainManager = new BSTerrainManager(this);
-        TerrainManager.CreateInitialGroundPlaneAndTerrain();
-
-        m_log.WarnFormat("{0} Linksets implemented with {1}", LogHeader, (BSLinkset.LinksetImplementation)BSParam.LinksetImplementation);
-
-        InTaintTime = false;
-        m_initialized = true;
-    }
-
-    // All default parameter values are set here. There should be no values set in the
-    // variable definitions.
-    private void GetInitialParameterValues(IConfigSource config)
-    {
-        ConfigurationParameters parms = new ConfigurationParameters();
-        UnmanagedParams[0] = parms;
-
-        BSParam.SetParameterDefaultValues(this);
-
-        if (config != null)
-        {
-            // If there are specifications in the ini file, use those values
-            IConfig pConfig = config.Configs["BulletSim"];
-            if (pConfig != null)
-            {
-                BSParam.SetParameterConfigurationValues(this, pConfig);
-
-                // Very detailed logging for physics debugging
-                m_physicsLoggingEnabled = pConfig.GetBoolean("PhysicsLoggingEnabled", false);
-                m_physicsLoggingDir = pConfig.GetString("PhysicsLoggingDir", ".");
-                m_physicsLoggingPrefix = pConfig.GetString("PhysicsLoggingPrefix", "physics-%REGIONNAME%-");
-                m_physicsLoggingFileMinutes = pConfig.GetInt("PhysicsLoggingFileMinutes", 5);
-                m_physicsLoggingDoFlush = pConfig.GetBoolean("PhysicsLoggingDoFlush", false);
-                // Very detailed logging for vehicle debugging
-                VehicleLoggingEnabled = pConfig.GetBoolean("VehicleLoggingEnabled", false);
-                VehiclePhysicalLoggingEnabled = pConfig.GetBoolean("VehiclePhysicalLoggingEnabled", false);
-
-                // Do any replacements in the parameters
-                m_physicsLoggingPrefix = m_physicsLoggingPrefix.Replace("%REGIONNAME%", RegionName);
-            }
-
-            // The material characteristics.
-            BSMaterials.InitializeFromDefaults(Params);
-            if (pConfig != null)
-            {
-                // Let the user add new and interesting material property values.
-                BSMaterials.InitializefromParameters(pConfig);
-            }
-        }
-    }
-
-    // A helper function that handles a true/false parameter and returns the proper float number encoding
-    float ParamBoolean(IConfig config, string parmName, float deflt)
-    {
-        float ret = deflt;
-        if (config.Contains(parmName))
-        {
-            ret = ConfigurationParameters.numericFalse;
-            if (config.GetBoolean(parmName, false))
-            {
-                ret = ConfigurationParameters.numericTrue;
-            }
-        }
-        return ret;
-    }
-
-    // Called directly from unmanaged code so don't do much
-    private void BulletLogger(string msg)
-    {
-        m_log.Debug("[BULLETS UNMANAGED]:" + msg);
-    }
-
-    // Called directly from unmanaged code so don't do much
-    private void BulletLoggerPhysLog(string msg)
-    {
-        DetailLog("[BULLETS UNMANAGED]:" + msg);
-    }
-
-    public override void Dispose()
-    {
-        // m_log.DebugFormat("{0}: Dispose()", LogHeader);
-
-        // make sure no stepping happens while we're deleting stuff
-        m_initialized = false;
-
-        foreach (KeyValuePair<uint, BSPhysObject> kvp in PhysObjects)
-        {
-            kvp.Value.Destroy();
-        }
-        PhysObjects.Clear();
-
-        // Now that the prims are all cleaned up, there should be no constraints left
-        if (Constraints != null)
-        {
-            Constraints.Dispose();
-            Constraints = null;
-        }
-
-        if (Shapes != null)
-        {
-            Shapes.Dispose();
-            Shapes = null;
-        }
-
-        if (TerrainManager != null)
-        {
-            TerrainManager.ReleaseGroundPlaneAndTerrain();
-            TerrainManager.Dispose();
-            TerrainManager = null;
-        }
-
-        // Anything left in the unmanaged code should be cleaned out
-        BulletSimAPI.Shutdown2(World.ptr);
-
-        // Not logging any more
-        PhysicsLogging.Close();
-    }
-    #endregion // Construction and Initialization
-
-    #region Prim and Avatar addition and removal
-
-    public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 size, bool isFlying)
-    {
-        m_log.ErrorFormat("{0}: CALL TO AddAvatar in BSScene. NOT IMPLEMENTED", LogHeader);
-        return null;
-    }
-
-    public override PhysicsActor AddAvatar(uint localID, string avName, Vector3 position, Vector3 size, bool isFlying)
-    {
-        // m_log.DebugFormat("{0}: AddAvatar: {1}", LogHeader, avName);
-
-        if (!m_initialized) return null;
-
-        BSCharacter actor = new BSCharacter(localID, avName, this, position, size, isFlying);
-        lock (PhysObjects) PhysObjects.Add(localID, actor);
-
-        // TODO: Remove kludge someday.
-        // We must generate a collision for avatars whether they collide or not.
-        // This is required by OpenSim to update avatar animations, etc.
-        lock (m_avatars) m_avatars.Add(actor);
-
-        return actor;
-    }
-
-    public override void RemoveAvatar(PhysicsActor actor)
-    {
-        // m_log.DebugFormat("{0}: RemoveAvatar", LogHeader);
-
-        if (!m_initialized) return;
-
-        BSCharacter bsactor = actor as BSCharacter;
-        if (bsactor != null)
-        {
-            try
-            {
-                lock (PhysObjects) PhysObjects.Remove(actor.LocalID);
-                // Remove kludge someday
-                lock (m_avatars) m_avatars.Remove(bsactor);
-            }
-            catch (Exception e)
-            {
-                m_log.WarnFormat("{0}: Attempt to remove avatar that is not in physics scene: {1}", LogHeader, e);
-            }
-            bsactor.Destroy();
-            // bsactor.dispose();
-        }
-    }
-
-    public override void RemovePrim(PhysicsActor prim)
-    {
-        if (!m_initialized) return;
-
-        BSPrim bsprim = prim as BSPrim;
-        if (bsprim != null)
-        {
-            DetailLog("{0},RemovePrim,call", bsprim.LocalID);
-            // m_log.DebugFormat("{0}: RemovePrim. id={1}/{2}", LogHeader, bsprim.Name, bsprim.LocalID);
-            try
-            {
-                lock (PhysObjects) PhysObjects.Remove(bsprim.LocalID);
-            }
-            catch (Exception e)
-            {
-                m_log.ErrorFormat("{0}: Attempt to remove prim that is not in physics scene: {1}", LogHeader, e);
-            }
-            bsprim.Destroy();
-            // bsprim.dispose();
-        }
-        else
-        {
-            m_log.ErrorFormat("{0}: Attempt to remove prim that is not a BSPrim type.", LogHeader);
-        }
-    }
-
-    public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position,
-                                              Vector3 size, Quaternion rotation, bool isPhysical, uint localID)
-    {
-        // m_log.DebugFormat("{0}: AddPrimShape2: {1}", LogHeader, primName);
-
-        if (!m_initialized) return null;
-
-        DetailLog("{0},AddPrimShape,call", localID);
-
-        BSPrim prim = new BSPrim(localID, primName, this, position, size, rotation, pbs, isPhysical);
-        lock (PhysObjects) PhysObjects.Add(localID, prim);
-        return prim;
-    }
-
-    // This is a call from the simulator saying that some physical property has been updated.
-    // The BulletSim driver senses the changing of relevant properties so this taint
-    // information call is not needed.
-    public override void AddPhysicsActorTaint(PhysicsActor prim) { }
-
-    #endregion // Prim and Avatar addition and removal
-
-    #region Simulation
-    // Simulate one timestep
-    public override float Simulate(float timeStep)
-    {
-        // prevent simulation until we've been initialized
-        if (!m_initialized) return 5.0f;
-
-        LastTimeStep = timeStep;
-
-        int updatedEntityCount = 0;
-        //Object updatedEntitiesPtr;
-        int collidersCount = 0;
-        //Object collidersPtr;
-
-        int beforeTime = 0;
-        int simTime = 0;
-
-        // update the prim states while we know the physics engine is not busy
-        int numTaints = _taintOperations.Count;
-
-        InTaintTime = true; // Only used for debugging so locking is not necessary.
-
-        ProcessTaints();
-
-        // Some of the physical objects requre individual, pre-step calls
-        TriggerPreStepEvent(timeStep);
-
-        // the prestep actions might have added taints
-        ProcessTaints();
-
-        InTaintTime = false; // Only used for debugging so locking is not necessary.
-
-        // The following causes the unmanaged code to output ALL the values found in ALL the objects in the world.
-        // Only enable this in a limited test world with few objects.
-        // BulletSimAPI.DumpAllInfo2(World.ptr);    // DEBUG DEBUG DEBUG
-
-        // step the physical world one interval
-        m_simulationStep++;
-        int numSubSteps = 0;
-
-        try
-        {
-            if (PhysicsLogging.Enabled) beforeTime = Util.EnvironmentTickCount();
-
-            numSubSteps = BulletSimAPI.PhysicsStep2(World.ptr, timeStep, m_maxSubSteps, m_fixedTimeStep,
-                        out updatedEntityCount, out m_updateArray, out collidersCount, out m_collisionArray);
-
-            if (PhysicsLogging.Enabled) simTime = Util.EnvironmentTickCountSubtract(beforeTime);
-            DetailLog("{0},Simulate,call, frame={1}, nTaints={2}, simTime={3}, substeps={4}, updates={5}, colliders={6}, objWColl={7}",
-                                    DetailLogZero, m_simulationStep, numTaints, simTime, numSubSteps, 
-                                    updatedEntityCount, collidersCount, ObjectsWithCollisions.Count);
-        }
-        catch (Exception e)
-        {
-            m_log.WarnFormat("{0},PhysicsStep Exception: nTaints={1}, substeps={2}, updates={3}, colliders={4}, e={5}",
-                        LogHeader, numTaints, numSubSteps, updatedEntityCount, collidersCount, e);
-            DetailLog("{0},PhysicsStepException,call, nTaints={1}, substeps={2}, updates={3}, colliders={4}",
-                        DetailLogZero, numTaints, numSubSteps, updatedEntityCount, collidersCount);
-            updatedEntityCount = 0;
-            collidersCount = 0;
-        }
-
-        // Don't have to use the pointers passed back since we know it is the same pinned memory we passed in.
-
-        // Get a value for 'now' so all the collision and update routines don't have to get their own.
-        SimulationNowTime = Util.EnvironmentTickCount();
-
-        // If there were collisions, process them by sending the event to the prim.
-        // Collisions must be processed before updates.
-        if (collidersCount > 0)
-        {
-            for (int ii = 0; ii < collidersCount; ii++)
-            {
-                uint cA = m_collisionArray[ii].aID;
-                uint cB = m_collisionArray[ii].bID;
-                Vector3 point = new Vector3(m_collisionArray[ii].point.X, m_collisionArray[ii].point.Y,
-                                            m_collisionArray[ii].point.Z);
-                Vector3 normal = new Vector3(m_collisionArray[ii].normal.X, m_collisionArray[ii].normal.Y,
-                                            m_collisionArray[ii].normal.Z); 
-                SendCollision(cA, cB, point, normal, 0.01f);
-                SendCollision(cB, cA, point, -normal, 0.01f);
-            }
-        }
-
-        // The above SendCollision's batch up the collisions on the objects.
-        //      Now push the collisions into the simulator.
-        if (ObjectsWithCollisions.Count > 0)
-        {
-            foreach (BSPhysObject bsp in ObjectsWithCollisions)
-                if (!bsp.SendCollisions())
-                {
-                    // If the object is done colliding, see that it's removed from the colliding list
-                    ObjectsWithNoMoreCollisions.Add(bsp);
-                }
-        }
-
-        // This is a kludge to get avatar movement updates.
-        // The simulator expects collisions for avatars even if there are have been no collisions.
-        //    The event updates avatar animations and stuff.
-        // If you fix avatar animation updates, remove this overhead and let normal collision processing happen.
-        foreach (BSPhysObject bsp in m_avatars)
-            if (!ObjectsWithCollisions.Contains(bsp))   // don't call avatars twice
-                bsp.SendCollisions();
-
-        // Objects that are done colliding are removed from the ObjectsWithCollisions list.
-        // Not done above because it is inside an iteration of ObjectWithCollisions.
-        // This complex collision processing is required to create an empty collision
-        //     event call after all collisions have happened on an object. This enables
-        //     the simulator to generate the 'collision end' event.
-        if (ObjectsWithNoMoreCollisions.Count > 0)
-        {
-            foreach (BSPhysObject po in ObjectsWithNoMoreCollisions)
-                ObjectsWithCollisions.Remove(po);
-            ObjectsWithNoMoreCollisions.Clear();
-        }
-        // Done with collisions.
-
-        // If any of the objects had updated properties, tell the object it has been changed by the physics engine
-        if (updatedEntityCount > 0)
-        {
-            for (int ii = 0; ii < updatedEntityCount; ii++)
-            {
-
-                BulletXNA.EntityProperties entprop = m_updateArray[ii];
-                BSPhysObject pobj;
-                if (PhysObjects.TryGetValue(entprop.ID, out pobj))
-                {
-                    EntityProperties prop = new EntityProperties()
-                                                {
-                                                    Acceleration = new Vector3(entprop.Acceleration.X, entprop.Acceleration.Y, entprop.Acceleration.Z),
-                                                    ID = entprop.ID,
-                                                    Position = new Vector3(entprop.Position.X,entprop.Position.Y,entprop.Position.Z),
-                                                    Rotation = new Quaternion(entprop.Rotation.X,entprop.Rotation.Y,entprop.Rotation.Z,entprop.Rotation.W),
-                                                    RotationalVelocity = new Vector3(entprop.AngularVelocity.X,entprop.AngularVelocity.Y,entprop.AngularVelocity.Z),
-                                                    Velocity = new Vector3(entprop.Velocity.X,entprop.Velocity.Y,entprop.Velocity.Z)
-                                                };
-                    //m_log.Debug(pobj.Name + ":" + prop.ToString() + "\n");
-                    pobj.UpdateProperties(prop);
-                }
-            }
-        }
-
-        TriggerPostStepEvent(timeStep);
-
-        // The following causes the unmanaged code to output ALL the values found in ALL the objects in the world.
-        // Only enable this in a limited test world with few objects.
-        // BulletSimAPI.DumpAllInfo2(World.ptr);    // DEBUG DEBUG DEBUG
-
-        // The physics engine returns the number of milliseconds it simulated this call.
-        // These are summed and normalized to one second and divided by 1000 to give the reported physics FPS.
-        // Multiply by 55 to give a nominal frame rate of 55.
-        return (float)numSubSteps * m_fixedTimeStep * 1000f * 55f;
-    }
-
-    // Something has collided
-    private void SendCollision(uint localID, uint collidingWith, Vector3 collidePoint, Vector3 collideNormal, float penetration)
-    {
-        if (localID <= TerrainManager.HighestTerrainID)
-        {
-            return;         // don't send collisions to the terrain
-        }
-
-        BSPhysObject collider;
-        if (!PhysObjects.TryGetValue(localID, out collider))
-        {
-            // If the object that is colliding cannot be found, just ignore the collision.
-            DetailLog("{0},BSScene.SendCollision,colliderNotInObjectList,id={1},with={2}", DetailLogZero, localID, collidingWith);
-            return;
-        }
-
-        // The terrain is not in the physical object list so 'collidee' can be null when Collide() is called.
-        BSPhysObject collidee = null;
-        PhysObjects.TryGetValue(collidingWith, out collidee);
-
-        // DetailLog("{0},BSScene.SendCollision,collide,id={1},with={2}", DetailLogZero, localID, collidingWith);
-
-        if (collider.Collide(collidingWith, collidee, collidePoint, collideNormal, penetration))
-        {
-            // If a collision was posted, remember to send it to the simulator
-            ObjectsWithCollisions.Add(collider);
-        }
-
-        return;
-    }
-
-    #endregion // Simulation
-
-    public override void GetResults() { }
-
-    #region Terrain
-
-    public override void SetTerrain(float[] heightMap) {
-        TerrainManager.SetTerrain(heightMap);
-    }
-
-    public override void SetWaterLevel(float baseheight)
-    {
-        SimpleWaterLevel = baseheight;
-    }
-
-    public override void DeleteTerrain()
-    {
-        // m_log.DebugFormat("{0}: DeleteTerrain()", LogHeader);
-    }
-
-    // Although no one seems to check this, I do support combining.
-    public override bool SupportsCombining()
-    {
-        return TerrainManager.SupportsCombining();
-    }
-    // This call says I am a child to region zero in a mega-region. 'pScene' is that
-    //    of region zero, 'offset' is my offset from regions zero's origin, and
-    //    'extents' is the largest XY that is handled in my region.
-    public override void Combine(PhysicsScene pScene, Vector3 offset, Vector3 extents)
-    {
-        TerrainManager.Combine(pScene, offset, extents);
-    }
-
-    // Unhook all the combining that I know about.
-    public override void UnCombine(PhysicsScene pScene)
-    {
-        TerrainManager.UnCombine(pScene);
-    }
-
-    #endregion // Terrain
-
-    public override Dictionary<uint, float> GetTopColliders()
-    {
-        return new Dictionary<uint, float>();
-    }
-
-    public override bool IsThreaded { get { return false;  } }
-
-    #region Taints
-    // The simulation execution order is:
-    // Simulate()
-    //    DoOneTimeTaints
-    //    TriggerPreStepEvent
-    //    DoOneTimeTaints
-    //    Step()
-    //       ProcessAndForwardCollisions
-    //       ProcessAndForwardPropertyUpdates
-    //    TriggerPostStepEvent
-
-    // Calls to the PhysicsActors can't directly call into the physics engine
-    //       because it might be busy. We delay changes to a known time.
-    // We rely on C#'s closure to save and restore the context for the delegate.
-    public void TaintedObject(String ident, TaintCallback callback)
-    {
-        if (!m_initialized) return;
-
-        lock (_taintLock)
-        {
-            _taintOperations.Add(new TaintCallbackEntry(ident, callback));
-        }
-
-        return;
-    }
-
-    // Sometimes a potentially tainted operation can be used in and out of taint time.
-    // This routine executes the command immediately if in taint-time otherwise it is queued.
-    public void TaintedObject(bool inTaintTime, string ident, TaintCallback callback)
-    {
-        if (inTaintTime)
-            callback();
-        else
-            TaintedObject(ident, callback);
-    }
-
-    private void TriggerPreStepEvent(float timeStep)
-    {
-        PreStepAction actions = BeforeStep;
-        if (actions != null)
-            actions(timeStep);
-
-    }
-
-    private void TriggerPostStepEvent(float timeStep)
-    {
-        PreStepAction actions = AfterStep;
-        if (actions != null)
-            actions(timeStep);
-
-    }
-
-    // When someone tries to change a property on a BSPrim or BSCharacter, the object queues
-    // a callback into itself to do the actual property change. That callback is called
-    // here just before the physics engine is called to step the simulation.
-    public void ProcessTaints()
-    {
-        ProcessRegularTaints();
-        ProcessPostTaintTaints();
-    }
-
-    private void ProcessRegularTaints()
-    {
-        if (_taintOperations.Count > 0)  // save allocating new list if there is nothing to process
-        {
-            // swizzle a new list into the list location so we can process what's there
-            List<TaintCallbackEntry> oldList;
-            lock (_taintLock)
-            {
-                oldList = _taintOperations;
-                _taintOperations = new List<TaintCallbackEntry>();
-            }
-
-            foreach (TaintCallbackEntry tcbe in oldList)
-            {
-                try
-                {
-                    DetailLog("{0},BSScene.ProcessTaints,doTaint,id={1}", DetailLogZero, tcbe.ident); // DEBUG DEBUG DEBUG
-                    tcbe.callback();
-                }
-                catch (Exception e)
-                {
-                    m_log.ErrorFormat("{0}: ProcessTaints: {1}: Exception: {2}", LogHeader, tcbe.ident, e);
-                }
-            }
-            oldList.Clear();
-        }
-    }
-
-    // Schedule an update to happen after all the regular taints are processed.
-    // Note that new requests for the same operation ("ident") for the same object ("ID")
-    //     will replace any previous operation by the same object.
-    public void PostTaintObject(String ident, uint ID, TaintCallback callback)
-    {
-        string uniqueIdent = ident + "-" + ID.ToString();
-        lock (_taintLock)
-        {
-            _postTaintOperations[uniqueIdent] = new TaintCallbackEntry(uniqueIdent, callback);
-        }
-
-        return;
-    }
-
-    // Taints that happen after the normal taint processing but before the simulation step.
-    private void ProcessPostTaintTaints()
-    {
-        if (_postTaintOperations.Count > 0)
-        {
-            Dictionary<string, TaintCallbackEntry> oldList;
-            lock (_taintLock)
-            {
-                oldList = _postTaintOperations;
-                _postTaintOperations = new Dictionary<string, TaintCallbackEntry>();
-            }
-
-            foreach (KeyValuePair<string,TaintCallbackEntry> kvp in oldList)
-            {
-                try
-                {
-                    DetailLog("{0},BSScene.ProcessPostTaintTaints,doTaint,id={1}", DetailLogZero, kvp.Key); // DEBUG DEBUG DEBUG
-                    kvp.Value.callback();
-                }
-                catch (Exception e)
-                {
-                    m_log.ErrorFormat("{0}: ProcessPostTaintTaints: {1}: Exception: {2}", LogHeader, kvp.Key, e);
-                }
-            }
-            oldList.Clear();
-        }
-    }
-
-    // Only used for debugging. Does not change state of anything so locking is not necessary.
-    public bool AssertInTaintTime(string whereFrom)
-    {
-        if (!InTaintTime)
-        {
-            DetailLog("{0},BSScene.AssertInTaintTime,NOT IN TAINT TIME,Region={1},Where={2}", DetailLogZero, RegionName, whereFrom);
-            m_log.ErrorFormat("{0} NOT IN TAINT TIME!! Region={1}, Where={2}", LogHeader, RegionName, whereFrom);
-            Util.PrintCallStack(DetailLog);
-        }
-        return InTaintTime;
-    }
-
-    #endregion // Taints
-
-    #region INI and command line parameter processing
-
-    #region IPhysicsParameters
-    // Get the list of parameters this physics engine supports
-    public PhysParameterEntry[] GetParameterList()
-    {
-        BSParam.BuildParameterTable();
-        return BSParam.SettableParameters;
-    }
-
-    // Set parameter on a specific or all instances.
-    // Return 'false' if not able to set the parameter.
-    // Setting the value in the m_params block will change the value the physics engine
-    //   will use the next time since it's pinned and shared memory.
-    // Some of the values require calling into the physics engine to get the new
-    //   value activated ('terrainFriction' for instance).
-    public bool SetPhysicsParameter(string parm, float val, uint localID)
-    {
-        bool ret = false;
-        BSParam.ParameterDefn theParam;
-        if (BSParam.TryGetParameter(parm, out theParam))
-        {
-            theParam.setter(this, parm, localID, val);
-            ret = true;
-        }
-        return ret;
-    }
-
-    // update all the localIDs specified
-    // If the local ID is APPLY_TO_NONE, just change the default value
-    // If the localID is APPLY_TO_ALL change the default value and apply the new value to all the lIDs
-    // If the localID is a specific object, apply the parameter change to only that object
-    internal delegate void AssignVal(float x);
-    internal void UpdateParameterObject(AssignVal setDefault, string parm, uint localID, float val)
-    {
-        List<uint> objectIDs = new List<uint>();
-        switch (localID)
-        {
-            case PhysParameterEntry.APPLY_TO_NONE:
-                setDefault(val);            // setting only the default value
-                // This will cause a call into the physical world if some operation is specified (SetOnObject).
-                objectIDs.Add(TERRAIN_ID);
-                TaintedUpdateParameter(parm, objectIDs, val);
-                break;
-            case PhysParameterEntry.APPLY_TO_ALL:
-                setDefault(val);  // setting ALL also sets the default value
-                lock (PhysObjects) objectIDs = new List<uint>(PhysObjects.Keys);
-                TaintedUpdateParameter(parm, objectIDs, val);
-                break;
-            default:
-                // setting only one localID
-                objectIDs.Add(localID);
-                TaintedUpdateParameter(parm, objectIDs, val);
-                break;
-        }
-    }
-
-    // schedule the actual updating of the paramter to when the phys engine is not busy
-    private void TaintedUpdateParameter(string parm, List<uint> lIDs, float val)
-    {
-        float xval = val;
-        List<uint> xlIDs = lIDs;
-        string xparm = parm;
-        TaintedObject("BSScene.UpdateParameterSet", delegate() {
-            BSParam.ParameterDefn thisParam;
-            if (BSParam.TryGetParameter(xparm, out thisParam))
-            {
-                if (thisParam.onObject != null)
-                {
-                    foreach (uint lID in xlIDs)
-                    {
-                        BSPhysObject theObject = null;
-                        PhysObjects.TryGetValue(lID, out theObject);
-                        thisParam.onObject(this, theObject, xval);
-                    }
-                }
-            }
-        });
-    }
-
-    // Get parameter.
-    // Return 'false' if not able to get the parameter.
-    public bool GetPhysicsParameter(string parm, out float value)
-    {
-        float val = 0f;
-        bool ret = false;
-        BSParam.ParameterDefn theParam;
-        if (BSParam.TryGetParameter(parm, out theParam))
-        {
-            val = theParam.getter(this);
-            ret = true;
-        }
-        value = val;
-        return ret;
-    }
-
-    #endregion IPhysicsParameters
-
-    #endregion Runtime settable parameters
-
-    // Invoke the detailed logger and output something if it's enabled.
-    public void DetailLog(string msg, params Object[] args)
-    {
-        PhysicsLogging.Write(msg, args);
-        // Add the Flush() if debugging crashes. Gets all the messages written out.
-        if (m_physicsLoggingDoFlush) PhysicsLogging.Flush();
-    }
-    // Used to fill in the LocalID when there isn't one. It's the correct number of characters.
-    public const string DetailLogZero = "0000000000";
-
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSShapeCollection.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSShapeCollection.cs
deleted file mode 100644
index 47fb76870e..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSShapeCollection.cs
+++ /dev/null
@@ -1,1015 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OMV = OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Physics.Manager;
-using OpenSim.Region.Physics.ConvexDecompositionDotNet;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public sealed class BSShapeCollection : IDisposable
-{
-    private static string LogHeader = "[BULLETSIM SHAPE COLLECTION]";
-
-    private BSScene PhysicsScene { get; set; }
-
-    private Object m_collectionActivityLock = new Object();
-
-    // Description of a Mesh
-    private struct MeshDesc
-    {
-        public Object ptr;
-        public int referenceCount;
-        public DateTime lastReferenced;
-        public UInt64 shapeKey;
-    }
-
-    // Description of a hull.
-    // Meshes and hulls have the same shape hash key but we only need hulls for efficient collision calculations.
-    private struct HullDesc
-    {
-        public Object ptr;
-        public int referenceCount;
-        public DateTime lastReferenced;
-        public UInt64 shapeKey;
-    }
-
-    // The sharable set of meshes and hulls. Indexed by their shape hash.
-    private Dictionary<System.UInt64, MeshDesc> Meshes = new Dictionary<System.UInt64, MeshDesc>();
-    private Dictionary<System.UInt64, HullDesc> Hulls = new Dictionary<System.UInt64, HullDesc>();
-
-    private bool DDetail = false;
-
-    public BSShapeCollection(BSScene physScene)
-    {
-        PhysicsScene = physScene;
-        // Set the next to 'true' for very detailed shape update detailed logging (detailed details?)
-        // While detailed debugging is still active, this is better than commenting out all the
-        //     DetailLog statements. When debugging slows down, this and the protected logging
-        //     statements can be commented/removed.
-        DDetail = true;
-    }
-
-    public void Dispose()
-    {
-        // TODO!!!!!!!!!
-    }
-
-    // Callbacks called just before either the body or shape is destroyed.
-    // Mostly used for changing bodies out from under Linksets.
-    // Useful for other cases where parameters need saving.
-    // Passing 'null' says no callback.
-    public delegate void ShapeDestructionCallback(BulletShape shape);
-    public delegate void BodyDestructionCallback(BulletBody body);
-
-    // Called to update/change the body and shape for an object.
-    // First checks the shape and updates that if necessary then makes
-    //    sure the body is of the right type.
-    // Return 'true' if either the body or the shape changed.
-    // 'shapeCallback' and 'bodyCallback' are, if non-null, functions called just before
-    //    the current shape or body is destroyed. This allows the caller to remove any
-    //    higher level dependencies on the shape or body. Mostly used for LinkSets to
-    //    remove the physical constraints before the body is destroyed.
-    // Called at taint-time!!
-    public bool GetBodyAndShape(bool forceRebuild, BulletWorld sim, BSPhysObject prim,
-                    ShapeDestructionCallback shapeCallback, BodyDestructionCallback bodyCallback)
-    {
-        PhysicsScene.AssertInTaintTime("BSShapeCollection.GetBodyAndShape");
-
-        bool ret = false;
-
-        // This lock could probably be pushed down lower but building shouldn't take long
-        lock (m_collectionActivityLock)
-        {
-            // Do we have the correct geometry for this type of object?
-            // Updates prim.BSShape with information/pointers to shape.
-            // Returns 'true' of BSShape is changed to a new shape.
-            bool newGeom = CreateGeom(forceRebuild, prim, shapeCallback);
-            // If we had to select a new shape geometry for the object,
-            //    rebuild the body around it.
-            // Updates prim.BSBody with information/pointers to requested body
-            // Returns 'true' if BSBody was changed.
-            bool newBody = CreateBody((newGeom || forceRebuild), prim, PhysicsScene.World,
-                                    prim.PhysShape, bodyCallback);
-            ret = newGeom || newBody;
-        }
-        DetailLog("{0},BSShapeCollection.GetBodyAndShape,taintExit,force={1},ret={2},body={3},shape={4}",
-                                prim.LocalID, forceRebuild, ret, prim.PhysBody, prim.PhysShape);
-
-        return ret;
-    }
-
-    public bool GetBodyAndShape(bool forceRebuild, BulletWorld sim, BSPhysObject prim)
-    {
-        return GetBodyAndShape(forceRebuild, sim, prim, null, null);
-    }
-
-    // Track another user of a body.
-    // We presume the caller has allocated the body.
-    // Bodies only have one user so the body is just put into the world if not already there.
-    public void ReferenceBody(BulletBody body, bool inTaintTime)
-    {
-        lock (m_collectionActivityLock)
-        {
-            if (DDetail) DetailLog("{0},BSShapeCollection.ReferenceBody,newBody,body={1}", body.ID, body);
-            PhysicsScene.TaintedObject(inTaintTime, "BSShapeCollection.ReferenceBody", delegate()
-            {
-                if (!BulletSimAPI.IsInWorld2(PhysicsScene.World.ptr, body.ptr))
-                {
-                    BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, body.ptr);
-                    if (DDetail) DetailLog("{0},BSShapeCollection.ReferenceBody,addedToWorld,ref={1}", body.ID, body);
-                }
-            });
-        }
-    }
-
-    // Release the usage of a body.
-    // Called when releasing use of a BSBody. BSShape is handled separately.
-    public void DereferenceBody(BulletBody body, bool inTaintTime, BodyDestructionCallback bodyCallback )
-    {
-        if (!body.HasPhysicalBody)
-            return;
-
-        lock (m_collectionActivityLock)
-        {
-            PhysicsScene.TaintedObject(inTaintTime, "BSShapeCollection.DereferenceBody", delegate()
-            {
-                if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceBody,DestroyingBody,body={1},inTaintTime={2}",
-                                            body.ID, body, inTaintTime);
-                // If the caller needs to know the old body is going away, pass the event up.
-                if (bodyCallback != null) bodyCallback(body);
-
-                if (BulletSimAPI.IsInWorld2(PhysicsScene.World.ptr, body.ptr))
-                {
-                    BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, body.ptr);
-                    if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceBody,removingFromWorld. Body={1}", body.ID, body);
-                }
-
-                // Zero any reference to the shape so it is not freed when the body is deleted.
-                BulletSimAPI.SetCollisionShape2(PhysicsScene.World.ptr, body.ptr, null);
-                BulletSimAPI.DestroyObject2(PhysicsScene.World.ptr, body.ptr);
-            });
-        }
-    }
-
-    // Track the datastructures and use count for a shape.
-    // When creating a hull, this is called first to reference the mesh
-    //     and then again to reference the hull.
-    // Meshes and hulls for the same shape have the same hash key.
-    // NOTE that native shapes are not added to the mesh list or removed.
-    // Returns 'true' if this is the initial reference to the shape. Otherwise reused.
-    public bool ReferenceShape(BulletShape shape)
-    {
-        bool ret = false;
-        switch (shape.type)
-        {
-            case BSPhysicsShapeType.SHAPE_MESH:
-                MeshDesc meshDesc;
-                if (Meshes.TryGetValue(shape.shapeKey, out meshDesc))
-                {
-                    // There is an existing instance of this mesh.
-                    meshDesc.referenceCount++;
-                    if (DDetail) DetailLog("{0},BSShapeCollection.ReferenceShape,existingMesh,key={1},cnt={2}",
-                                BSScene.DetailLogZero, shape.shapeKey.ToString("X"), meshDesc.referenceCount);
-                }
-                else
-                {
-                    // This is a new reference to a mesh
-                    meshDesc.ptr = shape.ptr;
-                    meshDesc.shapeKey = shape.shapeKey;
-                    // We keep a reference to the underlying IMesh data so a hull can be built
-                    meshDesc.referenceCount = 1;
-                    if (DDetail) DetailLog("{0},BSShapeCollection.ReferenceShape,newMesh,key={1},cnt={2}",
-                                BSScene.DetailLogZero, shape.shapeKey.ToString("X"), meshDesc.referenceCount);
-                    ret = true;
-                }
-                meshDesc.lastReferenced = System.DateTime.Now;
-                Meshes[shape.shapeKey] = meshDesc;
-                break;
-            case BSPhysicsShapeType.SHAPE_HULL:
-                HullDesc hullDesc;
-                if (Hulls.TryGetValue(shape.shapeKey, out hullDesc))
-                {
-                    // There is an existing instance of this hull.
-                    hullDesc.referenceCount++;
-                    if (DDetail) DetailLog("{0},BSShapeCollection.ReferenceShape,existingHull,key={1},cnt={2}",
-                                BSScene.DetailLogZero, shape.shapeKey.ToString("X"), hullDesc.referenceCount);
-                }
-                else
-                {
-                    // This is a new reference to a hull
-                    hullDesc.ptr = shape.ptr;
-                    hullDesc.shapeKey = shape.shapeKey;
-                    hullDesc.referenceCount = 1;
-                    if (DDetail) DetailLog("{0},BSShapeCollection.ReferenceShape,newHull,key={1},cnt={2}",
-                                BSScene.DetailLogZero, shape.shapeKey.ToString("X"), hullDesc.referenceCount);
-                    ret = true;
-
-                }
-                hullDesc.lastReferenced = System.DateTime.Now;
-                Hulls[shape.shapeKey] = hullDesc;
-                break;
-            case BSPhysicsShapeType.SHAPE_UNKNOWN:
-                break;
-            default:
-                // Native shapes are not tracked and they don't go into any list
-                break;
-        }
-        return ret;
-    }
-
-    // Release the usage of a shape.
-    public void DereferenceShape(BulletShape shape, bool inTaintTime, ShapeDestructionCallback shapeCallback)
-    {
-        if (!shape.HasPhysicalShape)
-            return;
-
-        PhysicsScene.TaintedObject(inTaintTime, "BSShapeCollection.DereferenceShape", delegate()
-        {
-            if (shape.HasPhysicalShape)
-            {
-                if (shape.isNativeShape)
-                {
-                    // Native shapes are not tracked and are released immediately
-                    if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceShape,deleteNativeShape,ptr={1},taintTime={2}",
-                                    BSScene.DetailLogZero, shape.ptr.ToString(), inTaintTime);
-                    if (shapeCallback != null) shapeCallback(shape);
-                    BulletSimAPI.DeleteCollisionShape2(PhysicsScene.World.ptr, shape.ptr);
-                }
-                else
-                {
-                    switch (shape.type)
-                    {
-                        case BSPhysicsShapeType.SHAPE_HULL:
-                            DereferenceHull(shape, shapeCallback);
-                            break;
-                        case BSPhysicsShapeType.SHAPE_MESH:
-                            DereferenceMesh(shape, shapeCallback);
-                            break;
-                        case BSPhysicsShapeType.SHAPE_COMPOUND:
-                            DereferenceCompound(shape, shapeCallback);
-                            break;
-                        case BSPhysicsShapeType.SHAPE_UNKNOWN:
-                            break;
-                        default:
-                            break;
-                    }
-                }
-            }
-        });
-    }
-
-    // Count down the reference count for a mesh shape
-    // Called at taint-time.
-    private void DereferenceMesh(BulletShape shape, ShapeDestructionCallback shapeCallback)
-    {
-        MeshDesc meshDesc;
-        if (Meshes.TryGetValue(shape.shapeKey, out meshDesc))
-        {
-            meshDesc.referenceCount--;
-            // TODO: release the Bullet storage
-            if (shapeCallback != null) shapeCallback(shape);
-            meshDesc.lastReferenced = System.DateTime.Now;
-            Meshes[shape.shapeKey] = meshDesc;
-            if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceMesh,shape={1},refCnt={2}",
-                                BSScene.DetailLogZero, shape, meshDesc.referenceCount);
-
-        }
-    }
-
-    // Count down the reference count for a hull shape
-    // Called at taint-time.
-    private void DereferenceHull(BulletShape shape, ShapeDestructionCallback shapeCallback)
-    {
-        HullDesc hullDesc;
-        if (Hulls.TryGetValue(shape.shapeKey, out hullDesc))
-        {
-            hullDesc.referenceCount--;
-            // TODO: release the Bullet storage (aging old entries?)
-
-            // Tell upper layers that, if they have dependencies on this shape, this link is going away
-            if (shapeCallback != null) shapeCallback(shape);
-
-            hullDesc.lastReferenced = System.DateTime.Now;
-            Hulls[shape.shapeKey] = hullDesc;
-            if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceHull,shape={1},refCnt={2}",
-                    BSScene.DetailLogZero, shape, hullDesc.referenceCount);
-        }
-    }
-
-    // Remove a reference to a compound shape.
-    // Taking a compound shape apart is a little tricky because if you just delete the
-    //      physical shape, it will free all the underlying children. We can't do that because
-    //      they could be shared. So, this removes each of the children from the compound and
-    //      dereferences them separately before destroying the compound collision object itself.
-    // Called at taint-time.
-    private void DereferenceCompound(BulletShape shape, ShapeDestructionCallback shapeCallback)
-    {
-        if (!BulletSimAPI.IsCompound2(shape.ptr))
-        {
-            // Failed the sanity check!!
-            PhysicsScene.Logger.ErrorFormat("{0} Attempt to free a compound shape that is not compound!! type={1}, ptr={2}",
-                                        LogHeader, shape.type, shape.ptr.ToString());
-            if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceCompound,notACompoundShape,type={1},ptr={2}",
-                                        BSScene.DetailLogZero, shape.type, shape.ptr.ToString());
-            return;
-        }
-
-        int numChildren = BulletSimAPI.GetNumberOfCompoundChildren2(shape.ptr);
-        if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceCompound,shape={1},children={2}", BSScene.DetailLogZero, shape, numChildren);
-
-        for (int ii = numChildren - 1; ii >= 0; ii--)
-        {
-            Object childShape = BulletSimAPI.RemoveChildShapeFromCompoundShapeIndex2(shape.ptr, ii);
-            DereferenceAnonCollisionShape(childShape);
-        }
-        BulletSimAPI.DeleteCollisionShape2(PhysicsScene.World.ptr, shape.ptr);
-    }
-
-    // Sometimes we have a pointer to a collision shape but don't know what type it is.
-    // Figure out type and call the correct dereference routine.
-    // Called at taint-time.
-    private void DereferenceAnonCollisionShape(Object cShape)
-    {
-        MeshDesc meshDesc;
-        HullDesc hullDesc;
-
-        BulletShape shapeInfo = new BulletShape(cShape);
-        if (TryGetMeshByPtr(cShape, out meshDesc))
-        {
-            shapeInfo.type = BSPhysicsShapeType.SHAPE_MESH;
-            shapeInfo.shapeKey = meshDesc.shapeKey;
-        }
-        else
-        {
-            if (TryGetHullByPtr(cShape, out hullDesc))
-            {
-                shapeInfo.type = BSPhysicsShapeType.SHAPE_HULL;
-                shapeInfo.shapeKey = hullDesc.shapeKey;
-            }
-            else
-            {
-                if (BulletSimAPI.IsCompound2(cShape))
-                {
-                    shapeInfo.type = BSPhysicsShapeType.SHAPE_COMPOUND;
-                }
-                else
-                {
-                    if (BulletSimAPI.IsNativeShape2(cShape))
-                    {
-                        shapeInfo.isNativeShape = true;
-                        shapeInfo.type = BSPhysicsShapeType.SHAPE_BOX; // (technically, type doesn't matter)
-                    }
-                }
-            }
-        }
-
-        if (DDetail) DetailLog("{0},BSShapeCollection.DereferenceAnonCollisionShape,shape={1}", BSScene.DetailLogZero, shapeInfo);
-
-        if (shapeInfo.type != BSPhysicsShapeType.SHAPE_UNKNOWN)
-        {
-            DereferenceShape(shapeInfo, true, null);
-        }
-        else
-        {
-            PhysicsScene.Logger.ErrorFormat("{0} Could not decypher shape type. Region={1}, addr={2}",
-                                    LogHeader, PhysicsScene.RegionName, cShape.ToString());
-        }
-    }
-
-    // Create the geometry information in Bullet for later use.
-    // The objects needs a hull if it's physical otherwise a mesh is enough.
-    // if 'forceRebuild' is true, the geometry is unconditionally rebuilt. For meshes and hulls,
-    //     shared geometries will be used. If the parameters of the existing shape are the same
-    //     as this request, the shape is not rebuilt.
-    // Info in prim.BSShape is updated to the new shape.
-    // Returns 'true' if the geometry was rebuilt.
-    // Called at taint-time!
-    private bool CreateGeom(bool forceRebuild, BSPhysObject prim, ShapeDestructionCallback shapeCallback)
-    {
-        bool ret = false;
-        bool haveShape = false;
-
-        if (!haveShape && prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_CAPSULE)
-        {
-            // an avatar capsule is close to a native shape (it is not shared)
-            GetReferenceToNativeShape(prim, BSPhysicsShapeType.SHAPE_CAPSULE,
-                            FixedShapeKey.KEY_CAPSULE, shapeCallback);
-            if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,avatarCapsule,shape={1}", prim.LocalID, prim.PhysShape);
-            ret = true;
-            haveShape = true;
-        }
-
-        // Compound shapes are handled special as they are rebuilt from scratch.
-        // This isn't too great a hardship since most of the child shapes will have already been created.
-        if (!haveShape && prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_COMPOUND)
-        {
-            ret = GetReferenceToCompoundShape(prim, shapeCallback);
-            if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,compoundShape,shape={1}", prim.LocalID, prim.PhysShape);
-            haveShape = true;
-        }
-
-        if (!haveShape)
-        {
-            ret = CreateGeomNonSpecial(forceRebuild, prim, shapeCallback);
-        }
-
-        return ret;
-    }
-
-    // Create a mesh/hull shape or a native shape if 'nativeShapePossible' is 'true'.
-    public bool CreateGeomNonSpecial(bool forceRebuild, BSPhysObject prim, ShapeDestructionCallback shapeCallback)
-    {
-        bool ret = false;
-        bool haveShape = false;
-        bool nativeShapePossible = true;
-        PrimitiveBaseShape pbs = prim.BaseShape;
-
-        // If the prim attributes are simple, this could be a simple Bullet native shape
-        if (!haveShape
-                && pbs != null
-                && nativeShapePossible
-                && ((pbs.SculptEntry && !BSParam.ShouldMeshSculptedPrim)
-                    || (pbs.ProfileBegin == 0 && pbs.ProfileEnd == 0
-                        && pbs.ProfileHollow == 0
-                        && pbs.PathTwist == 0 && pbs.PathTwistBegin == 0
-                        && pbs.PathBegin == 0 && pbs.PathEnd == 0
-                        && pbs.PathTaperX == 0 && pbs.PathTaperY == 0
-                        && pbs.PathScaleX == 100 && pbs.PathScaleY == 100
-                        && pbs.PathShearX == 0 && pbs.PathShearY == 0) ) )
-        {
-            // Get the scale of any existing shape so we can see if the new shape is same native type and same size.
-            OMV.Vector3 scaleOfExistingShape = OMV.Vector3.Zero;
-            if (prim.PhysShape.HasPhysicalShape)
-                scaleOfExistingShape = BulletSimAPI.GetLocalScaling2(prim.PhysShape.ptr);
-
-            if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,maybeNative,force={1},primScale={2},primSize={3},primShape={4}",
-                        prim.LocalID, forceRebuild, prim.Scale, prim.Size, prim.PhysShape.type);
-
-            // It doesn't look like Bullet scales spheres so make sure the scales are all equal
-            if ((pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte)Extrusion.Curve1)
-                                && pbs.Scale.X == pbs.Scale.Y && pbs.Scale.Y == pbs.Scale.Z)
-            {
-                haveShape = true;
-                if (forceRebuild
-                        || prim.Scale != scaleOfExistingShape
-                        || prim.PhysShape.type != BSPhysicsShapeType.SHAPE_SPHERE
-                        )
-                {
-                    ret = GetReferenceToNativeShape(prim, BSPhysicsShapeType.SHAPE_SPHERE,
-                                            FixedShapeKey.KEY_SPHERE, shapeCallback);
-                    if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,sphere,force={1},shape={2}",
-                                        prim.LocalID, forceRebuild, prim.PhysShape);
-                }
-            }
-            if (!haveShape && pbs.ProfileShape == ProfileShape.Square && pbs.PathCurve == (byte)Extrusion.Straight)
-            {
-                haveShape = true;
-                if (forceRebuild
-                        || prim.Scale != scaleOfExistingShape
-                        || prim.PhysShape.type != BSPhysicsShapeType.SHAPE_BOX
-                        )
-                {
-                    ret = GetReferenceToNativeShape( prim, BSPhysicsShapeType.SHAPE_BOX,
-                                            FixedShapeKey.KEY_BOX, shapeCallback);
-                    if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,box,force={1},shape={2}",
-                                        prim.LocalID, forceRebuild, prim.PhysShape);
-                }
-            }
-        }
-
-        // If a simple shape is not happening, create a mesh and possibly a hull.
-        if (!haveShape && pbs != null)
-        {
-            ret = CreateGeomMeshOrHull(prim, shapeCallback);
-        }
-
-        return ret;
-    }
-
-    public bool CreateGeomMeshOrHull(BSPhysObject prim, ShapeDestructionCallback shapeCallback)
-    {
-
-        bool ret = false;
-        // Note that if it's a native shape, the check for physical/non-physical is not
-        //     made. Native shapes work in either case.
-        if (prim.IsPhysical && BSParam.ShouldUseHullsForPhysicalObjects)
-        {
-            // Update prim.BSShape to reference a hull of this shape.
-            ret = GetReferenceToHull(prim,shapeCallback);
-            if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,hull,shape={1},key={2}",
-                                    prim.LocalID, prim.PhysShape, prim.PhysShape.shapeKey.ToString("X"));
-        }
-        else
-        {
-            ret = GetReferenceToMesh(prim, shapeCallback);
-            if (DDetail) DetailLog("{0},BSShapeCollection.CreateGeom,mesh,shape={1},key={2}",
-                                    prim.LocalID, prim.PhysShape, prim.PhysShape.shapeKey.ToString("X"));
-        }
-        return ret;
-    }
-
-    // Creates a native shape and assignes it to prim.BSShape.
-    // "Native" shapes are never shared. they are created here and destroyed in DereferenceShape().
-    private bool GetReferenceToNativeShape(BSPhysObject prim,
-                            BSPhysicsShapeType shapeType, FixedShapeKey shapeKey,
-                            ShapeDestructionCallback shapeCallback)
-    {
-        // release any previous shape
-        DereferenceShape(prim.PhysShape, true, shapeCallback);
-
-        BulletShape newShape = BuildPhysicalNativeShape(prim, shapeType, shapeKey);
-
-        // Don't need to do a 'ReferenceShape()' here because native shapes are not shared.
-        if (DDetail) DetailLog("{0},BSShapeCollection.AddNativeShapeToPrim,create,newshape={1},scale={2}",
-                                prim.LocalID, newShape, prim.Scale);
-
-        // native shapes are scaled by Bullet
-        prim.PhysShape = newShape;
-        return true;
-    }
-
-    private BulletShape BuildPhysicalNativeShape(BSPhysObject prim, BSPhysicsShapeType shapeType,
-                                    FixedShapeKey shapeKey)
-    {
-        BulletShape newShape;
-        // Need to make sure the passed shape information is for the native type.
-        ShapeData nativeShapeData = new ShapeData();
-        nativeShapeData.Type = shapeType;
-        nativeShapeData.ID = prim.LocalID;
-        nativeShapeData.Scale = prim.Scale;
-        nativeShapeData.Size = prim.Scale;  // unneeded, I think.
-        nativeShapeData.MeshKey = (ulong)shapeKey;
-        nativeShapeData.HullKey = (ulong)shapeKey;
-
-        if (shapeType == BSPhysicsShapeType.SHAPE_CAPSULE)
-        {
-            // The proper scale has been calculated in the prim.
-            newShape = new BulletShape(
-                        BulletSimAPI.BuildCapsuleShape2(PhysicsScene.World.ptr, 1f, 1f, prim.Scale)
-                        , shapeType);
-            if (DDetail) DetailLog("{0},BSShapeCollection.BuiletPhysicalNativeShape,capsule,scale={1}", prim.LocalID, prim.Scale);
-        }
-        else
-        {
-            // Native shapes are scaled in Bullet so set the scaling to the size
-            newShape = new BulletShape(BulletSimAPI.BuildNativeShape2(PhysicsScene.World.ptr, nativeShapeData), shapeType);
-        }
-        if (!newShape.HasPhysicalShape)
-        {
-            PhysicsScene.Logger.ErrorFormat("{0} BuildPhysicalNativeShape failed. ID={1}, shape={2}",
-                                    LogHeader, prim.LocalID, shapeType);
-        }
-        newShape.shapeKey = (System.UInt64)shapeKey;
-        newShape.isNativeShape = true;
-
-        return newShape;
-    }
-
-    // Builds a mesh shape in the physical world and updates prim.BSShape.
-    // Dereferences previous shape in BSShape and adds a reference for this new shape.
-    // Returns 'true' of a mesh was actually built. Otherwise .
-    // Called at taint-time!
-    private bool GetReferenceToMesh(BSPhysObject prim, ShapeDestructionCallback shapeCallback)
-    {
-        BulletShape newShape = new BulletShape();
-
-        float lod;
-        System.UInt64 newMeshKey = ComputeShapeKey(prim.Size, prim.BaseShape, out lod);
-
-        // if this new shape is the same as last time, don't recreate the mesh
-        if (newMeshKey == prim.PhysShape.shapeKey && prim.PhysShape.type == BSPhysicsShapeType.SHAPE_MESH)
-            return false;
-
-        if (DDetail) DetailLog("{0},BSShapeCollection.GetReferenceToMesh,create,oldKey={1},newKey={2}",
-                                prim.LocalID, prim.PhysShape.shapeKey.ToString("X"), newMeshKey.ToString("X"));
-
-        // Since we're recreating new, get rid of the reference to the previous shape
-        DereferenceShape(prim.PhysShape, true, shapeCallback);
-
-        newShape = CreatePhysicalMesh(prim.PhysObjectName, newMeshKey, prim.BaseShape, prim.Size, lod);
-        // Take evasive action if the mesh was not constructed.
-        newShape = VerifyMeshCreated(newShape, prim);
-
-        ReferenceShape(newShape);
-
-        prim.PhysShape = newShape;
-
-        return true;        // 'true' means a new shape has been added to this prim
-    }
-
-    private BulletShape CreatePhysicalMesh(string objName, System.UInt64 newMeshKey, PrimitiveBaseShape pbs, OMV.Vector3 size, float lod)
-    {
-        IMesh meshData = null;
-        Object meshPtr = null;
-        MeshDesc meshDesc;
-        if (Meshes.TryGetValue(newMeshKey, out meshDesc))
-        {
-            // If the mesh has already been built just use it.
-            meshPtr = meshDesc.ptr;
-        }
-        else
-        {
-            meshData = PhysicsScene.mesher.CreateMesh(objName, pbs, size, lod, true, false);
-
-            if (meshData != null)
-            {
-                int[] indices = meshData.getIndexListAsInt();
-                List<OMV.Vector3> vertices = meshData.getVertexList();
-
-                float[] verticesAsFloats = new float[vertices.Count * 3];
-                int vi = 0;
-                foreach (OMV.Vector3 vv in vertices)
-                {
-                    verticesAsFloats[vi++] = vv.X;
-                    verticesAsFloats[vi++] = vv.Y;
-                    verticesAsFloats[vi++] = vv.Z;
-                }
-
-                // m_log.DebugFormat("{0}: BSShapeCollection.CreatePhysicalMesh: calling CreateMesh. lid={1}, key={2}, indices={3}, vertices={4}",
-                //                  LogHeader, prim.LocalID, newMeshKey, indices.Length, vertices.Count);
-
-                meshPtr = BulletSimAPI.CreateMeshShape2(PhysicsScene.World.ptr,
-                                    indices.GetLength(0), indices, vertices.Count, verticesAsFloats);
-            }
-        }
-        BulletShape newShape = new BulletShape(meshPtr, BSPhysicsShapeType.SHAPE_MESH);
-        newShape.shapeKey = newMeshKey;
-
-        return newShape;
-    }
-
-    // See that hull shape exists in the physical world and update prim.BSShape.
-    // We could be creating the hull because scale changed or whatever.
-    private bool GetReferenceToHull(BSPhysObject prim, ShapeDestructionCallback shapeCallback)
-    {
-        BulletShape newShape;
-
-        float lod;
-        System.UInt64 newHullKey = ComputeShapeKey(prim.Size, prim.BaseShape, out lod);
-
-        // if the hull hasn't changed, don't rebuild it
-        if (newHullKey == prim.PhysShape.shapeKey && prim.PhysShape.type == BSPhysicsShapeType.SHAPE_HULL)
-            return false;
-
-        if (DDetail) DetailLog("{0},BSShapeCollection.GetReferenceToHull,create,oldKey={1},newKey={2}",
-                        prim.LocalID, prim.PhysShape.shapeKey.ToString("X"), newHullKey.ToString("X"));
-
-        // Remove usage of the previous shape.
-        DereferenceShape(prim.PhysShape, true, shapeCallback);
-
-        newShape = CreatePhysicalHull(prim.PhysObjectName, newHullKey, prim.BaseShape, prim.Size, lod);
-        newShape = VerifyMeshCreated(newShape, prim);
-
-        ReferenceShape(newShape);
-
-        prim.PhysShape = newShape;
-        return true;        // 'true' means a new shape has been added to this prim
-    }
-
-    List<ConvexResult> m_hulls;
-    private BulletShape CreatePhysicalHull(string objName, System.UInt64 newHullKey, PrimitiveBaseShape pbs, OMV.Vector3 size, float lod)
-    {
-
-        Object hullPtr = null;
-        HullDesc hullDesc;
-        if (Hulls.TryGetValue(newHullKey, out hullDesc))
-        {
-            // If the hull shape already is created, just use it.
-            hullPtr = hullDesc.ptr;
-        }
-        else
-        {
-            // Build a new hull in the physical world
-            // Pass true for physicalness as this creates some sort of bounding box which we don't need
-            IMesh meshData = PhysicsScene.mesher.CreateMesh(objName, pbs, size, lod, true, false);
-            if (meshData != null)
-            {
-
-                int[] indices = meshData.getIndexListAsInt();
-                List<OMV.Vector3> vertices = meshData.getVertexList();
-
-                //format conversion from IMesh format to DecompDesc format
-                List<int> convIndices = new List<int>();
-                List<float3> convVertices = new List<float3>();
-                for (int ii = 0; ii < indices.GetLength(0); ii++)
-                {
-                    convIndices.Add(indices[ii]);
-                }
-                foreach (OMV.Vector3 vv in vertices)
-                {
-                    convVertices.Add(new float3(vv.X, vv.Y, vv.Z));
-                }
-
-                // setup and do convex hull conversion
-                m_hulls = new List<ConvexResult>();
-                DecompDesc dcomp = new DecompDesc();
-                dcomp.mIndices = convIndices;
-                dcomp.mVertices = convVertices;
-                ConvexBuilder convexBuilder = new ConvexBuilder(HullReturn);
-                // create the hull into the _hulls variable
-                convexBuilder.process(dcomp);
-
-                // Convert the vertices and indices for passing to unmanaged.
-                // The hull information is passed as a large floating point array.
-                // The format is:
-                //  convHulls[0] = number of hulls
-                //  convHulls[1] = number of vertices in first hull
-                //  convHulls[2] = hull centroid X coordinate
-                //  convHulls[3] = hull centroid Y coordinate
-                //  convHulls[4] = hull centroid Z coordinate
-                //  convHulls[5] = first hull vertex X
-                //  convHulls[6] = first hull vertex Y
-                //  convHulls[7] = first hull vertex Z
-                //  convHulls[8] = second hull vertex X
-                //  ...
-                //  convHulls[n] = number of vertices in second hull
-                //  convHulls[n+1] = second hull centroid X coordinate
-                //  ...
-                //
-                // TODO: is is very inefficient. Someday change the convex hull generator to return
-                //   data structures that do not need to be converted in order to pass to Bullet.
-                //   And maybe put the values directly into pinned memory rather than marshaling.
-                int hullCount = m_hulls.Count;
-                int totalVertices = 1;          // include one for the count of the hulls
-                foreach (ConvexResult cr in m_hulls)
-                {
-                    totalVertices += 4;                         // add four for the vertex count and centroid
-                    totalVertices += cr.HullIndices.Count * 3;  // we pass just triangles
-                }
-                float[] convHulls = new float[totalVertices];
-
-                convHulls[0] = (float)hullCount;
-                int jj = 1;
-                foreach (ConvexResult cr in m_hulls)
-                {
-                    // copy vertices for index access
-                    float3[] verts = new float3[cr.HullVertices.Count];
-                    int kk = 0;
-                    foreach (float3 ff in cr.HullVertices)
-                    {
-                        verts[kk++] = ff;
-                    }
-
-                    // add to the array one hull's worth of data
-                    convHulls[jj++] = cr.HullIndices.Count;
-                    convHulls[jj++] = 0f;   // centroid x,y,z
-                    convHulls[jj++] = 0f;
-                    convHulls[jj++] = 0f;
-                    foreach (int ind in cr.HullIndices)
-                    {
-                        convHulls[jj++] = verts[ind].x;
-                        convHulls[jj++] = verts[ind].y;
-                        convHulls[jj++] = verts[ind].z;
-                    }
-                }
-                // create the hull data structure in Bullet
-                hullPtr = BulletSimAPI.CreateHullShape2(PhysicsScene.World.ptr, hullCount, convHulls);
-            }
-        }
-
-        BulletShape newShape = new BulletShape(hullPtr, BSPhysicsShapeType.SHAPE_HULL);
-        newShape.shapeKey = newHullKey;
-
-        return newShape;
-    }
-
-    // Callback from convex hull creater with a newly created hull.
-    // Just add it to our collection of hulls for this shape.
-    private void HullReturn(ConvexResult result)
-    {
-        m_hulls.Add(result);
-        return;
-    }
-
-    // Compound shapes are always built from scratch.
-    // This shouldn't be to bad since most of the parts will be meshes that had been built previously.
-    private bool GetReferenceToCompoundShape(BSPhysObject prim, ShapeDestructionCallback shapeCallback)
-    {
-        // Remove reference to the old shape
-        // Don't need to do this as the shape is freed when the new root shape is created below.
-        // DereferenceShape(prim.PhysShape, true, shapeCallback);
-
-        BulletShape cShape = new BulletShape(
-            BulletSimAPI.CreateCompoundShape2(PhysicsScene.World.ptr, false), BSPhysicsShapeType.SHAPE_COMPOUND);
-
-        // Create the shape for the root prim and add it to the compound shape. Cannot be a native shape.
-        CreateGeomMeshOrHull(prim, shapeCallback);
-        BulletSimAPI.AddChildShapeToCompoundShape2(cShape.ptr, prim.PhysShape.ptr, OMV.Vector3.Zero, OMV.Quaternion.Identity);
-        if (DDetail) DetailLog("{0},BSShapeCollection.GetReferenceToCompoundShape,addRootPrim,compShape={1},rootShape={2}",
-                                    prim.LocalID, cShape, prim.PhysShape);
-
-        prim.PhysShape = cShape;
-
-        return true;
-    }
-
-    // Create a hash of all the shape parameters to be used as a key
-    //    for this particular shape.
-    private System.UInt64 ComputeShapeKey(OMV.Vector3 size, PrimitiveBaseShape pbs, out float retLod)
-    {
-        // level of detail based on size and type of the object
-        float lod = BSParam.MeshLOD;
-        if (pbs.SculptEntry)
-            lod = BSParam.SculptLOD;
-
-        // Mega prims usually get more detail because one can interact with shape approximations at this size.
-        float maxAxis = Math.Max(size.X, Math.Max(size.Y, size.Z));
-        if (maxAxis > BSParam.MeshMegaPrimThreshold)
-            lod = BSParam.MeshMegaPrimLOD;
-
-        retLod = lod;
-        return pbs.GetMeshKey(size, lod);
-    }
-    // For those who don't want the LOD
-    private System.UInt64 ComputeShapeKey(OMV.Vector3 size, PrimitiveBaseShape pbs)
-    {
-        float lod;
-        return ComputeShapeKey(size, pbs, out lod);
-    }
-
-    // The creation of a mesh or hull can fail if an underlying asset is not available.
-    // There are two cases: 1) the asset is not in the cache and it needs to be fetched;
-    //     and 2) the asset cannot be converted (like failed decompression of JPEG2000s).
-    //     The first case causes the asset to be fetched. The second case requires
-    //     us to not loop forever.
-    // Called after creating a physical mesh or hull. If the physical shape was created,
-    //     just return.
-    private BulletShape VerifyMeshCreated(BulletShape newShape, BSPhysObject prim)
-    {
-        // If the shape was successfully created, nothing more to do
-        if (newShape.HasPhysicalShape)
-            return newShape;
-
-        // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset
-        if (prim.BaseShape.SculptEntry && !prim.LastAssetBuildFailed && prim.BaseShape.SculptTexture != OMV.UUID.Zero)
-        {
-            prim.LastAssetBuildFailed = true;
-            BSPhysObject xprim = prim;
-            DetailLog("{0},BSShapeCollection.VerifyMeshCreated,fetchAsset,lID={1},lastFailed={2}",
-                            LogHeader, prim.LocalID, prim.LastAssetBuildFailed);
-            Util.FireAndForget(delegate
-                {
-                    RequestAssetDelegate assetProvider = PhysicsScene.RequestAssetMethod;
-                    if (assetProvider != null)
-                    {
-                        BSPhysObject yprim = xprim; // probably not necessary, but, just in case.
-                        assetProvider(yprim.BaseShape.SculptTexture, delegate(AssetBase asset)
-                        {
-                            if (!yprim.BaseShape.SculptEntry)
-                                return;
-                            if (yprim.BaseShape.SculptTexture.ToString() != asset.ID)
-                                return;
-
-                            yprim.BaseShape.SculptData = asset.Data;
-                            // This will cause the prim to see that the filler shape is not the right
-                            //    one and try again to build the object.
-                            // No race condition with the normal shape setting since the rebuild is at taint time.
-                            yprim.ForceBodyShapeRebuild(false);
-
-                        });
-                    }
-                });
-        }
-        else
-        {
-            if (prim.LastAssetBuildFailed)
-            {
-                PhysicsScene.Logger.ErrorFormat("{0} Mesh failed to fetch asset. lID={1}, texture={2}",
-                                            LogHeader, prim.LocalID, prim.BaseShape.SculptTexture);
-            }
-        }
-
-        // While we figure out the real problem, stick a simple native shape on the object.
-        BulletShape fillinShape =
-            BuildPhysicalNativeShape(prim, BSPhysicsShapeType.SHAPE_BOX, FixedShapeKey.KEY_BOX);
-
-        return fillinShape;
-    }
-
-    // Create a body object in Bullet.
-    // Updates prim.BSBody with the information about the new body if one is created.
-    // Returns 'true' if an object was actually created.
-    // Called at taint-time.
-    private bool CreateBody(bool forceRebuild, BSPhysObject prim, BulletWorld sim, BulletShape shape,
-                            BodyDestructionCallback bodyCallback)
-    {
-        bool ret = false;
-
-        // the mesh, hull or native shape must have already been created in Bullet
-        bool mustRebuild = !prim.PhysBody.HasPhysicalBody;
-
-        // If there is an existing body, verify it's of an acceptable type.
-        // If not a solid object, body is a GhostObject. Otherwise a RigidBody.
-        if (!mustRebuild)
-        {
-            CollisionObjectTypes bodyType = (CollisionObjectTypes)BulletSimAPI.GetBodyType2(prim.PhysBody.ptr);
-            if (prim.IsSolid && bodyType != CollisionObjectTypes.CO_RIGID_BODY
-                || !prim.IsSolid && bodyType != CollisionObjectTypes.CO_GHOST_OBJECT)
-            {
-                // If the collisionObject is not the correct type for solidness, rebuild what's there
-                mustRebuild = true;
-            }
-        }
-
-        if (mustRebuild || forceRebuild)
-        {
-            // Free any old body
-            DereferenceBody(prim.PhysBody, true, bodyCallback);
-
-            BulletBody aBody;
-            Object bodyPtr = null;
-            if (prim.IsSolid)
-            {
-                bodyPtr = BulletSimAPI.CreateBodyFromShape2(sim.ptr, shape.ptr,
-                                        prim.LocalID, prim.RawPosition, prim.RawOrientation);
-                if (DDetail) DetailLog("{0},BSShapeCollection.CreateBody,mesh,ptr={1}", prim.LocalID, bodyPtr.ToString());
-            }
-            else
-            {
-                bodyPtr = BulletSimAPI.CreateGhostFromShape2(sim.ptr, shape.ptr,
-                                        prim.LocalID, prim.RawPosition, prim.RawOrientation);
-                if (DDetail) DetailLog("{0},BSShapeCollection.CreateBody,ghost,ptr={1}", prim.LocalID, bodyPtr.ToString());
-            }
-            aBody = new BulletBody(prim.LocalID, bodyPtr);
-
-            ReferenceBody(aBody, true);
-
-            prim.PhysBody = aBody;
-
-            ret = true;
-        }
-
-        return ret;
-    }
-
-    private bool TryGetMeshByPtr(Object addr, out MeshDesc outDesc)
-    {
-        bool ret = false;
-        MeshDesc foundDesc = new MeshDesc();
-        foreach (MeshDesc md in Meshes.Values)
-        {
-            if (md.ptr == addr)
-            {
-                foundDesc = md;
-                ret = true;
-                break;
-            }
-
-        }
-        outDesc = foundDesc;
-        return ret;
-    }
-
-    private bool TryGetHullByPtr(Object addr, out HullDesc outDesc)
-    {
-        bool ret = false;
-        HullDesc foundDesc = new HullDesc();
-        foreach (HullDesc hd in Hulls.Values)
-        {
-            if (hd.ptr == addr)
-            {
-                foundDesc = hd;
-                ret = true;
-                break;
-            }
-
-        }
-        outDesc = foundDesc;
-        return ret;
-    }
-
-    private void DetailLog(string msg, params Object[] args)
-    {
-        if (PhysicsScene.PhysicsLogging.Enabled)
-            PhysicsScene.DetailLog(msg, args);
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSShapes.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSShapes.cs
deleted file mode 100644
index 8ff027535c..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSShapes.cs
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public abstract class BSShape
-{
-    public Object ptr { get; set; }
-    public BSPhysicsShapeType type { get; set; }
-    public System.UInt64 key { get; set; }
-    public int referenceCount { get; set; }
-    public DateTime lastReferenced { get; set; }
-
-    public BSShape()
-    {
-        ptr = null;
-        type = BSPhysicsShapeType.SHAPE_UNKNOWN;
-        key = 0;
-        referenceCount = 0;
-        lastReferenced = DateTime.Now;
-    }
-
-    // Get a reference to a physical shape. Create if it doesn't exist
-    public static BSShape GetShapeReference(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
-    {
-        BSShape ret = null;
-
-        if (prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_CAPSULE)
-        {
-            // an avatar capsule is close to a native shape (it is not shared)
-            ret = BSShapeNative.GetReference(physicsScene, prim, BSPhysicsShapeType.SHAPE_CAPSULE,
-                                        FixedShapeKey.KEY_CAPSULE);
-            physicsScene.DetailLog("{0},BSShape.GetShapeReference,avatarCapsule,shape={1}", prim.LocalID, ret);
-        }
-
-        // Compound shapes are handled special as they are rebuilt from scratch.
-        // This isn't too great a hardship since most of the child shapes will already been created.
-        if (ret == null  && prim.PreferredPhysicalShape == BSPhysicsShapeType.SHAPE_COMPOUND)
-        {
-            // Getting a reference to a compound shape gets you the compound shape with the root prim shape added
-            ret = BSShapeCompound.GetReference(prim);
-            physicsScene.DetailLog("{0},BSShapeCollection.CreateGeom,compoundShape,shape={1}", prim.LocalID, ret);
-        }
-
-        if (ret == null)
-            ret = GetShapeReferenceNonSpecial(physicsScene, forceRebuild, prim);
-
-        return ret;
-    }
-    public static BSShape GetShapeReferenceNonSpecial(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
-    {
-        return null;
-    }
-    public static BSShape GetShapeReferenceNonNative(BSScene physicsScene, bool forceRebuild, BSPhysObject prim)
-    {
-        return null;
-    }
-
-    // Release the use of a physical shape.
-    public abstract void Dereference(BSScene physicsScene);
-
-    // All shapes have a static call to get a reference to the physical shape
-    // protected abstract static BSShape GetReference();
-
-    public override string ToString()
-    {
-        StringBuilder buff = new StringBuilder();
-        buff.Append("<p=");
-        buff.Append(ptr.ToString());
-        buff.Append(",s=");
-        buff.Append(type.ToString());
-        buff.Append(",k=");
-        buff.Append(key.ToString("X"));
-        buff.Append(",c=");
-        buff.Append(referenceCount.ToString());
-        buff.Append(">");
-        return buff.ToString();
-    }
-}
-
-public class BSShapeNull : BSShape
-{
-    public BSShapeNull() : base()
-    {
-    }
-    public static BSShape GetReference() { return new BSShapeNull();  }
-    public override void Dereference(BSScene physicsScene) { /* The magic of garbage collection will make this go away */ }
-}
-
-public class BSShapeNative : BSShape
-{
-    private static string LogHeader = "[BULLETSIM SHAPE NATIVE]";
-    public BSShapeNative() : base()
-    {
-    }
-    public static BSShape GetReference(BSScene physicsScene, BSPhysObject prim, 
-                    BSPhysicsShapeType shapeType, FixedShapeKey shapeKey) 
-    {
-        // Native shapes are not shared and are always built anew.
-        return new BSShapeNative(physicsScene, prim, shapeType, shapeKey);
-    }
-
-    private BSShapeNative(BSScene physicsScene, BSPhysObject prim,
-                    BSPhysicsShapeType shapeType, FixedShapeKey shapeKey)
-    {
-        ShapeData nativeShapeData = new ShapeData();
-        nativeShapeData.Type = shapeType;
-        nativeShapeData.ID = prim.LocalID;
-        nativeShapeData.Scale = prim.Scale;
-        nativeShapeData.Size = prim.Scale;
-        nativeShapeData.MeshKey = (ulong)shapeKey;
-        nativeShapeData.HullKey = (ulong)shapeKey;
-
-       
-        if (shapeType == BSPhysicsShapeType.SHAPE_CAPSULE)
-        {
-            ptr = BulletSimAPI.BuildCapsuleShape2(physicsScene.World.ptr, 1f, 1f, prim.Scale);
-            physicsScene.DetailLog("{0},BSShapeCollection.BuiletPhysicalNativeShape,capsule,scale={1}", prim.LocalID, prim.Scale);
-        }
-        else
-        {
-            ptr = BulletSimAPI.BuildNativeShape2(physicsScene.World.ptr, nativeShapeData);
-        }
-        if (ptr == null)
-        {
-            physicsScene.Logger.ErrorFormat("{0} BuildPhysicalNativeShape failed. ID={1}, shape={2}",
-                                    LogHeader, prim.LocalID, shapeType);
-        }
-        type = shapeType;
-        key = (UInt64)shapeKey;
-    }
-    // Make this reference to the physical shape go away since native shapes are not shared.
-    public override void Dereference(BSScene physicsScene)
-    {
-        // Native shapes are not tracked and are released immediately
-        physicsScene.DetailLog("{0},BSShapeCollection.DereferenceShape,deleteNativeShape,shape={1}", BSScene.DetailLogZero, this);
-        BulletSimAPI.DeleteCollisionShape2(physicsScene.World.ptr, ptr);
-        ptr = null;
-        // Garbage collection will free up this instance.
-    }
-}
-
-public class BSShapeMesh : BSShape
-{
-    private static string LogHeader = "[BULLETSIM SHAPE MESH]";
-    private static Dictionary<System.UInt64, BSShapeMesh> Meshes = new Dictionary<System.UInt64, BSShapeMesh>();
-
-    public BSShapeMesh() : base()
-    {
-    }
-    public static BSShape GetReference() { return new BSShapeNull();  }
-    public override void Dereference(BSScene physicsScene) { }
-}
-
-public class BSShapeHull : BSShape
-{
-    private static string LogHeader = "[BULLETSIM SHAPE HULL]";
-    private static Dictionary<System.UInt64, BSShapeHull> Hulls = new Dictionary<System.UInt64, BSShapeHull>();
-
-    public BSShapeHull() : base()
-    {
-    }
-    public static BSShape GetReference() { return new BSShapeNull();  }
-    public override void Dereference(BSScene physicsScene) { }
-}
-
-public class BSShapeCompound : BSShape
-{
-    private static string LogHeader = "[BULLETSIM SHAPE COMPOUND]";
-    public BSShapeCompound() : base()
-    {
-    }
-    public static BSShape GetReference(BSPhysObject prim) 
-    { 
-        return new BSShapeNull();
-    }
-    public override void Dereference(BSScene physicsScene) { }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainHeightmap.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainHeightmap.cs
deleted file mode 100644
index ba17059da0..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainHeightmap.cs
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OpenSim.Framework;
-using OpenSim.Region.Framework;
-using OpenSim.Region.CoreModules;
-using OpenSim.Region.Physics.Manager;
-
-using Nini.Config;
-using log4net;
-
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public sealed class BSTerrainHeightmap : BSTerrainPhys
-{
-    static string LogHeader = "[BULLETSIM TERRAIN HEIGHTMAP]";
-
-    BulletHeightMapInfo m_mapInfo = null;
-
-    // Constructor to build a default, flat heightmap terrain.
-    public BSTerrainHeightmap(BSScene physicsScene, Vector3 regionBase, uint id, Vector3 regionSize)
-        : base(physicsScene, regionBase, id)
-    {
-        Vector3 minTerrainCoords = new Vector3(0f, 0f, BSTerrainManager.HEIGHT_INITIALIZATION - BSTerrainManager.HEIGHT_EQUAL_FUDGE);
-        Vector3 maxTerrainCoords = new Vector3(regionSize.X, regionSize.Y, BSTerrainManager.HEIGHT_INITIALIZATION);
-        int totalHeights = (int)maxTerrainCoords.X * (int)maxTerrainCoords.Y;
-        float[] initialMap = new float[totalHeights];
-        for (int ii = 0; ii < totalHeights; ii++)
-        {
-            initialMap[ii] = BSTerrainManager.HEIGHT_INITIALIZATION;
-        }
-        m_mapInfo = new BulletHeightMapInfo(id, initialMap, null);
-        m_mapInfo.minCoords = minTerrainCoords;
-        m_mapInfo.maxCoords = maxTerrainCoords;
-        m_mapInfo.terrainRegionBase = TerrainBase;
-        // Don't have to free any previous since we just got here.
-        BuildHeightmapTerrain();
-    }
-
-    // This minCoords and maxCoords passed in give the size of the terrain (min and max Z
-    //         are the high and low points of the heightmap).
-    public BSTerrainHeightmap(BSScene physicsScene, Vector3 regionBase, uint id, float[] initialMap, 
-                                                    Vector3 minCoords, Vector3 maxCoords)
-        : base(physicsScene, regionBase, id)
-    {
-        m_mapInfo = new BulletHeightMapInfo(id, initialMap, null);
-        m_mapInfo.minCoords = minCoords;
-        m_mapInfo.maxCoords = maxCoords;
-        m_mapInfo.minZ = minCoords.Z;
-        m_mapInfo.maxZ = maxCoords.Z;
-        m_mapInfo.terrainRegionBase = TerrainBase;
-
-        // Don't have to free any previous since we just got here.
-        BuildHeightmapTerrain();
-    }
-
-    public override void Dispose()
-    {
-        ReleaseHeightMapTerrain();
-    }
-
-    // Using the information in m_mapInfo, create the physical representation of the heightmap.
-    private void BuildHeightmapTerrain()
-    {
-        m_mapInfo.Ptr = BulletSimAPI.CreateHeightMapInfo2(PhysicsScene.World.ptr, m_mapInfo.ID,
-                                m_mapInfo.minCoords, m_mapInfo.maxCoords, 
-                                m_mapInfo.heightMap, BSParam.TerrainCollisionMargin);
-
-        // Create the terrain shape from the mapInfo
-        m_mapInfo.terrainShape = new BulletShape(BulletSimAPI.CreateTerrainShape2(m_mapInfo.Ptr),
-                                                    BSPhysicsShapeType.SHAPE_TERRAIN);
-
-        // The terrain object initial position is at the center of the object
-        Vector3 centerPos;
-        centerPos.X = m_mapInfo.minCoords.X + (m_mapInfo.sizeX / 2f);
-        centerPos.Y = m_mapInfo.minCoords.Y + (m_mapInfo.sizeY / 2f);
-        centerPos.Z = m_mapInfo.minZ + ((m_mapInfo.maxZ - m_mapInfo.minZ) / 2f - 0.5f);
-
-        m_mapInfo.terrainBody = new BulletBody(m_mapInfo.ID,
-                BulletSimAPI.CreateBodyWithDefaultMotionState2(m_mapInfo.terrainShape.ptr,
-                                            m_mapInfo.ID, centerPos, Quaternion.Identity));
-
-        // Set current terrain attributes
-        BulletSimAPI.SetFriction2(m_mapInfo.terrainBody.ptr, BSParam.TerrainFriction);
-        BulletSimAPI.SetHitFraction2(m_mapInfo.terrainBody.ptr, BSParam.TerrainHitFraction);
-        BulletSimAPI.SetRestitution2(m_mapInfo.terrainBody.ptr, BSParam.TerrainRestitution);
-        BulletSimAPI.SetCollisionFlags2(m_mapInfo.terrainBody.ptr, CollisionFlags.CF_STATIC_OBJECT);
-
-        // Return the new terrain to the world of physical objects
-        BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, m_mapInfo.terrainBody.ptr, centerPos, Quaternion.Identity);
-
-        // redo its bounding box now that it is in the world
-        BulletSimAPI.UpdateSingleAabb2(PhysicsScene.World.ptr, m_mapInfo.terrainBody.ptr);
-
-        m_mapInfo.terrainBody.collisionType = CollisionType.Terrain;
-        m_mapInfo.terrainBody.ApplyCollisionMask();
-
-        // Make it so the terrain will not move or be considered for movement.
-        BulletSimAPI.ForceActivationState2(m_mapInfo.terrainBody.ptr, ActivationState.DISABLE_SIMULATION);
-
-        return;
-    }
-
-    // If there is information in m_mapInfo pointing to physical structures, release same.
-    private void ReleaseHeightMapTerrain()
-    {
-        if (m_mapInfo != null)
-        {
-            if (m_mapInfo.terrainBody.HasPhysicalBody)
-            {
-                BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, m_mapInfo.terrainBody.ptr);
-                // Frees both the body and the shape.
-                BulletSimAPI.DestroyObject2(PhysicsScene.World.ptr, m_mapInfo.terrainBody.ptr);
-                BulletSimAPI.ReleaseHeightMapInfo2(m_mapInfo.Ptr);
-            }
-        }
-        m_mapInfo = null;
-    }
-
-    // The passed position is relative to the base of the region.
-    public override float GetTerrainHeightAtXYZ(Vector3 pos)
-    {
-        float ret = BSTerrainManager.HEIGHT_GETHEIGHT_RET;
-
-        int mapIndex = (int)pos.Y * (int)m_mapInfo.sizeY + (int)pos.X;
-        try
-        {
-            ret = m_mapInfo.heightMap[mapIndex];
-        }
-        catch
-        {
-            // Sometimes they give us wonky values of X and Y. Give a warning and return something.
-            PhysicsScene.Logger.WarnFormat("{0} Bad request for terrain height. terrainBase={1}, pos={2}",
-                                LogHeader, m_mapInfo.terrainRegionBase, pos);
-            ret = BSTerrainManager.HEIGHT_GETHEIGHT_RET;
-        }
-        return ret;
-    }
-
-    // The passed position is relative to the base of the region.
-    public override float GetWaterLevelAtXYZ(Vector3 pos)
-    {
-        return PhysicsScene.SimpleWaterLevel;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainManager.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainManager.cs
deleted file mode 100644
index 66d62f0afb..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainManager.cs
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OpenSim.Framework;
-using OpenSim.Region.Framework;
-using OpenSim.Region.CoreModules;
-using OpenSim.Region.Physics.Manager;
-
-using Nini.Config;
-using log4net;
-
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-
-// The physical implementation of the terrain is wrapped in this class.
-public abstract class BSTerrainPhys : IDisposable
-{
-    public enum TerrainImplementation
-    {
-        Heightmap   = 0,
-        Mesh        = 1
-    }
-
-    public BSScene PhysicsScene { get; private set; }
-    // Base of the region in world coordinates. Coordinates inside the region are relative to this.
-    public Vector3 TerrainBase { get; private set; }
-    public uint ID { get; private set; }
-
-    public BSTerrainPhys(BSScene physicsScene, Vector3 regionBase, uint id)
-    {
-        PhysicsScene = physicsScene;
-        TerrainBase = regionBase;
-        ID = id;
-    }
-    public abstract void Dispose();
-    public abstract float GetTerrainHeightAtXYZ(Vector3 pos);
-    public abstract float GetWaterLevelAtXYZ(Vector3 pos);
-}
-
-// ==========================================================================================
-public sealed class BSTerrainManager : IDisposable
-{
-    static string LogHeader = "[BULLETSIM TERRAIN MANAGER]";
-
-    // These height values are fractional so the odd values will be
-    //     noticable when debugging.
-    public const float HEIGHT_INITIALIZATION = 24.987f;
-    public const float HEIGHT_INITIAL_LASTHEIGHT = 24.876f;
-    public const float HEIGHT_GETHEIGHT_RET = 24.765f;
-    public const float WATER_HEIGHT_GETHEIGHT_RET = 19.998f;
-
-    // If the min and max height are equal, we reduce the min by this
-    //    amount to make sure that a bounding box is built for the terrain.
-    public const float HEIGHT_EQUAL_FUDGE = 0.2f;
-
-    // Until the whole simulator is changed to pass us the region size, we rely on constants.
-    public Vector3 DefaultRegionSize = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight);
-
-    // The scene that I am part of
-    private BSScene PhysicsScene { get; set; }
-
-    // The ground plane created to keep thing from falling to infinity.
-    private BulletBody m_groundPlane;
-
-    // If doing mega-regions, if we're region zero we will be managing multiple
-    //    region terrains since region zero does the physics for the whole mega-region.
-    private Dictionary<Vector3, BSTerrainPhys> m_terrains;
-
-    // Flags used to know when to recalculate the height.
-    private bool m_terrainModified = false;
-
-    // If we are doing mega-regions, terrains are added from TERRAIN_ID to m_terrainCount.
-    // This is incremented before assigning to new region so it is the last ID allocated.
-    private uint m_terrainCount = BSScene.CHILDTERRAIN_ID - 1;
-    public uint HighestTerrainID { get {return m_terrainCount; } }
-
-    // If doing mega-regions, this holds our offset from region zero of
-    //     the mega-regions. "parentScene" points to the PhysicsScene of region zero.
-    private Vector3 m_worldOffset;
-    // If the parent region (region 0), this is the extent of the combined regions
-    //     relative to the origin of region zero
-    private Vector3 m_worldMax;
-    private PhysicsScene MegaRegionParentPhysicsScene { get; set; }
-
-    public BSTerrainManager(BSScene physicsScene)
-    {
-        PhysicsScene = physicsScene;
-        m_terrains = new Dictionary<Vector3,BSTerrainPhys>();
-
-        // Assume one region of default size
-        m_worldOffset = Vector3.Zero;
-        m_worldMax = new Vector3(DefaultRegionSize);
-        MegaRegionParentPhysicsScene = null;
-    }
-
-    public void Dispose()
-    {
-        ReleaseGroundPlaneAndTerrain();
-    }
-
-    // Create the initial instance of terrain and the underlying ground plane.
-    // This is called from the initialization routine so we presume it is
-    //    safe to call Bullet in real time. We hope no one is moving prims around yet.
-    public void CreateInitialGroundPlaneAndTerrain()
-    {
-        // The ground plane is here to catch things that are trying to drop to negative infinity
-        BulletShape groundPlaneShape = new BulletShape(
-                    BulletSimAPI.CreateGroundPlaneShape2(BSScene.GROUNDPLANE_ID, 1f, 
-                                    BSParam.TerrainCollisionMargin),
-                    BSPhysicsShapeType.SHAPE_GROUNDPLANE);
-        m_groundPlane = new BulletBody(BSScene.GROUNDPLANE_ID,
-                        BulletSimAPI.CreateBodyWithDefaultMotionState2(groundPlaneShape.ptr, BSScene.GROUNDPLANE_ID,
-                                                            Vector3.Zero, Quaternion.Identity));
-        BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, m_groundPlane.ptr, Vector3.Zero, Quaternion.Identity);
-        BulletSimAPI.UpdateSingleAabb2(PhysicsScene.World.ptr, m_groundPlane.ptr);
-        // Ground plane does not move
-        BulletSimAPI.ForceActivationState2(m_groundPlane.ptr, ActivationState.DISABLE_SIMULATION);
-        // Everything collides with the ground plane.
-        m_groundPlane.collisionType = CollisionType.Groundplane;
-        m_groundPlane.ApplyCollisionMask();
-
-        // Build an initial terrain and put it in the world. This quickly gets replaced by the real region terrain.
-        BSTerrainPhys initialTerrain = new BSTerrainHeightmap(PhysicsScene, Vector3.Zero, BSScene.TERRAIN_ID, DefaultRegionSize);
-        m_terrains.Add(Vector3.Zero, initialTerrain);
-    }
-
-    // Release all the terrain structures we might have allocated
-    public void ReleaseGroundPlaneAndTerrain()
-    {
-        if (m_groundPlane.HasPhysicalBody)
-        {
-            if (BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, m_groundPlane.ptr))
-            {
-                BulletSimAPI.DestroyObject2(PhysicsScene.World.ptr, m_groundPlane.ptr);
-            }
-            m_groundPlane.Clear();
-        }
-
-        ReleaseTerrain();
-    }
-
-    // Release all the terrain we have allocated
-    public void ReleaseTerrain()
-    {
-        lock (m_terrains)
-        {
-            foreach (KeyValuePair<Vector3, BSTerrainPhys> kvp in m_terrains)
-            {
-                kvp.Value.Dispose();
-            }
-            m_terrains.Clear();
-        }
-    }
-
-    // The simulator wants to set a new heightmap for the terrain.
-    public void SetTerrain(float[] heightMap) {
-        float[] localHeightMap = heightMap;
-        // If there are multiple requests for changes to the same terrain between ticks,
-        //      only do that last one.
-        PhysicsScene.PostTaintObject("TerrainManager.SetTerrain-"+ m_worldOffset.ToString(), 0, delegate()
-        {
-            if (m_worldOffset != Vector3.Zero && MegaRegionParentPhysicsScene != null)
-            {
-                // If a child of a mega-region, we shouldn't have any terrain allocated for us
-                ReleaseGroundPlaneAndTerrain();
-                // If doing the mega-prim stuff and we are the child of the zero region,
-                //    the terrain is added to our parent
-                if (MegaRegionParentPhysicsScene is BSScene)
-                {
-                    DetailLog("{0},SetTerrain.ToParent,offset={1},worldMax={2}",
-                                    BSScene.DetailLogZero, m_worldOffset, m_worldMax);
-                    ((BSScene)MegaRegionParentPhysicsScene).TerrainManager.UpdateTerrain(
-                                    BSScene.CHILDTERRAIN_ID, localHeightMap, 
-                                    m_worldOffset, m_worldOffset + DefaultRegionSize, true);
-                }
-            }
-            else
-            {
-                // If not doing the mega-prim thing, just change the terrain
-                DetailLog("{0},SetTerrain.Existing", BSScene.DetailLogZero);
-
-                UpdateTerrain(BSScene.TERRAIN_ID, localHeightMap,
-                                    m_worldOffset, m_worldOffset + DefaultRegionSize, true);
-            }
-        });
-    }
-
-    // If called with no mapInfo for the terrain, this will create a new mapInfo and terrain
-    //     based on the passed information. The 'id' should be either the terrain id or
-    //     BSScene.CHILDTERRAIN_ID. If the latter, a new child terrain ID will be allocated and used.
-    //     The latter feature is for creating child terrains for mega-regions.
-    // If called with a mapInfo in m_heightMaps and there is an existing terrain body, a new
-    //     terrain shape is created and added to the body.
-    //     This call is most often used to update the heightMap and parameters of the terrain.
-    // (The above does suggest that some simplification/refactoring is in order.)
-    // Called during taint-time.
-    private void UpdateTerrain(uint id, float[] heightMap, 
-                            Vector3 minCoords, Vector3 maxCoords, bool inTaintTime)
-    {
-        DetailLog("{0},BSTerrainManager.UpdateTerrain,call,minC={1},maxC={2},inTaintTime={3}",
-                            BSScene.DetailLogZero, minCoords, maxCoords, inTaintTime);
-
-        // Find high and low points of passed heightmap.
-        // The min and max passed in is usually the area objects can be in (maximum
-        //     object height, for instance). The terrain wants the bounding box for the
-        //     terrain so replace passed min and max Z with the actual terrain min/max Z.
-        float minZ = float.MaxValue;
-        float maxZ = float.MinValue;
-        foreach (float height in heightMap)
-        {
-            if (height < minZ) minZ = height;
-            if (height > maxZ) maxZ = height;
-        }
-        if (minZ == maxZ)
-        {
-            // If min and max are the same, reduce min a little bit so a good bounding box is created.
-            minZ -= BSTerrainManager.HEIGHT_EQUAL_FUDGE;
-        }
-        minCoords.Z = minZ;
-        maxCoords.Z = maxZ;
-
-        Vector3 terrainRegionBase = new Vector3(minCoords.X, minCoords.Y, 0f);
-
-        lock (m_terrains)
-        {
-            BSTerrainPhys terrainPhys;
-            if (m_terrains.TryGetValue(terrainRegionBase, out terrainPhys))
-            {
-                // There is already a terrain in this spot. Free the old and build the new.
-                DetailLog("{0},UpdateTerrain:UpdateExisting,call,id={1},base={2},minC={3},maxC={4}",
-                                BSScene.DetailLogZero, id, terrainRegionBase, minCoords, minCoords);
-
-                // Remove old terrain from the collection
-                m_terrains.Remove(terrainRegionBase);
-                // Release any physical memory it may be using.
-                terrainPhys.Dispose();
-
-                if (MegaRegionParentPhysicsScene == null)
-                {
-                    BSTerrainPhys newTerrainPhys = BuildPhysicalTerrain(terrainRegionBase, id, heightMap, minCoords, maxCoords);
-                    m_terrains.Add(terrainRegionBase, newTerrainPhys);
-
-                    m_terrainModified = true;
-                }
-                else
-                {
-                    // It's possible that Combine() was called after this code was queued.
-                    // If we are a child of combined regions, we don't create any terrain for us.
-                    DetailLog("{0},BSTerrainManager.UpdateTerrain:AmACombineChild,taint", BSScene.DetailLogZero);
-
-                    // Get rid of any terrain that may have been allocated for us.
-                    ReleaseGroundPlaneAndTerrain();
-
-                    // I hate doing this, but just bail
-                    return;
-                }
-            }
-            else
-            {
-                // We don't know about this terrain so either we are creating a new terrain or
-                //    our mega-prim child is giving us a new terrain to add to the phys world
-
-                // if this is a child terrain, calculate a unique terrain id
-                uint newTerrainID = id;
-                if (newTerrainID >= BSScene.CHILDTERRAIN_ID)
-                    newTerrainID = ++m_terrainCount;
-
-                DetailLog("{0},UpdateTerrain:NewTerrain,taint,newID={1},minCoord={2},maxCoord={3}",
-                                            BSScene.DetailLogZero, newTerrainID, minCoords, minCoords);
-                BSTerrainPhys newTerrainPhys = BuildPhysicalTerrain(terrainRegionBase, id, heightMap, minCoords, maxCoords);
-                m_terrains.Add(terrainRegionBase, newTerrainPhys);
-
-                m_terrainModified = true;
-            }
-        }
-    }
-
-    // TODO: redo terrain implementation selection to allow other base types than heightMap.
-    private BSTerrainPhys BuildPhysicalTerrain(Vector3 terrainRegionBase, uint id, float[] heightMap, Vector3 minCoords, Vector3 maxCoords)
-    {
-        PhysicsScene.Logger.DebugFormat("{0} Terrain for {1}/{2} created with {3}", 
-                                            LogHeader, PhysicsScene.RegionName, terrainRegionBase, 
-                                            (BSTerrainPhys.TerrainImplementation)BSParam.TerrainImplementation);
-        BSTerrainPhys newTerrainPhys = null;
-        switch ((int)BSParam.TerrainImplementation)
-        {
-            case (int)BSTerrainPhys.TerrainImplementation.Heightmap:
-                newTerrainPhys = new BSTerrainHeightmap(PhysicsScene, terrainRegionBase, id,
-                                            heightMap, minCoords, maxCoords);
-                break;
-            case (int)BSTerrainPhys.TerrainImplementation.Mesh:
-                newTerrainPhys = new BSTerrainMesh(PhysicsScene, terrainRegionBase, id,
-                                            heightMap, minCoords, maxCoords);
-                break;
-            default:
-                PhysicsScene.Logger.ErrorFormat("{0} Bad terrain implementation specified. Type={1}/{2},Region={3}/{4}",
-                                            LogHeader, 
-                                            (int)BSParam.TerrainImplementation, 
-                                            BSParam.TerrainImplementation,
-                                            PhysicsScene.RegionName, terrainRegionBase);
-                break;
-        }
-        return newTerrainPhys;
-    }
-
-    // Return 'true' of this position is somewhere in known physical terrain space
-    public bool IsWithinKnownTerrain(Vector3 pos)
-    {
-        Vector3 terrainBaseXYZ;
-        BSTerrainPhys physTerrain;
-        return GetTerrainPhysicalAtXYZ(pos, out physTerrain, out terrainBaseXYZ);
-    }
-
-    // Given an X and Y, find the height of the terrain.
-    // Since we could be handling multiple terrains for a mega-region,
-    //    the base of the region is calcuated assuming all regions are
-    //    the same size and that is the default.
-    // Once the heightMapInfo is found, we have all the information to
-    //    compute the offset into the array.
-    private float lastHeightTX = 999999f;
-    private float lastHeightTY = 999999f;
-    private float lastHeight = HEIGHT_INITIAL_LASTHEIGHT;
-    public float GetTerrainHeightAtXYZ(Vector3 pos)
-    {
-        float tX = pos.X;
-        float tY = pos.Y;
-        // You'd be surprized at the number of times this routine is called
-        //    with the same parameters as last time.
-        if (!m_terrainModified && (lastHeightTX == tX) && (lastHeightTY == tY))
-            return lastHeight;
-        m_terrainModified = false;
-
-        lastHeightTX = tX;
-        lastHeightTY = tY;
-        float ret = HEIGHT_GETHEIGHT_RET;
-
-        Vector3 terrainBaseXYZ;
-        BSTerrainPhys physTerrain;
-        if (GetTerrainPhysicalAtXYZ(pos, out physTerrain, out terrainBaseXYZ))
-        {
-            ret = physTerrain.GetTerrainHeightAtXYZ(pos - terrainBaseXYZ);
-        }
-        else
-        {
-            PhysicsScene.Logger.ErrorFormat("{0} GetTerrainHeightAtXY: terrain not found: region={1}, x={2}, y={3}",
-                    LogHeader, PhysicsScene.RegionName, tX, tY);
-            DetailLog("{0},BSTerrainManager.GetTerrainHeightAtXYZ,terrainNotFound,pos={1},base={2}",
-                                BSScene.DetailLogZero, pos, terrainBaseXYZ);
-        }
-
-        lastHeight = ret;
-        return ret;
-    }
-
-    public float GetWaterLevelAtXYZ(Vector3 pos)
-    {
-        float ret = WATER_HEIGHT_GETHEIGHT_RET;
-
-        Vector3 terrainBaseXYZ;
-        BSTerrainPhys physTerrain;
-        if (GetTerrainPhysicalAtXYZ(pos, out physTerrain, out terrainBaseXYZ))
-        {
-            ret = physTerrain.GetWaterLevelAtXYZ(pos);
-        }
-        else
-        {
-            PhysicsScene.Logger.ErrorFormat("{0} GetWaterHeightAtXY: terrain not found: pos={1}, terrainBase={2}, height={3}",
-                    LogHeader, PhysicsScene.RegionName, pos, terrainBaseXYZ, ret);
-        }
-        return ret;
-    }
-
-    // Given an address, return 'true' of there is a description of that terrain and output
-    //    the descriptor class and the 'base' fo the addresses therein.
-    private bool GetTerrainPhysicalAtXYZ(Vector3 pos, out BSTerrainPhys outPhysTerrain, out Vector3 outTerrainBase)
-    {
-        int offsetX = ((int)(pos.X / (int)DefaultRegionSize.X)) * (int)DefaultRegionSize.X;
-        int offsetY = ((int)(pos.Y / (int)DefaultRegionSize.Y)) * (int)DefaultRegionSize.Y;
-        Vector3 terrainBaseXYZ = new Vector3(offsetX, offsetY, 0f);
-
-        BSTerrainPhys physTerrain = null;
-        lock (m_terrains)
-        {
-            m_terrains.TryGetValue(terrainBaseXYZ, out physTerrain);
-        }
-        outTerrainBase = terrainBaseXYZ;
-        outPhysTerrain = physTerrain;
-        return (physTerrain != null);
-    }
-
-    // Although no one seems to check this, I do support combining.
-    public bool SupportsCombining()
-    {
-        return true;
-    }
-
-    // This routine is called two ways:
-    //    One with 'offset' and 'pScene' zero and null but 'extents' giving the maximum
-    //        extent of the combined regions. This is to inform the parent of the size
-    //        of the combined regions.
-    //    and one with 'offset' as the offset of the child region to the base region,
-    //        'pScene' pointing to the parent and 'extents' of zero. This informs the
-    //        child of its relative base and new parent.
-    public void Combine(PhysicsScene pScene, Vector3 offset, Vector3 extents)
-    {
-        m_worldOffset = offset;
-        m_worldMax = extents;
-        MegaRegionParentPhysicsScene = pScene;
-        if (pScene != null)
-        {
-            // We are a child.
-            // We want m_worldMax to be the highest coordinate of our piece of terrain.
-            m_worldMax = offset + DefaultRegionSize;
-        }
-        DetailLog("{0},BSTerrainManager.Combine,offset={1},extents={2},wOffset={3},wMax={4}",
-                        BSScene.DetailLogZero, offset, extents, m_worldOffset, m_worldMax);
-    }
-
-    // Unhook all the combining that I know about.
-    public void UnCombine(PhysicsScene pScene)
-    {
-        // Just like ODE, we don't do anything yet.
-        DetailLog("{0},BSTerrainManager.UnCombine", BSScene.DetailLogZero);
-    }
-
-
-    private void DetailLog(string msg, params Object[] args)
-    {
-        PhysicsScene.PhysicsLogging.Write(msg, args);
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainMesh.cs b/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainMesh.cs
deleted file mode 100644
index 6083dd451a..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BSTerrainMesh.cs
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-using OpenSim.Framework;
-using OpenSim.Region.Framework;
-using OpenSim.Region.CoreModules;
-using OpenSim.Region.Physics.Manager;
-
-using Nini.Config;
-using log4net;
-
-using OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-public sealed class BSTerrainMesh : BSTerrainPhys
-{
-    static string LogHeader = "[BULLETSIM TERRAIN MESH]";
-
-    private float[] m_savedHeightMap;
-    int m_sizeX;
-    int m_sizeY;
-
-    BulletShape m_terrainShape;
-    BulletBody m_terrainBody;
-
-    public BSTerrainMesh(BSScene physicsScene, Vector3 regionBase, uint id, Vector3 regionSize) 
-        : base(physicsScene, regionBase, id)
-    {
-    }
-
-    public BSTerrainMesh(BSScene physicsScene, Vector3 regionBase, uint id /* parameters for making mesh */)
-        : base(physicsScene, regionBase, id)
-    {
-    }
-
-    // Create terrain mesh from a heightmap.
-    public BSTerrainMesh(BSScene physicsScene, Vector3 regionBase, uint id, float[] initialMap, 
-                                                    Vector3 minCoords, Vector3 maxCoords)
-        : base(physicsScene, regionBase, id)
-    {
-        int indicesCount;
-        int[] indices;
-        int verticesCount;
-        float[] vertices;
-
-        m_savedHeightMap = initialMap;
-
-        m_sizeX = (int)(maxCoords.X - minCoords.X);
-        m_sizeY = (int)(maxCoords.Y - minCoords.Y);
-
-        if (!BSTerrainMesh.ConvertHeightmapToMesh(PhysicsScene, initialMap,
-                            m_sizeX, m_sizeY,
-                            (float)m_sizeX, (float)m_sizeY,
-                            Vector3.Zero, 1.0f,
-                            out indicesCount, out indices, out verticesCount, out vertices))
-        {
-            // DISASTER!!
-            PhysicsScene.DetailLog("{0},BSTerrainMesh.create,failedConversionOfHeightmap", ID);
-            PhysicsScene.Logger.ErrorFormat("{0} Failed conversion of heightmap to mesh! base={1}", LogHeader, TerrainBase);
-            // Something is very messed up and a crash is in our future.
-            return;
-        }
-        PhysicsScene.DetailLog("{0},BSTerrainMesh.create,meshed,indices={1},indSz={2},vertices={3},vertSz={4}", 
-                                ID, indicesCount, indices.Length, verticesCount, vertices.Length);
-
-        m_terrainShape = new BulletShape(BulletSimAPI.CreateMeshShape2(PhysicsScene.World.ptr,
-                                                    indicesCount, indices, verticesCount, vertices),
-                                        BSPhysicsShapeType.SHAPE_MESH);
-        if (!m_terrainShape.HasPhysicalShape)
-        {
-            // DISASTER!!
-            PhysicsScene.DetailLog("{0},BSTerrainMesh.create,failedCreationOfShape", ID);
-            physicsScene.Logger.ErrorFormat("{0} Failed creation of terrain mesh! base={1}", LogHeader, TerrainBase);
-            // Something is very messed up and a crash is in our future.
-            return;
-        }
-
-        Vector3 pos = regionBase;
-        Quaternion rot = Quaternion.Identity;
-
-        m_terrainBody = new BulletBody(id, BulletSimAPI.CreateBodyWithDefaultMotionState2( m_terrainShape.ptr, ID, pos, rot));
-        if (!m_terrainBody.HasPhysicalBody)
-        {
-            // DISASTER!!
-            physicsScene.Logger.ErrorFormat("{0} Failed creation of terrain body! base={1}", LogHeader, TerrainBase);
-            // Something is very messed up and a crash is in our future.
-            return;
-        }
-
-        // Set current terrain attributes
-        BulletSimAPI.SetFriction2(m_terrainBody.ptr, BSParam.TerrainFriction);
-        BulletSimAPI.SetHitFraction2(m_terrainBody.ptr, BSParam.TerrainHitFraction);
-        BulletSimAPI.SetRestitution2(m_terrainBody.ptr, BSParam.TerrainRestitution);
-        BulletSimAPI.SetCollisionFlags2(m_terrainBody.ptr, CollisionFlags.CF_STATIC_OBJECT);
-
-        // Static objects are not very massive.
-        BulletSimAPI.SetMassProps2(m_terrainBody.ptr, 0f, Vector3.Zero);
-
-        // Put the new terrain to the world of physical objects
-        BulletSimAPI.AddObjectToWorld2(PhysicsScene.World.ptr, m_terrainBody.ptr, pos, rot);
-
-        // Redo its bounding box now that it is in the world
-        BulletSimAPI.UpdateSingleAabb2(PhysicsScene.World.ptr, m_terrainBody.ptr);
-
-        m_terrainBody.collisionType = CollisionType.Terrain;
-        m_terrainBody.ApplyCollisionMask();
-
-        // Make it so the terrain will not move or be considered for movement.
-        BulletSimAPI.ForceActivationState2(m_terrainBody.ptr, ActivationState.DISABLE_SIMULATION);
-    }
-
-    public override void Dispose()
-    {
-        if (m_terrainBody.HasPhysicalBody)
-        {
-            BulletSimAPI.RemoveObjectFromWorld2(PhysicsScene.World.ptr, m_terrainBody.ptr);
-            // Frees both the body and the shape.
-            BulletSimAPI.DestroyObject2(PhysicsScene.World.ptr, m_terrainBody.ptr);
-        }
-    }
-
-    public override float GetTerrainHeightAtXYZ(Vector3 pos)
-    {
-        // For the moment use the saved heightmap to get the terrain height.
-        // TODO: raycast downward to find the true terrain below the position.
-        float ret = BSTerrainManager.HEIGHT_GETHEIGHT_RET;
-
-        int mapIndex = (int)pos.Y * m_sizeY + (int)pos.X;
-        try
-        {
-            ret = m_savedHeightMap[mapIndex];
-        }
-        catch
-        {
-            // Sometimes they give us wonky values of X and Y. Give a warning and return something.
-            PhysicsScene.Logger.WarnFormat("{0} Bad request for terrain height. terrainBase={1}, pos={2}",
-                                                LogHeader, TerrainBase, pos);
-            ret = BSTerrainManager.HEIGHT_GETHEIGHT_RET;
-        }
-        return ret;
-    }
-
-    // The passed position is relative to the base of the region.
-    public override float GetWaterLevelAtXYZ(Vector3 pos)
-    {
-        return PhysicsScene.SimpleWaterLevel;
-    }
-
-    // Convert the passed heightmap to mesh information suitable for CreateMeshShape2().
-    // Return 'true' if successfully created.
-    public static bool ConvertHeightmapToMesh(
-                                BSScene physicsScene,
-                                float[] heightMap, int sizeX, int sizeY,    // parameters of incoming heightmap
-                                float extentX, float extentY,               // zero based range for output vertices
-                                Vector3 extentBase,                         // base to be added to all vertices
-                                float magnification,                        // number of vertices to create between heightMap coords
-                                out int indicesCountO, out int[] indicesO,
-                                out int verticesCountO, out float[] verticesO)
-    {
-        bool ret = false;
-
-        int indicesCount = 0;
-        int verticesCount = 0;
-        int[] indices = new int[0];
-        float[] vertices = new float[0];
-
-        // Simple mesh creation which assumes magnification == 1.
-        // TODO: do a more general solution that scales, adds new vertices and smoothes the result.
-
-        // Create an array of vertices that is sizeX+1 by sizeY+1 (note the loop
-        //    from zero to <= sizeX). The triangle indices are then generated as two triangles
-        //    per heightmap point. There are sizeX by sizeY of these squares. The extra row and
-        //    column of vertices are used to complete the triangles of the last row and column
-        //    of the heightmap.
-        try
-        {
-            // One vertice per heightmap value plus the vertices off the top and bottom edge.
-            int totalVertices = (sizeX + 1) * (sizeY + 1);
-            vertices = new float[totalVertices * 3];
-            int totalIndices = sizeX * sizeY * 6;
-            indices = new int[totalIndices];
-
-            float magX = (float)sizeX / extentX;
-            float magY = (float)sizeY / extentY;
-            physicsScene.DetailLog("{0},BSTerrainMesh.ConvertHeightMapToMesh,totVert={1},totInd={2},extentBase={3},magX={4},magY={5}",
-                                    BSScene.DetailLogZero, totalVertices, totalIndices, extentBase, magX, magY);
-            float minHeight = float.MaxValue;
-            // Note that sizeX+1 vertices are created since there is land between this and the next region.
-            for (int yy = 0; yy <= sizeY; yy++)
-            {
-                for (int xx = 0; xx <= sizeX; xx++)     // Hint: the "<=" means we go around sizeX + 1 times
-                {
-                    int offset = yy * sizeX + xx;
-                    // Extend the height with the height from the last row or column
-                    if (yy == sizeY) offset -= sizeX;
-                    if (xx == sizeX) offset -= 1;
-                    float height = heightMap[offset];
-                    minHeight = Math.Min(minHeight, height);
-                    vertices[verticesCount + 0] = (float)xx * magX + extentBase.X;
-                    vertices[verticesCount + 1] = (float)yy * magY + extentBase.Y;
-                    vertices[verticesCount + 2] = height + extentBase.Z;
-                    verticesCount += 3;
-                }
-            }
-            verticesCount = verticesCount / 3;
-
-            for (int yy = 0; yy < sizeY; yy++)
-            {
-                for (int xx = 0; xx < sizeX; xx++)
-                {
-                    int offset = yy * (sizeX + 1) + xx;
-                    // Each vertices is presumed to be the upper left corner of a box of two triangles
-                    indices[indicesCount + 0] = offset;
-                    indices[indicesCount + 1] = offset + 1;
-                    indices[indicesCount + 2] = offset + sizeX + 1; // accounting for the extra column
-                    indices[indicesCount + 3] = offset + 1;
-                    indices[indicesCount + 4] = offset + sizeX + 2;
-                    indices[indicesCount + 5] = offset + sizeX + 1;
-                    indicesCount += 6;
-                }
-            }
-
-            ret = true;
-        }
-        catch (Exception e)
-        {
-            physicsScene.Logger.ErrorFormat("{0} Failed conversion of heightmap to mesh. For={1}/{2}, e={3}",
-                                                LogHeader, physicsScene.RegionName, extentBase, e);
-        }
-
-        indicesCountO = indicesCount;
-        indicesO = indices;
-        verticesCountO = verticesCount;
-        verticesO = vertices;
-
-        return ret;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs b/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs
deleted file mode 100644
index ba969058bc..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BulletSimAPI.cs
+++ /dev/null
@@ -1,1604 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Text;
-using BulletXNA;
-using OpenMetaverse;
-using BulletXNA.LinearMath;
-using BulletXNA.BulletCollision;
-using BulletXNA.BulletDynamics;
-using BulletXNA.BulletCollision.CollisionDispatch;
-using OpenSim.Framework;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin {
-
-// Classes to allow some type checking for the API
-// These hold pointers to allocated objects in the unmanaged space.
-
-
-
-    // Constraint type values as defined by Bullet
-public enum ConstraintType : int
-{
-	POINT2POINT_CONSTRAINT_TYPE = 3,
-	HINGE_CONSTRAINT_TYPE,
-	CONETWIST_CONSTRAINT_TYPE,
-	D6_CONSTRAINT_TYPE,
-	SLIDER_CONSTRAINT_TYPE,
-	CONTACT_CONSTRAINT_TYPE,
-	D6_SPRING_CONSTRAINT_TYPE,
-	MAX_CONSTRAINT_TYPE
-}
-
-// ===============================================================================
-[StructLayout(LayoutKind.Sequential)]
-public struct ConvexHull
-{
-	Vector3 Offset;
-	int VertexCount;
-	Vector3[] Vertices;
-}
-public enum BSPhysicsShapeType
-{
-	SHAPE_UNKNOWN   = 0,
-	SHAPE_CAPSULE   = 1,
-	SHAPE_BOX       = 2,
-	SHAPE_CONE      = 3,
-	SHAPE_CYLINDER  = 4,
-	SHAPE_SPHERE    = 5,
-	SHAPE_MESH      = 6,
-	SHAPE_HULL      = 7,
-    // following defined by BulletSim
-	SHAPE_GROUNDPLANE  = 20,
-	SHAPE_TERRAIN   = 21,
-	SHAPE_COMPOUND  = 22,
-	SHAPE_HEIGHTMAP = 23,
-};
-
-// The native shapes have predefined shape hash keys
-public enum FixedShapeKey : ulong
-{
-    KEY_NONE        = 0,
-    KEY_BOX         = 1,
-    KEY_SPHERE      = 2,
-    KEY_CONE        = 3,
-    KEY_CYLINDER    = 4,
-    KEY_CAPSULE     = 5,
-}
-
-[StructLayout(LayoutKind.Sequential)]
-public struct ShapeData
-{
-    public uint ID;
-    public BSPhysicsShapeType Type;
-    public Vector3 Position;
-    public Quaternion Rotation;
-    public Vector3 Velocity;
-    public Vector3 Scale;
-    public float Mass;
-    public float Buoyancy;
-    public System.UInt64 HullKey;
-    public System.UInt64 MeshKey;
-    public float Friction;
-    public float Restitution;
-    public float Collidable;    // true of things bump into this
-    public float Static;        // true if a static object. Otherwise gravity, etc.
-    public float Solid;         // true if object cannot be passed through
-    public Vector3 Size;
-
-    // note that bools are passed as floats since bool size changes by language and architecture
-    public const float numericTrue = 1f;
-    public const float numericFalse = 0f;
-}
-[StructLayout(LayoutKind.Sequential)]
-public struct SweepHit
-{
-    public uint ID;
-    public float Fraction;
-    public Vector3 Normal;
-    public Vector3 Point;
-}
-[StructLayout(LayoutKind.Sequential)]
-public struct RaycastHit
-{
-    public uint ID;
-    public float Fraction;
-    public Vector3 Normal;
-}
-[StructLayout(LayoutKind.Sequential)]
-public struct CollisionDesc
-{
-    public uint aID;
-    public uint bID;
-    public Vector3 point;
-    public Vector3 normal;
-}
-[StructLayout(LayoutKind.Sequential)]
-public struct EntityProperties
-{
-    public uint ID;
-    public Vector3 Position;
-    public Quaternion Rotation;
-    public Vector3 Velocity;
-    public Vector3 Acceleration;
-    public Vector3 RotationalVelocity;
-    public override string ToString()
-    {
-        return string.Format("ID:{0}, Pos:<{1:F},{2:F},{3:F}>, Rot:<{4:F},{5:F},{6:F},{7:F}>, LVel:<{8:F},{9:F},{10:F}>, AVel:<{11:F},{12:F},{13:F}>",
-            ID.ToString(),
-            Position.X,Position.Y,Position.Z,
-            Rotation.X,Rotation.Y,Rotation.Z,Rotation.W,
-            Velocity.X,Velocity.Y,Velocity.Z,
-            RotationalVelocity.X,RotationalVelocity.Y,RotationalVelocity.Z
-            );
-    }
-}
-
-// Format of this structure must match the definition in the C++ code
-// NOTE: adding the X causes compile breaks if used. These are unused symbols
-//      that can be removed from both here and the unmanaged definition of this structure.
-[StructLayout(LayoutKind.Sequential)]
-public struct ConfigurationParameters
-{
-    public float defaultFriction;
-    public float defaultDensity;
-    public float defaultRestitution;
-    public float collisionMargin;
-    public float gravity;
-
-    public float XlinearDamping;
-    public float XangularDamping;
-    public float XdeactivationTime;
-    public float XlinearSleepingThreshold;
-    public float XangularSleepingThreshold;
-	public float XccdMotionThreshold;
-	public float XccdSweptSphereRadius;
-    public float XcontactProcessingThreshold;
-
-    public float XterrainImplementation;
-    public float XterrainFriction;
-    public float XterrainHitFraction;
-    public float XterrainRestitution;
-    public float XterrainCollisionMargin;
-
-    public float XavatarFriction;
-    public float XavatarStandingFriction;
-    public float XavatarDensity;
-    public float XavatarRestitution;
-    public float XavatarCapsuleWidth;
-    public float XavatarCapsuleDepth;
-    public float XavatarCapsuleHeight;
-	public float XavatarContactProcessingThreshold;
-
-    public float XvehicleAngularDamping;
-
-	public float maxPersistantManifoldPoolSize;
-	public float maxCollisionAlgorithmPoolSize;
-	public float shouldDisableContactPoolDynamicAllocation;
-	public float shouldForceUpdateAllAabbs;
-	public float shouldRandomizeSolverOrder;
-	public float shouldSplitSimulationIslands;
-	public float shouldEnableFrictionCaching;
-	public float numberOfSolverIterations;
-
-    public float XlinksetImplementation;
-    public float XlinkConstraintUseFrameOffset;
-    public float XlinkConstraintEnableTransMotor;
-    public float XlinkConstraintTransMotorMaxVel;
-    public float XlinkConstraintTransMotorMaxForce;
-    public float XlinkConstraintERP;
-    public float XlinkConstraintCFM;
-    public float XlinkConstraintSolverIterations;
-
-    public float physicsLoggingFrames;
-
-    public const float numericTrue = 1f;
-    public const float numericFalse = 0f;
-}
-
-
-// The states a bullet collision object can have
-
-public enum ActivationState : uint
-{
-    UNDEFINED = 0,
-    ACTIVE_TAG = 1,
-    ISLAND_SLEEPING = 2,
-    WANTS_DEACTIVATION = 3,
-    DISABLE_DEACTIVATION = 4,
-    DISABLE_SIMULATION = 5,
-}
-
-public enum CollisionObjectTypes : int
-{
-    CO_COLLISION_OBJECT             = 1 << 0,
-    CO_RIGID_BODY                   = 1 << 1,
-    CO_GHOST_OBJECT                 = 1 << 2,
-    CO_SOFT_BODY                    = 1 << 3,
-    CO_HF_FLUID                     = 1 << 4,
-    CO_USER_TYPE                    = 1 << 5,
-}
-
-// Values used by Bullet and BulletSim to control object properties.
-// Bullet's "CollisionFlags" has more to do with operations on the
-//    object (if collisions happen, if gravity effects it, ...).
-    [Flags]
-public enum CollisionFlags : uint
-{
-    CF_STATIC_OBJECT                 = 1 << 0,
-    CF_KINEMATIC_OBJECT              = 1 << 1,
-    CF_NO_CONTACT_RESPONSE           = 1 << 2,
-    CF_CUSTOM_MATERIAL_CALLBACK      = 1 << 3,
-    CF_CHARACTER_OBJECT              = 1 << 4,
-    CF_DISABLE_VISUALIZE_OBJECT      = 1 << 5,
-    CF_DISABLE_SPU_COLLISION_PROCESS = 1 << 6,
-    // Following used by BulletSim to control collisions and updates
-    BS_SUBSCRIBE_COLLISION_EVENTS    = 1 << 10,
-    BS_FLOATS_ON_WATER               = 1 << 11,
-    BS_VEHICLE_COLLISIONS            = 1 << 12,
-    BS_NONE                          = 0,
-    BS_ALL                           = 0xFFFFFFFF,
-
-    // These are the collision flags switched depending on physical state.
-    // The other flags are used for other things and should not be fooled with.
-    BS_ACTIVE = CF_STATIC_OBJECT
-                | CF_KINEMATIC_OBJECT
-                | CF_NO_CONTACT_RESPONSE
-};
-
-// Values for collisions groups and masks
-public enum CollisionFilterGroups : uint
-{
-    // Don't use the bit definitions!!  Define the use in a
-    //   filter/mask definition below. This way collision interactions
-    //   are more easily debugged.
-    BNoneGroup              = 0,
-    BDefaultGroup           = 1 << 0,
-    BStaticGroup            = 1 << 1,
-    BKinematicGroup         = 1 << 2,
-    BDebrisGroup            = 1 << 3,
-    BSensorTrigger          = 1 << 4,
-    BCharacterGroup         = 1 << 5,
-    BAllGroup               = 0xFFFFFFFF,
-    // Filter groups defined by BulletSim
-    BGroundPlaneGroup       = 1 << 10,
-    BTerrainGroup           = 1 << 11,
-    BRaycastGroup           = 1 << 12,
-    BSolidGroup             = 1 << 13,
-    // BLinksetGroup        = xx  // a linkset proper is either static or dynamic
-    BLinksetChildGroup      = 1 << 14,
-    // The collsion filters and masked are defined in one place -- don't want them scattered
-    AvatarGroup             = BCharacterGroup,
-    AvatarMask              = BAllGroup,
-    ObjectGroup             = BSolidGroup,
-    ObjectMask              = BAllGroup,
-    StaticObjectGroup       = BStaticGroup,
-    StaticObjectMask        = AvatarGroup | ObjectGroup,    // static things don't interact with much
-    LinksetGroup            =  BLinksetChildGroup,
-    LinksetMask             = BAllGroup & ~BLinksetChildGroup, // linkset objects don't collide with each other
-    VolumeDetectGroup       = BSensorTrigger,
-    VolumeDetectMask        = ~BSensorTrigger,
-    TerrainGroup            = BTerrainGroup,
-    TerrainMask             = BAllGroup & ~BStaticGroup,  // static objects on the ground don't collide
-    GroundPlaneGroup        = BGroundPlaneGroup,
-    GroundPlaneMask         = BAllGroup
-
-};
-
-// CFM controls the 'hardness' of the constraint. 0=fixed, 0..1=violatable. Default=0
-// ERP controls amount of correction per tick. Usable range=0.1..0.8. Default=0.2.
-public enum ConstraintParams : int
-{
-    BT_CONSTRAINT_ERP = 1,  // this one is not used in Bullet as of 20120730
-    BT_CONSTRAINT_STOP_ERP,
-    BT_CONSTRAINT_CFM,
-    BT_CONSTRAINT_STOP_CFM,
-};
-public enum ConstraintParamAxis : int
-{
-    AXIS_LINEAR_X = 0,
-    AXIS_LINEAR_Y,
-    AXIS_LINEAR_Z,
-    AXIS_ANGULAR_X,
-    AXIS_ANGULAR_Y,
-    AXIS_ANGULAR_Z,
-    AXIS_LINEAR_ALL = 20,    // these last three added by BulletSim so we don't have to do zillions of calls
-    AXIS_ANGULAR_ALL,
-    AXIS_ALL
-};
-
-// ===============================================================================
-static class BulletSimAPI {
-    private static int m_collisionsThisFrame;
-    public delegate void DebugLogCallback(string msg);
-    /// <summary>
-    /// 
-    /// </summary>
-    /// <param name="p"></param>
-    /// <param name="p_2"></param>
-    internal static bool RemoveObjectFromWorld2(object pWorld, object pBody)
-    {
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        RigidBody body = pBody as RigidBody;
-        world.RemoveRigidBody(body);
-        return true;
-    }
-
-    internal static void SetRestitution2(object pBody, float pRestitution)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetRestitution(pRestitution);
-    }
-
-    internal static void SetMargin2(object pShape, float pMargin)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        shape.SetMargin(pMargin);
-    }
-
-    internal static void SetLocalScaling2(object pShape, Vector3 pScale)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        IndexedVector3 vec = new IndexedVector3(pScale.X, pScale.Y, pScale.Z);
-        shape.SetLocalScaling(ref vec);
-
-    }
-
-    internal static void SetContactProcessingThreshold2(object pBody, float contactprocessingthreshold)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetContactProcessingThreshold(contactprocessingthreshold);
-    }
-
-    internal static void SetCcdMotionThreshold2(object pBody, float pccdMotionThreashold)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetCcdMotionThreshold(pccdMotionThreashold);
-    }
-
-    internal static void SetCcdSweptSphereRadius2(object pBody, float pCcdSweptSphereRadius)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetCcdSweptSphereRadius(pCcdSweptSphereRadius);
-    }
-
-    internal static void SetAngularFactorV2(object pBody, Vector3 pAngularFactor)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetAngularFactor(new IndexedVector3(pAngularFactor.X, pAngularFactor.Y, pAngularFactor.Z));
-    }
-
-    internal static CollisionFlags AddToCollisionFlags2(object pBody, CollisionFlags pcollisionFlags)
-    {
-        CollisionObject body = pBody as CollisionObject;
-        CollisionFlags existingcollisionFlags = (CollisionFlags)(uint)body.GetCollisionFlags();
-        existingcollisionFlags |= pcollisionFlags;
-        body.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags)(uint)existingcollisionFlags);
-        return (CollisionFlags) (uint) existingcollisionFlags;
-    }
-
-    internal static void AddObjectToWorld2(object pWorld, object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        //if (!(body.GetCollisionShape().GetShapeType() == BroadphaseNativeTypes.STATIC_PLANE_PROXYTYPE && body.GetCollisionShape().GetShapeType() == BroadphaseNativeTypes.TERRAIN_SHAPE_PROXYTYPE))
-
-        world.AddRigidBody(body);
-
-        //if (body.GetBroadphaseHandle() != null)
-        //    world.UpdateSingleAabb(body);
-    }
-
-    internal static void AddObjectToWorld2(object pWorld, object pBody, Vector3 _position, Quaternion _orientation)
-    {
-        RigidBody body = pBody as RigidBody;
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        //if (!(body.GetCollisionShape().GetShapeType() == BroadphaseNativeTypes.STATIC_PLANE_PROXYTYPE && body.GetCollisionShape().GetShapeType() == BroadphaseNativeTypes.TERRAIN_SHAPE_PROXYTYPE))
-
-        world.AddRigidBody(body);
-        IndexedVector3 vposition = new IndexedVector3(_position.X, _position.Y, _position.Z);
-        IndexedQuaternion vquaternion = new IndexedQuaternion(_orientation.X, _orientation.Y, _orientation.Z,
-                                                              _orientation.W);
-        IndexedMatrix mat = IndexedMatrix.CreateFromQuaternion(vquaternion);
-        mat._origin = vposition;
-        body.SetWorldTransform(mat);
-        //if (body.GetBroadphaseHandle() != null)
-        //    world.UpdateSingleAabb(body);
-    }
-
-    internal static void ForceActivationState2(object pBody, ActivationState pActivationState)
-    {
-        CollisionObject body = pBody as CollisionObject;
-        body.ForceActivationState((BulletXNA.BulletCollision.ActivationState)(uint)pActivationState);
-    }
-
-    internal static void UpdateSingleAabb2(object pWorld, object pBody)
-    {
-        CollisionObject body = pBody as CollisionObject;
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        world.UpdateSingleAabb(body);
-    }
-
-    internal static bool SetCollisionGroupMask2(object pBody, uint pGroup, uint pMask)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.GetBroadphaseHandle().m_collisionFilterGroup = (BulletXNA.BulletCollision.CollisionFilterGroups) pGroup;
-        body.GetBroadphaseHandle().m_collisionFilterGroup = (BulletXNA.BulletCollision.CollisionFilterGroups) pGroup;
-        if ((uint) body.GetBroadphaseHandle().m_collisionFilterGroup == 0)
-            return false;
-        return true;
-    }
-
-    internal static void ClearAllForces2(object pBody)
-    {
-        CollisionObject body = pBody as CollisionObject;
-        IndexedVector3 zeroVector = new IndexedVector3(0, 0, 0);
-        body.SetInterpolationLinearVelocity(ref zeroVector);
-        body.SetInterpolationAngularVelocity(ref zeroVector);
-        IndexedMatrix bodytransform = body.GetWorldTransform();
-
-        body.SetInterpolationWorldTransform(ref bodytransform);
-
-        if (body is RigidBody)
-        {
-            RigidBody rigidbody = body as RigidBody;
-            rigidbody.SetLinearVelocity(zeroVector);
-            rigidbody.SetAngularVelocity(zeroVector);
-            rigidbody.ClearForces();
-        }
-    }
-
-    internal static void SetInterpolationAngularVelocity2(object pBody, Vector3 pVector3)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 vec = new IndexedVector3(pVector3.X, pVector3.Y, pVector3.Z);
-        body.SetInterpolationAngularVelocity(ref vec);
-    }
-
-    internal static void SetAngularVelocity2(object pBody, Vector3 pVector3)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 vec = new IndexedVector3(pVector3.X, pVector3.Y, pVector3.Z);
-        body.SetAngularVelocity(ref vec);
-    }
-
-    internal static void ClearForces2(object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.ClearForces();
-    }
-
-    internal static void SetTranslation2(object pBody, Vector3 _position, Quaternion _orientation)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 vposition = new IndexedVector3(_position.X, _position.Y, _position.Z);
-        IndexedQuaternion vquaternion = new IndexedQuaternion(_orientation.X, _orientation.Y, _orientation.Z,
-                                                              _orientation.W);
-        IndexedMatrix mat = IndexedMatrix.CreateFromQuaternion(vquaternion);
-        mat._origin = vposition;
-        body.SetWorldTransform(mat);
-        
-    }
-
-    internal static Vector3 GetPosition2(object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 pos = body.GetInterpolationWorldTransform()._origin;
-        return new Vector3(pos.X, pos.Y, pos.Z);
-    }
-
-    internal static Vector3 CalculateLocalInertia2(object pShape, float pphysMass)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        IndexedVector3 inertia = IndexedVector3.Zero;
-        shape.CalculateLocalInertia(pphysMass, out inertia);
-        return new Vector3(inertia.X, inertia.Y, inertia.Z);
-    }
-
-    internal static void SetMassProps2(object pBody, float pphysMass, Vector3 plocalInertia)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 inertia = new IndexedVector3(plocalInertia.X, plocalInertia.Y, plocalInertia.Z);
-        body.SetMassProps(pphysMass, inertia);
-    }
-
-
-    internal static void SetObjectForce2(object pBody, Vector3 _force)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 force = new IndexedVector3(_force.X, _force.Y, _force.Z);
-        body.SetTotalForce(ref force);
-    }
-
-    internal static void SetFriction2(object pBody, float _currentFriction)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetFriction(_currentFriction);
-    }
-
-    internal static void SetLinearVelocity2(object pBody, Vector3 _velocity)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 velocity = new IndexedVector3(_velocity.X, _velocity.Y, _velocity.Z);
-        body.SetLinearVelocity(velocity);
-    }
-
-    internal static void Activate2(object pBody, bool pforceactivation)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.Activate(pforceactivation);
-        
-    }
-
-    internal static Quaternion GetOrientation2(object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedQuaternion mat = body.GetInterpolationWorldTransform().GetRotation();
-        return new Quaternion(mat.X, mat.Y, mat.Z, mat.W);
-    }
-
-    internal static CollisionFlags RemoveFromCollisionFlags2(object pBody, CollisionFlags pcollisionFlags)
-    {
-        RigidBody body = pBody as RigidBody;
-        CollisionFlags existingcollisionFlags = (CollisionFlags)(uint)body.GetCollisionFlags();
-        existingcollisionFlags &= ~pcollisionFlags;
-        body.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags)(uint)existingcollisionFlags);
-        return (CollisionFlags)(uint)existingcollisionFlags;
-    }
-
-    internal static void SetGravity2(object pBody, Vector3 pGravity)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 gravity = new IndexedVector3(pGravity.X, pGravity.Y, pGravity.Z);
-        body.SetGravity(gravity);
-    }
-
-    internal static bool DestroyConstraint2(object pBody, object pConstraint)
-    {
-        RigidBody body = pBody as RigidBody;
-        TypedConstraint constraint = pConstraint as TypedConstraint;
-        body.RemoveConstraintRef(constraint);
-        return true;
-    }
-
-    internal static bool SetLinearLimits2(object pConstraint, Vector3 low, Vector3 high)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        IndexedVector3 lowlimit = new IndexedVector3(low.X, low.Y, low.Z);
-        IndexedVector3 highlimit = new IndexedVector3(high.X, high.Y, high.Z);
-        constraint.SetLinearLowerLimit(lowlimit);
-        constraint.SetLinearUpperLimit(highlimit);
-        return true;
-    }
-
-    internal static bool SetAngularLimits2(object pConstraint, Vector3 low, Vector3 high)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        IndexedVector3 lowlimit = new IndexedVector3(low.X, low.Y, low.Z);
-        IndexedVector3 highlimit = new IndexedVector3(high.X, high.Y, high.Z);
-        constraint.SetAngularLowerLimit(lowlimit);
-        constraint.SetAngularUpperLimit(highlimit);
-        return true;
-    }
-
-    internal static void SetConstraintNumSolverIterations2(object pConstraint, float cnt)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        constraint.SetOverrideNumSolverIterations((int)cnt);
-    }
-
-    internal static void CalculateTransforms2(object pConstraint)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        constraint.CalculateTransforms();
-    }
-
-    internal static void SetConstraintEnable2(object pConstraint, float p_2)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        constraint.SetEnabled((p_2 == 0) ? false : true);
-    }
-
-
-    //BulletSimAPI.Create6DofConstraint2(m_world.ptr, m_body1.ptr, m_body2.ptr,frame1, frame1rot,frame2, frame2rot,useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies));
-    internal static object Create6DofConstraint2(object pWorld, object pBody1, object pBody2, Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
-
-    {
-         DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        RigidBody body1 = pBody1 as RigidBody;
-        RigidBody body2 = pBody2 as RigidBody;
-        IndexedVector3 frame1v = new IndexedVector3(pframe1.X, pframe1.Y, pframe1.Z);
-        IndexedQuaternion frame1rot = new IndexedQuaternion(pframe1rot.X, pframe1rot.Y, pframe1rot.Z, pframe1rot.W);
-        IndexedMatrix frame1 = IndexedMatrix.CreateFromQuaternion(frame1rot);
-        frame1._origin = frame1v;
-
-        IndexedVector3 frame2v = new IndexedVector3(pframe2.X, pframe2.Y, pframe2.Z);
-        IndexedQuaternion frame2rot = new IndexedQuaternion(pframe2rot.X, pframe2rot.Y, pframe2rot.Z, pframe2rot.W);
-        IndexedMatrix frame2 = IndexedMatrix.CreateFromQuaternion(frame2rot);
-        frame2._origin = frame1v;
-
-        Generic6DofConstraint consttr = new Generic6DofConstraint(body1, body2, ref frame1, ref frame2,
-                                                                  puseLinearReferenceFrameA);
-        consttr.CalculateTransforms();
-        world.AddConstraint(consttr,pdisableCollisionsBetweenLinkedBodies);
-
-        return consttr;
-    }
-
-    
-    /// <summary>
-    /// 
-    /// </summary>
-    /// <param name="pWorld"></param>
-    /// <param name="pBody1"></param>
-    /// <param name="pBody2"></param>
-    /// <param name="pjoinPoint"></param>
-    /// <param name="puseLinearReferenceFrameA"></param>
-    /// <param name="pdisableCollisionsBetweenLinkedBodies"></param>
-    /// <returns></returns>
-    internal static object Create6DofConstraintToPoint2(object pWorld, object pBody1, object pBody2, Vector3 pjoinPoint, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
-    {
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        RigidBody body1 = pBody1 as RigidBody;
-        RigidBody body2 = pBody2 as RigidBody;
-        IndexedMatrix frame1 = new IndexedMatrix(IndexedBasisMatrix.Identity, new IndexedVector3(0, 0, 0));
-        IndexedMatrix frame2 = new IndexedMatrix(IndexedBasisMatrix.Identity, new IndexedVector3(0, 0, 0));
-
-        IndexedVector3 joinPoint = new IndexedVector3(pjoinPoint.X, pjoinPoint.Y, pjoinPoint.Z);
-        IndexedMatrix mat = IndexedMatrix.Identity;
-        mat._origin = new IndexedVector3(pjoinPoint.X, pjoinPoint.Y, pjoinPoint.Z);
-        frame1._origin = body1.GetWorldTransform().Inverse()*joinPoint;
-        frame2._origin = body2.GetWorldTransform().Inverse()*joinPoint;
-
-        Generic6DofConstraint consttr = new Generic6DofConstraint(body1, body2, ref frame1, ref frame2, puseLinearReferenceFrameA);
-        consttr.CalculateTransforms();
-        world.AddConstraint(consttr, pdisableCollisionsBetweenLinkedBodies);
-
-        return consttr;
-    }
-    //SetFrames2(m_constraint.ptr, frameA, frameArot, frameB, frameBrot);
-    internal static void SetFrames2(object pConstraint, Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        IndexedVector3 frame1v = new IndexedVector3(pframe1.X, pframe1.Y, pframe1.Z);
-        IndexedQuaternion frame1rot = new IndexedQuaternion(pframe1rot.X, pframe1rot.Y, pframe1rot.Z, pframe1rot.W);
-        IndexedMatrix frame1 = IndexedMatrix.CreateFromQuaternion(frame1rot);
-        frame1._origin = frame1v;
-
-        IndexedVector3 frame2v = new IndexedVector3(pframe2.X, pframe2.Y, pframe2.Z);
-        IndexedQuaternion frame2rot = new IndexedQuaternion(pframe2rot.X, pframe2rot.Y, pframe2rot.Z, pframe2rot.W);
-        IndexedMatrix frame2 = IndexedMatrix.CreateFromQuaternion(frame2rot);
-        frame2._origin = frame1v;
-        constraint.SetFrames(ref frame1, ref frame2);
-    }
-
-
-    
-
-    internal static bool IsInWorld2(object pWorld, object pShapeObj)
-    {
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        CollisionObject shape = pShapeObj as CollisionObject;
-        return world.IsInWorld(shape);
-    }
-
-    internal static void SetInterpolationLinearVelocity2(object pBody, Vector3 VehicleVelocity)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 velocity = new IndexedVector3(VehicleVelocity.X, VehicleVelocity.Y, VehicleVelocity.Z);
-        body.SetInterpolationLinearVelocity(ref velocity);
-    }
-
-    internal static bool UseFrameOffset2(object pConstraint, float onOff)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        constraint.SetUseFrameOffset((onOff == 0) ? false : true);
-        return true;
-    }
-    //SetBreakingImpulseThreshold2(m_constraint.ptr, threshold);
-    internal static bool SetBreakingImpulseThreshold2(object pConstraint, float threshold)
-    {
-        Generic6DofConstraint constraint = pConstraint as Generic6DofConstraint;
-        constraint.SetBreakingImpulseThreshold(threshold);
-        return true;
-    }
-    //BulletSimAPI.SetAngularDamping2(Prim.PhysBody.ptr, angularDamping);
-    internal static void SetAngularDamping2(object pBody, float angularDamping)
-    {
-        RigidBody body = pBody as RigidBody;
-        float lineardamping = body.GetLinearDamping();
-        body.SetDamping(lineardamping, angularDamping);
-
-    }
-
-    internal static void UpdateInertiaTensor2(object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.UpdateInertiaTensor();
-    }
-
-    internal static void RecalculateCompoundShapeLocalAabb2( object pCompoundShape)
-    {
-
-        CompoundShape shape = pCompoundShape as CompoundShape;
-        shape.RecalculateLocalAabb();
-    }
-
-    //BulletSimAPI.GetCollisionFlags2(PhysBody.ptr)
-    internal static CollisionFlags GetCollisionFlags2(object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        uint flags = (uint)body.GetCollisionFlags();
-        return (CollisionFlags) flags;
-    }
-
-    internal static void SetDamping2(object pBody, float pLinear, float pAngular)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetDamping(pLinear, pAngular);
-    }
-    //PhysBody.ptr, PhysicsScene.Params.deactivationTime);
-    internal static void SetDeactivationTime2(object pBody, float pDeactivationTime)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetDeactivationTime(pDeactivationTime);
-    }
-    //SetSleepingThresholds2(PhysBody.ptr, PhysicsScene.Params.linearSleepingThreshold, PhysicsScene.Params.angularSleepingThreshold);
-    internal static void SetSleepingThresholds2(object pBody, float plinearSleepingThreshold, float pangularSleepingThreshold)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetSleepingThresholds(plinearSleepingThreshold, pangularSleepingThreshold);
-    }
-
-    internal static CollisionObjectTypes GetBodyType2(object pBody)
-    {
-        RigidBody body = pBody as RigidBody;
-        return (CollisionObjectTypes)(int) body.GetInternalType();
-    }
-
-    //BulletSimAPI.ApplyCentralForce2(PhysBody.ptr, fSum);
-    internal static void ApplyCentralForce2(object pBody, Vector3 pfSum)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
-        body.ApplyCentralForce(ref fSum);
-    }
-    internal static void ApplyCentralImpulse2(object pBody, Vector3 pfSum)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
-        body.ApplyCentralImpulse(ref fSum);
-    }
-    internal static void ApplyTorque2(object pBody, Vector3 pfSum)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
-        body.ApplyTorque(ref fSum);
-    }
-    internal static void ApplyTorqueImpulse2(object pBody, Vector3 pfSum)
-    {
-        RigidBody body = pBody as RigidBody;
-        IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
-        body.ApplyTorqueImpulse(ref fSum);
-    }
-
-    internal static void DumpRigidBody2(object p, object p_2)
-    {
-        //TODO:
-    }
-
-    internal static void DumpCollisionShape2(object p, object p_2)
-    {
-        //TODO:
-    }
-
-    internal static void DestroyObject2(object p, object p_2)
-    {
-        //TODO:
-    }
-
-    internal static void Shutdown2(object pWorld)
-    {
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        world.Cleanup();
-    }
-
-    internal static void DeleteCollisionShape2(object p, object p_2)
-    {
-        //TODO:
-    }
-    //(sim.ptr, shape.ptr, prim.LocalID, prim.RawPosition, prim.RawOrientation);
-               
-    internal static object CreateBodyFromShape2(object pWorld, object pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
-    {
-        CollisionWorld world = pWorld as CollisionWorld;
-        IndexedMatrix mat =
-            IndexedMatrix.CreateFromQuaternion(new IndexedQuaternion(pRawOrientation.X, pRawOrientation.Y,
-                                                                     pRawOrientation.Z, pRawOrientation.W));
-        mat._origin = new IndexedVector3(pRawPosition.X, pRawPosition.Y, pRawPosition.Z);
-        CollisionShape shape = pShape as CollisionShape;
-        //UpdateSingleAabb2(world, shape);
-        // TODO: Feed Update array into null
-        RigidBody body = new RigidBody(0,new SimMotionState(world,pLocalID,mat,null),shape,IndexedVector3.Zero);
-        
-        body.SetUserPointer(pLocalID);
-        return body;
-    }
-
-    
-    internal static object CreateBodyWithDefaultMotionState2( object pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
-    {
-
-        IndexedMatrix mat =
-            IndexedMatrix.CreateFromQuaternion(new IndexedQuaternion(pRawOrientation.X, pRawOrientation.Y,
-                                                                     pRawOrientation.Z, pRawOrientation.W));
-        mat._origin = new IndexedVector3(pRawPosition.X, pRawPosition.Y, pRawPosition.Z);
-
-        CollisionShape shape = pShape as CollisionShape;
-
-        // TODO: Feed Update array into null
-        RigidBody body = new RigidBody(0, new DefaultMotionState( mat, IndexedMatrix.Identity), shape, IndexedVector3.Zero);
-        body.SetWorldTransform(mat);
-        body.SetUserPointer(pLocalID);
-        return body;
-    }
-    //(m_mapInfo.terrainBody.ptr, CollisionFlags.CF_STATIC_OBJECT);
-    internal static void SetCollisionFlags2(object pBody, CollisionFlags collisionFlags)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags) (uint) collisionFlags);
-    }
-    //(m_mapInfo.terrainBody.ptr, PhysicsScene.Params.terrainHitFraction);
-    internal static void SetHitFraction2(object pBody, float pHitFraction)
-    {
-        RigidBody body = pBody as RigidBody;
-        body.SetHitFraction(pHitFraction);
-    }
-    //BuildCapsuleShape2(physicsScene.World.ptr, 1f, 1f, prim.Scale);
-    internal static object BuildCapsuleShape2(object pWorld, float pRadius, float pHeight, Vector3 pScale)
-    {
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        IndexedVector3 scale = new IndexedVector3(pScale.X, pScale.Y, pScale.Z);
-        CapsuleShapeZ capsuleShapeZ = new CapsuleShapeZ(pRadius, pHeight);
-        capsuleShapeZ.SetMargin(world.WorldSettings.Params.collisionMargin);
-        capsuleShapeZ.SetLocalScaling(ref scale);
-        
-        return capsuleShapeZ;
-    }
-
-    public static object Initialize2(Vector3 worldExtent, ConfigurationParameters[] o, int mMaxCollisionsPerFrame, ref BulletXNA.CollisionDesc[] collisionArray, int mMaxUpdatesPerFrame, ref BulletXNA.EntityProperties[] updateArray, object mDebugLogCallbackHandle)
-    {
-        CollisionWorld.WorldData.ParamData p = new CollisionWorld.WorldData.ParamData();
-
-        p.angularDamping = o[0].XangularDamping;
-        p.defaultFriction = o[0].defaultFriction;
-        p.defaultFriction = o[0].defaultFriction;
-        p.defaultDensity = o[0].defaultDensity;
-        p.defaultRestitution = o[0].defaultRestitution;
-        p.collisionMargin = o[0].collisionMargin;
-        p.gravity = o[0].gravity;
-
-        p.linearDamping = o[0].XlinearDamping;
-        p.angularDamping = o[0].XangularDamping;
-        p.deactivationTime = o[0].XdeactivationTime;
-        p.linearSleepingThreshold = o[0].XlinearSleepingThreshold;
-        p.angularSleepingThreshold = o[0].XangularSleepingThreshold;
-        p.ccdMotionThreshold = o[0].XccdMotionThreshold;
-        p.ccdSweptSphereRadius = o[0].XccdSweptSphereRadius;
-        p.contactProcessingThreshold = o[0].XcontactProcessingThreshold;
-
-        p.terrainImplementation = o[0].XterrainImplementation;
-        p.terrainFriction = o[0].XterrainFriction;
-
-        p.terrainHitFraction = o[0].XterrainHitFraction;
-        p.terrainRestitution = o[0].XterrainRestitution;
-        p.terrainCollisionMargin = o[0].XterrainCollisionMargin;
-
-        p.avatarFriction = o[0].XavatarFriction;
-        p.avatarStandingFriction = o[0].XavatarStandingFriction;
-        p.avatarDensity = o[0].XavatarDensity;
-        p.avatarRestitution = o[0].XavatarRestitution;
-        p.avatarCapsuleWidth = o[0].XavatarCapsuleWidth;
-        p.avatarCapsuleDepth = o[0].XavatarCapsuleDepth;
-        p.avatarCapsuleHeight = o[0].XavatarCapsuleHeight;
-        p.avatarContactProcessingThreshold = o[0].XavatarContactProcessingThreshold;
-       
-        p.vehicleAngularDamping = o[0].XvehicleAngularDamping;
-        
-        p.maxPersistantManifoldPoolSize = o[0].maxPersistantManifoldPoolSize;
-        p.maxCollisionAlgorithmPoolSize = o[0].maxCollisionAlgorithmPoolSize;
-        p.shouldDisableContactPoolDynamicAllocation = o[0].shouldDisableContactPoolDynamicAllocation;
-        p.shouldForceUpdateAllAabbs = o[0].shouldForceUpdateAllAabbs;
-        p.shouldRandomizeSolverOrder = o[0].shouldRandomizeSolverOrder;
-        p.shouldSplitSimulationIslands = o[0].shouldSplitSimulationIslands;
-        p.shouldEnableFrictionCaching = o[0].shouldEnableFrictionCaching;
-        p.numberOfSolverIterations = o[0].numberOfSolverIterations;
-
-        p.linksetImplementation = o[0].XlinksetImplementation;
-        p.linkConstraintUseFrameOffset = o[0].XlinkConstraintUseFrameOffset;
-        p.linkConstraintEnableTransMotor = o[0].XlinkConstraintEnableTransMotor;
-        p.linkConstraintTransMotorMaxVel = o[0].XlinkConstraintTransMotorMaxVel;
-        p.linkConstraintTransMotorMaxForce = o[0].XlinkConstraintTransMotorMaxForce;
-        p.linkConstraintERP = o[0].XlinkConstraintERP;
-        p.linkConstraintCFM = o[0].XlinkConstraintCFM;
-        p.linkConstraintSolverIterations = o[0].XlinkConstraintSolverIterations;
-        p.physicsLoggingFrames = o[0].physicsLoggingFrames;
-        DefaultCollisionConstructionInfo ccci = new DefaultCollisionConstructionInfo();
-        
-        DefaultCollisionConfiguration cci = new DefaultCollisionConfiguration();
-        CollisionDispatcher m_dispatcher = new CollisionDispatcher(cci);
-
-
-        if (p.maxPersistantManifoldPoolSize > 0)
-            cci.m_persistentManifoldPoolSize = (int)p.maxPersistantManifoldPoolSize;
-        if (p.shouldDisableContactPoolDynamicAllocation !=0)
-            m_dispatcher.SetDispatcherFlags(DispatcherFlags.CD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION);
-        //if (p.maxCollisionAlgorithmPoolSize >0 )
-
-        DbvtBroadphase m_broadphase = new DbvtBroadphase();
-        //IndexedVector3 aabbMin = new IndexedVector3(0, 0, 0);
-        //IndexedVector3 aabbMax = new IndexedVector3(256, 256, 256);
-
-        //AxisSweep3Internal m_broadphase2 = new AxisSweep3Internal(ref aabbMin, ref aabbMax, Convert.ToInt32(0xfffe), 0xffff, ushort.MaxValue/2, null, true);
-        m_broadphase.GetOverlappingPairCache().SetInternalGhostPairCallback(new GhostPairCallback());
-
-        SequentialImpulseConstraintSolver m_solver = new SequentialImpulseConstraintSolver();
-
-        DiscreteDynamicsWorld world = new DiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, cci);
-        world.UpdatedObjects = updateArray;
-        world.UpdatedCollisions = collisionArray;
-        world.WorldSettings.Params = p;
-        world.SetForceUpdateAllAabbs(p.shouldForceUpdateAllAabbs != 0);
-        world.GetSolverInfo().m_solverMode = SolverMode.SOLVER_USE_WARMSTARTING | SolverMode.SOLVER_SIMD;
-        if (p.shouldRandomizeSolverOrder != 0)
-            world.GetSolverInfo().m_solverMode |= SolverMode.SOLVER_RANDMIZE_ORDER;
-
-        world.GetSimulationIslandManager().SetSplitIslands(p.shouldSplitSimulationIslands != 0);
-        //world.GetDispatchInfo().m_enableSatConvex Not implemented in C# port
-
-        if (p.shouldEnableFrictionCaching != 0)
-            world.GetSolverInfo().m_solverMode |= SolverMode.SOLVER_ENABLE_FRICTION_DIRECTION_CACHING;
-
-        if (p.numberOfSolverIterations > 0)
-            world.GetSolverInfo().m_numIterations = (int) p.numberOfSolverIterations;
-
-
-        world.GetSolverInfo().m_damping = world.WorldSettings.Params.linearDamping;
-        world.GetSolverInfo().m_restitution = world.WorldSettings.Params.defaultRestitution;
-        world.GetSolverInfo().m_globalCfm = 0.0f;
-        world.GetSolverInfo().m_tau = 0.6f;
-        world.GetSolverInfo().m_friction = 0.3f;
-        world.GetSolverInfo().m_maxErrorReduction = 20f;
-        world.GetSolverInfo().m_numIterations = 10;
-        world.GetSolverInfo().m_erp = 0.2f;
-        world.GetSolverInfo().m_erp2 = 0.1f;
-        world.GetSolverInfo().m_sor = 1.0f;
-        world.GetSolverInfo().m_splitImpulse = false;
-        world.GetSolverInfo().m_splitImpulsePenetrationThreshold = -0.02f;
-        world.GetSolverInfo().m_linearSlop = 0.0f;
-        world.GetSolverInfo().m_warmstartingFactor = 0.85f;
-        world.GetSolverInfo().m_restingContactRestitutionThreshold = 2;
-        world.SetForceUpdateAllAabbs(true);
-
-
-        world.SetGravity(new IndexedVector3(0,0,p.gravity));
-
-        return world;
-    }
-    //m_constraint.ptr, ConstraintParams.BT_CONSTRAINT_STOP_CFM, cfm, ConstraintParamAxis.AXIS_ALL
-    internal static bool SetConstraintParam2(object pConstraint, ConstraintParams paramIndex, float paramvalue, ConstraintParamAxis axis)
-    {
-        Generic6DofConstraint constrain = pConstraint as Generic6DofConstraint;
-        if (axis == ConstraintParamAxis.AXIS_LINEAR_ALL || axis == ConstraintParamAxis.AXIS_ALL)
-        {
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams) (int) paramIndex, paramvalue, 0);
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams) (int) paramIndex, paramvalue, 1);
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams) (int) paramIndex, paramvalue, 2);
-        }
-        if (axis == ConstraintParamAxis.AXIS_ANGULAR_ALL || axis == ConstraintParamAxis.AXIS_ALL)
-        {
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams)(int)paramIndex, paramvalue, 3);
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams)(int)paramIndex, paramvalue, 4);
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams)(int)paramIndex, paramvalue, 5);
-        }
-        if (axis == ConstraintParamAxis.AXIS_LINEAR_ALL)
-        {
-            constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams)(int)paramIndex, paramvalue, (int)axis);
-        }
-        return true;
-    }
-
-    internal static bool PushUpdate2(object pCollisionObject)
-    {
-        bool ret = false;
-        RigidBody rb = pCollisionObject as RigidBody;
-        if (rb != null)
-        {
-            SimMotionState sms = rb.GetMotionState() as SimMotionState;
-            if (sms != null)
-            {
-                IndexedMatrix wt = IndexedMatrix.Identity;
-                sms.GetWorldTransform(out wt);
-                sms.SetWorldTransform(ref wt, true);
-                ret = true;
-            }
-        }
-        return ret;
-        
-    }
-
-    internal static bool IsCompound2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsCompound();
-    }
-    internal static bool IsPloyhedral2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsPolyhedral();
-    }
-    internal static bool IsConvex2d2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsConvex2d();
-    }
-    internal static bool IsConvex2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsConvex();
-    }
-    internal static bool IsNonMoving2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsNonMoving();
-    }
-    internal static bool IsConcave2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsConcave();
-    }
-    internal static bool IsInfinite2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        return shape.IsInfinite();
-    }
-    internal static bool IsNativeShape2(object pShape)
-    {
-        CollisionShape shape = pShape as CollisionShape;
-        bool ret;
-        switch (shape.GetShapeType())
-        {
-            case BroadphaseNativeTypes.BOX_SHAPE_PROXYTYPE:
-                case BroadphaseNativeTypes.CONE_SHAPE_PROXYTYPE:
-                case BroadphaseNativeTypes.SPHERE_SHAPE_PROXYTYPE:
-                case BroadphaseNativeTypes.CYLINDER_SHAPE_PROXYTYPE:
-                ret = true;
-                break;
-            default:
-                ret = false;
-                break;
-        }
-        return ret;
-    }
-    //sim.ptr, shape.ptr,prim.LocalID, prim.RawPosition, prim.RawOrientation
-    internal static object CreateGhostFromShape2(object pWorld, object pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
-    {
-        IndexedMatrix bodyTransform = new IndexedMatrix();
-        bodyTransform._origin = new IndexedVector3(pRawPosition.X, pRawPosition.Y, pRawPosition.Z);
-        bodyTransform.SetRotation(new IndexedQuaternion(pRawOrientation.X,pRawOrientation.Y,pRawOrientation.Z,pRawOrientation.W));
-        GhostObject gObj = new PairCachingGhostObject();
-        gObj.SetWorldTransform(bodyTransform);
-        CollisionShape shape = pShape as CollisionShape;
-        gObj.SetCollisionShape(shape);
-        gObj.SetUserPointer(pLocalID);
-        // TODO: Add to Special CollisionObjects!
-        return gObj;
-    }
-
-    public static void SetCollisionShape2(object pWorld, object pObj, object pShape)
-    {
-        var world = pWorld as DiscreteDynamicsWorld;
-        var obj = pObj as CollisionObject;
-        var shape = pShape as CollisionShape;
-        obj.SetCollisionShape(shape);
-
-    }
-    //(PhysicsScene.World.ptr, nativeShapeData)
-    internal static object BuildNativeShape2(object pWorld, ShapeData pShapeData)
-    {
-        var world = pWorld as DiscreteDynamicsWorld;
-        CollisionShape shape = null;
-        switch (pShapeData.Type)
-        {
-            case BSPhysicsShapeType.SHAPE_BOX:
-                shape = new BoxShape(new IndexedVector3(0.5f,0.5f,0.5f));
-                break;
-            case BSPhysicsShapeType.SHAPE_CONE:
-                shape = new ConeShapeZ(0.5f, 1.0f);
-                break;
-            case BSPhysicsShapeType.SHAPE_CYLINDER:
-                shape = new CylinderShapeZ(new IndexedVector3(0.5f, 0.5f, 0.5f));
-                break;
-            case BSPhysicsShapeType.SHAPE_SPHERE:
-                shape = new SphereShape(0.5f);
-                break;
-
-        }
-        if (shape != null)
-        {
-            IndexedVector3 scaling = new IndexedVector3(pShapeData.Scale.X, pShapeData.Scale.Y, pShapeData.Scale.Z);
-            shape.SetMargin(world.WorldSettings.Params.collisionMargin);
-            shape.SetLocalScaling(ref scaling);
-
-        }
-        return shape;
-    }
-    //PhysicsScene.World.ptr, false
-    internal static object CreateCompoundShape2(object pWorld, bool enableDynamicAabbTree)
-    {
-        return new CompoundShape(enableDynamicAabbTree);
-    }
-
-    internal static int GetNumberOfCompoundChildren2(object pCompoundShape)
-    {
-        var compoundshape = pCompoundShape as CompoundShape;
-        return compoundshape.GetNumChildShapes();
-    }
-    //LinksetRoot.PhysShape.ptr, newShape.ptr, displacementPos, displacementRot
-    internal static void AddChildShapeToCompoundShape2(object pCShape, object paddShape, Vector3 displacementPos, Quaternion displacementRot)
-    {
-        IndexedMatrix relativeTransform = new IndexedMatrix();
-        var compoundshape = pCShape as CompoundShape;
-        var addshape = paddShape as CollisionShape;
-
-        relativeTransform._origin = new IndexedVector3(displacementPos.X, displacementPos.Y, displacementPos.Z);
-        relativeTransform.SetRotation(new IndexedQuaternion(displacementRot.X,displacementRot.Y,displacementRot.Z,displacementRot.W));
-        compoundshape.AddChildShape(ref relativeTransform, addshape);
-
-    }
-
-    internal static object RemoveChildShapeFromCompoundShapeIndex2(object pCShape, int pii)
-    {
-        var compoundshape = pCShape as CompoundShape;
-        CollisionShape ret = null;
-        ret = compoundshape.GetChildShape(pii);
-        compoundshape.RemoveChildShapeByIndex(pii);
-        return ret;
-    }
-
-    internal static object CreateGroundPlaneShape2(uint pLocalId, float pheight, float pcollisionMargin)
-    {
-        StaticPlaneShape m_planeshape = new StaticPlaneShape(new IndexedVector3(0,0,1),(int)pheight );
-        m_planeshape.SetMargin(pcollisionMargin);
-        m_planeshape.SetUserPointer(pLocalId);
-        return m_planeshape;
-    }
-
-    internal static object CreateHingeConstraint2(object pWorld, object pBody1, object ppBody2, Vector3 ppivotInA, Vector3 ppivotInB, Vector3 paxisInA, Vector3 paxisInB, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
-    {
-        HingeConstraint constrain = null;
-        var rb1 = pBody1 as RigidBody;
-        var rb2 = ppBody2 as RigidBody;
-        if (rb1 != null && rb2 != null)
-        {
-            IndexedVector3 pivotInA = new IndexedVector3(ppivotInA.X, ppivotInA.Y, ppivotInA.Z);
-            IndexedVector3 pivotInB = new IndexedVector3(ppivotInB.X, ppivotInB.Y, ppivotInB.Z);
-            IndexedVector3 axisInA = new IndexedVector3(paxisInA.X, paxisInA.Y, paxisInA.Z);
-            IndexedVector3 axisInB = new IndexedVector3(paxisInB.X, paxisInB.Y, paxisInB.Z);
-            var world = pWorld as DiscreteDynamicsWorld;
-            world.AddConstraint(constrain, pdisableCollisionsBetweenLinkedBodies);
-        }
-        return constrain;
-    }
-
-    internal static bool ReleaseHeightMapInfo2(object pMapInfo)
-    {
-        if (pMapInfo != null)
-        {
-            BulletHeightMapInfo mapinfo = pMapInfo as BulletHeightMapInfo;
-            if (mapinfo.heightMap != null)
-                mapinfo.heightMap = null;
-
-
-        }
-        return true;
-    }
-
-    internal static object CreateHullShape2(object pWorld, int pHullCount, float[] pConvHulls)
-    {
-        CompoundShape compoundshape = new CompoundShape(false);
-        var world = pWorld as DiscreteDynamicsWorld;
-        
-        
-        compoundshape.SetMargin(world.WorldSettings.Params.collisionMargin);
-        int ii = 1;
-
-        for (int i = 0; i < pHullCount; i++)
-        {
-            int vertexCount = (int) pConvHulls[ii];
-
-            IndexedVector3 centroid = new IndexedVector3(pConvHulls[ii + 1], pConvHulls[ii + 2], pConvHulls[ii + 3]);
-            IndexedMatrix childTrans = IndexedMatrix.Identity;
-            childTrans._origin = centroid;
-
-            List<IndexedVector3> virts = new List<IndexedVector3>();
-            int ender = ((ii + 4) + (vertexCount*3));
-            for (int iii = ii + 4; iii < ender; iii+=3)
-            {
-               
-                virts.Add(new IndexedVector3(pConvHulls[iii], pConvHulls[iii + 1], pConvHulls[iii +2]));
-            }
-            ConvexHullShape convexShape = new ConvexHullShape(virts, vertexCount);
-            convexShape.SetMargin(world.WorldSettings.Params.collisionMargin);
-            compoundshape.AddChildShape(ref childTrans, convexShape);
-            ii += (vertexCount*3 + 4);
-        }
-
-        
-        return compoundshape;
-    }
-
-    internal static object CreateMeshShape2(object pWorld, int pIndicesCount, int[] indices, int pVerticesCount, float[] verticesAsFloats)
-    {
-        //DumpRaw(indices,verticesAsFloats,pIndicesCount,pVerticesCount);
-        
-        for (int iter = 0; iter < pVerticesCount; iter++)
-        {
-            if (verticesAsFloats[iter] > 0 && verticesAsFloats[iter] < 0.0001) verticesAsFloats[iter] = 0;
-            if (verticesAsFloats[iter] < 0 && verticesAsFloats[iter] > -0.0001) verticesAsFloats[iter] = 0;
-        }
-        
-        ObjectArray<int> indicesarr = new ObjectArray<int>(indices);
-        ObjectArray<float> vertices = new ObjectArray<float>(verticesAsFloats);
-        DumpRaw(indicesarr,vertices,pIndicesCount,pVerticesCount);
-        var world = pWorld as DiscreteDynamicsWorld;
-        IndexedMesh mesh = new IndexedMesh();
-        mesh.m_indexType = PHY_ScalarType.PHY_INTEGER;
-        mesh.m_numTriangles = pIndicesCount/3;
-        mesh.m_numVertices = pVerticesCount;
-        mesh.m_triangleIndexBase = indicesarr;
-        mesh.m_vertexBase = vertices;
-        mesh.m_vertexStride = 3;
-        mesh.m_vertexType = PHY_ScalarType.PHY_FLOAT;
-        mesh.m_triangleIndexStride = 3;
-        
-        TriangleIndexVertexArray tribuilder = new TriangleIndexVertexArray();
-        tribuilder.AddIndexedMesh(mesh, PHY_ScalarType.PHY_INTEGER);
-        BvhTriangleMeshShape meshShape = new BvhTriangleMeshShape(tribuilder, true,true);
-        meshShape.SetMargin(world.WorldSettings.Params.collisionMargin);
-       // world.UpdateSingleAabb(meshShape);
-        return meshShape;
-
-    }
-    public static void DumpRaw(ObjectArray<int>indices, ObjectArray<float> vertices, int pIndicesCount,int pVerticesCount )
-    {
-        
-        String fileName = "objTest3.raw";
-        String completePath = System.IO.Path.Combine(Util.configDir(), fileName);
-        StreamWriter sw = new StreamWriter(completePath);
-        IndexedMesh mesh = new IndexedMesh();
-
-        mesh.m_indexType = PHY_ScalarType.PHY_INTEGER;
-        mesh.m_numTriangles = pIndicesCount / 3;
-        mesh.m_numVertices = pVerticesCount;
-        mesh.m_triangleIndexBase = indices;
-        mesh.m_vertexBase = vertices;
-        mesh.m_vertexStride = 3;
-        mesh.m_vertexType = PHY_ScalarType.PHY_FLOAT;
-        mesh.m_triangleIndexStride = 3;
-
-        TriangleIndexVertexArray tribuilder = new TriangleIndexVertexArray();
-        tribuilder.AddIndexedMesh(mesh, PHY_ScalarType.PHY_INTEGER);
-
-
-
-        for (int i = 0; i < pVerticesCount; i++)
-        {
-
-            string s = vertices[indices[i * 3]].ToString("0.0000");
-            s += " " + vertices[indices[i * 3 + 1]].ToString("0.0000");
-            s += " " + vertices[indices[i * 3 + 2]].ToString("0.0000");
-        
-            sw.Write(s + "\n");
-        }
-
-        sw.Close();
-    }
-    public static void DumpRaw(int[] indices, float[] vertices, int pIndicesCount, int pVerticesCount)
-    {
-
-        String fileName = "objTest6.raw";
-        String completePath = System.IO.Path.Combine(Util.configDir(), fileName);
-        StreamWriter sw = new StreamWriter(completePath);
-        IndexedMesh mesh = new IndexedMesh();
-
-        mesh.m_indexType = PHY_ScalarType.PHY_INTEGER;
-        mesh.m_numTriangles = pIndicesCount / 3;
-        mesh.m_numVertices = pVerticesCount;
-        mesh.m_triangleIndexBase = indices;
-        mesh.m_vertexBase = vertices;
-        mesh.m_vertexStride = 3;
-        mesh.m_vertexType = PHY_ScalarType.PHY_FLOAT;
-        mesh.m_triangleIndexStride = 3;
-        
-        TriangleIndexVertexArray tribuilder = new TriangleIndexVertexArray();
-        tribuilder.AddIndexedMesh(mesh, PHY_ScalarType.PHY_INTEGER);
-
-
-        sw.WriteLine("Indices");
-        sw.WriteLine(string.Format("int[] indices = new int[{0}];",pIndicesCount));
-        for (int iter = 0; iter < indices.Length; iter++)
-        {
-            sw.WriteLine(string.Format("indices[{0}]={1};",iter,indices[iter]));
-        }
-        sw.WriteLine("VerticesFloats");
-        sw.WriteLine(string.Format("float[] vertices = new float[{0}];", pVerticesCount));
-        for (int iter = 0; iter < vertices.Length; iter++)
-        {
-            sw.WriteLine(string.Format("Vertices[{0}]={1};", iter, vertices[iter].ToString("0.0000")));
-        }
-
-            // for (int i = 0; i < pVerticesCount; i++)
-            // {
-            //
-            //     string s = vertices[indices[i * 3]].ToString("0.0000");
-            //     s += " " + vertices[indices[i * 3 + 1]].ToString("0.0000");
-            //    s += " " + vertices[indices[i * 3 + 2]].ToString("0.0000");
-            //
-            //     sw.Write(s + "\n");
-            //}
-
-            sw.Close();
-    }
-    //PhysicsScene.World.ptr, m_mapInfo.ID, m_mapInfo.minCoords, m_mapInfo.maxCoords,  m_mapInfo.heightMap, PhysicsScene.Params.terrainCollisionMargin
-    internal static object CreateHeightMapInfo2(object pWorld, uint pId, Vector3 pminCoords, Vector3 pmaxCoords, float[] pheightMap, float pCollisionMargin)
-    {
-        BulletHeightMapInfo mapInfo = new BulletHeightMapInfo(pId, pheightMap, null);
-        mapInfo.heightMap = null;
-        mapInfo.minCoords = pminCoords;
-        mapInfo.maxCoords = pmaxCoords;
-        mapInfo.sizeX = (int) (pmaxCoords.X - pminCoords.X);
-        mapInfo.sizeY = (int) (pmaxCoords.Y - pminCoords.Y);
-        mapInfo.ID = pId;
-        mapInfo.minZ = pminCoords.Z;
-        mapInfo.maxZ = pmaxCoords.Z;
-        mapInfo.collisionMargin = pCollisionMargin;
-        if (mapInfo.minZ == mapInfo.maxZ)
-            mapInfo.minZ -= 0.2f;
-        mapInfo.heightMap = pheightMap;
-
-        return mapInfo;
-
-    }
-
-    internal static object CreateTerrainShape2(object pMapInfo)
-    {
-        BulletHeightMapInfo mapinfo = pMapInfo as BulletHeightMapInfo;
-        const int upAxis = 2;
-        const float scaleFactor = 1.0f;
-        HeightfieldTerrainShape terrainShape = new HeightfieldTerrainShape((int)mapinfo.sizeX, (int)mapinfo.sizeY,
-                                                                           mapinfo.heightMap,  scaleFactor,
-                                                                           mapinfo.minZ, mapinfo.maxZ, upAxis,
-                                                                            false);
-        terrainShape.SetMargin(mapinfo.collisionMargin + 0.5f);
-        terrainShape.SetUseDiamondSubdivision(true);
-        terrainShape.SetUserPointer(mapinfo.ID);
-        return terrainShape;
-    }
-
-    internal static bool TranslationalLimitMotor2(object pConstraint, float ponOff, float targetVelocity, float maxMotorForce)
-    {
-        TypedConstraint tconstrain = pConstraint as TypedConstraint;
-        bool onOff = ponOff != 0;
-        bool ret = false;
-
-        switch (tconstrain.GetConstraintType())
-        {
-            case TypedConstraintType.D6_CONSTRAINT_TYPE:
-                Generic6DofConstraint constrain = pConstraint as Generic6DofConstraint;
-                constrain.GetTranslationalLimitMotor().m_enableMotor[0] = onOff;
-                constrain.GetTranslationalLimitMotor().m_targetVelocity[0] = targetVelocity;
-                constrain.GetTranslationalLimitMotor().m_maxMotorForce[0] = maxMotorForce;
-                ret = true;
-                break;
-        }
-
-
-        return ret;
-
-    }
-
-    internal static int PhysicsStep2(object pWorld, float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out BulletXNA.EntityProperties[] updatedEntities, out int collidersCount, out BulletXNA.CollisionDesc[] colliders)
-    {
-        int epic = PhysicsStepint2(pWorld, timeStep, m_maxSubSteps, m_fixedTimeStep, out updatedEntityCount, out updatedEntities,
-                                out collidersCount, out colliders);
-        return epic;
-    }
-
-    private static int PhysicsStepint2(object pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out BulletXNA.EntityProperties[] updatedEntities, out int collidersCount, out BulletXNA.CollisionDesc[] colliders)
-    {
-        int numSimSteps = 0;
-      
-
-        //if (updatedEntities is null)
-        //    updatedEntities = new List<BulletXNA.EntityProperties>();
-
-        //if (colliders is null)
-        //    colliders = new List<BulletXNA.CollisionDesc>();
-        
-
-        if (pWorld is DiscreteDynamicsWorld)
-        {
-            DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-
-            numSimSteps = world.StepSimulation(timeStep, m_maxSubSteps, m_fixedTimeStep);
-            int updates = 0;
-
-            updatedEntityCount = world.UpdatedObjects.Length;
-            updatedEntities = (world.UpdatedObjects);
-            updatedEntityCount = updatedEntities.Length;
-            //world.UpdatedObjects = ;
-            
-
-            collidersCount = world.UpdatedCollisions.Length;
-            colliders = (world.UpdatedCollisions);
-
-            world.UpdatedCollisions = new BulletXNA.CollisionDesc[0];
-            m_collisionsThisFrame = 0;
-            int numManifolds = world.GetDispatcher().GetNumManifolds();
-            for (int j = 0; j < numManifolds; j++)
-            {
-                PersistentManifold contactManifold = world.GetDispatcher().GetManifoldByIndexInternal(j);
-                int numContacts = contactManifold.GetNumContacts();
-                if (numContacts == 0)
-                    continue;
-
-                CollisionObject objA = contactManifold.GetBody0() as CollisionObject;
-                CollisionObject objB = contactManifold.GetBody1() as CollisionObject;
-
-                ManifoldPoint manifoldPoint = contactManifold.GetContactPoint(0);
-                IndexedVector3 contactPoint = manifoldPoint.GetPositionWorldOnB();
-                IndexedVector3 contactNormal = -manifoldPoint.m_normalWorldOnB; // make relative to A
-
-                RecordCollision(world, objA, objB, contactPoint, contactNormal);
-                m_collisionsThisFrame ++;
-                if (m_collisionsThisFrame >= 9999999)
-                    break;
-
-
-            }
-
-
-        }
-        else
-        {
-            //if (updatedEntities is null)
-            updatedEntities = new BulletXNA.EntityProperties[0];
-            updatedEntityCount = 0;
-            //if (colliders is null)
-            colliders = new BulletXNA.CollisionDesc[0];
-            collidersCount = 0;
-        }
-        return numSimSteps;
-    }
-
-    private static void RecordCollision(CollisionWorld world,CollisionObject objA, CollisionObject objB, IndexedVector3 contact, IndexedVector3 norm)
-    {
-       
-        IndexedVector3 contactNormal = norm;
-        if ((objA.GetCollisionFlags() & BulletXNA.BulletCollision.CollisionFlags.BS_WANTS_COLLISIONS) == 0 &&
-            (objB.GetCollisionFlags() & BulletXNA.BulletCollision.CollisionFlags.BS_WANTS_COLLISIONS) == 0)
-        {
-            return;
-        }
-        uint idA = (uint)objA.GetUserPointer();
-        uint idB = (uint)objB.GetUserPointer();
-        if (idA > idB)
-        {
-            uint temp = idA;
-            idA = idB;
-            idB = temp;
-            contactNormal = -contactNormal;
-        }
-
-        ulong collisionID = ((ulong) idA << 32) | idB;
-
-        BulletXNA.CollisionDesc cDesc = new BulletXNA.CollisionDesc()
-                                            {
-                                                aID = idA,
-                                                bID = idB,
-                                                point = contact,
-                                                normal = contactNormal
-                                            };
-        if (world.LastCollisionDesc < world.UpdatedCollisions.Length)
-            world.UpdatedCollisions[world.LastCollisionDesc++] = (cDesc);
-        m_collisionsThisFrame++;
-
-
-    }
-    private static EntityProperties GetDebugProperties(object pWorld, object pBody)
-    {
-        EntityProperties ent = new EntityProperties();
-        DiscreteDynamicsWorld world = pWorld as DiscreteDynamicsWorld;
-        RigidBody body = pBody as RigidBody;
-        IndexedMatrix transform = body.GetWorldTransform();
-        IndexedVector3 LinearVelocity = body.GetInterpolationLinearVelocity();
-        IndexedVector3 AngularVelocity = body.GetInterpolationAngularVelocity();
-        IndexedQuaternion rotation = transform.GetRotation();
-        ent.Acceleration = Vector3.Zero;
-        ent.ID = (uint)body.GetUserPointer();
-        ent.Position = new Vector3(transform._origin.X,transform._origin.Y,transform._origin.Z);
-        ent.Rotation = new Quaternion(rotation.X,rotation.Y,rotation.Z,rotation.W);
-        ent.Velocity = new Vector3(LinearVelocity.X, LinearVelocity.Y, LinearVelocity.Z);
-        ent.RotationalVelocity = new Vector3(AngularVelocity.X, AngularVelocity.Y, AngularVelocity.Z);
-        return ent;
-
-
-    }
-
-
-    internal static Vector3 GetLocalScaling2(object pBody)
-    {
-        CollisionShape shape = pBody as CollisionShape;
-        IndexedVector3 scale = shape.GetLocalScaling();
-        return new Vector3(scale.X,scale.Y,scale.Z);
-    }
-
-    internal static bool RayCastGround(object pWorld, Vector3 _RayOrigin, float pRayHeight, object NotMe)
-    {
-        DynamicsWorld world = pWorld as DynamicsWorld;
-        if (world != null)
-        {
-            if (NotMe is CollisionObject || NotMe is RigidBody)
-            {
-                CollisionObject AvoidBody = NotMe as CollisionObject;
-                
-                IndexedVector3 rOrigin = new IndexedVector3(_RayOrigin.X, _RayOrigin.Y, _RayOrigin.Z);
-                IndexedVector3 rEnd = new IndexedVector3(_RayOrigin.X, _RayOrigin.Y, _RayOrigin.Z - pRayHeight);
-                using (
-                    ClosestNotMeRayResultCallback rayCallback = new ClosestNotMeRayResultCallback(rOrigin,
-                                                                                                  rEnd, AvoidBody)
-                    )
-                {
-                    world.RayTest(ref rOrigin, ref rEnd, rayCallback);
-                    if (rayCallback.HasHit())
-                    {
-                        IndexedVector3 hitLocation = rayCallback.m_hitPointWorld;
-                        
-                    }
-                    return rayCallback.HasHit();
-                }
-           }
-        }
-        return false;
-    }
-}
-}
diff --git a/OpenSim/Region/Physics/BulletSNPlugin/BulletSimData.cs b/OpenSim/Region/Physics/BulletSNPlugin/BulletSimData.cs
deleted file mode 100644
index f509dc4092..0000000000
--- a/OpenSim/Region/Physics/BulletSNPlugin/BulletSimData.cs
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyrightD
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OMV = OpenMetaverse;
-
-namespace OpenSim.Region.Physics.BulletSNPlugin
-{
-// Classes to allow some type checking for the API
-// These hold pointers to allocated objects in the unmanaged space.
-
-// The physics engine controller class created at initialization
-public struct BulletWorld
-{
-    public BulletWorld(uint worldId, BSScene bss, object xx)
-    {
-        ptr = xx;
-        worldID = worldId;
-        physicsScene = bss;
-    }
-    public object ptr;
-    public uint worldID;
-    // The scene is only in here so very low level routines have a handle to print debug/error messages
-    public BSScene physicsScene;
-}
-
-// An allocated Bullet btRigidBody
-public struct BulletBody
-{
-    public BulletBody(uint id) : this(id, null)
-    {
-    }
-    public BulletBody(uint id, object xx)
-    {
-        ID = id;
-        ptr = xx;
-        collisionType = CollisionType.Static;
-    }
-    public object ptr;
-    public uint ID;
-    public CollisionType collisionType;
-
-    public void Clear()
-    {
-        ptr = null;
-    }
-    public bool HasPhysicalBody { get { return ptr != null; } }
-
-    // Apply the specificed collision mask into the physical world
-    public void ApplyCollisionMask()
-    {
-        // Should assert the body has been added to the physical world.
-        // (The collision masks are stored in the collision proxy cache which only exists for
-        //    a collision body that is in the world.)
-        BulletSimAPI.SetCollisionGroupMask2(ptr,
-                                BulletSimData.CollisionTypeMasks[collisionType].group,
-                                BulletSimData.CollisionTypeMasks[collisionType].mask);
-    }
-
-    public override string ToString()
-    {
-        StringBuilder buff = new StringBuilder();
-        buff.Append("<id=");
-        buff.Append(ID.ToString());
-        buff.Append(",p=");
-        buff.Append(ptr.ToString());
-        buff.Append(",c=");
-        buff.Append(collisionType);
-        buff.Append(">");
-        return buff.ToString();
-    }
-}
-
-public struct BulletShape
-{
-    public BulletShape(object xx) : this(xx, BSPhysicsShapeType.SHAPE_UNKNOWN)
-    {
-    }
-    public BulletShape(object xx, BSPhysicsShapeType typ)
-    {
-        ptr = xx;
-        type = typ;
-        shapeKey = (System.UInt64)FixedShapeKey.KEY_NONE;
-        isNativeShape = false;
-    }
-    public object ptr;
-    public BSPhysicsShapeType type;
-    public System.UInt64 shapeKey;
-    public bool isNativeShape;
-
-    public void Clear()
-    {
-        ptr = null;
-    }
-    public bool HasPhysicalShape { get { return ptr != null; } }
-
-    public override string ToString()
-    {
-        StringBuilder buff = new StringBuilder();
-        buff.Append("<p=");
-        buff.Append(ptr.ToString());
-        buff.Append(",s=");
-        buff.Append(type.ToString());
-        buff.Append(",k=");
-        buff.Append(shapeKey.ToString("X"));
-        buff.Append(",n=");
-        buff.Append(isNativeShape.ToString());
-        buff.Append(">");
-        return buff.ToString();
-    }
-}
-
-// An allocated Bullet btConstraint
-public struct BulletConstraint
-{
-    public BulletConstraint(object xx)
-    {
-        ptr = xx;
-    }
-    public object ptr;
-
-    public void Clear()
-    {
-        ptr = null;
-    }
-    public bool HasPhysicalConstraint { get { return ptr != null; } }
-}
-
-// An allocated HeightMapThing which holds various heightmap info.
-// Made a class rather than a struct so there would be only one
-//      instance of this and C# will pass around pointers rather
-//      than making copies.
-public class BulletHeightMapInfo
-{
-    public BulletHeightMapInfo(uint id, float[] hm, object xx) {
-        ID = id;
-        Ptr = xx;
-        heightMap = hm;
-        terrainRegionBase = OMV.Vector3.Zero;
-        minCoords = new OMV.Vector3(100f, 100f, 25f);
-        maxCoords = new OMV.Vector3(101f, 101f, 26f);
-        minZ = maxZ = 0f;
-        sizeX = sizeY = 256f;
-    }
-    public uint ID;
-    public object Ptr;
-    public float[] heightMap;
-    public OMV.Vector3 terrainRegionBase;
-    public OMV.Vector3 minCoords;
-    public OMV.Vector3 maxCoords;
-    public float sizeX, sizeY;
-    public float minZ, maxZ;
-    public BulletShape terrainShape;
-    public BulletBody terrainBody;
-
-    public float collisionMargin { get; set; }
-}
-
-// The general class of collsion object.
-public enum CollisionType
-{
-    Avatar,
-    Groundplane,
-    Terrain,
-    Static,
-    Dynamic,
-    VolumeDetect,
-    // Linkset, // A linkset should be either Static or Dynamic
-    LinksetChild,
-    Unknown
-};
-
-// Hold specification of group and mask collision flags for a CollisionType
-public struct CollisionTypeFilterGroup
-{
-    public CollisionTypeFilterGroup(CollisionType t, uint g, uint m)
-    {
-        type = t;
-        group = g;
-        mask = m;
-    }
-    public CollisionType type;
-    public uint group;
-    public uint mask;
-};
-
-    /* NOTE: old definitions kept for reference. Delete when things are working.
-    // The collsion filters and masked are defined in one place -- don't want them scattered
-    AvatarGroup             = BCharacterGroup,
-    AvatarMask              = BAllGroup,
-    ObjectGroup             = BSolidGroup,
-    ObjectMask              = BAllGroup,
-    StaticObjectGroup       = BStaticGroup,
-    StaticObjectMask        = AvatarGroup | ObjectGroup,    // static things don't interact with much
-    LinksetGroup            = BLinksetGroup,
-    LinksetMask             = BAllGroup,
-    LinksetChildGroup       = BLinksetChildGroup,
-    LinksetChildMask        = BNoneGroup,   // Linkset children disappear from the world
-    VolumeDetectGroup       = BSensorTrigger,
-    VolumeDetectMask        = ~BSensorTrigger,
-    TerrainGroup            = BTerrainGroup,
-    TerrainMask             = BAllGroup & ~BStaticGroup,  // static objects on the ground don't collide
-    GroundPlaneGroup        = BGroundPlaneGroup,
-    GroundPlaneMask         = BAllGroup
-    */
-
-public static class BulletSimData
-{
-
-// Map of collisionTypes to flags for collision groups and masks.
-// As mentioned above, don't use the CollisionFilterGroups definitions directly in the code
-//     but, instead, use references to this dictionary. Finding and debugging
-//     collision flag problems will be made easier.
-public static Dictionary<CollisionType, CollisionTypeFilterGroup> CollisionTypeMasks 
-            = new Dictionary<CollisionType, CollisionTypeFilterGroup>()
-{
-    { CollisionType.Avatar, 
-                new CollisionTypeFilterGroup(CollisionType.Avatar, 
-                                (uint)CollisionFilterGroups.BCharacterGroup, 
-                                (uint)CollisionFilterGroups.BAllGroup)
-    },
-    { CollisionType.Groundplane, 
-                new CollisionTypeFilterGroup(CollisionType.Groundplane, 
-                                (uint)CollisionFilterGroups.BGroundPlaneGroup, 
-                                (uint)CollisionFilterGroups.BAllGroup)
-    },
-    { CollisionType.Terrain, 
-                new CollisionTypeFilterGroup(CollisionType.Terrain, 
-                                (uint)CollisionFilterGroups.BTerrainGroup, 
-                                (uint)(CollisionFilterGroups.BAllGroup & ~CollisionFilterGroups.BStaticGroup))
-    },
-    { CollisionType.Static, 
-                new CollisionTypeFilterGroup(CollisionType.Static, 
-                                (uint)CollisionFilterGroups.BStaticGroup, 
-                                (uint)(CollisionFilterGroups.BCharacterGroup | CollisionFilterGroups.BSolidGroup))
-    },
-    { CollisionType.Dynamic, 
-                new CollisionTypeFilterGroup(CollisionType.Dynamic, 
-                                (uint)CollisionFilterGroups.BSolidGroup, 
-                                (uint)(CollisionFilterGroups.BAllGroup))
-    },
-    { CollisionType.VolumeDetect, 
-                new CollisionTypeFilterGroup(CollisionType.VolumeDetect, 
-                                (uint)CollisionFilterGroups.BSensorTrigger, 
-                                (uint)(~CollisionFilterGroups.BSensorTrigger))
-    },
-    { CollisionType.LinksetChild,
-                new CollisionTypeFilterGroup(CollisionType.LinksetChild, 
-                                (uint)CollisionFilterGroups.BTerrainGroup, 
-                                (uint)(CollisionFilterGroups.BNoneGroup))
-    },
-};
-
-}
-}

From 2c517d792f0440c2705458e01a5067628b6b2c7c Mon Sep 17 00:00:00 2001
From: teravus <teravus@gmail.com>
Date: Sun, 20 Jan 2013 08:18:16 -0500
Subject: [PATCH 19/36] This updates prebuild to remove BulletSimN, implements
 the BulletSim API in BulletSPlugin using the BulletXNA Bullet physics engine.
  It also updates the BulletXNA library to be compatible with the changes.  
 OpenSimDefaults has been updated to describe how to switch engines and
 terrain implementations.

---
 .../Region/Physics/BulletSPlugin/BSAPIXNA.cs  | 887 ++++++++++++------
 bin/BulletXNA.dll                             | Bin 614400 -> 614400 bytes
 bin/BulletXNA.pdb                             | Bin 1875456 -> 1969664 bytes
 bin/OpenSimDefaults.ini                       |  14 +
 prebuild.xml                                  |  34 -
 5 files changed, 638 insertions(+), 297 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs b/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs
index b6ff52bf5b..49b17305df 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSAPIXNA.cs
@@ -129,7 +129,12 @@ private sealed class BulletConstraintXNA : BulletConstraint
         get { return "XNAConstraint"; }
     }
 }
+    internal int m_maxCollisions;
+    internal CollisionDesc[] m_collisionArray;
 
+    internal int m_maxUpdatesPerFrame;
+    internal EntityProperties[] m_updateArray;
+    
     private static int m_collisionsThisFrame;
     private BSScene PhysicsScene { get; set; }
 
@@ -148,92 +153,98 @@ private sealed class BulletConstraintXNA : BulletConstraint
     /// <param name="p_2"></param>
     public override bool RemoveObjectFromWorld(BulletWorld pWorld, BulletBody pBody)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
         world.RemoveRigidBody(body);
         return true;
     }
 
-    public override bool AddConstraintToWorld(BulletWorld world, BulletConstraint constrain, bool disableCollisionsBetweenLinkedObjects)
+    public override bool AddConstraintToWorld(BulletWorld pWorld, BulletConstraint pConstraint, bool pDisableCollisionsBetweenLinkedObjects)
     {
-        /* TODO */
-        return false;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        TypedConstraint constraint = (pConstraint as BulletConstraintXNA).constrain;
+        world.AddConstraint(constraint, pDisableCollisionsBetweenLinkedObjects);
+        
+        return true;
+
     }
 
-    public override bool RemoveConstraintFromWorld(BulletWorld world, BulletConstraint constrain)
+    public override bool RemoveConstraintFromWorld(BulletWorld pWorld, BulletConstraint pConstraint)
     {
-        /* TODO */
-        return false;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        TypedConstraint constraint = (pConstraint as BulletConstraintXNA).constrain;
+        world.RemoveConstraint(constraint);
+        return true;
     }
 
-    public override void SetRestitution(BulletBody pBody, float pRestitution)
+    public override void SetRestitution(BulletBody pCollisionObject, float pRestitution)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetRestitution(pRestitution);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetRestitution(pRestitution);
     }
 
     public override int GetShapeType(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return (int)shape.GetShapeType();
     }
     public override void SetMargin(BulletShape pShape, float pMargin)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         shape.SetMargin(pMargin);
     }
 
     public override float GetMargin(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.GetMargin();
     }
 
     public override void SetLocalScaling(BulletShape pShape, Vector3 pScale)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         IndexedVector3 vec = new IndexedVector3(pScale.X, pScale.Y, pScale.Z);
         shape.SetLocalScaling(ref vec);
 
     }
 
-    public override void SetContactProcessingThreshold(BulletBody pBody, float contactprocessingthreshold)
+    public override void SetContactProcessingThreshold(BulletBody pCollisionObject, float contactprocessingthreshold)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetContactProcessingThreshold(contactprocessingthreshold);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetContactProcessingThreshold(contactprocessingthreshold);
     }
 
-    public override void SetCcdMotionThreshold(BulletBody pBody, float pccdMotionThreashold)
+    public override void SetCcdMotionThreshold(BulletBody pCollisionObject, float pccdMotionThreashold)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetCcdMotionThreshold(pccdMotionThreashold);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetCcdMotionThreshold(pccdMotionThreashold);
     }
 
-    public override void SetCcdSweptSphereRadius(BulletBody pBody, float pCcdSweptSphereRadius)
+    public override void SetCcdSweptSphereRadius(BulletBody pCollisionObject, float pCcdSweptSphereRadius)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetCcdSweptSphereRadius(pCcdSweptSphereRadius);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetCcdSweptSphereRadius(pCcdSweptSphereRadius);
     }
 
     public override void SetAngularFactorV(BulletBody pBody, Vector3 pAngularFactor)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.SetAngularFactor(new IndexedVector3(pAngularFactor.X, pAngularFactor.Y, pAngularFactor.Z));
     }
 
-    public override CollisionFlags AddToCollisionFlags(BulletBody pBody, CollisionFlags pcollisionFlags)
+    public override CollisionFlags AddToCollisionFlags(BulletBody pCollisionObject, CollisionFlags pcollisionFlags)
     {
-        CollisionObject body = ((BulletBodyXNA)pBody).body;
-        CollisionFlags existingcollisionFlags = (CollisionFlags)(uint)body.GetCollisionFlags();
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).body;
+        CollisionFlags existingcollisionFlags = (CollisionFlags)(uint)collisionObject.GetCollisionFlags();
         existingcollisionFlags |= pcollisionFlags;
-        body.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags)(uint)existingcollisionFlags);
+        collisionObject.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags)(uint)existingcollisionFlags);
         return (CollisionFlags) (uint) existingcollisionFlags;
     }
 
     public override bool AddObjectToWorld(BulletWorld pWorld, BulletBody pBody)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        CollisionObject cbody = ((BulletBodyXNA)pBody).body;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        CollisionObject cbody = (pBody as BulletBodyXNA).body;
         RigidBody rbody = cbody as RigidBody;
 
         // Bullet resets several variables when an object is added to the world. In particular,
@@ -259,99 +270,110 @@ private sealed class BulletConstraintXNA : BulletConstraint
         return true;
     }
 
-    public override void ForceActivationState(BulletBody pBody, ActivationState pActivationState)
+    public override void ForceActivationState(BulletBody pCollisionObject, ActivationState pActivationState)
     {
-        CollisionObject body = ((BulletBodyXNA)pBody).body;
-        body.ForceActivationState((BulletXNA.BulletCollision.ActivationState)(uint)pActivationState);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).body;
+        collisionObject.ForceActivationState((BulletXNA.BulletCollision.ActivationState)(uint)pActivationState);
     }
 
-    public override void UpdateSingleAabb(BulletWorld pWorld, BulletBody pBody)
+    public override void UpdateSingleAabb(BulletWorld pWorld, BulletBody pCollisionObject)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        CollisionObject body = ((BulletBodyXNA)pBody).body;
-        world.UpdateSingleAabb(body);
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).body;
+        world.UpdateSingleAabb(collisionObject);
     }
 
-    public override void UpdateAabbs(BulletWorld world) { /* TODO */ }
-    public override bool GetForceUpdateAllAabbs(BulletWorld world) { /* TODO */ return false;  }
-    public override void SetForceUpdateAllAabbs(BulletWorld world, bool force) { /* TODO */ }
-
-    public override bool SetCollisionGroupMask(BulletBody pBody, uint pGroup, uint pMask)
+    public override void UpdateAabbs(BulletWorld pWorld) {
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        world.UpdateAabbs();
+    }
+    public override bool GetForceUpdateAllAabbs(BulletWorld pWorld) {
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        return world.GetForceUpdateAllAabbs();
+        
+    }
+    public override void SetForceUpdateAllAabbs(BulletWorld pWorld, bool pForce)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.GetBroadphaseHandle().m_collisionFilterGroup = (BulletXNA.BulletCollision.CollisionFilterGroups) pGroup;
-        body.GetBroadphaseHandle().m_collisionFilterGroup = (BulletXNA.BulletCollision.CollisionFilterGroups) pGroup;
-        if ((uint) body.GetBroadphaseHandle().m_collisionFilterGroup == 0)
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        world.SetForceUpdateAllAabbs(pForce);
+    }
+
+    public override bool SetCollisionGroupMask(BulletBody pCollisionObject, uint pGroup, uint pMask)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.GetBroadphaseHandle().m_collisionFilterGroup = (BulletXNA.BulletCollision.CollisionFilterGroups) pGroup;
+        collisionObject.GetBroadphaseHandle().m_collisionFilterGroup = (BulletXNA.BulletCollision.CollisionFilterGroups) pGroup;
+        if ((uint) collisionObject.GetBroadphaseHandle().m_collisionFilterGroup == 0)
             return false;
         return true;
     }
 
-    public override void ClearAllForces(BulletBody pBody)
+    public override void ClearAllForces(BulletBody pCollisionObject)
     {
-        CollisionObject body = ((BulletBodyXNA)pBody).body;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).body;
         IndexedVector3 zeroVector = new IndexedVector3(0, 0, 0);
-        body.SetInterpolationLinearVelocity(ref zeroVector);
-        body.SetInterpolationAngularVelocity(ref zeroVector);
-        IndexedMatrix bodytransform = body.GetWorldTransform();
+        collisionObject.SetInterpolationLinearVelocity(ref zeroVector);
+        collisionObject.SetInterpolationAngularVelocity(ref zeroVector);
+        IndexedMatrix bodytransform = collisionObject.GetWorldTransform();
 
-        body.SetInterpolationWorldTransform(ref bodytransform);
+        collisionObject.SetInterpolationWorldTransform(ref bodytransform);
 
-        if (body is RigidBody)
+        if (collisionObject is RigidBody)
         {
-            RigidBody rigidbody = body as RigidBody;
+            RigidBody rigidbody = collisionObject as RigidBody;
             rigidbody.SetLinearVelocity(zeroVector);
             rigidbody.SetAngularVelocity(zeroVector);
             rigidbody.ClearForces();
         }
     }
 
-    public override void SetInterpolationAngularVelocity(BulletBody pBody, Vector3 pVector3)
+    public override void SetInterpolationAngularVelocity(BulletBody pCollisionObject, Vector3 pVector3)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
         IndexedVector3 vec = new IndexedVector3(pVector3.X, pVector3.Y, pVector3.Z);
-        body.SetInterpolationAngularVelocity(ref vec);
+        collisionObject.SetInterpolationAngularVelocity(ref vec);
     }
 
     public override void SetAngularVelocity(BulletBody pBody, Vector3 pVector3)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 vec = new IndexedVector3(pVector3.X, pVector3.Y, pVector3.Z);
         body.SetAngularVelocity(ref vec);
     }
     public override Vector3 GetTotalForce(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 = body.GetTotalForce();
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
     public override Vector3 GetTotalTorque(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 = body.GetTotalTorque();
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
     public override Vector3 GetInvInertiaDiagLocal(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 = body.GetInvInertiaDiagLocal();
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
     public override void SetInvInertiaDiagLocal(BulletBody pBody, Vector3 inert)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 = new IndexedVector3(inert.X, inert.Y, inert.Z);
         body.SetInvInertiaDiagLocal(ref iv3);
     }
     public override void ApplyForce(BulletBody pBody, Vector3 force, Vector3 pos)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 forceiv3 = new IndexedVector3(force.X, force.Y, force.Z);
         IndexedVector3 posiv3 = new IndexedVector3(pos.X, pos.Y, pos.Z);
         body.ApplyForce(ref forceiv3, ref posiv3);
     }
     public override void ApplyImpulse(BulletBody pBody, Vector3 imp, Vector3 pos)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 impiv3 = new IndexedVector3(imp.X, imp.Y, imp.Z);
         IndexedVector3 posiv3 = new IndexedVector3(pos.X, pos.Y, pos.Z);
         body.ApplyImpulse(ref impiv3, ref posiv3);
@@ -359,32 +381,32 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override void ClearForces(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.ClearForces();
     }
 
-    public override void SetTranslation(BulletBody pBody, Vector3 _position, Quaternion _orientation)
+    public override void SetTranslation(BulletBody pCollisionObject, Vector3 _position, Quaternion _orientation)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
         IndexedVector3 vposition = new IndexedVector3(_position.X, _position.Y, _position.Z);
         IndexedQuaternion vquaternion = new IndexedQuaternion(_orientation.X, _orientation.Y, _orientation.Z,
                                                               _orientation.W);
         IndexedMatrix mat = IndexedMatrix.CreateFromQuaternion(vquaternion);
         mat._origin = vposition;
-        body.SetWorldTransform(mat);
+        collisionObject.SetWorldTransform(mat);
         
     }
 
-    public override Vector3 GetPosition(BulletBody pBody)
+    public override Vector3 GetPosition(BulletBody pCollisionObject)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        IndexedVector3 pos = body.GetInterpolationWorldTransform()._origin;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        IndexedVector3 pos = collisionObject.GetInterpolationWorldTransform()._origin;
         return new Vector3(pos.X, pos.Y, pos.Z);
     }
 
     public override Vector3 CalculateLocalInertia(BulletShape pShape, float pphysMass)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         IndexedVector3 inertia = IndexedVector3.Zero;
         shape.CalculateLocalInertia(pphysMass, out inertia);
         return new Vector3(inertia.X, inertia.Y, inertia.Z);
@@ -392,7 +414,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override void SetMassProps(BulletBody pBody, float pphysMass, Vector3 plocalInertia)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 inertia = new IndexedVector3(plocalInertia.X, plocalInertia.Y, plocalInertia.Z);
         body.SetMassProps(pphysMass, inertia);
     }
@@ -400,73 +422,90 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override void SetObjectForce(BulletBody pBody, Vector3 _force)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 force = new IndexedVector3(_force.X, _force.Y, _force.Z);
         body.SetTotalForce(ref force);
     }
 
-    public override void SetFriction(BulletBody pBody, float _currentFriction)
+    public override void SetFriction(BulletBody pCollisionObject, float _currentFriction)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetFriction(_currentFriction);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetFriction(_currentFriction);
     }
 
     public override void SetLinearVelocity(BulletBody pBody, Vector3 _velocity)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 velocity = new IndexedVector3(_velocity.X, _velocity.Y, _velocity.Z);
         body.SetLinearVelocity(velocity);
     }
 
-    public override void Activate(BulletBody pBody, bool pforceactivation)
+    public override void Activate(BulletBody pCollisionObject, bool pforceactivation)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.Activate(pforceactivation);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.Activate(pforceactivation);
         
     }
 
-    public override Quaternion GetOrientation(BulletBody pBody)
+    public override Quaternion GetOrientation(BulletBody pCollisionObject)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        IndexedQuaternion mat = body.GetInterpolationWorldTransform().GetRotation();
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        IndexedQuaternion mat = collisionObject.GetInterpolationWorldTransform().GetRotation();
         return new Quaternion(mat.X, mat.Y, mat.Z, mat.W);
     }
 
-    public override CollisionFlags RemoveFromCollisionFlags(BulletBody pBody, CollisionFlags pcollisionFlags)
+    public override CollisionFlags RemoveFromCollisionFlags(BulletBody pCollisionObject, CollisionFlags pcollisionFlags)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        CollisionFlags existingcollisionFlags = (CollisionFlags)(uint)body.GetCollisionFlags();
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        CollisionFlags existingcollisionFlags = (CollisionFlags)(uint)collisionObject.GetCollisionFlags();
         existingcollisionFlags &= ~pcollisionFlags;
-        body.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags)(uint)existingcollisionFlags);
+        collisionObject.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags)(uint)existingcollisionFlags);
         return (CollisionFlags)(uint)existingcollisionFlags;
     }
 
-    public override float GetCcdMotionThreshold(BulletBody obj) { /* TODO */ return 0f;  }
+    public override float GetCcdMotionThreshold(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return collisionObject.GetCcdSquareMotionThreshold();
+    }
 
-    public override float GetCcdSweptSphereRadius(BulletBody obj) { /* TODO */ return 0f;  }
+    public override float GetCcdSweptSphereRadius(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return collisionObject.GetCcdSweptSphereRadius();
+        
+    }
 
-    public override IntPtr GetUserPointer(BulletBody obj) { /* TODO */ return IntPtr.Zero;  }
+    public override IntPtr GetUserPointer(BulletBody pCollisionObject)
+    {
+        CollisionObject shape = (pCollisionObject as BulletBodyXNA).body;
+        return (IntPtr)shape.GetUserPointer();
+    }
 
-    public override void SetUserPointer(BulletBody obj, IntPtr val) { /* TODO */ }
+    public override void SetUserPointer(BulletBody pCollisionObject, IntPtr val)
+    {
+        CollisionObject shape = (pCollisionObject as BulletBodyXNA).body;
+        shape.SetUserPointer(val);
+    }
 
     public override void SetGravity(BulletBody pBody, Vector3 pGravity)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 gravity = new IndexedVector3(pGravity.X, pGravity.Y, pGravity.Z);
         body.SetGravity(gravity);
     }
 
     public override bool DestroyConstraint(BulletWorld pWorld, BulletConstraint pConstraint)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        TypedConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        TypedConstraint constraint = (pConstraint as BulletConstraintXNA).constrain;
         world.RemoveConstraint(constraint);
         return true;
     }
 
     public override bool SetLinearLimits(BulletConstraint pConstraint, Vector3 low, Vector3 high)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         IndexedVector3 lowlimit = new IndexedVector3(low.X, low.Y, low.Z);
         IndexedVector3 highlimit = new IndexedVector3(high.X, high.Y, high.Z);
         constraint.SetLinearLowerLimit(lowlimit);
@@ -476,7 +515,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override bool SetAngularLimits(BulletConstraint pConstraint, Vector3 low, Vector3 high)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         IndexedVector3 lowlimit = new IndexedVector3(low.X, low.Y, low.Z);
         IndexedVector3 highlimit = new IndexedVector3(high.X, high.Y, high.Z);
         constraint.SetAngularLowerLimit(lowlimit);
@@ -486,20 +525,20 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override void SetConstraintNumSolverIterations(BulletConstraint pConstraint, float cnt)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         constraint.SetOverrideNumSolverIterations((int)cnt);
     }
 
     public override bool CalculateTransforms(BulletConstraint pConstraint)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         constraint.CalculateTransforms();
         return true;
     }
 
     public override void SetConstraintEnable(BulletConstraint pConstraint, float p_2)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         constraint.SetEnabled((p_2 == 0) ? false : true);
     }
 
@@ -508,9 +547,9 @@ private sealed class BulletConstraintXNA : BulletConstraint
     public override BulletConstraint Create6DofConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2, Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
 
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        RigidBody body1 = ((BulletBodyXNA)pBody1).rigidBody;
-        RigidBody body2 = ((BulletBodyXNA)pBody2).rigidBody;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        RigidBody body1 = (pBody1 as BulletBodyXNA).rigidBody;
+        RigidBody body2 = (pBody2 as BulletBodyXNA).rigidBody;
         IndexedVector3 frame1v = new IndexedVector3(pframe1.X, pframe1.Y, pframe1.Z);
         IndexedQuaternion frame1rot = new IndexedQuaternion(pframe1rot.X, pframe1rot.Y, pframe1rot.Z, pframe1rot.W);
         IndexedMatrix frame1 = IndexedMatrix.CreateFromQuaternion(frame1rot);
@@ -542,9 +581,9 @@ private sealed class BulletConstraintXNA : BulletConstraint
     /// <returns></returns>
     public override BulletConstraint Create6DofConstraintToPoint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2, Vector3 pjoinPoint, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        RigidBody body1 = ((BulletBodyXNA)pBody1).rigidBody;
-        RigidBody body2 = ((BulletBodyXNA)pBody2).rigidBody;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        RigidBody body1 = (pBody1 as BulletBodyXNA).rigidBody;
+        RigidBody body2 = (pBody2 as BulletBodyXNA).rigidBody;
         IndexedMatrix frame1 = new IndexedMatrix(IndexedBasisMatrix.Identity, new IndexedVector3(0, 0, 0));
         IndexedMatrix frame2 = new IndexedMatrix(IndexedBasisMatrix.Identity, new IndexedVector3(0, 0, 0));
 
@@ -563,7 +602,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
     //SetFrames(m_constraint.ptr, frameA, frameArot, frameB, frameBrot);
     public override bool SetFrames(BulletConstraint pConstraint, Vector3 pframe1, Quaternion pframe1rot, Vector3 pframe2, Quaternion pframe2rot)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         IndexedVector3 frame1v = new IndexedVector3(pframe1.X, pframe1.Y, pframe1.Z);
         IndexedQuaternion frame1rot = new IndexedQuaternion(pframe1rot.X, pframe1rot.Y, pframe1rot.Z, pframe1rot.W);
         IndexedMatrix frame1 = IndexedMatrix.CreateFromQuaternion(frame1rot);
@@ -579,109 +618,110 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override Vector3 GetLinearVelocity(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 = body.GetLinearVelocity();
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
     public override Vector3 GetAngularVelocity(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 = body.GetAngularVelocity();
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
     public override Vector3 GetVelocityInLocalPoint(BulletBody pBody, Vector3 pos)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 posiv3 = new IndexedVector3(pos.X, pos.Y, pos.Z);
         IndexedVector3 iv3 = body.GetVelocityInLocalPoint(ref posiv3);
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
-    public override void Translate(BulletBody pBody, Vector3 trans)
+    public override void Translate(BulletBody pCollisionObject, Vector3 trans)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.Translate(new IndexedVector3(trans.X,trans.Y,trans.Z));
     }
     public override void UpdateDeactivation(BulletBody pBody, float timeStep)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.UpdateDeactivation(timeStep);
     }
 
     public override bool WantsSleeping(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         return body.WantsSleeping();
     }
 
     public override void SetAngularFactor(BulletBody pBody, float factor)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.SetAngularFactor(factor);
     }
 
     public override Vector3 GetAngularFactor(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 iv3 =  body.GetAngularFactor();
         return new Vector3(iv3.X, iv3.Y, iv3.Z);
     }
 
-    public override bool IsInWorld(BulletWorld pWorld, BulletBody pBody)
+    public override bool IsInWorld(BulletWorld pWorld, BulletBody pCollisionObject)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        CollisionObject body = ((BulletBodyXNA)pBody).body;
-        return world.IsInWorld(body);
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).body;
+        return world.IsInWorld(collisionObject);
     }
 
-    public override void AddConstraintRef(BulletBody pBody, BulletConstraint pConstrain)
+    public override void AddConstraintRef(BulletBody pBody, BulletConstraint pConstraint)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        TypedConstraint constrain = ((BulletConstraintXNA)pConstrain).constrain;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        TypedConstraint constrain = (pConstraint as BulletConstraintXNA).constrain;
         body.AddConstraintRef(constrain);
     }
 
-    public override void RemoveConstraintRef(BulletBody pBody, BulletConstraint pConstrain)
+    public override void RemoveConstraintRef(BulletBody pBody, BulletConstraint pConstraint)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        TypedConstraint constrain = ((BulletConstraintXNA)pConstrain).constrain;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        TypedConstraint constrain = (pConstraint as BulletConstraintXNA).constrain;
         body.RemoveConstraintRef(constrain);
     }
 
     public override BulletConstraint GetConstraintRef(BulletBody pBody, int index)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         return new BulletConstraintXNA(body.GetConstraintRef(index));
     }
 
     public override int GetNumConstraintRefs(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         return body.GetNumConstraintRefs();
     }
 
-    public override void SetInterpolationLinearVelocity(BulletBody pBody, Vector3 VehicleVelocity)
+    public override void SetInterpolationLinearVelocity(BulletBody pCollisionObject, Vector3 VehicleVelocity)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
         IndexedVector3 velocity = new IndexedVector3(VehicleVelocity.X, VehicleVelocity.Y, VehicleVelocity.Z);
-        body.SetInterpolationLinearVelocity(ref velocity);
+        collisionObject.SetInterpolationLinearVelocity(ref velocity);
     }
 
     public override bool UseFrameOffset(BulletConstraint pConstraint, float onOff)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         constraint.SetUseFrameOffset((onOff == 0) ? false : true);
         return true;
     }
     //SetBreakingImpulseThreshold(m_constraint.ptr, threshold);
     public override bool SetBreakingImpulseThreshold(BulletConstraint pConstraint, float threshold)
     {
-        Generic6DofConstraint constraint = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constraint = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         constraint.SetBreakingImpulseThreshold(threshold);
         return true;
     }
     //BulletSimAPI.SetAngularDamping(Prim.PhysBody.ptr, angularDamping);
     public override void SetAngularDamping(BulletBody pBody, float angularDamping)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         float lineardamping = body.GetLinearDamping();
         body.SetDamping(lineardamping, angularDamping);
 
@@ -689,111 +729,183 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override void UpdateInertiaTensor(BulletBody pBody)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.UpdateInertiaTensor();
     }
 
     public override void RecalculateCompoundShapeLocalAabb(BulletShape pCompoundShape)
     {
-        CompoundShape shape = ((BulletShapeXNA)pCompoundShape).shape as CompoundShape;
+        CompoundShape shape = (pCompoundShape as BulletShapeXNA).shape as CompoundShape;
         shape.RecalculateLocalAabb();
     }
 
     //BulletSimAPI.GetCollisionFlags(PhysBody.ptr)
-    public override CollisionFlags GetCollisionFlags(BulletBody pBody)
+    public override CollisionFlags GetCollisionFlags(BulletBody pCollisionObject)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        uint flags = (uint)body.GetCollisionFlags();
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        uint flags = (uint)collisionObject.GetCollisionFlags();
         return (CollisionFlags) flags;
     }
 
     public override void SetDamping(BulletBody pBody, float pLinear, float pAngular)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.SetDamping(pLinear, pAngular);
     }
     //PhysBody.ptr, PhysicsScene.Params.deactivationTime);
-    public override void SetDeactivationTime(BulletBody pBody, float pDeactivationTime)
+    public override void SetDeactivationTime(BulletBody pCollisionObject, float pDeactivationTime)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetDeactivationTime(pDeactivationTime);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetDeactivationTime(pDeactivationTime);
     }
     //SetSleepingThresholds(PhysBody.ptr, PhysicsScene.Params.linearSleepingThreshold, PhysicsScene.Params.angularSleepingThreshold);
     public override void SetSleepingThresholds(BulletBody pBody, float plinearSleepingThreshold, float pangularSleepingThreshold)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         body.SetSleepingThresholds(plinearSleepingThreshold, pangularSleepingThreshold);
     }
 
-    public override CollisionObjectTypes GetBodyType(BulletBody pBody)
+    public override CollisionObjectTypes GetBodyType(BulletBody pCollisionObject)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        return (CollisionObjectTypes)(int) body.GetInternalType();
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return (CollisionObjectTypes)(int) collisionObject.GetInternalType();
     }
 
-    public override void ApplyGravity(BulletBody obj) { /* TODO */ }
+    public override void ApplyGravity(BulletBody pBody)
+    {
 
-    public override Vector3 GetGravity(BulletBody obj) { /* TODO */ return Vector3.Zero;  }
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        body.ApplyGravity();
+    }
 
-    public override void SetLinearDamping(BulletBody obj, float lin_damping) { /* TODO */ }
+    public override Vector3 GetGravity(BulletBody pBody)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        IndexedVector3 gravity = body.GetGravity();
+        return new Vector3(gravity.X, gravity.Y, gravity.Z);
+    }
 
-    public override float GetLinearDamping(BulletBody obj) { /* TODO */ return 0f;  }
+    public override void SetLinearDamping(BulletBody pBody, float lin_damping)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        float angularDamping = body.GetAngularDamping();
+        body.SetDamping(lin_damping, angularDamping); 
+    }
 
-    public override float GetAngularDamping(BulletBody obj) { /* TODO */ return 0f;  }
+    public override float GetLinearDamping(BulletBody pBody)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        return body.GetLinearDamping();
+    }
 
-    public override float GetLinearSleepingThreshold(BulletBody obj) { /* TODO */ return 0f;  }
+    public override float GetAngularDamping(BulletBody pBody)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        return body.GetAngularDamping();
+    }
 
-    public override void ApplyDamping(BulletBody obj, float timeStep) { /* TODO */ }
+    public override float GetLinearSleepingThreshold(BulletBody pBody)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        return body.GetLinearSleepingThreshold();
+    }
 
-    public override Vector3 GetLinearFactor(BulletBody obj) { /* TODO */ return Vector3.Zero; }
+    public override void ApplyDamping(BulletBody pBody, float timeStep)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        body.ApplyDamping(timeStep);
+    }
 
-    public override void SetLinearFactor(BulletBody obj, Vector3 factor) { /* TODO */ }
+    public override Vector3 GetLinearFactor(BulletBody pBody)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        IndexedVector3 linearFactor = body.GetLinearFactor();
+        return new Vector3(linearFactor.X, linearFactor.Y, linearFactor.Z);
+    }
 
-    public override void SetCenterOfMassByPosRot(BulletBody obj, Vector3 pos, Quaternion rot) { /* TODO */ }
+    public override void SetLinearFactor(BulletBody pBody, Vector3 factor)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        body.SetLinearFactor(new IndexedVector3(factor.X, factor.Y, factor.Z));
+    }
+
+    public override void SetCenterOfMassByPosRot(BulletBody pBody, Vector3 pos, Quaternion rot)
+    {
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
+        IndexedQuaternion quat = new IndexedQuaternion(rot.X, rot.Y, rot.Z,rot.W);
+        IndexedMatrix mat = IndexedMatrix.CreateFromQuaternion(quat);
+        mat._origin = new IndexedVector3(pos.X, pos.Y, pos.Z);
+        body.SetCenterOfMassTransform( ref mat);
+        /* TODO: double check this */
+    }
 
     //BulletSimAPI.ApplyCentralForce(PhysBody.ptr, fSum);
     public override void ApplyCentralForce(BulletBody pBody, Vector3 pfSum)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
         body.ApplyCentralForce(ref fSum);
     }
     public override void ApplyCentralImpulse(BulletBody pBody, Vector3 pfSum)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
         body.ApplyCentralImpulse(ref fSum);
     }
     public override void ApplyTorque(BulletBody pBody, Vector3 pfSum)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
         body.ApplyTorque(ref fSum);
     }
     public override void ApplyTorqueImpulse(BulletBody pBody, Vector3 pfSum)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
+        RigidBody body = (pBody as BulletBodyXNA).rigidBody;
         IndexedVector3 fSum = new IndexedVector3(pfSum.X, pfSum.Y, pfSum.Z);
         body.ApplyTorqueImpulse(ref fSum);
     }
 
-    public override void DestroyObject(BulletWorld p, BulletBody p_2)
+    public override void DestroyObject(BulletWorld pWorld, BulletBody pBody)
     {
-        //TODO:
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        CollisionObject co = (pBody as BulletBodyXNA).rigidBody;
+        RigidBody bo = co as RigidBody;
+        if (bo == null)
+        {
+            
+            if (world.IsInWorld(co))
+            {
+                world.RemoveCollisionObject(co);
+            }
+        }
+        else
+        {
+            
+            if (world.IsInWorld(bo))
+            {
+                world.RemoveRigidBody(bo);
+            }
+        }
+       
     }
 
     public override void Shutdown(BulletWorld pWorld)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         world.Cleanup();
     }
 
-    public override BulletShape DuplicateCollisionShape(BulletWorld sim, BulletShape srcShape, uint id)
+    public override BulletShape DuplicateCollisionShape(BulletWorld pWorld, BulletShape pShape, uint id)
     {
-        return null;
+        CollisionShape shape1 = (pShape as BulletShapeXNA).shape;
+
+        // TODO:  Turn this from a reference copy to a Value Copy.
+        BulletShapeXNA shape2 = new BulletShapeXNA(shape1, BSPhysicsShapeType.SHAPE_UNKNOWN);
+        
+        return shape2;
     }
 
-    public override bool DeleteCollisionShape(BulletWorld p, BulletShape p_2)
+    public override bool DeleteCollisionShape(BulletWorld pWorld, BulletShape pShape)
     {
         //TODO:
         return false;
@@ -802,17 +914,40 @@ private sealed class BulletConstraintXNA : BulletConstraint
                
     public override BulletBody CreateBodyFromShape(BulletWorld pWorld, BulletShape pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
     {
-        CollisionWorld world = ((BulletWorldXNA)pWorld).world;
+        CollisionWorld world = (pWorld as BulletWorldXNA).world;
         IndexedMatrix mat =
             IndexedMatrix.CreateFromQuaternion(new IndexedQuaternion(pRawOrientation.X, pRawOrientation.Y,
                                                                      pRawOrientation.Z, pRawOrientation.W));
         mat._origin = new IndexedVector3(pRawPosition.X, pRawPosition.Y, pRawPosition.Z);
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         //UpdateSingleAabb(world, shape);
         // TODO: Feed Update array into null
-        RigidBody body = new RigidBody(0,new SimMotionState(world,pLocalID,mat,null),shape,IndexedVector3.Zero);
-        
+        SimMotionState motionState = new SimMotionState(world, pLocalID, mat, null);
+        RigidBody body = new RigidBody(0,motionState,shape,IndexedVector3.Zero);
+        RigidBodyConstructionInfo constructionInfo = new RigidBodyConstructionInfo(0, new SimMotionState(world, pLocalID, mat, null),shape,IndexedVector3.Zero)
+                                                         {
+                                                             m_mass = 0
+                                                         };
+        /*
+            m_mass = mass;
+			m_motionState =motionState;
+			m_collisionShape = collisionShape;
+			m_localInertia = localInertia;
+			m_linearDamping = 0f;
+			m_angularDamping = 0f;
+			m_friction = 0.5f;
+			m_restitution = 0f;
+			m_linearSleepingThreshold = 0.8f;
+			m_angularSleepingThreshold = 1f;
+			m_additionalDamping = false;
+			m_additionalDampingFactor = 0.005f;
+			m_additionalLinearDampingThresholdSqr = 0.01f;
+			m_additionalAngularDampingThresholdSqr = 0.01f;
+			m_additionalAngularDampingFactor = 0.01f;
+            m_startWorldTransform = IndexedMatrix.Identity;
+        */
         body.SetUserPointer(pLocalID);
+        
         return new BulletBodyXNA(pLocalID, body);
     }
 
@@ -825,7 +960,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
                                                                      pRawOrientation.Z, pRawOrientation.W));
         mat._origin = new IndexedVector3(pRawPosition.X, pRawPosition.Y, pRawPosition.Z);
 
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
 
         // TODO: Feed Update array into null
         RigidBody body = new RigidBody(0, new DefaultMotionState( mat, IndexedMatrix.Identity), shape, IndexedVector3.Zero);
@@ -834,21 +969,43 @@ private sealed class BulletConstraintXNA : BulletConstraint
         return new BulletBodyXNA(pLocalID, body);
     }
     //(m_mapInfo.terrainBody.ptr, CollisionFlags.CF_STATIC_OBJECT);
-    public override CollisionFlags SetCollisionFlags(BulletBody pBody, CollisionFlags collisionFlags)
+    public override CollisionFlags SetCollisionFlags(BulletBody pCollisionObject, CollisionFlags collisionFlags)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags) (uint) collisionFlags);
-        return (CollisionFlags)body.GetCollisionFlags();
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetCollisionFlags((BulletXNA.BulletCollision.CollisionFlags) (uint) collisionFlags);
+        return (CollisionFlags)collisionObject.GetCollisionFlags();
     }
 
-    public override Vector3 GetAnisotripicFriction(BulletConstraint pconstrain) { /* TODO */ return Vector3.Zero; }
+    public override Vector3 GetAnisotripicFriction(BulletConstraint pconstrain)
+    {
+
+        /* TODO */ 
+        return Vector3.Zero;
+    }
     public override Vector3 SetAnisotripicFriction(BulletConstraint pconstrain, Vector3 frict) { /* TODO */ return Vector3.Zero; }
     public override bool HasAnisotripicFriction(BulletConstraint pconstrain) { /* TODO */ return false; }
     public override float GetContactProcessingThreshold(BulletBody pBody) { /* TODO */ return 0f; }
-    public override bool IsStaticObject(BulletBody pBody) { /* TODO */ return false; }
-    public override bool IsKinematicObject(BulletBody pBody) { /* TODO */ return false; }
-    public override bool IsStaticOrKinematicObject(BulletBody pBody) { /* TODO */ return false; }
-    public override bool HasContactResponse(BulletBody pBody) { /* TODO */ return false; }
+    public override bool IsStaticObject(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return collisionObject.IsStaticObject();
+        
+    }
+    public override bool IsKinematicObject(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return collisionObject.IsKinematicObject();
+    }
+    public override bool IsStaticOrKinematicObject(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return collisionObject.IsStaticOrKinematicObject();
+    }
+    public override bool HasContactResponse(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        return collisionObject.HasContactResponse();
+    }
     public override int GetActivationState(BulletBody pBody) { /* TODO */ return 0; }
     public override void SetActivationState(BulletBody pBody, int state) { /* TODO */ }
     public override float GetDeactivationTime(BulletBody pBody) { /* TODO */ return 0f; }
@@ -859,15 +1016,15 @@ private sealed class BulletConstraintXNA : BulletConstraint
     public override float GetHitFraction(BulletBody pBody) { /* TODO */ return 0f; }
 
     //(m_mapInfo.terrainBody.ptr, PhysicsScene.Params.terrainHitFraction);
-    public override void SetHitFraction(BulletBody pBody, float pHitFraction)
+    public override void SetHitFraction(BulletBody pCollisionObject, float pHitFraction)
     {
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        body.SetHitFraction(pHitFraction);
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        collisionObject.SetHitFraction(pHitFraction);
     }
     //BuildCapsuleShape(physicsScene.World.ptr, 1f, 1f, prim.Scale);
     public override BulletShape BuildCapsuleShape(BulletWorld pWorld, float pRadius, float pHeight, Vector3 pScale)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         IndexedVector3 scale = new IndexedVector3(pScale.X, pScale.Y, pScale.Z);
         CapsuleShapeZ capsuleShapeZ = new CapsuleShapeZ(pRadius, pHeight);
         capsuleShapeZ.SetMargin(world.WorldSettings.Params.collisionMargin);
@@ -881,14 +1038,24 @@ private sealed class BulletConstraintXNA : BulletConstraint
                                             int maxUpdates, ref EntityProperties[] updateArray
                                             )
     {
+
+        m_updateArray = updateArray;
+        m_collisionArray = collisionArray;
         /* TODO */
-        return new BulletWorldXNA(1, null, null);
+        ConfigurationParameters[] configparms = new ConfigurationParameters[1];
+        configparms[0] = parms;
+        Vector3 worldExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight);
+        m_maxCollisions = maxCollisions;
+        m_maxUpdatesPerFrame = maxUpdates;
+
+
+        return new BulletWorldXNA(1, PhysicsScene, BSAPIXNA.Initialize2(worldExtent, configparms, maxCollisions, ref collisionArray, maxUpdates, ref updateArray, null));
     }
 
-    private static object Initialize2(Vector3 worldExtent, 
+    private static DiscreteDynamicsWorld Initialize2(Vector3 worldExtent, 
                         ConfigurationParameters[] o,
-                        int mMaxCollisionsPerFrame, ref List<BulletXNA.CollisionDesc> collisionArray,
-                        int mMaxUpdatesPerFrame, ref List<BulletXNA.EntityProperties> updateArray, 
+                        int mMaxCollisionsPerFrame, ref CollisionDesc[] collisionArray,
+                        int mMaxUpdatesPerFrame, ref EntityProperties[] updateArray, 
                         object mDebugLogCallbackHandle)
     {
         CollisionWorld.WorldData.ParamData p = new CollisionWorld.WorldData.ParamData();
@@ -968,8 +1135,13 @@ private sealed class BulletConstraintXNA : BulletConstraint
         SequentialImpulseConstraintSolver m_solver = new SequentialImpulseConstraintSolver();
 
         DiscreteDynamicsWorld world = new DiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, cci);
-        world.UpdatedObjects = updateArray;
-        world.UpdatedCollisions = collisionArray;
+        
+        
+        world.UpdatedObjects = BSAPIXNA.GetBulletXNAEntityStruct(BSAPIXNA.BulletSimEntityStructToByteArray(updateArray, updateArray.Length));
+        world.UpdatedCollisions = BSAPIXNA.GetBulletXNACollisionStruct(BSAPIXNA.BulletSimCollisionStructToByteArray(collisionArray, collisionArray.Length));
+        world.LastCollisionDesc = 0;
+        world.LastEntityProperty = 0;
+
         world.WorldSettings.Params = p;
         world.SetForceUpdateAllAabbs(p.shouldForceUpdateAllAabbs != 0);
         world.GetSolverInfo().m_solverMode = SolverMode.SOLVER_USE_WARMSTARTING | SolverMode.SOLVER_SIMD;
@@ -1003,7 +1175,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
         world.GetSolverInfo().m_restingContactRestitutionThreshold = 2;
         world.SetForceUpdateAllAabbs(true);
 
-
+        //BSParam.TerrainImplementation = 0;
         world.SetGravity(new IndexedVector3(0,0,p.gravity));
 
         return world;
@@ -1011,7 +1183,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
     //m_constraint.ptr, ConstraintParams.BT_CONSTRAINT_STOP_CFM, cfm, ConstraintParamAxis.AXIS_ALL
     public override bool SetConstraintParam(BulletConstraint pConstraint, ConstraintParams paramIndex, float paramvalue, ConstraintParamAxis axis)
     {
-        Generic6DofConstraint constrain = ((BulletConstraintXNA)pConstraint).constrain as Generic6DofConstraint;
+        Generic6DofConstraint constrain = (pConstraint as BulletConstraintXNA).constrain as Generic6DofConstraint;
         if (axis == ConstraintParamAxis.AXIS_LINEAR_ALL || axis == ConstraintParamAxis.AXIS_ALL)
         {
             constrain.SetParam((BulletXNA.BulletDynamics.ConstraintParams) (int) paramIndex, paramvalue, 0);
@@ -1034,7 +1206,8 @@ private sealed class BulletConstraintXNA : BulletConstraint
     public override bool PushUpdate(BulletBody pCollisionObject)
     {
         bool ret = false;
-        RigidBody rb = ((BulletBodyXNA)pCollisionObject).rigidBody;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        RigidBody rb = collisionObject as RigidBody;
         if (rb != null)
         {
             SimMotionState sms = rb.GetMotionState() as SimMotionState;
@@ -1052,57 +1225,57 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override float GetAngularMotionDisc(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.GetAngularMotionDisc();
     }
     public override float GetContactBreakingThreshold(BulletShape pShape, float defaultFactor)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.GetContactBreakingThreshold(defaultFactor);
     }
     public override bool IsCompound(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsCompound();
     }
     public override bool IsSoftBody(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsSoftBody();
     }
     public override bool IsPolyhedral(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsPolyhedral();
     }
     public override bool IsConvex2d(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsConvex2d();
     }
     public override bool IsConvex(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsConvex();
     }
     public override bool IsNonMoving(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsNonMoving();
     }
     public override bool IsConcave(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsConcave();
     }
     public override bool IsInfinite(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         return shape.IsInfinite();
     }
     public override bool IsNativeShape(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         bool ret;
         switch (shape.GetShapeType())
         {
@@ -1119,38 +1292,53 @@ private sealed class BulletConstraintXNA : BulletConstraint
         return ret;
     }
 
-    public override void SetShapeCollisionMargin(BulletShape shape, float margin) { /* TODO */ }
+    public override void SetShapeCollisionMargin(BulletShape pShape, float pMargin)
+    {
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
+        shape.SetMargin(pMargin);
+    }
 
     //sim.ptr, shape.ptr,prim.LocalID, prim.RawPosition, prim.RawOrientation
     public override BulletBody CreateGhostFromShape(BulletWorld pWorld, BulletShape pShape, uint pLocalID, Vector3 pRawPosition, Quaternion pRawOrientation)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         IndexedMatrix bodyTransform = new IndexedMatrix();
         bodyTransform._origin = new IndexedVector3(pRawPosition.X, pRawPosition.Y, pRawPosition.Z);
         bodyTransform.SetRotation(new IndexedQuaternion(pRawOrientation.X,pRawOrientation.Y,pRawOrientation.Z,pRawOrientation.W));
         GhostObject gObj = new PairCachingGhostObject();
         gObj.SetWorldTransform(bodyTransform);
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         gObj.SetCollisionShape(shape);
         gObj.SetUserPointer(pLocalID);
         // TODO: Add to Special CollisionObjects!
         return new BulletBodyXNA(pLocalID, gObj);
     }
 
-    public override void SetCollisionShape(BulletWorld pWorld, BulletBody pObj, BulletShape pShape)
+    public override void SetCollisionShape(BulletWorld pWorld, BulletBody pCollisionObject, BulletShape pShape)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        CollisionObject obj = ((BulletBodyXNA)pObj).body;
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
-        obj.SetCollisionShape(shape);
-
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).body;
+        if (pShape == null)
+        {
+            collisionObject.SetCollisionShape(new EmptyShape());
+        }
+        else
+        {
+            CollisionShape shape = (pShape as BulletShapeXNA).shape;
+            collisionObject.SetCollisionShape(shape);
+        }
+    }
+    public override BulletShape GetCollisionShape(BulletBody pCollisionObject)
+    {
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        CollisionShape shape = collisionObject.GetCollisionShape();
+        return new BulletShapeXNA(shape,BSPhysicsShapeType.SHAPE_UNKNOWN);
     }
-    public override BulletShape GetCollisionShape(BulletBody obj) { /* TODO */ return null; }
 
     //(PhysicsScene.World.ptr, nativeShapeData)
     public override BulletShape BuildNativeShape(BulletWorld pWorld, ShapeData pShapeData)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         CollisionShape shape = null;
         switch (pShapeData.Type)
         {
@@ -1185,15 +1373,15 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override int GetNumberOfCompoundChildren(BulletShape pCompoundShape)
     {
-        CompoundShape compoundshape = ((BulletShapeXNA)pCompoundShape).shape as CompoundShape;
+        CompoundShape compoundshape = (pCompoundShape as BulletShapeXNA).shape as CompoundShape;
         return compoundshape.GetNumChildShapes();
     }
     //LinksetRoot.PhysShape.ptr, newShape.ptr, displacementPos, displacementRot
     public override void AddChildShapeToCompoundShape(BulletShape pCShape, BulletShape paddShape, Vector3 displacementPos, Quaternion displacementRot)
     {
         IndexedMatrix relativeTransform = new IndexedMatrix();
-        CompoundShape compoundshape = ((BulletShapeXNA)pCShape).shape as CompoundShape;
-        CollisionShape addshape = ((BulletShapeXNA)paddShape).shape;
+        CompoundShape compoundshape = (pCShape as BulletShapeXNA).shape as CompoundShape;
+        CollisionShape addshape = (paddShape as BulletShapeXNA).shape;
 
         relativeTransform._origin = new IndexedVector3(displacementPos.X, displacementPos.Y, displacementPos.Z);
         relativeTransform.SetRotation(new IndexedQuaternion(displacementRot.X,displacementRot.Y,displacementRot.Z,displacementRot.W));
@@ -1203,7 +1391,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override BulletShape RemoveChildShapeFromCompoundShapeIndex(BulletShape pCShape, int pii)
     {
-        CompoundShape compoundshape = ((BulletShapeXNA)pCShape).shape as CompoundShape;
+        CompoundShape compoundshape = (pCShape as BulletShapeXNA).shape as CompoundShape;
         CollisionShape ret = null;
         ret = compoundshape.GetChildShape(pii);
         compoundshape.RemoveChildShapeByIndex(pii);
@@ -1222,12 +1410,12 @@ private sealed class BulletConstraintXNA : BulletConstraint
         return new BulletShapeXNA(m_planeshape, BSPhysicsShapeType.SHAPE_GROUNDPLANE);
     }
 
-    public override BulletConstraint CreateHingeConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody ppBody2, Vector3 ppivotInA, Vector3 ppivotInB, Vector3 paxisInA, Vector3 paxisInB, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
+    public override BulletConstraint CreateHingeConstraint(BulletWorld pWorld, BulletBody pBody1, BulletBody pBody2, Vector3 ppivotInA, Vector3 ppivotInB, Vector3 paxisInA, Vector3 paxisInB, bool puseLinearReferenceFrameA, bool pdisableCollisionsBetweenLinkedBodies)
     {
         HingeConstraint constrain = null;
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        RigidBody rb1 = ((BulletBodyXNA)pBody1).rigidBody;
-        RigidBody rb2 = ((BulletBodyXNA)ppBody2).rigidBody;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        RigidBody rb1 = (pBody1 as BulletBodyXNA).rigidBody;
+        RigidBody rb2 = (pBody2 as BulletBodyXNA).rigidBody;
         if (rb1 != null && rb2 != null)
         {
             IndexedVector3 pivotInA = new IndexedVector3(ppivotInA.X, ppivotInA.Y, ppivotInA.Z);
@@ -1241,7 +1429,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override BulletShape CreateHullShape(BulletWorld pWorld, int pHullCount, float[] pConvHulls)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         CompoundShape compoundshape = new CompoundShape(false);
         
         compoundshape.SetMargin(world.WorldSettings.Params.collisionMargin);
@@ -1271,7 +1459,11 @@ private sealed class BulletConstraintXNA : BulletConstraint
         return new BulletShapeXNA(compoundshape, BSPhysicsShapeType.SHAPE_HULL);
     }
 
-    public override BulletShape BuildHullShapeFromMesh(BulletWorld world, BulletShape meshShape) { /* TODO */ return null; }
+    public override BulletShape BuildHullShapeFromMesh(BulletWorld world, BulletShape meshShape)
+    {
+        /* TODO */ return null;
+
+    }
 
     public override BulletShape CreateMeshShape(BulletWorld pWorld, int pIndicesCount, int[] indices, int pVerticesCount, float[] verticesAsFloats)
     {
@@ -1286,7 +1478,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
         ObjectArray<int> indicesarr = new ObjectArray<int>(indices);
         ObjectArray<float> vertices = new ObjectArray<float>(verticesAsFloats);
         DumpRaw(indicesarr,vertices,pIndicesCount,pVerticesCount);
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         IndexedMesh mesh = new IndexedMesh();
         mesh.m_indexType = PHY_ScalarType.PHY_INTEGER;
         mesh.m_numTriangles = pIndicesCount/3;
@@ -1402,7 +1594,7 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override bool TranslationalLimitMotor(BulletConstraint pConstraint, float ponOff, float targetVelocity, float maxMotorForce)
     {
-        TypedConstraint tconstrain = ((BulletConstraintXNA)pConstraint).constrain;
+        TypedConstraint tconstrain = (pConstraint as BulletConstraintXNA).constrain;
         bool onOff = ponOff != 0;
         bool ret = false;
 
@@ -1428,47 +1620,45 @@ private sealed class BulletConstraintXNA : BulletConstraint
         /* TODO */
         updatedEntityCount = 0;
         collidersCount = 0;
-        return 1;
+        
+
+        int ret = PhysicsStep2(world,timeStep,maxSubSteps,fixedTimeStep,out updatedEntityCount,out world.physicsScene.m_updateArray, out collidersCount, out world.physicsScene.m_collisionArray);
+
+        return ret;
     }
 
     private int PhysicsStep2(BulletWorld pWorld, float timeStep, int m_maxSubSteps, float m_fixedTimeStep, 
-                    out int updatedEntityCount, out List<BulletXNA.EntityProperties> updatedEntities, 
-                    out int collidersCount, out List<BulletXNA.CollisionDesc>colliders)
+                    out int updatedEntityCount, out EntityProperties[] updatedEntities,
+                    out int collidersCount, out CollisionDesc[] colliders)
     {
         int epic = PhysicsStepint(pWorld, timeStep, m_maxSubSteps, m_fixedTimeStep, out updatedEntityCount, out updatedEntities,
-                                out collidersCount, out colliders);
+                                out collidersCount, out colliders, m_maxCollisions, m_maxUpdatesPerFrame);
         return epic;
     }
 
-    private static int PhysicsStepint(BulletWorld pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, out List<BulletXNA.EntityProperties> updatedEntities, out int collidersCount, out List<BulletXNA.CollisionDesc> colliders)
+    private static int PhysicsStepint(BulletWorld pWorld,float timeStep, int m_maxSubSteps, float m_fixedTimeStep, out int updatedEntityCount, 
+        out  EntityProperties[] updatedEntities, out int collidersCount, out CollisionDesc[] colliders, int maxCollisions, int maxUpdates)
     {
         int numSimSteps = 0;
-      
 
-        //if (updatedEntities is null)
-        //    updatedEntities = new List<BulletXNA.EntityProperties>();
-
-        //if (colliders is null)
-        //    colliders = new List<BulletXNA.CollisionDesc>();
+        updatedEntityCount = 0;
+        collidersCount = 0;
         
 
         if (pWorld is BulletWorldXNA)
         {
-            DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+            DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
 
+            world.LastCollisionDesc = 0;
+            world.LastEntityProperty = 0;
+            world.UpdatedObjects = new BulletXNA.EntityProperties[maxUpdates];
+            world.UpdatedCollisions = new BulletXNA.CollisionDesc[maxCollisions];
             numSimSteps = world.StepSimulation(timeStep, m_maxSubSteps, m_fixedTimeStep);
             int updates = 0;
 
-            updatedEntityCount = world.UpdatedObjects.Count;
-            updatedEntities = new List<BulletXNA.EntityProperties>(world.UpdatedObjects);
-            updatedEntityCount = updatedEntities.Count;
-            world.UpdatedObjects.Clear();
+            
             
 
-            collidersCount = world.UpdatedCollisions.Count;
-            colliders = new List<BulletXNA.CollisionDesc>(world.UpdatedCollisions);
-
-            world.UpdatedCollisions.Clear();
             m_collisionsThisFrame = 0;
             int numManifolds = world.GetDispatcher().GetNumManifolds();
             for (int j = 0; j < numManifolds; j++)
@@ -1493,16 +1683,31 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
             }
 
+            updatedEntityCount = world.LastEntityProperty;
+            updatedEntities = GetBulletSimEntityStruct(BulletXNAEntityStructToByteArray(world.UpdatedObjects, world.LastEntityProperty));
+
+
+
+
+            collidersCount = world.LastCollisionDesc;
+            colliders =
+                GetBulletSimCollisionStruct(BulletXNACollisionStructToByteArray(world.UpdatedCollisions, world.LastCollisionDesc));//new List<BulletXNA.CollisionDesc>(world.UpdatedCollisions);
 
         }
         else
         {
             //if (updatedEntities is null)
-            updatedEntities = new List<BulletXNA.EntityProperties>();
-            updatedEntityCount = 0;
+            //updatedEntities = new List<BulletXNA.EntityProperties>();
+            //updatedEntityCount = 0;
             //if (colliders is null)
-            colliders = new List<BulletXNA.CollisionDesc>();
-            collidersCount = 0;
+            //colliders = new List<BulletXNA.CollisionDesc>();
+            //collidersCount = 0;
+           
+            updatedEntities = new EntityProperties[0];
+
+            
+            colliders = new CollisionDesc[0];
+        
         }
         return numSimSteps;
     }
@@ -1535,22 +1740,23 @@ private sealed class BulletConstraintXNA : BulletConstraint
                                                 point = contact,
                                                 normal = contactNormal
                                             };
-        world.UpdatedCollisions.Add(cDesc);
+        if (world.LastCollisionDesc < world.UpdatedCollisions.Length)
+            world.UpdatedCollisions[world.LastCollisionDesc++] = (cDesc);
         m_collisionsThisFrame++;
 
 
     }
-    private static EntityProperties GetDebugProperties(BulletWorld pWorld, BulletBody pBody)
+    private static EntityProperties GetDebugProperties(BulletWorld pWorld, BulletBody pCollisionObject)
     {
         EntityProperties ent = new EntityProperties();
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
-        RigidBody body = ((BulletBodyXNA)pBody).rigidBody;
-        IndexedMatrix transform = body.GetWorldTransform();
-        IndexedVector3 LinearVelocity = body.GetInterpolationLinearVelocity();
-        IndexedVector3 AngularVelocity = body.GetInterpolationAngularVelocity();
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
+        CollisionObject collisionObject = (pCollisionObject as BulletBodyXNA).rigidBody;
+        IndexedMatrix transform = collisionObject.GetWorldTransform();
+        IndexedVector3 LinearVelocity = collisionObject.GetInterpolationLinearVelocity();
+        IndexedVector3 AngularVelocity = collisionObject.GetInterpolationAngularVelocity();
         IndexedQuaternion rotation = transform.GetRotation();
         ent.Acceleration = Vector3.Zero;
-        ent.ID = (uint)body.GetUserPointer();
+        ent.ID = (uint)collisionObject.GetUserPointer();
         ent.Position = new Vector3(transform._origin.X,transform._origin.Y,transform._origin.Z);
         ent.Rotation = new Quaternion(rotation.X,rotation.Y,rotation.Z,rotation.W);
         ent.Velocity = new Vector3(LinearVelocity.X, LinearVelocity.Y, LinearVelocity.Z);
@@ -1562,19 +1768,19 @@ private sealed class BulletConstraintXNA : BulletConstraint
 
     public override Vector3 GetLocalScaling(BulletShape pShape)
     {
-        CollisionShape shape = ((BulletShapeXNA)pShape).shape;
+        CollisionShape shape = (pShape as BulletShapeXNA).shape;
         IndexedVector3 scale = shape.GetLocalScaling();
         return new Vector3(scale.X,scale.Y,scale.Z);
     }
 
     public bool RayCastGround(BulletWorld pWorld, Vector3 _RayOrigin, float pRayHeight, BulletBody NotMe)
     {
-        DiscreteDynamicsWorld world = ((BulletWorldXNA)pWorld).world;
+        DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
         if (world != null)
         {
             if (NotMe is BulletBodyXNA && NotMe.HasPhysicalBody)
             {
-                CollisionObject AvoidBody = ((BulletBodyXNA)NotMe).body;
+                CollisionObject AvoidBody = (NotMe as BulletBodyXNA).body;
                 
                 IndexedVector3 rOrigin = new IndexedVector3(_RayOrigin.X, _RayOrigin.Y, _RayOrigin.Z);
                 IndexedVector3 rEnd = new IndexedVector3(_RayOrigin.X, _RayOrigin.Y, _RayOrigin.Z - pRayHeight);
@@ -1594,5 +1800,160 @@ private sealed class BulletConstraintXNA : BulletConstraint
         }
         return false;
     }
+    
+    public static unsafe BulletXNA.CollisionDesc[] GetBulletXNACollisionStruct(byte[] buffer)
+    {
+        int count = buffer.Length/sizeof (BulletXNA.CollisionDesc);
+        BulletXNA.CollisionDesc[] result = new BulletXNA.CollisionDesc[count];
+        BulletXNA.CollisionDesc* ptr;
+        fixed (byte* localBytes = new byte[buffer.Length])
+        {
+            for (int i = 0; i < buffer.Length; i++)
+            {
+                localBytes[i] = buffer[i];
+            }
+            for (int i=0;i<count;i++)
+            {
+                ptr = (BulletXNA.CollisionDesc*) (localBytes + sizeof (BulletXNA.CollisionDesc)*i);
+                result[i] = new BulletXNA.CollisionDesc();
+                result[i] = *ptr;
+            }
+        }
+        return result;
+    }
+
+    public static unsafe CollisionDesc[] GetBulletSimCollisionStruct(byte[] buffer)
+    {
+        int count = buffer.Length / sizeof(CollisionDesc);
+        CollisionDesc[] result = new CollisionDesc[count];
+        CollisionDesc* ptr;
+        fixed (byte* localBytes = new byte[buffer.Length])
+        {
+            for (int i = 0; i < buffer.Length; i++)
+            {
+                localBytes[i] = buffer[i];
+            }
+            for (int i = 0; i < count; i++)
+            {
+                ptr = (CollisionDesc*)(localBytes + sizeof(CollisionDesc) * i);
+                result[i] = new CollisionDesc();
+                result[i] = *ptr;
+            }
+        }
+        return result;
+    }
+    public static unsafe byte[] BulletSimCollisionStructToByteArray(CollisionDesc[] CollisionDescArray, int count)
+    {
+        int arrayLength = CollisionDescArray.Length > count ? count : CollisionDescArray.Length;
+        byte[] byteArray = new byte[sizeof(CollisionDesc) * arrayLength];
+        fixed (CollisionDesc* floatPointer = CollisionDescArray)
+        {
+            fixed (byte* bytePointer = byteArray)
+            {
+                CollisionDesc* read = floatPointer;
+                CollisionDesc* write = (CollisionDesc*)bytePointer;
+                for (int i = 0; i < arrayLength; i++)
+                {
+                    *write++ = *read++;
+                }
+            }
+        }
+        return byteArray;
+    }
+    public static unsafe byte[] BulletXNACollisionStructToByteArray(BulletXNA.CollisionDesc[] CollisionDescArray, int count)
+    {
+        int arrayLength = CollisionDescArray.Length > count ? count : CollisionDescArray.Length;
+        byte[] byteArray = new byte[sizeof(BulletXNA.CollisionDesc) * arrayLength];
+        fixed (BulletXNA.CollisionDesc* floatPointer = CollisionDescArray)
+        {
+            fixed (byte* bytePointer = byteArray)
+            {
+                BulletXNA.CollisionDesc* read = floatPointer;
+                BulletXNA.CollisionDesc* write = (BulletXNA.CollisionDesc*)bytePointer;
+                for (int i = 0; i < arrayLength; i++)
+                {
+                    *write++ = *read++;
+                }
+            }
+        }
+        return byteArray;
+    }
+    public static unsafe BulletXNA.EntityProperties[] GetBulletXNAEntityStruct(byte[] buffer)
+    {
+        int count = buffer.Length / sizeof(BulletXNA.EntityProperties);
+        BulletXNA.EntityProperties[] result = new BulletXNA.EntityProperties[count];
+        BulletXNA.EntityProperties* ptr;
+        fixed (byte* localBytes = new byte[buffer.Length])
+        {
+            for (int i = 0; i < buffer.Length; i++)
+            {
+                localBytes[i] = buffer[i];
+            }
+            for (int i = 0; i < count; i++)
+            {
+                ptr = (BulletXNA.EntityProperties*)(localBytes + sizeof(BulletXNA.EntityProperties) * i);
+                result[i] = new BulletXNA.EntityProperties();
+                result[i] = *ptr;
+            }
+        }
+        return result;
+    }
+
+    public static unsafe EntityProperties[] GetBulletSimEntityStruct(byte[] buffer)
+    {
+        int count = buffer.Length / sizeof(EntityProperties);
+        EntityProperties[] result = new EntityProperties[count];
+        EntityProperties* ptr;
+        fixed (byte* localBytes = new byte[buffer.Length])
+        {
+            for (int i = 0; i < buffer.Length; i++)
+            {
+                localBytes[i] = buffer[i];
+            }
+            for (int i = 0; i < count; i++)
+            {
+                ptr = (EntityProperties*)(localBytes + sizeof(EntityProperties) * i);
+                result[i] = new EntityProperties();
+                result[i] = *ptr;
+            }
+        }
+        return result;
+    }
+    public static unsafe byte[] BulletSimEntityStructToByteArray(EntityProperties[] CollisionDescArray, int count)
+    {
+        int arrayLength = CollisionDescArray.Length > count ? count : CollisionDescArray.Length;
+        byte[] byteArray = new byte[sizeof(EntityProperties) * arrayLength];
+        fixed (EntityProperties* floatPointer = CollisionDescArray)
+        {
+            fixed (byte* bytePointer = byteArray)
+            {
+                EntityProperties* read = floatPointer;
+                EntityProperties* write = (EntityProperties*)bytePointer;
+                for (int i = 0; i < arrayLength; i++)
+                {
+                    *write++ = *read++;
+                }
+            }
+        }
+        return byteArray;
+    }
+    public static unsafe byte[] BulletXNAEntityStructToByteArray(BulletXNA.EntityProperties[] CollisionDescArray, int count)
+    {
+        int arrayLength = CollisionDescArray.Length > count ? count : CollisionDescArray.Length;
+        byte[] byteArray = new byte[sizeof(BulletXNA.EntityProperties) * arrayLength];
+        fixed (BulletXNA.EntityProperties* floatPointer = CollisionDescArray)
+        {
+            fixed (byte* bytePointer = byteArray)
+            {
+                BulletXNA.EntityProperties* read = floatPointer;
+                BulletXNA.EntityProperties* write = (BulletXNA.EntityProperties*)bytePointer;
+                for (int i = 0; i < arrayLength; i++)
+                {
+                    *write++ = *read++;
+                }
+            }
+        }
+        return byteArray;
+    }
 }
 }
diff --git a/bin/BulletXNA.dll b/bin/BulletXNA.dll
index 1e3f04253f06eb6016cf3c3e51b4fd16f8d0581c..5e69b2e28b0c77f067815179810a3bba5dd859a4 100644
GIT binary patch
literal 614400
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

literal 614400
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
AnE(I)

diff --git a/bin/BulletXNA.pdb b/bin/BulletXNA.pdb
index 4b83b83f2881d90a004c352b1d48c7b980259962..3d4906f44dbc28b6d769b3291e381eebfb470a97 100644
GIT binary patch
delta 194622
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%0D4B<1yU4_`|y7|&W0n0<Iz%06W&<V
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
U|0$HeA|a6wQLA=J(y&nVH;b3;S^xk5

delta 181227
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

diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 54b88b4875..889865b618 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -908,6 +908,19 @@
 
 [BulletSim]
     ; World parameters
+
+    ; There are two bullet physics libraries, bulletunmanaged is the default and is a native c++ dll
+    ; bulletxna is a managed C# dll.  They have comparible functionality..   the c++ is much faster.
+
+    BulletEngine = "bulletunmanaged"
+    ; BulletEngine = "bulletxna"
+
+    ; Terrain Implementation {1|0} 0 for HeightField, 1 for Mesh terrain.  If you're using the bulletxna engine, 
+    ;  you will want to switch to the heightfield option
+
+    TerrainImplementation = 1
+    ; TerrainImplementation = 0
+
     DefaultFriction = 0.20
     DefaultDensity = 10.000006836
     DefaultRestitution = 0.0
@@ -959,6 +972,7 @@
     PhysicsLoggingEnabled = False
     PhysicsLoggingDir = "."
     VehicleLoggingEnabled = False
+    
 
 [RemoteAdmin]
     enabled = false
diff --git a/prebuild.xml b/prebuild.xml
index bb9b7d6de4..37b406cda7 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1759,40 +1759,6 @@
       </Files>
     </Project>
 
-    <Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BulletSNPlugin" path="OpenSim/Region/Physics/BulletSNPlugin" type="Library">
-      <Configuration name="Debug">
-        <Options>
-          <OutputPath>../../../../bin/Physics/</OutputPath>
-        </Options>
-      </Configuration>
-      <Configuration name="Release">
-        <Options>
-          <OutputPath>../../../../bin/Physics/</OutputPath>
-        </Options>
-      </Configuration>
-
-      <ReferencePath>../../../../bin/</ReferencePath>
-      <Reference name="System"/>
-      <Reference name="System.Core"/>
-      <Reference name="System.Xml"/>
-      <Reference name="OpenMetaverseTypes" path="../../../../bin/"/>
-      <Reference name="Nini.dll"  path="../../../../bin/"/>
-      <Reference name="OpenSim.Framework"/>
-      <Reference name="OpenSim.Region.Framework"/>
-      <Reference name="OpenSim.Region.CoreModules"/>
-      <Reference name="OpenSim.Framework.Console"/>
-      <Reference name="OpenSim.Region.Physics.Manager"/>
-      <Reference name="OpenSim.Region.Physics.ConvexDecompositionDotNet"/>
-      <Reference name="BulletXNA.dll" path="../../../../bin/"/>
-      <Reference name="log4net.dll" path="../../../../bin/"/>
-
-      <Files>
-        <Match pattern="*.cs" recurse="true">
-          <Exclude name="Tests" pattern="Tests"/>
-        </Match>
-      </Files>
-    </Project>
-
     <!-- OpenSim app -->
     <Project frameworkVersion="v3_5" name="OpenSim" path="OpenSim/Region/Application" type="Exe">
       <Configuration name="Debug">

From 3b0df52d10c157cd2711d64ef9007d2afccbd468 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Sun, 20 Jan 2013 09:33:13 -0800
Subject: [PATCH 20/36] BulletSim: modify motors to return correction rather
 than current value to better use them for incremental updates. Modify prim
 and character to use the new motors. Simplify the vehicle linear movement
 code to just update the velocity directly or the basic movement.

---
 .../Physics/BulletSPlugin/BSCharacter.cs      |  3 +-
 .../Physics/BulletSPlugin/BSDynamics.cs       | 41 +++++++------------
 .../Region/Physics/BulletSPlugin/BSMotors.cs  | 25 +++++++----
 .../Region/Physics/BulletSPlugin/BSPrim.cs    |  2 +-
 .../Physics/BulletSPlugin/BulletSimTODO.txt   |  3 ++
 5 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index 478aeab799..696c4bde07 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -198,7 +198,8 @@ public sealed class BSCharacter : BSPhysObject
             // TODO: Decide if the step parameters should be changed depending on the avatar's
             //     state (flying, colliding, ...). There is code in ODE to do this.
 
-            OMV.Vector3 stepVelocity = _velocityMotor.Step(timeStep);
+            _velocityMotor.Step(timeStep);
+            OMV.Vector3 stepVelocity = _velocityMotor.CurrentValue;
 
             // If falling, we keep the world's downward vector no matter what the other axis specify.
             if (!Flying && !IsColliding)
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index f2c7cec0b3..7c9b83bc6b 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -957,39 +957,25 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
         public void ComputeLinearVelocity(float pTimestep)
         {
-            Vector3 linearMotorStep = m_linearMotor.Step(pTimestep);
+            // Step the motor from the current value. Get the correction needed this step.
+            Vector3 currentVel = VehicleVelocity * Quaternion.Inverse(VehicleOrientation);
+            Vector3 linearMotorCorrection = m_linearMotor.Step(pTimestep, currentVel);
 
-            // The movement computed in the linear motor is relative to the vehicle
-            //     coordinates. Rotate the movement to world coordinates.
-            Vector3 linearMotorVelocity = linearMotorStep * VehicleOrientation;
+            // Motor is vehicle coordinates. Rotate it to world coordinates
+            Vector3 linearMotorVelocity = linearMotorCorrection * VehicleOrientation;
 
-            // If we're a ground vehicle, don't loose any Z action (like gravity acceleration).
-            float mixFactor = 1f;   // 1 means use all linear motor Z value, 0 means use all existing Z
+            // If we're a ground vehicle, don't add any upward Z movement
             if ((m_flags & VehicleFlag.LIMIT_MOTOR_UP) != 0)
             {
-                if (!Prim.IsColliding)
-                {
-                    // If a ground vehicle and not on the ground, I want gravity effect
-                    mixFactor = 0.2f;
-                }
+                if (linearMotorVelocity.Z > 0f)
+                    linearMotorVelocity.Z = 0f;
             }
-            else
-            {
-                // I'm not a ground vehicle but don't totally loose the effect of the environment
-                mixFactor = 0.8f;
-            }
-            linearMotorVelocity.Z = mixFactor * linearMotorVelocity.Z + (1f - mixFactor) * VehicleVelocity.Z;
 
-            // What we want to contribute to the vehicle's existing velocity
-            Vector3 linearMotorForce = linearMotorVelocity - VehicleVelocity;
+            // Add this correction to the velocity to make it faster/slower.
+            VehicleVelocity += linearMotorVelocity;
 
-            // Act against the inertia of the vehicle
-            linearMotorForce *= m_vehicleMass;
-
-            VehicleAddForceImpulse(linearMotorForce * pTimestep);
-
-            VDetailLog("{0},  MoveLinear,velocity,vehVel={1},step={2},stepVel={3},mix={4},force={5}",
-                        Prim.LocalID, VehicleVelocity, linearMotorStep, linearMotorVelocity, mixFactor, linearMotorForce);
+            VDetailLog("{0},  MoveLinear,velocity,vehVel={1},correction={2},force={3}",
+                        Prim.LocalID, VehicleVelocity, linearMotorCorrection, linearMotorVelocity);
         }
 
         public void ComputeLinearTerrainHeightCorrection(float pTimestep)
@@ -1204,6 +1190,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         {
             // The user wants this many radians per second angular change?
             Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep);
+            angularMotorContribution = m_angularMotor.CurrentValue;
 
             // ==================================================================
             // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
@@ -1234,7 +1221,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                                     + deflectionContribution
                                     + bankingContribution;
 
-            // Add of the above computation are made relative to vehicle coordinates.
+            // All of the above computation are made relative to vehicle coordinates.
             // Convert to world coordinates.
             m_lastAngularVelocity *= VehicleOrientation;
 
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs
index 6d0db2e4e4..82fd2d2018 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs
@@ -138,7 +138,8 @@ public class BSVMotor : BSMotor
         CurrentValue = TargetValue = Vector3.Zero;
     }
 
-    // Compute the next step and return the new current value
+    // Compute the next step and return the new current value.
+    // Returns the correction needed to move 'current' to 'target'.
     public virtual Vector3 Step(float timeStep)
     {
         if (!Enabled) return TargetValue;
@@ -150,7 +151,7 @@ public class BSVMotor : BSMotor
         Vector3 error = TargetValue - CurrentValue;
         if (!ErrorIsZero(error))
         {
-            correction = Step(timeStep, error);
+            correction = StepError(timeStep, error);
 
             CurrentValue += correction;
 
@@ -187,14 +188,20 @@ public class BSVMotor : BSMotor
         else
         {
             // Difference between what we have and target is small. Motor is done.
-            CurrentValue = TargetValue;
+            CurrentValue = TargetValue = Vector3.Zero;
             MDetailLog("{0},  BSVMotor.Step,zero,{1},origTgt={2},origCurr={3},ret={4}",
                         BSScene.DetailLogZero, UseName, origCurrVal, origTarget, CurrentValue);
         }
 
-        return CurrentValue;
+        return correction;
     }
-    public virtual Vector3 Step(float timeStep, Vector3 error)
+    // version of step that sets the current value before doing the step
+    public virtual Vector3 Step(float timeStep, Vector3 current)
+    {
+        CurrentValue = current;
+        return Step(timeStep);
+    }
+    public virtual Vector3 StepError(float timeStep, Vector3 error)
     {
         if (!Enabled) return Vector3.Zero;
 
@@ -304,7 +311,7 @@ public class BSFMotor : BSMotor
         float error = TargetValue - CurrentValue;
         if (!ErrorIsZero(error))
         {
-            correction = Step(timeStep, error);
+            correction = StepError(timeStep, error);
 
             CurrentValue += correction;
 
@@ -347,7 +354,7 @@ public class BSFMotor : BSMotor
         return CurrentValue;
     }
 
-    public virtual float Step(float timeStep, float error)
+    public virtual float StepError(float timeStep, float error)
     {
         if (!Enabled) return 0f;
 
@@ -440,8 +447,8 @@ public class BSPIDVMotor : BSVMotor
         }
     }
 
-    // Ignore Current and Target Values and just advance the PID computation on this error.
-    public override Vector3 Step(float timeStep, Vector3 error)
+    // Advance the PID computation on this error.
+    public override Vector3 StepError(float timeStep, Vector3 error)
     {
         if (!Enabled) return Vector3.Zero;
 
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index aaa6fe580d..22afdc9613 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -1082,7 +1082,7 @@ public sealed class BSPrim : BSPhysObject
                     OMV.Vector3 origPosition = RawPosition;     // DEBUG DEBUG (for printout below)
 
                     // 'movePosition' is where we'd like the prim to be at this moment.
-                    OMV.Vector3 movePosition = _targetMotor.Step(timeStep);
+                    OMV.Vector3 movePosition = RawPosition + _targetMotor.Step(timeStep);
 
                     // If we are very close to our target, turn off the movement motor.
                     if (_targetMotor.ErrorIsZero())
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index 9bfec19e0e..23b7ca85d9 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -74,7 +74,10 @@ Incorporate inter-relationship of angular corrections. For instance, angularDefl
 GENERAL TODO LIST:
 =================================================
 Implement llSetPhysicalMaterial.
+	extend it with Center-of-mass, rolling friction, density
 Implement llSetForceAndTorque.
+Change BSPrim.moveToTarget to used forces rather than changing position
+	Changing position allows one to move through walls
 Implement an avatar mesh shape. The Bullet capsule is way too limited.
 	Consider just hand creating a vertex/index array in a new BSShapeAvatar.
 Verify/fix phantom, volume-detect objects do not fall to infinity. Should stop at terrain.

From 2cb1d5240e41639b9c84aa6607aab0df49f353a7 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Sun, 20 Jan 2013 13:11:00 -0800
Subject: [PATCH 21/36] BulletSim: small fix making sure terrain height is
 calculated properly if the vehicle moves during vehicle actions.

---
 OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index 7c9b83bc6b..388d4f9001 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -720,10 +720,12 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
         // Since the computation of terrain height can be a little involved, this routine
         //    is used to fetch the height only once for each vehicle simulation step.
+        Vector3 lastRememberedHeightPos;
         private float GetTerrainHeight(Vector3 pos)
         {
-            if ((m_knownHas & m_knownChangedTerrainHeight) == 0)
+            if ((m_knownHas & m_knownChangedTerrainHeight) == 0 || pos != lastRememberedHeightPos)
             {
+                lastRememberedHeightPos = pos;
                 m_knownTerrainHeight = Prim.PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(pos);
                 m_knownHas |= m_knownChangedTerrainHeight;
             }

From 3c4868f61362c2c86cef9f98e197362f57ca627b Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Sun, 20 Jan 2013 19:13:18 -0800
Subject: [PATCH 22/36] BulletSim: fix problem of avatar sliding very slowly
 occasionally after stopping walking. Consolidate movement tests into the one
 prestep motion action

---
 .../Physics/BulletSPlugin/BSCharacter.cs      | 75 ++++++++++---------
 1 file changed, 41 insertions(+), 34 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index 696c4bde07..cd279e31c5 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -56,6 +56,7 @@ public sealed class BSCharacter : BSPhysObject
     private int _physicsActorType;
     private bool _isPhysical;
     private bool _flying;
+    private bool _wasWalking;   // 'true' if the avatar was walking/moving last frame
     private bool _setAlwaysRun;
     private bool _throttleUpdates;
     private bool _floatOnWater;
@@ -83,6 +84,7 @@ public sealed class BSCharacter : BSPhysObject
         _position = pos;
 
         _flying = isFlying;
+        _wasWalking = true;     // causes first step to initialize standing
         _orientation = OMV.Quaternion.Identity;
         _velocity = OMV.Vector3.Zero;
         _buoyancy = ComputeBuoyancyFromFlying(isFlying);
@@ -199,25 +201,51 @@ public sealed class BSCharacter : BSPhysObject
             //     state (flying, colliding, ...). There is code in ODE to do this.
 
             _velocityMotor.Step(timeStep);
-            OMV.Vector3 stepVelocity = _velocityMotor.CurrentValue;
 
-            // If falling, we keep the world's downward vector no matter what the other axis specify.
-            if (!Flying && !IsColliding)
+            // If we're not supposed to be moving, make sure things are zero.
+            if (_velocityMotor.ErrorIsZero() && _velocityMotor.TargetValue.ApproxEquals(OMV.Vector3.Zero, 0.01f))
             {
-                stepVelocity.Z = _velocity.Z;
-                // DetailLog("{0},BSCharacter.MoveMotor,taint,overrideStepZWithWorldZ,stepVel={1}", LocalID, stepVelocity);
+                if (_wasWalking)
+                {
+                    _velocityMotor.Zero();
+                    _velocity = OMV.Vector3.Zero;
+                    PhysicsScene.PE.SetLinearVelocity(PhysBody, OMV.Vector3.Zero);
+                    _currentFriction = BSParam.AvatarStandingFriction;
+                    PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
+                    // DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1}", LocalID, _velocityMotor.TargetValue);
+                }
+                _wasWalking = false;
             }
+            else
+            {
+                OMV.Vector3 stepVelocity = _velocityMotor.CurrentValue;
 
-            // 'stepVelocity' is now the speed we'd like the avatar to move in. Turn that into an instantanous force.
-            OMV.Vector3 moveForce = (stepVelocity - _velocity) * Mass;
+                if (_currentFriction != BSParam.AvatarFriction)
+                {
+                    // Probably starting up walking. Set friction to moving friction.
+                    _currentFriction = BSParam.AvatarFriction;
+                    PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
+                }
 
-            // Should we check for move force being small and forcing velocity to zero?
+                // If falling, we keep the world's downward vector no matter what the other axis specify.
+                if (!Flying && !IsColliding)
+                {
+                    stepVelocity.Z = _velocity.Z;
+                    // DetailLog("{0},BSCharacter.MoveMotor,taint,overrideStepZWithWorldZ,stepVel={1}", LocalID, stepVelocity);
+                }
 
-            // Add special movement force to allow avatars to walk up stepped surfaces.
-            moveForce += WalkUpStairs();
+                // 'stepVelocity' is now the speed we'd like the avatar to move in. Turn that into an instantanous force.
+                OMV.Vector3 moveForce = (stepVelocity - _velocity) * Mass;
 
-            // DetailLog("{0},BSCharacter.MoveMotor,move,stepVel={1},vel={2},mass={3},moveForce={4}", LocalID, stepVelocity, _velocity, Mass, moveForce);
-            PhysicsScene.PE.ApplyCentralImpulse(PhysBody, moveForce);
+                // Should we check for move force being small and forcing velocity to zero?
+
+                // Add special movement force to allow avatars to walk up stepped surfaces.
+                moveForce += WalkUpStairs();
+
+                // DetailLog("{0},BSCharacter.MoveMotor,move,stepVel={1},vel={2},mass={3},moveForce={4}", LocalID, stepVelocity, _velocity, Mass, moveForce);
+                PhysicsScene.PE.ApplyCentralImpulse(PhysBody, moveForce);
+                _wasWalking = true;
+            }
         });
     }
 
@@ -560,27 +588,6 @@ public sealed class BSCharacter : BSPhysObject
             PhysicsScene.AssertInTaintTime("BSCharacter.ForceVelocity");
 
             _velocity = value;
-            // Depending on whether the avatar is moving or not, change the friction
-            //    to keep the avatar from slipping around
-            if (_velocity.Length() == 0)
-            {
-                if (_currentFriction != BSParam.AvatarStandingFriction)
-                {
-                    _currentFriction = BSParam.AvatarStandingFriction;
-                    if (PhysBody.HasPhysicalBody)
-                        PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
-                }
-            }
-            else
-            {
-                if (_currentFriction != BSParam.AvatarFriction)
-                {
-                    _currentFriction = BSParam.AvatarFriction;
-                    if (PhysBody.HasPhysicalBody)
-                        PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
-                }
-            }
-
             PhysicsScene.PE.SetLinearVelocity(PhysBody, _velocity);
             PhysicsScene.PE.Activate(PhysBody, true);
         }
@@ -855,7 +862,7 @@ public sealed class BSCharacter : BSPhysObject
         _position = entprop.Position;
         _orientation = entprop.Rotation;
 
-        // Smooth velocity. OpenSimulator is very sensitive to changes in velocity of the avatar
+        // Smooth velocity. OpenSimulator is VERY sensitive to changes in velocity of the avatar
         //    and will send agent updates to the clients if velocity changes by more than
         //    0.001m/s. Bullet introduces a lot of jitter in the velocity which causes many
         //    extra updates.

From 52b341e2e24384395fddc7d32fd66358f5062468 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Sun, 20 Jan 2013 22:35:42 -0800
Subject: [PATCH 23/36] BulletSim: More aggressive as setting character
 velocity to zero when should be standing. Modify angular force routines to be
 the same pattern as linear force routines. BulletSim vehicle turning is
 scaled like SL and is DIFFERENT THAN ODE!! Fix some bugs in BSMotor dealing
 with the motor going to zero. Add a bunch of parameters:  MaxLinearVelocity,
 MaxAngularVelocity, MaxAddForceMagnitude, VehicleMaxLinearVelocity,
 VehicleMaxAngularVelocity, and most of the values are defaulted to values
 that are larger than in SL. Use the new parameters in BSPrim, BSCharacter and
 BSDynamic.

---
 .../Physics/BulletSPlugin/BSCharacter.cs      |  30 +++-
 .../Physics/BulletSPlugin/BSDynamics.cs       | 151 +++++++++---------
 .../Region/Physics/BulletSPlugin/BSMotors.cs  |  26 ++-
 .../Region/Physics/BulletSPlugin/BSParam.cs   |  32 +++-
 .../Region/Physics/BulletSPlugin/BSPrim.cs    |  13 +-
 5 files changed, 157 insertions(+), 95 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index cd279e31c5..a9e16e685d 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -200,20 +200,36 @@ public sealed class BSCharacter : BSPhysObject
             // TODO: Decide if the step parameters should be changed depending on the avatar's
             //     state (flying, colliding, ...). There is code in ODE to do this.
 
+            // COMMENTARY: when the user is making the avatar walk, except for falling, the velocity
+            //   specified for the avatar is the one that should be used. For falling, if the avatar
+            //   is not flying and is not colliding then it is presumed to be falling and the Z
+            //   component is not fooled with (thus allowing gravity to do its thing).
+            // When the avatar is standing, though, the user has specified a velocity of zero and
+            //   the avatar should be standing. But if the avatar is pushed by something in the world
+            //   (raising elevator platform, moving vehicle, ...) the avatar should be allowed to
+            //   move. Thus, the velocity cannot be forced to zero. The problem is that small velocity
+            //   errors can creap in and the avatar will slowly float off in some direction.
+            // So, the problem is that, when an avatar is standing, we cannot tell creaping error
+            //   from real pushing.OMV.Vector3.Zero;
+            // The code below keeps setting the velocity to zero hoping the world will keep pushing.
+
             _velocityMotor.Step(timeStep);
 
             // If we're not supposed to be moving, make sure things are zero.
-            if (_velocityMotor.ErrorIsZero() && _velocityMotor.TargetValue.ApproxEquals(OMV.Vector3.Zero, 0.01f))
+            if (_velocityMotor.ErrorIsZero() && _velocityMotor.TargetValue == OMV.Vector3.Zero && IsColliding)
             {
-                if (_wasWalking)
+                // The avatar shouldn't be moving
+                _velocityMotor.Zero();
+                ZeroMotion(true /* inTaintTime */);
+
+                // Standing has more friction on the ground
+                if (_currentFriction != BSParam.AvatarStandingFriction)
                 {
-                    _velocityMotor.Zero();
-                    _velocity = OMV.Vector3.Zero;
-                    PhysicsScene.PE.SetLinearVelocity(PhysBody, OMV.Vector3.Zero);
                     _currentFriction = BSParam.AvatarStandingFriction;
                     PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
-                    // DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1}", LocalID, _velocityMotor.TargetValue);
                 }
+                DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1}", LocalID, _velocityMotor.TargetValue);
+
                 _wasWalking = false;
             }
             else
@@ -242,7 +258,7 @@ public sealed class BSCharacter : BSPhysObject
                 // Add special movement force to allow avatars to walk up stepped surfaces.
                 moveForce += WalkUpStairs();
 
-                // DetailLog("{0},BSCharacter.MoveMotor,move,stepVel={1},vel={2},mass={3},moveForce={4}", LocalID, stepVelocity, _velocity, Mass, moveForce);
+                DetailLog("{0},BSCharacter.MoveMotor,move,stepVel={1},vel={2},mass={3},moveForce={4}", LocalID, stepVelocity, _velocity, Mass, moveForce);
                 PhysicsScene.PE.ApplyCentralImpulse(PhysBody, moveForce);
                 _wasWalking = true;
             }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index 388d4f9001..f8fc3de446 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -231,6 +231,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                     break;
                 case Vehicle.ANGULAR_MOTOR_DIRECTION:
                     m_angularMotorDirection = new Vector3(pValue, pValue, pValue);
+                    m_angularMotor.Zero();
                     m_angularMotor.SetTarget(m_angularMotorDirection);
                     break;
                 case Vehicle.LINEAR_FRICTION_TIMESCALE:
@@ -264,6 +265,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                     pValue.Y = ClampInRange(-12.56f, pValue.Y, 12.56f);
                     pValue.Z = ClampInRange(-12.56f, pValue.Z, 12.56f);
                     m_angularMotorDirection = new Vector3(pValue.X, pValue.Y, pValue.Z);
+                    m_angularMotor.Zero();
                     m_angularMotor.SetTarget(m_angularMotorDirection);
                     break;
                 case Vehicle.LINEAR_FRICTION_TIMESCALE:
@@ -945,10 +947,10 @@ namespace OpenSim.Region.Physics.BulletSPlugin
             // ==================================================================
             // Clamp high or low velocities
             float newVelocityLengthSq = VehicleVelocity.LengthSquared();
-            if (newVelocityLengthSq > 1000f)
+            if (newVelocityLengthSq > BSParam.VehicleMaxLinearVelocity)
             {
                 VehicleVelocity /= VehicleVelocity.Length();
-                VehicleVelocity *= 1000f;
+                VehicleVelocity *= BSParam.VehicleMaxLinearVelocity;
             }
             else if (newVelocityLengthSq < 0.001f)
                 VehicleVelocity = Vector3.Zero;
@@ -1190,63 +1192,33 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         //     set directly on the vehicle.
         private void MoveAngular(float pTimestep)
         {
-            // The user wants this many radians per second angular change?
-            Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep);
-            angularMotorContribution = m_angularMotor.CurrentValue;
+            VehicleRotationalVelocity = Vector3.Zero;
+
+            ComputeAngularTurning(pTimestep);
+
+            ComputeAngularVerticalAttraction();
+
+            ComputeAngularDeflection();
+
+            ComputeAngularBanking();
 
             // ==================================================================
-            // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
-            //    This flag prevents linear deflection parallel to world z-axis. This is useful
-            //    for preventing ground vehicles with large linear deflection, like bumper cars,
-            //    from climbing their linear deflection into the sky. 
-            // That is, NO_DEFLECTION_UP says angular motion should not add any pitch or roll movement
-            // TODO: This is here because this is where ODE put it but documentation says it
-            //    is a linear effect. Where should this check go?
-            if ((m_flags & (VehicleFlag.NO_DEFLECTION_UP)) != 0)
-            {
-                angularMotorContribution.X = 0f;
-                angularMotorContribution.Y = 0f;
-                VDetailLog("{0},  MoveAngular,noDeflectionUp,angularMotorContrib={1}", Prim.LocalID, angularMotorContribution);
-            }
-
-            Vector3 verticalAttractionContribution = ComputeAngularVerticalAttraction();
-
-            Vector3 deflectionContribution = ComputeAngularDeflection();
-
-            Vector3 bankingContribution = ComputeAngularBanking();
-
-            // ==================================================================
-            m_lastVertAttractor = verticalAttractionContribution;
-
-            m_lastAngularVelocity = angularMotorContribution
-                                    + verticalAttractionContribution
-                                    + deflectionContribution
-                                    + bankingContribution;
-
             // All of the above computation are made relative to vehicle coordinates.
             // Convert to world coordinates.
-            m_lastAngularVelocity *= VehicleOrientation;
+            // TODO: Should this be applied as an angular force (torque)?
+            VehicleRotationalVelocity *= VehicleOrientation;
 
             // ==================================================================
-            // Apply the correction velocity.
-            // TODO: Should this be applied as an angular force (torque)?
-            if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f))
-            {
-                VehicleRotationalVelocity = m_lastAngularVelocity;
-
-                VDetailLog("{0},  MoveAngular,done,nonZero,angMotorContrib={1},vertAttrContrib={2},bankContrib={3},deflectContrib={4},totalContrib={5}",
-                                    Prim.LocalID,
-                                    angularMotorContribution, verticalAttractionContribution,
-                                    bankingContribution, deflectionContribution,
-                                    m_lastAngularVelocity
-                                    );
-            }
-            else
+            if (VehicleRotationalVelocity.ApproxEquals(Vector3.Zero, 0.01f))
             {
                 // The vehicle is not adding anything angular wise.
                 VehicleRotationalVelocity = Vector3.Zero;
                 VDetailLog("{0},  MoveAngular,done,zero", Prim.LocalID);
             }
+            else
+            {
+                VDetailLog("{0},  MoveAngular,done,nonZero,angVel={1}", Prim.LocalID, VehicleRotationalVelocity);
+            }
 
             // ==================================================================
             //Offset section
@@ -1280,6 +1252,30 @@ namespace OpenSim.Region.Physics.BulletSPlugin
             }
 
         }
+
+        private void ComputeAngularTurning(float pTimestep)
+        {
+            // The user wants this many radians per second angular change?
+            Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep);
+
+            // ==================================================================
+            // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
+            //    This flag prevents linear deflection parallel to world z-axis. This is useful
+            //    for preventing ground vehicles with large linear deflection, like bumper cars,
+            //    from climbing their linear deflection into the sky. 
+            // That is, NO_DEFLECTION_UP says angular motion should not add any pitch or roll movement
+            // TODO: This is here because this is where ODE put it but documentation says it
+            //    is a linear effect. Where should this check go?
+            if ((m_flags & (VehicleFlag.NO_DEFLECTION_UP)) != 0)
+            {
+                angularMotorContribution.X = 0f;
+                angularMotorContribution.Y = 0f;
+            }
+
+            VehicleRotationalVelocity += angularMotorContribution;
+            VDetailLog("{0},  MoveAngular,angularTurning,angularMotorContrib={1}", Prim.LocalID, angularMotorContribution);
+        }
+
         // From http://wiki.secondlife.com/wiki/Linden_Vehicle_Tutorial:
         //      Some vehicles, like boats, should always keep their up-side up. This can be done by
         //      enabling the "vertical attractor" behavior that springs the vehicle's local z-axis to
@@ -1288,13 +1284,13 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         //      and then set the VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY to control the damping. An
         //      efficiency of 0.0 will cause the spring to wobble around its equilibrium, while an
         //      efficiency of 1.0 will cause the spring to reach its equilibrium with exponential decay.
-        public Vector3 ComputeAngularVerticalAttraction()
+        public void ComputeAngularVerticalAttraction()
         {
-            Vector3 ret = Vector3.Zero;
-
             // If vertical attaction timescale is reasonable
             if (enableAngularVerticalAttraction && m_verticalAttractionTimescale < m_verticalAttractionCutoff)
             {
+                Vector3 vertContribution = Vector3.Zero;
+
                 // Take a vector pointing up and convert it from world to vehicle relative coords.
                 Vector3 verticalError = Vector3.UnitZ * VehicleOrientation;
 
@@ -1308,37 +1304,36 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
                 // Y error means needed rotation around X axis and visa versa.
                 // Since the error goes from zero to one, the asin is the corresponding angle.
-                ret.X = (float)Math.Asin(verticalError.Y);
+                vertContribution.X = (float)Math.Asin(verticalError.Y);
                 // (Tilt forward (positive X) needs to tilt back (rotate negative) around Y axis.)
-                ret.Y = -(float)Math.Asin(verticalError.X);
+                vertContribution.Y = -(float)Math.Asin(verticalError.X);
 
                 // If verticalError.Z is negative, the vehicle is upside down. Add additional push.
                 if (verticalError.Z < 0f)
                 {
-                    ret.X += PIOverFour;
-                    ret.Y += PIOverFour;
+                    vertContribution.X += PIOverFour;
+                    vertContribution.Y += PIOverFour;
                 }
 
-                // 'ret' is now the necessary velocity to correct tilt in one second.
+                // 'vertContrbution' is now the necessary angular correction to correct tilt in one second.
                 //     Correction happens over a number of seconds.
-                Vector3 unscaledContrib = ret;
-                ret /= m_verticalAttractionTimescale;
+                Vector3 unscaledContrib = vertContribution;     // DEBUG DEBUG
+                vertContribution /= m_verticalAttractionTimescale;
+
+                VehicleRotationalVelocity += vertContribution;
 
                 VDetailLog("{0},  MoveAngular,verticalAttraction,,verticalError={1},unscaled={2},eff={3},ts={4},vertAttr={5}",
-                                Prim.LocalID, verticalError, unscaledContrib, m_verticalAttractionEfficiency, m_verticalAttractionTimescale, ret);
+                                Prim.LocalID, verticalError, unscaledContrib, m_verticalAttractionEfficiency, m_verticalAttractionTimescale, vertContribution);
             }
-            return ret;
         }
 
-        // Return the angular correction to correct the direction the vehicle is pointing to be
+        // Angular correction to correct the direction the vehicle is pointing to be
         //      the direction is should want to be pointing.
         // The vehicle is moving in some direction and correct its orientation to it is pointing
         //     in that direction.
         // TODO: implement reference frame.
-        public Vector3 ComputeAngularDeflection()
+        public void ComputeAngularDeflection()
         {
-            Vector3 ret = Vector3.Zero;
-
             // Since angularMotorUp and angularDeflection are computed independently, they will calculate
             //     approximately the same X or Y correction. When added together (when contributions are combined)
             //     this creates an over-correction and then wabbling as the target is overshot.
@@ -1346,6 +1341,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
             if (enableAngularDeflection && m_angularDeflectionEfficiency != 0 && VehicleForwardSpeed > 0.2)
             {
+                Vector3 deflectContribution = Vector3.Zero;
+
                 // The direction the vehicle is moving
                 Vector3 movingDirection = VehicleVelocity;
                 movingDirection.Normalize();
@@ -1371,18 +1368,19 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 // ret = m_angularDeflectionCorrectionMotor(1f, deflectionError);
 
                 // Scale the correction by recovery timescale and efficiency
-                ret = (-deflectionError) * m_angularDeflectionEfficiency;
-                ret /= m_angularDeflectionTimescale;
+                deflectContribution = (-deflectionError) * m_angularDeflectionEfficiency;
+                deflectContribution /= m_angularDeflectionTimescale;
+
+                VehicleRotationalVelocity += deflectContribution;
 
                 VDetailLog("{0},  MoveAngular,Deflection,movingDir={1},pointingDir={2},deflectError={3},ret={4}",
-                    Prim.LocalID, movingDirection, pointingDirection, deflectionError, ret);
+                    Prim.LocalID, movingDirection, pointingDirection, deflectionError, deflectContribution);
                 VDetailLog("{0},  MoveAngular,Deflection,fwdSpd={1},defEff={2},defTS={3}",
                     Prim.LocalID, VehicleForwardSpeed, m_angularDeflectionEfficiency, m_angularDeflectionTimescale);
             }
-            return ret;
         }
 
-        // Return an angular change to rotate the vehicle around the Z axis when the vehicle
+        // Angular change to rotate the vehicle around the Z axis when the vehicle
         //     is tipped around the X axis.
         // From http://wiki.secondlife.com/wiki/Linden_Vehicle_Tutorial:
         //      The vertical attractor feature must be enabled in order for the banking behavior to
@@ -1413,12 +1411,12 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         //      world z-axis is determined by the VEHICLE_BANKING_TIMESCALE. So if you want the vehicle to
         //      bank quickly then give it a banking timescale of about a second or less, otherwise you can
         //      make a sluggish vehicle by giving it a timescale of several seconds. 
-        public Vector3 ComputeAngularBanking()
+        public void ComputeAngularBanking()
         {
-            Vector3 ret = Vector3.Zero;
-
             if (enableAngularBanking && m_bankingEfficiency != 0 && m_verticalAttractionTimescale < m_verticalAttractionCutoff)
             {
+                Vector3 bankingContribution = Vector3.Zero;
+
                 // Rotate a UnitZ vector (pointing up) to how the vehicle is oriented.
                 // As the vehicle rolls to the right or left, the Y value will increase from
                 //     zero (straight up) to 1 or -1 (full tilt right  or left)
@@ -1435,15 +1433,16 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 mixedYawAngle = ClampInRange(-20f, mixedYawAngle, 20f);
 
                 // Build the force vector to change rotation from what it is to what it should be
-                ret.Z = -mixedYawAngle;
+                bankingContribution.Z = -mixedYawAngle;
 
                 // Don't do it all at once.
-                ret /= m_bankingTimescale;
+                bankingContribution /= m_bankingTimescale;
+
+                VehicleRotationalVelocity += bankingContribution;
 
                 VDetailLog("{0},  MoveAngular,Banking,rollComp={1},speed={2},rollComp={3},yAng={4},mYAng={5},ret={6}",
-                            Prim.LocalID, rollComponents, VehicleForwardSpeed, rollComponents, yawAngle, mixedYawAngle, ret);
+                            Prim.LocalID, rollComponents, VehicleForwardSpeed, rollComponents, yawAngle, mixedYawAngle, bankingContribution);
             }
-            return ret;
         }
 
         // This is from previous instantiations of XXXDynamics.cs.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs
index 82fd2d2018..9501e2d4fe 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs
@@ -149,6 +149,7 @@ public class BSVMotor : BSMotor
 
         Vector3 correction = Vector3.Zero;
         Vector3 error = TargetValue - CurrentValue;
+        LastError = error;
         if (!ErrorIsZero(error))
         {
             correction = StepError(timeStep, error);
@@ -188,9 +189,15 @@ public class BSVMotor : BSMotor
         else
         {
             // Difference between what we have and target is small. Motor is done.
-            CurrentValue = TargetValue = Vector3.Zero;
-            MDetailLog("{0},  BSVMotor.Step,zero,{1},origTgt={2},origCurr={3},ret={4}",
-                        BSScene.DetailLogZero, UseName, origCurrVal, origTarget, CurrentValue);
+            if (TargetValue.ApproxEquals(Vector3.Zero, ErrorZeroThreshold))
+            {
+                // The target can step down to nearly zero but not get there.  If close to zero
+                //     it is really zero.
+                TargetValue = Vector3.Zero;
+            }
+            CurrentValue = TargetValue;
+            MDetailLog("{0},  BSVMotor.Step,zero,{1},origTgt={2},origCurr={3},currTgt={4},currCurr={5}",
+                        BSScene.DetailLogZero, UseName, origCurrVal, origTarget, TargetValue, CurrentValue);
         }
 
         return correction;
@@ -205,9 +212,8 @@ public class BSVMotor : BSMotor
     {
         if (!Enabled) return Vector3.Zero;
 
-        LastError = error;
         Vector3 returnCorrection = Vector3.Zero;
-        if (!ErrorIsZero())
+        if (!ErrorIsZero(error))
         {
             // correction =  error / secondsItShouldTakeToCorrect
             Vector3 correctionAmount;
@@ -309,6 +315,7 @@ public class BSFMotor : BSMotor
 
         float correction = 0f;
         float error = TargetValue - CurrentValue;
+        LastError = error;
         if (!ErrorIsZero(error))
         {
             correction = StepError(timeStep, error);
@@ -346,6 +353,12 @@ public class BSFMotor : BSMotor
         else
         {
             // Difference between what we have and target is small. Motor is done.
+            if (Util.InRange<float>(TargetValue, -ErrorZeroThreshold, ErrorZeroThreshold))
+            {
+                // The target can step down to nearly zero but not get there.  If close to zero
+                //     it is really zero.
+                TargetValue = 0f;
+            }
             CurrentValue = TargetValue;
             MDetailLog("{0},  BSFMotor.Step,zero,{1},origTgt={2},origCurr={3},ret={4}",
                         BSScene.DetailLogZero, UseName, origCurrVal, origTarget, CurrentValue);
@@ -358,9 +371,8 @@ public class BSFMotor : BSMotor
     {
         if (!Enabled) return 0f;
 
-        LastError = error;
         float returnCorrection = 0f;
-        if (!ErrorIsZero())
+        if (!ErrorIsZero(error))
         {
             // correction =  error / secondsItShouldTakeToCorrect
             float correctionAmount;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
index 3e80aa4101..6a92365c50 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
@@ -45,6 +45,9 @@ public static class BSParam
 
     public static float MinimumObjectMass { get; private set; }
     public static float MaximumObjectMass { get; private set; }
+    public static float MaxLinearVelocity { get; private set; }
+    public static float MaxAngularVelocity { get; private set; }
+    public static float MaxAddForceMagnitude { get; private set; }
 
     public static float LinearDamping { get; private set; }
     public static float AngularDamping { get; private set; }
@@ -79,6 +82,8 @@ public static class BSParam
 	public static float AvatarStepApproachFactor { get; private set; }
 	public static float AvatarStepForceFactor { get; private set; }
 
+    public static float VehicleMaxLinearVelocity { get; private set; }
+    public static float VehicleMaxAngularVelocity { get; private set; }
     public static float VehicleAngularDamping { get; private set; }
     public static float VehicleDebuggingEnabled { get; private set; }
 
@@ -103,7 +108,6 @@ public static class BSParam
     public const float MaxDensity = 22587f;
     public const float MinRestitution = 0f;
     public const float MaxRestitution = 1f;
-    public const float MaxAddForceMagnitude = 20f;
 
     // ===========================================================================
     public delegate void ParamUser(BSScene scene, IConfig conf, string paramName, float val);
@@ -247,6 +251,22 @@ public static class BSParam
             (s,cf,p,v) => { MaximumObjectMass = cf.GetFloat(p, v); },
             (s) => { return (float)MaximumObjectMass; },
             (s,p,l,v) => { MaximumObjectMass = v; } ),
+        new ParameterDefn("MaxLinearVelocity", "Maximum velocity magnitude that can be assigned to an object",
+            1000.0f,
+            (s,cf,p,v) => { MaxLinearVelocity = cf.GetFloat(p, v); },
+            (s) => { return (float)MaxLinearVelocity; },
+            (s,p,l,v) => { MaxLinearVelocity = v; } ),
+        new ParameterDefn("MaxAngularVelocity", "Maximum rotational velocity magnitude that can be assigned to an object",
+            1000.0f,
+            (s,cf,p,v) => { MaxAngularVelocity = cf.GetFloat(p, v); },
+            (s) => { return (float)MaxAngularVelocity; },
+            (s,p,l,v) => { MaxAngularVelocity = v; } ),
+        // LL documentation says thie number should be 20f
+        new ParameterDefn("MaxAddForceMagnitude", "Maximum force that can be applied by llApplyImpulse (SL says 20f)",
+            200.0f,
+            (s,cf,p,v) => { MaxAddForceMagnitude = cf.GetFloat(p, v); },
+            (s) => { return (float)MaxAddForceMagnitude; },
+            (s,p,l,v) => { MaxAddForceMagnitude = v; } ),
 
         new ParameterDefn("PID_D", "Derivitive factor for motion smoothing",
             2200f,
@@ -423,6 +443,16 @@ public static class BSParam
             (s) => { return AvatarStepForceFactor; },
             (s,p,l,v) => { AvatarStepForceFactor = v; } ),
 
+        new ParameterDefn("VehicleMaxLinearVelocity", "Maximum velocity magnitude that can be assigned to a vehicle",
+            1000.0f,
+            (s,cf,p,v) => { VehicleMaxLinearVelocity = cf.GetFloat(p, v); },
+            (s) => { return (float)VehicleMaxLinearVelocity; },
+            (s,p,l,v) => { VehicleMaxLinearVelocity = v; } ),
+        new ParameterDefn("VehicleMaxAngularVelocity", "Maximum rotational velocity magnitude that can be assigned to a vehicle",
+            12.0f,
+            (s,cf,p,v) => { VehicleMaxAngularVelocity = cf.GetFloat(p, v); },
+            (s) => { return (float)VehicleMaxAngularVelocity; },
+            (s,p,l,v) => { VehicleMaxAngularVelocity = v; } ),
         new ParameterDefn("VehicleAngularDamping", "Factor to damp vehicle angular movement per second (0.0 - 1.0)",
             0.95f,
             (s,cf,p,v) => { VehicleAngularDamping = cf.GetFloat(p, v); },
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 22afdc9613..b63523c305 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -989,10 +989,10 @@ public sealed class BSPrim : BSPhysObject
         }
         set {
             _rotationalVelocity = value;
+            Util.ClampV(_rotationalVelocity, BSParam.MaxAngularVelocity);
             // m_log.DebugFormat("{0}: RotationalVelocity={1}", LogHeader, _rotationalVelocity);
             PhysicsScene.TaintedObject("BSPrim.setRotationalVelocity", delegate()
             {
-                DetailLog("{0},BSPrim.SetRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
                 ForceRotationalVelocity = _rotationalVelocity;
             });
         }
@@ -1005,6 +1005,7 @@ public sealed class BSPrim : BSPhysObject
             _rotationalVelocity = value;
             if (PhysBody.HasPhysicalBody)
             {
+                DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
                 PhysicsScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
                 ActivateIfPhysical(false);
             }
@@ -1193,10 +1194,14 @@ public sealed class BSPrim : BSPhysObject
     public override float APIDDamping { set { return; } }
 
     public override void AddForce(OMV.Vector3 force, bool pushforce) {
+        // Per documentation, max force is limited.
+        OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
+
         // Since this force is being applied in only one step, make this a force per second.
-        OMV.Vector3 addForce = force / PhysicsScene.LastTimeStep;
-        AddForce(addForce, pushforce, false);
+        addForce /= PhysicsScene.LastTimeStep;
+        AddForce(addForce, pushforce, false /* inTaintTime */);
     }
+
     // Applying a force just adds this to the total force on the object.
     // This added force will only last the next simulation tick.
     public void AddForce(OMV.Vector3 force, bool pushforce, bool inTaintTime) {
@@ -1205,9 +1210,9 @@ public sealed class BSPrim : BSPhysObject
         {
             if (force.IsFinite())
             {
-                OMV.Vector3 addForce = Util.ClampV(force, BSParam.MaxAddForceMagnitude);
                 // DetailLog("{0},BSPrim.addForce,call,force={1}", LocalID, addForce);
 
+                OMV.Vector3 addForce = force;
                 PhysicsScene.TaintedObject(inTaintTime, "BSPrim.AddForce", delegate()
                 {
                     // Bullet adds this central force to the total force for this tick

From 3f6698a595593edc4027ff58cbebf947a6b5ac1f Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Mon, 21 Jan 2013 09:19:09 -0800
Subject: [PATCH 24/36] BulletSim: remove unused MaxTaintsToProcessPerStep
 parameter

---
 OpenSim/Region/Physics/BulletSPlugin/BSParam.cs        | 10 +++-------
 OpenSim/Region/Physics/BulletSPlugin/BSScene.cs        |  1 -
 OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt |  2 ++
 3 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
index 6a92365c50..2b4488a728 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
@@ -236,11 +236,7 @@ public static class BSParam
             (s,cf,p,v) => { s.m_maxUpdatesPerFrame = cf.GetInt(p, (int)v); },
             (s) => { return (float)s.m_maxUpdatesPerFrame; },
             (s,p,l,v) => { s.m_maxUpdatesPerFrame = (int)v; } ),
-        new ParameterDefn("MaxTaintsToProcessPerStep", "Number of update taints to process before each simulation step",
-            500f,
-            (s,cf,p,v) => { s.m_taintsToProcessPerStep = cf.GetInt(p, (int)v); },
-            (s) => { return (float)s.m_taintsToProcessPerStep; },
-            (s,p,l,v) => { s.m_taintsToProcessPerStep = (int)v; } ),
+
         new ParameterDefn("MinObjectMass", "Minimum object mass (0.0001)",
             0.0001f,
             (s,cf,p,v) => { MinimumObjectMass = cf.GetFloat(p, v); },
@@ -261,9 +257,9 @@ public static class BSParam
             (s,cf,p,v) => { MaxAngularVelocity = cf.GetFloat(p, v); },
             (s) => { return (float)MaxAngularVelocity; },
             (s,p,l,v) => { MaxAngularVelocity = v; } ),
-        // LL documentation says thie number should be 20f
+        // LL documentation says thie number should be 20f for llApplyImpulse and 200f for llRezObject
         new ParameterDefn("MaxAddForceMagnitude", "Maximum force that can be applied by llApplyImpulse (SL says 20f)",
-            200.0f,
+            20000.0f,
             (s,cf,p,v) => { MaxAddForceMagnitude = cf.GetFloat(p, v); },
             (s) => { return (float)MaxAddForceMagnitude; },
             (s,p,l,v) => { MaxAddForceMagnitude = v; } ),
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index e0b4992e0d..12b1ef10f2 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -81,7 +81,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
     internal long m_simulationStep = 0;
     internal float NominalFrameRate { get; set; }
     public long SimulationStep { get { return m_simulationStep; } }
-    internal int m_taintsToProcessPerStep;
     internal float LastTimeStep { get; private set; }
 
     // Physical objects can register for prestep or poststep events
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index 23b7ca85d9..c1bf76690d 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -2,6 +2,8 @@ CURRENT PRIORITIES
 =================================================
 Mantis 6040 script http://opensimulator.org/mantis/view.php?id=6040
 	Msg Kayaker on OSGrid when working
+when should angular and linear motor targets be zeroed? when selected?
+	Need a vehicle.clear()? Or an 'else' in prestep if not physical.
 Teravus llMoveToTarget script debug
 	Mixing of hover, buoyancy/gravity, moveToTarget, into one force
 Boats floating at proper level

From 95c53ecae708c8f915e02c4f872c931efdd6c29a Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Mon, 21 Jan 2013 15:55:54 -0800
Subject: [PATCH 25/36] Have SOP and LSL_Api call the proper GetCenterOfMass
 and GetGeometricCenter routines on the physics engine. Won't make a
 difference for any existing scripts since ODE always returned Vector3.Zero.

---
 OpenSim/Region/Framework/Scenes/SceneObjectPart.cs     | 10 ++++++++++
 .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs  |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 44e8fdf7c9..e0ea344d2e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1951,6 +1951,16 @@ namespace OpenSim.Region.Framework.Scenes
         {
             PhysicsActor pa = PhysActor;
 
+            if (pa != null)
+                return new Vector3(pa.GeometricCenter.X, pa.GeometricCenter.Y, pa.GeometricCenter.Z);
+            else
+                return new Vector3(0, 0, 0);
+        }
+
+        public Vector3 GetCenterOfMass()
+        {
+            PhysicsActor pa = PhysActor;
+
             if (pa != null)
                 return new Vector3(pa.CenterOfMass.X, pa.CenterOfMass.Y, pa.CenterOfMass.Z);
             else
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index db5add19e6..507c3997f5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4923,7 +4923,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
         public LSL_Vector llGetCenterOfMass()
         {
             m_host.AddScriptLPS(1);
-            Vector3 center = m_host.GetGeometricCenter();
+            Vector3 center = m_host.GetCenterOfMass();
             return new LSL_Vector(center.X,center.Y,center.Z);
         }
 

From 471c4778639aec60078e6cee7c964682c959f033 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Mon, 21 Jan 2013 15:58:22 -0800
Subject: [PATCH 26/36] BulletSim: allow changing position and rotation of a
 child of a linkset without rebuilding the whole compound shape. Should make
 vehicles move smoother.

---
 .../Physics/BulletSPlugin/BSCharacter.cs      |  2 +-
 .../Region/Physics/BulletSPlugin/BSLinkset.cs |  2 +-
 .../BulletSPlugin/BSLinksetCompound.cs        | 94 +++++++++++++++----
 .../BulletSPlugin/BSLinksetConstraints.cs     |  2 +-
 .../Physics/BulletSPlugin/BSPhysObject.cs     | 10 ++
 .../Region/Physics/BulletSPlugin/BSPrim.cs    | 16 ++--
 .../Region/Physics/BulletSPlugin/BSScene.cs   |  4 -
 .../Physics/BulletSPlugin/BulletSimTODO.txt   | 28 +++---
 8 files changed, 112 insertions(+), 46 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index a9e16e685d..76032541ef 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -899,7 +899,7 @@ public sealed class BSCharacter : BSPhysObject
         CurrentEntityProperties = entprop;
 
         // Tell the linkset about value changes
-        Linkset.UpdateProperties(this, true);
+        Linkset.UpdateProperties(UpdatedProperties.EntPropUpdates, this);
 
         // Avatars don't report their changes the usual way. Changes are checked for in the heartbeat loop.
         // base.RequestPhysicsterseUpdate();
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
index cbd160fb81..580ea4e689 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
@@ -252,7 +252,7 @@ public abstract class BSLinkset
     //      of the linkset is received.
     // Passed flag is update came from physics engine (true) or the user (false).
     // Called at taint-time!!
-    public abstract void UpdateProperties(BSPhysObject physObject, bool physicalUpdate);
+    public abstract void UpdateProperties(UpdatedProperties whichUpdated, BSPhysObject physObject);
 
     // Routine used when rebuilding the body of the root of the linkset
     // Destroy all the constraints have have been made to root.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index 8c9a7745f0..27d8ad0ef9 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -51,6 +51,21 @@ sealed class BSLinksetCompoundInfo : BSLinksetInfo
         OffsetFromCenterOfMass = p;
         OffsetRot = r;
     }
+    // 'centerDisplacement' is the distance from the root the the center-of-mass (Bullet 'zero' of the shape)
+    public BSLinksetCompoundInfo(int indx, BSPhysObject root, BSPhysObject child, OMV.Vector3 centerDisplacement)
+    {
+        // Each child position and rotation is given relative to the center-of-mass.
+        OMV.Quaternion invRootOrientation = OMV.Quaternion.Inverse(root.RawOrientation);
+        OMV.Vector3 displacementFromRoot = (child.RawPosition - root.RawPosition) * invRootOrientation;
+        OMV.Vector3 displacementFromCOM = displacementFromRoot - centerDisplacement;
+        OMV.Quaternion displacementRot = child.RawOrientation * invRootOrientation;
+
+        // Save relative position for recomputing child's world position after moving linkset.
+        Index = indx;
+        OffsetFromRoot = displacementFromRoot;
+        OffsetFromCenterOfMass = displacementFromCOM;
+        OffsetRot = displacementRot;
+    }
     public override void Clear()
     {
         Index = 0;
@@ -182,24 +197,71 @@ public sealed class BSLinksetCompound : BSLinkset
 
     // 'physicalUpdate' is true if these changes came directly from the physics engine. Don't need to rebuild then.
     // Called at taint-time.
-    public override void UpdateProperties(BSPhysObject updated, bool physicalUpdate)
+    public override void UpdateProperties(UpdatedProperties whichUpdated, BSPhysObject updated)
     {
         // The user moving a child around requires the rebuilding of the linkset compound shape
         // One problem is this happens when a border is crossed -- the simulator implementation
-        //    is to store the position into the group which causes the move of the object
+        //    stores the position into the group which causes the move of the object
         //    but it also means all the child positions get updated.
         //    What would cause an unnecessary rebuild so we make sure the linkset is in a
         //    region before bothering to do a rebuild.
-        if (!IsRoot(updated) 
-                && !physicalUpdate 
-                && PhysicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition))
+        if (!IsRoot(updated) && PhysicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition))
         {
-            // TODO: replace this with are calculation of the child prim's orientation and pos.
-            // TODO: for the moment, don't rebuild the compound shape.
-            //    This is often just the car turning its wheels. When we can just reorient the one
-            //    member shape of the compound shape, the overhead of rebuilding won't be a problem.
-            // updated.LinksetInfo = null;
-            // ScheduleRebuild(updated);
+            // If a child of the linkset is updating only the position or rotation, that can be done
+            //    without rebuilding the linkset.
+            // If a handle for the child can be fetch, we update the child here. If a rebuild was
+            //    scheduled by someone else, the rebuild will just replace this setting.
+
+            bool updatedChild = false;
+            // Anything other than updating position or orientation usually means a physical update
+            //     and that is caused by us updating the object.
+            if ((whichUpdated & ~(UpdatedProperties.Position | UpdatedProperties.Orientation)) == 0)
+            {
+                // Gather the child info. It might not be there if the linkset is in transition.
+                BSLinksetCompoundInfo lsi = updated.LinksetInfo as BSLinksetCompoundInfo;
+                if (LinksetRoot.PhysShape.HasPhysicalShape && lsi != null)
+                {
+                    if (PhysicsScene.PE.IsCompound(LinksetRoot.PhysShape))
+                    {
+                        BulletShape linksetChildShape = PhysicsScene.PE.GetChildShapeFromCompoundShapeIndex(LinksetRoot.PhysShape, lsi.Index);
+                        if (linksetChildShape.HasPhysicalShape)
+                        {
+                            // Compute the offset from the center-of-gravity
+                            BSLinksetCompoundInfo newLsi = new BSLinksetCompoundInfo(lsi.Index, LinksetRoot, updated, LinksetRoot.PositionDisplacement);
+                            PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape, lsi.Index,
+                                                                        newLsi.OffsetFromCenterOfMass,
+                                                                        newLsi.OffsetRot,
+                                                                        true /* shouldRecalculateLocalAabb */);
+                            DetailLog("{0},BSLinksetCompound.UpdateProperties,changeChildPosRot,whichUpdated={1}newLsi={2}",
+                                                                        updated.LocalID, whichUpdated, newLsi);
+                            updated.LinksetInfo = newLsi;
+                            updatedChild = true;
+                        }
+                        else    // DEBUG DEBUG
+                        {       // DEBUG DEBUG
+                            DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,noChildShape,shape={1}",
+                                                                        updated.LocalID, linksetChildShape);
+                        }       // DEBUG DEBUG
+                    }
+                    else    // DEBUG DEBUG
+                    {       // DEBUG DEBUG
+                        DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,notCompound", updated.LocalID);
+                    }       // DEBUG DEBUG
+                }
+                else    // DEBUG DEBUG
+                {       // DEBUG DEBUG
+                    DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,rootPhysShape={1},lsi={2}",
+                                updated.LocalID, LinksetRoot.PhysShape, lsi == null ? "NULL" : lsi.ToString());
+                }       // DEBUG DEBUG
+                if (!updatedChild)
+                {
+                    // If couldn't do the individual child, the linkset needs a rebuild to incorporate the new child info.
+                    DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild.schedulingRebuild,whichUpdated={1}",
+                                                                    updated.LocalID, whichUpdated);
+                    updated.LinksetInfo = null; // setting to 'null' causes relative position to be recomputed.
+                    ScheduleRebuild(updated);
+                }
+            }
         }
     }
 
@@ -372,15 +434,7 @@ public sealed class BSLinksetCompound : BSLinkset
                     BSLinksetCompoundInfo lci = cPrim.LinksetInfo as BSLinksetCompoundInfo;
                     if (lci == null)
                     {
-                        // Each child position and rotation is given relative to the center-of-mass.
-                        OMV.Quaternion invRootOrientation = OMV.Quaternion.Inverse(LinksetRoot.RawOrientation);
-                        OMV.Vector3 displacementFromRoot = (cPrim.RawPosition - LinksetRoot.RawPosition) * invRootOrientation;
-                        OMV.Vector3 displacementFromCOM = displacementFromRoot - centerDisplacement;
-                        OMV.Quaternion displacementRot = cPrim.RawOrientation * invRootOrientation;
-
-                        // Save relative position for recomputing child's world position after moving linkset.
-                        lci = new BSLinksetCompoundInfo(memberIndex, displacementFromCOM, displacementRot);
-                        lci.OffsetFromRoot = displacementFromRoot;
+                        lci = new BSLinksetCompoundInfo(memberIndex, LinksetRoot, cPrim, centerDisplacement);
                         cPrim.LinksetInfo = lci;
                         DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,creatingRelPos,lci={1}", cPrim.LocalID, lci);
                     }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
index d0b2a567a4..89f186c206 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
@@ -83,7 +83,7 @@ public sealed class BSLinksetConstraints : BSLinkset
     }
 
     // Called at taint-time!!
-    public override void UpdateProperties(BSPhysObject updated, bool inTaintTime)
+    public override void UpdateProperties(UpdatedProperties whichUpdated, BSPhysObject pObj)
     {
         // Nothing to do for constraints on property updates
     }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index 5353c756cf..027c786ce7 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -55,6 +55,16 @@ namespace OpenSim.Region.Physics.BulletSPlugin
  * BS.ApplyCentralForce BS.ApplyTorque              
  */
 
+// Flags used to denote which properties updates when making UpdateProperties calls to linksets, etc.
+public enum UpdatedProperties : uint
+{
+    Position                = 1 << 0,
+    Orientation             = 1 << 1,
+    Velocity                = 1 << 2,
+    Acceleration            = 1 << 3,
+    RotationalVelocity      = 1 << 4,
+    EntPropUpdates          = Position | Orientation | Velocity | Acceleration | RotationalVelocity,
+}
 public abstract class BSPhysObject : PhysicsActor
 {
     protected BSPhysObject()
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index b63523c305..468ff40dee 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -311,13 +311,14 @@ public sealed class BSPrim : BSPhysObject
             _position = value;
             PositionSanityCheck(false);
 
-            // A linkset might need to know if a component information changed.
-            Linkset.UpdateProperties(this, false);
-
             PhysicsScene.TaintedObject("BSPrim.setPosition", delegate()
             {
                 DetailLog("{0},BSPrim.SetPosition,taint,pos={1},orient={2}", LocalID, _position, _orientation);
                 ForcePosition = _position;
+
+                // A linkset might need to know if a component information changed.
+                Linkset.UpdateProperties(UpdatedProperties.Position, this);
+
             });
         }
     }
@@ -682,12 +683,13 @@ public sealed class BSPrim : BSPhysObject
                 return;
             _orientation = value;
 
-            // A linkset might need to know if a component information changed.
-            Linkset.UpdateProperties(this, false);
-
             PhysicsScene.TaintedObject("BSPrim.setOrientation", delegate()
             {
                 ForceOrientation = _orientation;
+
+                // A linkset might need to know if a component information changed.
+                Linkset.UpdateProperties(UpdatedProperties.Orientation, this);
+
             });
         }
     }
@@ -1686,7 +1688,7 @@ public sealed class BSPrim : BSPhysObject
              */
 
         // The linkset implimentation might want to know about this.
-        Linkset.UpdateProperties(this, true);
+        Linkset.UpdateProperties(UpdatedProperties.EntPropUpdates, this);
     }
 }
 }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index 12b1ef10f2..8075b73b05 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -846,8 +846,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
 
     #endregion // Taints
 
-    #region INI and command line parameter processing
-
     #region IPhysicsParameters
     // Get the list of parameters this physics engine supports
     public PhysParameterEntry[] GetParameterList()
@@ -944,8 +942,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
 
     #endregion IPhysicsParameters
 
-    #endregion Runtime settable parameters
-
     // Invoke the detailed logger and output something if it's enabled.
     public void DetailLog(string msg, params Object[] args)
     {
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index c1bf76690d..41bab2601d 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -1,25 +1,20 @@
 CURRENT PRIORITIES
 =================================================
-Mantis 6040 script http://opensimulator.org/mantis/view.php?id=6040
-	Msg Kayaker on OSGrid when working
+Child movement in linkset (don't rebuild linkset)
+Vehicle angular vertical attraction
+vehicle angular banking
+Center-of-gravity
+Vehicle angular deflection
+	Preferred orientation angular correction fix
 when should angular and linear motor targets be zeroed? when selected?
 	Need a vehicle.clear()? Or an 'else' in prestep if not physical.
 Teravus llMoveToTarget script debug
 	Mixing of hover, buoyancy/gravity, moveToTarget, into one force
-Boats floating at proper level
 Nebadon vehicles turning funny in arena
 limitMotorUp calibration (more down?)
 llRotLookAt
 llLookAt
-Vehicle angular vertical attraction
-Vehicle angular deflection
-	Preferred orientation angular correction fix
-vehicle angular banking
 Avatars walking up stairs (HALF DONE)
-    Radius of the capsule affects ability to climb edges.
-Vehicle movement on terrain smoothness
-When is force introduced by SetForce removed? The prestep action could go forever.
-Boats float low in the water (DONE)
 Avatar movement
 	flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE)
 	walking up stairs is not calibrated correctly (stairs out of Kepler cabin)
@@ -75,6 +70,7 @@ Incorporate inter-relationship of angular corrections. For instance, angularDefl
 
 GENERAL TODO LIST:
 =================================================
+llMoveToTarget objects are not effected by gravity until target is removed.
 Implement llSetPhysicalMaterial.
 	extend it with Center-of-mass, rolling friction, density
 Implement llSetForceAndTorque.
@@ -315,4 +311,12 @@ Remove HeightmapInfo from terrain specification (DONE)
     Since C++ code does not need terrain height, this structure et al are not needed.
 Surfboard go wonky when turning (DONE)
 	Angular motor direction is global coordinates rather than local coordinates?
-	(Resolution: made angular motor direction correct coordinate system)
\ No newline at end of file
+	(Resolution: made angular motor direction correct coordinate system)
+Mantis 6040 script http://opensimulator.org/mantis/view.php?id=6040 (DONE)
+	Msg Kayaker on OSGrid when working
+	(Resolution: LINEAR_DIRECTION is in vehicle coords. Test script does the
+	same in SL as in OS/BulletSim)
+Boats float low in the water (DONE)
+Boats floating at proper level (DONE)
+When is force introduced by SetForce removed? The prestep action could go forever. (DONE)
+	(Resolution: setForce registers a prestep action which keeps applying the force)
\ No newline at end of file

From 80b1e32bfa00a2d3354f0d7e0df83a5b0b3e2c49 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Mon, 21 Jan 2013 23:43:24 -0800
Subject: [PATCH 27/36] BulletSim: Tweeks to vehicle motion. Pass through old
 angular velocity making for smoother transitions. Remove some old kludges for
 angular motion (damping and rotvel suppression).

---
 .../Physics/BulletSPlugin/BSDynamics.cs       | 21 +++++++------------
 .../Region/Physics/BulletSPlugin/BSParam.cs   |  2 +-
 .../Region/Physics/BulletSPlugin/BSPrim.cs    |  3 ++-
 3 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index f8fc3de446..dbe44de5f4 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -1192,7 +1192,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         //     set directly on the vehicle.
         private void MoveAngular(float pTimestep)
         {
-            VehicleRotationalVelocity = Vector3.Zero;
+            // VehicleRotationalVelocity = Vector3.Zero;
 
             ComputeAngularTurning(pTimestep);
 
@@ -1202,12 +1202,6 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
             ComputeAngularBanking();
 
-            // ==================================================================
-            // All of the above computation are made relative to vehicle coordinates.
-            // Convert to world coordinates.
-            // TODO: Should this be applied as an angular force (torque)?
-            VehicleRotationalVelocity *= VehicleOrientation;
-
             // ==================================================================
             if (VehicleRotationalVelocity.ApproxEquals(Vector3.Zero, 0.01f))
             {
@@ -1256,7 +1250,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         private void ComputeAngularTurning(float pTimestep)
         {
             // The user wants this many radians per second angular change?
-            Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep);
+            Vector3 currentAngular = VehicleRotationalVelocity * Quaternion.Inverse(VehicleOrientation);
+            Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep, currentAngular);
 
             // ==================================================================
             // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
@@ -1272,7 +1267,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 angularMotorContribution.Y = 0f;
             }
 
-            VehicleRotationalVelocity += angularMotorContribution;
+            VehicleRotationalVelocity += angularMotorContribution * VehicleOrientation;
             VDetailLog("{0},  MoveAngular,angularTurning,angularMotorContrib={1}", Prim.LocalID, angularMotorContribution);
         }
 
@@ -1312,7 +1307,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 if (verticalError.Z < 0f)
                 {
                     vertContribution.X += PIOverFour;
-                    vertContribution.Y += PIOverFour;
+                    // vertContribution.Y -= PIOverFour;
                 }
 
                 // 'vertContrbution' is now the necessary angular correction to correct tilt in one second.
@@ -1320,7 +1315,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 Vector3 unscaledContrib = vertContribution;     // DEBUG DEBUG
                 vertContribution /= m_verticalAttractionTimescale;
 
-                VehicleRotationalVelocity += vertContribution;
+                VehicleRotationalVelocity += vertContribution * VehicleOrientation;
 
                 VDetailLog("{0},  MoveAngular,verticalAttraction,,verticalError={1},unscaled={2},eff={3},ts={4},vertAttr={5}",
                                 Prim.LocalID, verticalError, unscaledContrib, m_verticalAttractionEfficiency, m_verticalAttractionTimescale, vertContribution);
@@ -1371,7 +1366,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 deflectContribution = (-deflectionError) * m_angularDeflectionEfficiency;
                 deflectContribution /= m_angularDeflectionTimescale;
 
-                VehicleRotationalVelocity += deflectContribution;
+                VehicleRotationalVelocity += deflectContribution * VehicleOrientation;
 
                 VDetailLog("{0},  MoveAngular,Deflection,movingDir={1},pointingDir={2},deflectError={3},ret={4}",
                     Prim.LocalID, movingDirection, pointingDirection, deflectionError, deflectContribution);
@@ -1438,7 +1433,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 // Don't do it all at once.
                 bankingContribution /= m_bankingTimescale;
 
-                VehicleRotationalVelocity += bankingContribution;
+                VehicleRotationalVelocity += bankingContribution * VehicleOrientation;
 
                 VDetailLog("{0},  MoveAngular,Banking,rollComp={1},speed={2},rollComp={3},yAng={4},mYAng={5},ret={6}",
                             Prim.LocalID, rollComponents, VehicleForwardSpeed, rollComponents, yawAngle, mixedYawAngle, bankingContribution);
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
index 2b4488a728..da7438a4ae 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
@@ -450,7 +450,7 @@ public static class BSParam
             (s) => { return (float)VehicleMaxAngularVelocity; },
             (s,p,l,v) => { VehicleMaxAngularVelocity = v; } ),
         new ParameterDefn("VehicleAngularDamping", "Factor to damp vehicle angular movement per second (0.0 - 1.0)",
-            0.95f,
+            0.0f,
             (s,cf,p,v) => { VehicleAngularDamping = cf.GetFloat(p, v); },
             (s) => { return VehicleAngularDamping; },
             (s,p,l,v) => { VehicleAngularDamping = v; } ),
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 468ff40dee..e6b8507337 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -1009,6 +1009,7 @@ public sealed class BSPrim : BSPhysObject
             {
                 DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
                 PhysicsScene.PE.SetAngularVelocity(PhysBody, _rotationalVelocity);
+                // PhysicsScene.PE.SetInterpolationAngularVelocity(PhysBody, _rotationalVelocity);
                 ActivateIfPhysical(false);
             }
         }
@@ -1649,7 +1650,7 @@ public sealed class BSPrim : BSPhysObject
             // TODO: handle physics introduced by Bullet with computed vehicle physics.
             if (_vehicle.IsActive)
             {
-                entprop.RotationalVelocity = OMV.Vector3.Zero;
+                // entprop.RotationalVelocity = OMV.Vector3.Zero;
             }
 
             // Assign directly to the local variables so the normal set actions do not happen

From 1776986dc30d0ed5629da797a3a5c0bcdf4e9f72 Mon Sep 17 00:00:00 2001
From: BlueWall <jamesh@bluewallgroup.com>
Date: Wed, 23 Jan 2013 08:14:21 -0500
Subject: [PATCH 28/36] Add additional return status

  Adding additional return status for JsonRpcMethod. Now returns true/false
---
 .../Servers/HttpServer/BaseHttpServer.cs      | 25 ++++++++++++++++---
 .../Servers/HttpServer/JsonRPCMethod.cs       |  2 +-
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 85b19c067e..cf1c753a33 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -1025,7 +1025,8 @@ namespace OpenSim.Framework.Servers.HttpServer
             return buffer;
         }
 
-        // JsonRpc (v2.0 only)
+        // JsonRpc (v2.0 only) 
+        // Batch requests not yet supported
         private byte[] HandleJsonRpcRequests(OSHttpRequest request, OSHttpResponse response)
         {
             Stream requestStream = request.InputStream;
@@ -1065,8 +1066,26 @@ namespace OpenSim.Framework.Servers.HttpServer
                         {
                             jsonRpcHandlers.TryGetValue(methodname, out method);
                         }
-
-                        method(jsonRpcRequest, ref jsonRpcResponse);
+                        bool res = false;
+                        try
+                        {
+                            res = method(jsonRpcRequest, ref jsonRpcResponse);
+                            if(!res)
+                            {
+                                // The handler sent back an unspecified error
+                                if(jsonRpcResponse.Error.Code == 0)
+                                {
+                                    jsonRpcResponse.Error.Code = ErrorCode.InternalError;
+                                }
+                            }
+                        }
+                        catch (Exception e)
+                        {
+                            string ErrorMessage = string.Format("[BASE HTTP SERVER]: Json-Rpc Handler Error method {0} - {1}", methodname, e.Message);
+                            m_log.Error(ErrorMessage);
+                            jsonRpcResponse.Error.Code = ErrorCode.InternalError;
+                            jsonRpcResponse.Error.Message = ErrorMessage;
+                        }
                     }
                     else // Error no hanlder defined for requested method
                     {
diff --git a/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs b/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs
index 7334049ab4..5bab50871f 100644
--- a/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs
+++ b/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs
@@ -30,5 +30,5 @@ using OpenMetaverse.StructuredData;
 
 namespace OpenSim.Framework.Servers.HttpServer
 {
-    public delegate void JsonRPCMethod(OSDMap jsonRpcRequest, ref JsonRpcResponse response);
+    public delegate bool JsonRPCMethod(OSDMap jsonRpcRequest, ref JsonRpcResponse response);
 }

From 6a2b673fca6fcff4e358cf4ef6bd773f8a0488ba Mon Sep 17 00:00:00 2001
From: Melanie <melanie@t-data.com>
Date: Wed, 23 Jan 2013 18:58:29 +0100
Subject: [PATCH 29/36] Remove the return value from llGiveMoney and add
 llTransferLindenDollars. Also make llGiveMoney async so the script thread is
 not held up waiting for comms to an external server.

---
 .../Shared/Api/Implementation/LSL_Api.cs      | 135 ++++++++++++++----
 .../Shared/Api/Interface/ILSL_Api.cs          |   3 +-
 .../Shared/Api/Runtime/LSL_Stub.cs            |   9 +-
 3 files changed, 114 insertions(+), 33 deletions(-)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 507c3997f5..632b73f2bd 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2738,42 +2738,40 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             return src.ToLower();
         }
 
-        public LSL_Integer llGiveMoney(string destination, int amount)
+        public void llGiveMoney(string destination, int amount)
         {
-            m_host.AddScriptLPS(1);
-
-            if (m_item.PermsGranter == UUID.Zero)
-                return 0;
-
-            if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
+            Util.FireAndForget(x =>
             {
-                LSLError("No permissions to give money");
-                return 0;
-            }
+                m_host.AddScriptLPS(1);
 
-            UUID toID = new UUID();
+                if (m_item.PermsGranter == UUID.Zero)
+                    return;
 
-            if (!UUID.TryParse(destination, out toID))
-            {
-                LSLError("Bad key in llGiveMoney");
-                return 0;
-            }
+                if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
+                {
+                    LSLError("No permissions to give money");
+                    return;
+                }
 
-            IMoneyModule money = World.RequestModuleInterface<IMoneyModule>();
+                UUID toID = new UUID();
 
-            if (money == null)
-            {
-                NotImplemented("llGiveMoney");
-                return 0;
-            }
+                if (!UUID.TryParse(destination, out toID))
+                {
+                    LSLError("Bad key in llGiveMoney");
+                    return;
+                }
 
-            bool result = money.ObjectGiveMoney(
-                m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
+                IMoneyModule money = World.RequestModuleInterface<IMoneyModule>();
 
-            if (result)
-                return 1;
+                if (money == null)
+                {
+                    NotImplemented("llGiveMoney");
+                    return;
+                }
 
-            return 0;
+                money.ObjectGiveMoney(
+                    m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
+            });
         }
 
         public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
@@ -6839,7 +6837,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
         {
             m_host.AddScriptLPS(1);
             IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
-            if (xmlrpcMod.IsEnabled())
+            if (xmlrpcMod != null && xmlrpcMod.IsEnabled())
             {
                 UUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_host.LocalId, m_item.ItemID, UUID.Zero);
                 IXmlRpcRouter xmlRpcRouter = m_ScriptEngine.World.RequestModuleInterface<IXmlRpcRouter>();
@@ -6871,6 +6869,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             m_host.AddScriptLPS(1);
             IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
             ScriptSleep(3000);
+            if (xmlrpcMod == null)
+                return "";
             return (xmlrpcMod.SendRemoteData(m_host.LocalId, m_item.ItemID, channel, dest, idata, sdata)).ToString();
         }
 
@@ -6878,7 +6878,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
         {
             m_host.AddScriptLPS(1);
             IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
-            xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata);
+            if (xmlrpcMod != null)
+                xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata);
             ScriptSleep(3000);
         }
 
@@ -6893,7 +6894,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             }
 
             IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>();
-            xmlrpcMod.CloseXMLRPCChannel((UUID)channel);
+            if (xmlrpcMod != null)
+                xmlrpcMod.CloseXMLRPCChannel((UUID)channel);
             ScriptSleep(1000);
         }
 
@@ -11554,6 +11556,79 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             NotImplemented("llGodLikeRezObject");
         }
 
+        public LSL_String llTransferLindenDollars(string destination, int amount)
+        {
+            UUID txn = UUID.Random();
+
+            Util.FireAndForget(delegate(object x)
+            {
+                int replycode = 0;
+                string replydata = destination + "," + amount.ToString();
+
+                try
+                {
+                    TaskInventoryItem item = m_item;
+                    if (item == null)
+                    {
+                        replydata = "SERVICE_ERROR";
+                        return;
+                    }
+
+                    m_host.AddScriptLPS(1);
+
+                    if (item.PermsGranter == UUID.Zero)
+                    {
+                        replydata = "MISSING_PERMISSION_DEBIT";
+                        return;
+                    }
+
+                    if ((item.PermsMask & ScriptBaseClass.PERMISSION_DEBIT) == 0)
+                    {
+                        replydata = "MISSING_PERMISSION_DEBIT";
+                        return;
+                    }
+
+                    UUID toID = new UUID();
+
+                    if (!UUID.TryParse(destination, out toID))
+                    {
+                        replydata = "INVALID_AGENT";
+                        return;
+                    }
+
+                    IMoneyModule money = World.RequestModuleInterface<IMoneyModule>();
+
+                    if (money == null)
+                    {
+                        replydata = "TRANSFERS_DISABLED";
+                        return;
+                    }
+
+                    bool result = money.ObjectGiveMoney(
+                        m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
+
+                    if (result)
+                    {
+                        replycode = 1;
+                        return;
+                    }
+
+                    replydata = "LINDENDOLLAR_INSUFFICIENTFUNDS";
+                }
+                finally
+                {
+                    m_ScriptEngine.PostScriptEvent(m_item.ItemID, new EventParams(
+                            "transaction_result", new Object[] {
+                            new LSL_String(txn.ToString()),
+                            new LSL_Integer(replycode),
+                            new LSL_String(replydata) },
+                            new DetectParams[0]));
+                }
+            });
+
+            return txn.ToString();
+        }
+
         #endregion
     }
 
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
index 98f8be7175..4ac179af05 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
@@ -207,7 +207,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
          LSL_Float llGetWallclock();
               void llGiveInventory(string destination, string inventory);
               void llGiveInventoryList(string destination, string category, LSL_List inventory);
-       LSL_Integer llGiveMoney(string destination, int amount);
+              void llGiveMoney(string destination, int amount);
+        LSL_String llTransferLindenDollars(string destination, int amount);
               void llGodLikeRezObject(string inventory, LSL_Vector pos);
          LSL_Float llGround(LSL_Vector offset);
         LSL_Vector llGroundContour(LSL_Vector offset);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
index 36803a4ae2..c7a7cf663e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
@@ -869,9 +869,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
             m_LSL_Functions.llGiveInventoryList(destination, category, inventory);
         }
 
-        public LSL_Integer llGiveMoney(string destination, int amount)
+        public void llGiveMoney(string destination, int amount)
         {
-            return m_LSL_Functions.llGiveMoney(destination, amount);
+            m_LSL_Functions.llGiveMoney(destination, amount);
+        }
+
+        public LSL_String llTransferLindenDollars(string destination, int amount)
+        {
+            return m_LSL_Functions.llTransferLindenDollars(destination, amount);
         }
 
         public void llGodLikeRezObject(string inventory, LSL_Vector pos)

From c1795ed399c187ba739bc271c6837e26b9bfdf3d Mon Sep 17 00:00:00 2001
From: Melanie <melanie@t-data.com>
Date: Wed, 23 Jan 2013 21:03:24 +0000
Subject: [PATCH 30/36] Add the Avination physics raycast glue so Core Physics
 can implement raycast

---
 OpenSim/Region/Framework/Scenes/Scene.cs      | 13 +++
 .../Region/Physics/Manager/PhysicsScene.cs    | 39 ++++++++
 .../Shared/Api/Implementation/LSL_Api.cs      | 92 ++++++++++++++++---
 3 files changed, 130 insertions(+), 14 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 5778176e44..f2cb117683 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1983,6 +1983,19 @@ namespace OpenSim.Region.Framework.Scenes
             EventManager.TriggerPrimsLoaded(this);
         }
 
+        public bool SupportsRayCastFiltered()
+        {
+            if (PhysicsScene == null)
+                return false;
+            return PhysicsScene.SupportsRaycastWorldFiltered();
+        }
+
+        public object RayCastFiltered(Vector3 position, Vector3 direction, float length, int Count, RayFilterFlags filter)
+        {
+            if (PhysicsScene == null)
+                return null;
+            return PhysicsScene.RaycastWorld(position, direction, length, Count,filter);
+        }
 
         /// <summary>
         /// Gets a new rez location based on the raycast and the size of the object that is being rezzed.
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
index 201007bdec..96a9ff7ea0 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsScene.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
@@ -43,6 +43,35 @@ namespace OpenSim.Region.Physics.Manager
     public delegate void JointDeactivated(PhysicsJoint joint);
     public delegate void JointErrorMessage(PhysicsJoint joint, string message); // this refers to an "error message due to a problem", not "amount of joint constraint violation"
 
+    public enum RayFilterFlags:ushort
+    {
+        // the flags
+        water = 0x01,
+        land = 0x02,
+        agent = 0x04,
+        nonphysical = 0x08,
+        physical = 0x10,
+        phantom = 0x20,
+        volumedtc = 0x40,
+
+        // ray cast colision control (may only work for meshs)
+        ContactsUnImportant = 0x2000,
+        BackFaceCull = 0x4000,
+        ClosestHit = 0x8000,
+
+        // some combinations
+        LSLPhanton = phantom | volumedtc,
+        PrimsNonPhantom = nonphysical | physical,
+        PrimsNonPhantomAgents = nonphysical | physical | agent,
+
+        AllPrims = nonphysical | phantom | volumedtc | physical,
+        AllButLand = agent | nonphysical | physical | phantom | volumedtc,
+
+        ClosestAndBackCull = ClosestHit | BackFaceCull,
+
+        All = 0x3f
+    }
+
     public delegate void RequestAssetDelegate(UUID assetID, AssetReceivedDelegate callback);
     public delegate void AssetReceivedDelegate(AssetBase asset);
 
@@ -286,5 +315,15 @@ namespace OpenSim.Region.Physics.Manager
         {
             return new List<ContactResult>();
         }
+
+        public virtual object RaycastWorld(Vector3 position, Vector3 direction, float length, int Count, RayFilterFlags filter)
+        {
+            return null;
+        }
+
+        public virtual bool SupportsRaycastWorldFiltered()
+        {
+            return false;
+        }
     }
 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 632b73f2bd..3a7e1c7dc8 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -11340,6 +11340,84 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             bool checkPhysical = !((rejectTypes & ScriptBaseClass.RC_REJECT_PHYSICAL) == ScriptBaseClass.RC_REJECT_PHYSICAL);
 
 
+            if (World.SupportsRayCastFiltered())
+            {
+                if (dist == 0)
+                    return list;
+
+                RayFilterFlags rayfilter = RayFilterFlags.ClosestAndBackCull;
+                if (checkTerrain)
+                    rayfilter |= RayFilterFlags.land;
+//                if (checkAgents)
+//                    rayfilter |= RayFilterFlags.agent;
+                if (checkPhysical)
+                    rayfilter |= RayFilterFlags.physical;
+                if (checkNonPhysical)
+                    rayfilter |= RayFilterFlags.nonphysical;
+                if (detectPhantom)
+                    rayfilter |= RayFilterFlags.LSLPhanton;
+
+                Vector3 direction = dir * ( 1/dist);
+
+                if(rayfilter == 0)
+                {
+                    list.Add(new LSL_Integer(0));
+                    return list;
+                }
+
+                // get some more contacts to sort ???
+                int physcount = 4 * count;
+                if (physcount > 20)
+                    physcount = 20;
+
+                object physresults;
+                physresults = World.RayCastFiltered(rayStart, direction, dist, physcount, rayfilter);
+
+                if (physresults == null)
+                {
+                    list.Add(new LSL_Integer(-3)); // timeout error
+                    return list;
+                }
+
+                results = (List<ContactResult>)physresults;
+
+                // for now physics doesn't detect sitted avatars so do it outside physics
+                if (checkAgents)
+                {
+                    ContactResult[] agentHits = AvatarIntersection(rayStart, rayEnd);
+                    foreach (ContactResult r in agentHits)
+                        results.Add(r);
+                }
+
+                // TODO: Replace this with a better solution. ObjectIntersection can only
+                // detect nonphysical phantoms. They are detected by virtue of being
+                // nonphysical (e.g. no PhysActor) so will not conflict with detecting
+                // physicsl phantoms as done by the physics scene
+                // We don't want anything else but phantoms here.
+                if (detectPhantom)
+                {
+                    ContactResult[] objectHits = ObjectIntersection(rayStart, rayEnd, false, false, true);
+                    foreach (ContactResult r in objectHits)
+                        results.Add(r);
+                }
+            }
+            else
+            {
+                if (checkAgents)
+                {
+                    ContactResult[] agentHits = AvatarIntersection(rayStart, rayEnd);
+                    foreach (ContactResult r in agentHits)
+                        results.Add(r);
+                }
+
+                if (checkPhysical || checkNonPhysical || detectPhantom)
+                {
+                    ContactResult[] objectHits = ObjectIntersection(rayStart, rayEnd, checkPhysical, checkNonPhysical, detectPhantom);
+                    foreach (ContactResult r in objectHits)
+                        results.Add(r);
+                }
+            }
+
             if (checkTerrain)
             {
                 ContactResult? groundContact = GroundIntersection(rayStart, rayEnd);
@@ -11347,20 +11425,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                     results.Add((ContactResult)groundContact);
             }
 
-            if (checkAgents)
-            {
-                ContactResult[] agentHits = AvatarIntersection(rayStart, rayEnd);
-                foreach (ContactResult r in agentHits)
-                    results.Add(r);
-            }
-
-            if (checkPhysical || checkNonPhysical || detectPhantom)
-            {
-                ContactResult[] objectHits = ObjectIntersection(rayStart, rayEnd, checkPhysical, checkNonPhysical, detectPhantom);
-                foreach (ContactResult r in objectHits)
-                    results.Add(r);
-            }
-
             results.Sort(delegate(ContactResult a, ContactResult b)
             {
                 return a.Depth.CompareTo(b.Depth);

From a0d460e6bfa64a6c43ff327dcf19b696cc380fbb Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Fri, 18 Jan 2013 12:10:03 -0800
Subject: [PATCH 31/36] BulletSim: remove the unused RestoreBodyDependencies
 used by linksets and vehicles and clean up code by removing their kludgyness.

---
 .../BulletSPlugin/BSLinksetCompound.cs        |  7 -------
 .../BulletSPlugin/BSLinksetConstraints.cs     |  8 --------
 .../Region/Physics/BulletSPlugin/BSPrim.cs    | 20 ++-----------------
 3 files changed, 2 insertions(+), 33 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index 27d8ad0ef9..0077da766a 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -290,13 +290,6 @@ public sealed class BSLinksetCompound : BSLinkset
         return ret;
     }
 
-    // Companion to RemoveBodyDependencies(). If RemoveBodyDependencies() returns 'true',
-    //     this routine will restore the removed constraints.
-    // Called at taint-time!!
-    public override void RestoreBodyDependencies(BSPrim child)
-    {
-    }
-
     // When the linkset is built, the child shape is added to the compound shape relative to the
     //    root shape. The linkset then moves around but this does not move the actual child
     //    prim. The child prim's location must be recomputed based on the location of the root shape.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
index 89f186c206..3011465dec 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetConstraints.cs
@@ -110,14 +110,6 @@ public sealed class BSLinksetConstraints : BSLinkset
         return ret;
     }
 
-    // Companion to RemoveBodyDependencies(). If RemoveBodyDependencies() returns 'true',
-    // this routine will restore the removed constraints.
-    // Called at taint-time!!
-    public override void RestoreBodyDependencies(BSPrim child)
-    {
-        // The Refresh operation queued by RemoveBodyDependencies() will build any missing constraints.
-    }
-
     // ================================================================
 
     // Add a new child to the linkset.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index e6b8507337..b37a1f8522 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -1606,11 +1606,6 @@ public sealed class BSPrim : BSPhysObject
     // Called at taint-time!!!
     public void CreateGeomAndObject(bool forceRebuild)
     {
-        // If this prim is part of a linkset, we must remove and restore the physical
-        //    links if the body is rebuilt.
-        bool needToRestoreLinkset = false;
-        bool needToRestoreVehicle = false;
-
         // Create the correct physical representation for this type of object.
         // Updates PhysBody and PhysShape with the new information.
         // Ignore 'forceRebuild'. This routine makes the right choices and changes of necessary.
@@ -1619,21 +1614,10 @@ public sealed class BSPrim : BSPhysObject
             // Called if the current prim body is about to be destroyed.
             // Remove all the physical dependencies on the old body.
             // (Maybe someday make the changing of BSShape an event to be subscribed to by BSLinkset, ...)
-            needToRestoreLinkset = Linkset.RemoveBodyDependencies(this);
-            needToRestoreVehicle = _vehicle.RemoveBodyDependencies(this);
+            Linkset.RemoveBodyDependencies(this);
+            _vehicle.RemoveBodyDependencies(this);
         });
 
-        if (needToRestoreLinkset)
-        {
-            // If physical body dependencies were removed, restore them
-            Linkset.RestoreBodyDependencies(this);
-        }
-        if (needToRestoreVehicle)
-        {
-            // If physical body dependencies were removed, restore them
-            _vehicle.RestoreBodyDependencies(this);
-        }
-
         // Make sure the properties are set on the new object
         UpdatePhysicalParameters();
         return;

From 775fd6f8cc27c80974b59a79be477a99950a7095 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Fri, 18 Jan 2013 12:12:45 -0800
Subject: [PATCH 32/36] BulletSim: fix build break introduced by previous
 commit

---
 OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
index 580ea4e689..1e3e5d8f9f 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinkset.cs
@@ -261,11 +261,6 @@ public abstract class BSLinkset
     // Called at taint-time!!
     public abstract bool RemoveBodyDependencies(BSPrim child);
 
-    // Companion to RemoveBodyDependencies(). If RemoveBodyDependencies() returns 'true',
-    //     this routine will restore the removed constraints.
-    // Called at taint-time!!
-    public abstract void RestoreBodyDependencies(BSPrim child);
-
     // ================================================================
     protected virtual float ComputeLinksetMass()
     {

From c1371ab786a699ce91693e6e575bb81144a79c57 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Wed, 23 Jan 2013 08:28:36 -0800
Subject: [PATCH 33/36] BulletSim: working on COM

---
 .../Physics/BulletSPlugin/BSApiTemplate.cs    | 19 +++++++++++++++++++
 .../BulletSPlugin/BSLinksetCompound.cs        |  7 ++++---
 .../Region/Physics/BulletSPlugin/BSPrim.cs    | 15 +++++++++++----
 .../Physics/BulletSPlugin/BulletSimTODO.txt   |  2 ++
 4 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSApiTemplate.cs b/OpenSim/Region/Physics/BulletSPlugin/BSApiTemplate.cs
index bc163eb946..2828cab23d 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSApiTemplate.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSApiTemplate.cs
@@ -140,6 +140,25 @@ public struct EntityProperties
     public Vector3 Velocity;
     public Vector3 Acceleration;
     public Vector3 RotationalVelocity;
+
+    public override string ToString()
+    {
+        StringBuilder buff = new StringBuilder();
+        buff.Append("<i=");
+        buff.Append(ID.ToString());
+        buff.Append(",p=");
+        buff.Append(Position.ToString());
+        buff.Append(",r=");
+        buff.Append(Rotation.ToString());
+        buff.Append(",v=");
+        buff.Append(Velocity.ToString());
+        buff.Append(",a=");
+        buff.Append(Acceleration.ToString());
+        buff.Append(",rv=");
+        buff.Append(RotationalVelocity.ToString());
+        buff.Append(">");
+        return buff.ToString();
+    }
 }
 
 // Format of this structure must match the definition in the C++ code
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index 0077da766a..d8e4028506 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -377,7 +377,7 @@ public sealed class BSLinksetCompound : BSLinkset
     // Constraint linksets are rebuilt every time.
     // Note that this works for rebuilding just the root after a linkset is taken apart.
     // Called at taint time!!
-    private bool disableCOM = true;     // disable until we get this debugged
+    private bool disableCOM = false;     // disable until we get this debugged
     private void RecomputeLinksetCompound()
     {
         try
@@ -400,8 +400,9 @@ public sealed class BSLinksetCompound : BSLinkset
             }                                           // DEBUG DEBUG
             else
             {
-                centerOfMass = ComputeLinksetGeometricCenter();
-                centerDisplacement = centerOfMass - LinksetRoot.RawPosition;
+                centerOfMass = ComputeLinksetCenterOfMass();
+                // 'centerDisplacement' is the value to *add* to all the shape offsets
+                centerDisplacement = LinksetRoot.RawPosition - centerOfMass;
 
                 // Since we're displacing the center of the shape, we need to move the body in the world
                 LinksetRoot.PositionDisplacement = centerDisplacement;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index b37a1f8522..dad7250960 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -336,6 +336,7 @@ public sealed class BSPrim : BSPhysObject
             }
         }
     }
+        /*  Disable. Presume whoever is setting displacement is already adjusting position, etc.
     // Override to have position displacement immediately update the physical position.
     // A feeble attempt to keep the sim and physical positions in sync
     // Must be called at taint time.
@@ -355,6 +356,7 @@ public sealed class BSPrim : BSPhysObject
             });
         }
     }
+        */
 
     // Check that the current position is sane and, if not, modify the position to make it so.
     // Check for being below terrain and being out of bounds.
@@ -371,11 +373,11 @@ public sealed class BSPrim : BSPhysObject
             return ret;
         }
 
-        float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(_position);
+        float terrainHeight = PhysicsScene.TerrainManager.GetTerrainHeightAtXYZ(RawPosition);
         OMV.Vector3 upForce = OMV.Vector3.Zero;
         if (RawPosition.Z < terrainHeight)
         {
-            DetailLog("{0},BSPrim.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, _position, terrainHeight);
+            DetailLog("{0},BSPrim.PositionAdjustUnderGround,call,pos={1},terrain={2}", LocalID, RawPosition, terrainHeight);
             float targetHeight = terrainHeight + (Size.Z / 2f);
             // If the object is below ground it just has to be moved up because pushing will
             //     not get it through the terrain
@@ -1637,7 +1639,11 @@ public sealed class BSPrim : BSPhysObject
                 // entprop.RotationalVelocity = OMV.Vector3.Zero;
             }
 
+            DetailLog("{0},BSPrim.UpdateProperties,entry,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
+
             // Assign directly to the local variables so the normal set actions do not happen
+
+            // Undo any center-of-mass displacement that might have been done.
             entprop.Position -= PositionDisplacement;
             _position = entprop.Position;
             _orientation = entprop.Rotation;
@@ -1645,6 +1651,8 @@ public sealed class BSPrim : BSPhysObject
             _acceleration = entprop.Acceleration;
             _rotationalVelocity = entprop.RotationalVelocity;
 
+            DetailLog("{0},BSPrim.UpdateProperties,afterAssign,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
+
             // The sanity check can change the velocity and/or position.
             if (IsPhysical && PositionSanityCheck(true))
             {
@@ -1653,8 +1661,7 @@ public sealed class BSPrim : BSPhysObject
             }
 
             OMV.Vector3 direction = OMV.Vector3.UnitX * _orientation;   // DEBUG DEBUG DEBUG
-            DetailLog("{0},BSPrim.UpdateProperties,call,pos={1},orient={2},dir={3},vel={4},rotVel={5}",
-                    LocalID, _position, _orientation, direction, _velocity, _rotationalVelocity);
+            DetailLog("{0},BSPrim.UpdateProperties,call,entProp={1},dir={2}", LocalID, entprop, direction);
 
             // remember the current and last set values
             LastEntityProperties = CurrentEntityProperties;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
index 41bab2601d..801f6908ee 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt
@@ -1,5 +1,7 @@
 CURRENT PRIORITIES
 =================================================
+Deleting a linkset while standing on the root will leave the physical shape of the root behind.
+	Not sure if it is because standing on it. Done with large prim linksets.
 Child movement in linkset (don't rebuild linkset)
 Vehicle angular vertical attraction
 vehicle angular banking

From a5e9c665f08059fef16d0b0875697cb08e16351e Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Wed, 23 Jan 2013 09:09:17 -0800
Subject: [PATCH 34/36] BulletSim: center-of-gravity linkset changes. Not
 working yet.

Conflicts:

	OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
---
 .../BulletSPlugin/BSLinksetCompound.cs        |  5 ++++-
 .../Region/Physics/BulletSPlugin/BSParam.cs   |  7 ++----
 .../Region/Physics/BulletSPlugin/BSPrim.cs    | 22 +------------------
 .../Region/Physics/BulletSPlugin/BSScene.cs   |  4 ++--
 4 files changed, 9 insertions(+), 29 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
index d8e4028506..2c8dd233d6 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs
@@ -407,6 +407,9 @@ public sealed class BSLinksetCompound : BSLinkset
                 // Since we're displacing the center of the shape, we need to move the body in the world
                 LinksetRoot.PositionDisplacement = centerDisplacement;
 
+                // This causes the root prim position to be set properly based on the new PositionDisplacement
+                LinksetRoot.ForcePosition = LinksetRoot.RawPosition;
+                // Update the local transform for the root child shape so it is offset from the <0,0,0> which is COM
                 PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape, 0, -centerDisplacement, OMV.Quaternion.Identity, false);
                 DetailLog("{0},BSLinksetCompound.RecomputeLinksetCompound,COM,com={1},rootPos={2},centerDisp={3}",
                                         LinksetRoot.LocalID, centerOfMass, LinksetRoot.RawPosition, centerDisplacement);
@@ -438,7 +441,7 @@ public sealed class BSLinksetCompound : BSLinkset
 
                     if (cPrim.PhysShape.isNativeShape)
                     {
-                        // A native shape is turning into a hull collision shape because native
+                        // A native shape is turned into a hull collision shape because native
                         //    shapes are not shared so we have to hullify it so it will be tracked
                         //    and freed at the correct time. This also solves the scaling problem
                         //    (native shapes scaled but hull/meshes are assumed to not be).
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
index da7438a4ae..9460daff70 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs
@@ -645,11 +645,8 @@ public static class BSParam
                 entries.Add(new PhysParameterEntry(pd.name, pd.desc));
             }
 
-            // make the list in alphabetical order for estetic reasons
-            entries.Sort(delegate(PhysParameterEntry ppe1, PhysParameterEntry ppe2)
-            {
-                return ppe1.name.CompareTo(ppe2.name);
-            });
+            // make the list alphabetical for estetic reasons
+            entries.Sort((ppe1, ppe2) => { return ppe1.name.CompareTo(ppe2.name); });
 
             SettableParameters = entries.ToArray();
         }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index dad7250960..ee2bfa093a 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -322,6 +322,7 @@ public sealed class BSPrim : BSPhysObject
             });
         }
     }
+
     public override OMV.Vector3 ForcePosition {
         get {
             _position = PhysicsScene.PE.GetPosition(PhysBody) - PositionDisplacement;
@@ -336,27 +337,6 @@ public sealed class BSPrim : BSPhysObject
             }
         }
     }
-        /*  Disable. Presume whoever is setting displacement is already adjusting position, etc.
-    // Override to have position displacement immediately update the physical position.
-    // A feeble attempt to keep the sim and physical positions in sync
-    // Must be called at taint time.
-    public override OMV.Vector3 PositionDisplacement
-    {
-        get
-        {
-            return base.PositionDisplacement;
-        }
-        set
-        {
-            base.PositionDisplacement = value;
-            PhysicsScene.TaintedObject(PhysicsScene.InTaintTime, "BSPrim.setPosition", delegate()
-            {
-                if (PhysBody.HasPhysicalBody)
-                    PhysicsScene.PE.SetTranslation(PhysBody, _position + base.PositionDisplacement, _orientation);
-            });
-        }
-    }
-        */
 
     // Check that the current position is sane and, if not, modify the position to make it so.
     // Check for being below terrain and being out of bounds.
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index 8075b73b05..34fd2a0531 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -708,8 +708,8 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
     //    TriggerPreStepEvent
     //    DoOneTimeTaints
     //    Step()
-    //       ProcessAndForwardCollisions
-    //       ProcessAndForwardPropertyUpdates
+    //       ProcessAndSendToSimulatorCollisions
+    //       ProcessAndSendToSimulatorPropertyUpdates
     //    TriggerPostStepEvent
 
     // Calls to the PhysicsActors can't directly call into the physics engine

From 13182904da897be1dad0bb86d8099bd0956ffac4 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Wed, 23 Jan 2013 09:11:01 -0800
Subject: [PATCH 35/36] BulletSim: small change to center-of-mass computation
 left out last commit

---
 OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index ee2bfa093a..731ab7ba52 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -1621,10 +1621,15 @@ public sealed class BSPrim : BSPhysObject
 
             DetailLog("{0},BSPrim.UpdateProperties,entry,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
 
-            // Assign directly to the local variables so the normal set actions do not happen
-
             // Undo any center-of-mass displacement that might have been done.
-            entprop.Position -= PositionDisplacement;
+            if (PositionDisplacement != OMV.Vector3.Zero)
+            {
+                // Correct for any rotation around the center-of-mass
+                // TODO!!!
+                entprop.Position -= PositionDisplacement;
+            }
+
+            // Assign directly to the local variables so the normal set actions do not happen
             _position = entprop.Position;
             _orientation = entprop.Rotation;
             _velocity = entprop.Velocity;

From a7b810ddeebda8b13af3ab9fbeb24bef1a8094c6 Mon Sep 17 00:00:00 2001
From: Robert Adams <Robert.Adams@intel.com>
Date: Wed, 23 Jan 2013 14:21:52 -0800
Subject: [PATCH 36/36] BulletSim: remove setting of vehicle
 InterpolationRotationalVelocity. This doesn't seem to help the vehicle
 stability. Rename vehicle internal variables adding a "V" or "W" so it is
 clear when coordinates are vehicle or world relative.

---
 .../Physics/BulletSPlugin/BSDynamics.cs       | 66 +++++++++----------
 .../Region/Physics/BulletSPlugin/BSPrim.cs    |  4 +-
 2 files changed, 34 insertions(+), 36 deletions(-)

diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
index dbe44de5f4..fe7891e866 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs
@@ -690,7 +690,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                     // Bullet does a bunch of smoothing for changing parameters.
                     //    Since the vehicle is demanding this setting, we override Bullet's smoothing
                     //    by telling Bullet the value was the same last time.
-                    PhysicsScene.PE.SetInterpolationLinearVelocity(Prim.PhysBody, m_knownVelocity);
+                    // PhysicsScene.PE.SetInterpolationLinearVelocity(Prim.PhysBody, m_knownVelocity);
                 }
 
                 if ((m_knownChanged & m_knownChangedForce) != 0)
@@ -702,7 +702,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 if ((m_knownChanged & m_knownChangedRotationalVelocity) != 0)
                 {
                     Prim.ForceRotationalVelocity = m_knownRotationalVelocity;
-                    PhysicsScene.PE.SetInterpolationAngularVelocity(Prim.PhysBody, m_knownRotationalVelocity);
+                    // PhysicsScene.PE.SetInterpolationAngularVelocity(Prim.PhysBody, m_knownRotationalVelocity);
                 }
 
                 if ((m_knownChanged & m_knownChangedRotationalImpulse) != 0)
@@ -963,23 +963,23 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         {
             // Step the motor from the current value. Get the correction needed this step.
             Vector3 currentVel = VehicleVelocity * Quaternion.Inverse(VehicleOrientation);
-            Vector3 linearMotorCorrection = m_linearMotor.Step(pTimestep, currentVel);
+            Vector3 linearMotorCorrectionV = m_linearMotor.Step(pTimestep, currentVel);
 
             // Motor is vehicle coordinates. Rotate it to world coordinates
-            Vector3 linearMotorVelocity = linearMotorCorrection * VehicleOrientation;
+            Vector3 linearMotorVelocityW = linearMotorCorrectionV * VehicleOrientation;
 
             // If we're a ground vehicle, don't add any upward Z movement
             if ((m_flags & VehicleFlag.LIMIT_MOTOR_UP) != 0)
             {
-                if (linearMotorVelocity.Z > 0f)
-                    linearMotorVelocity.Z = 0f;
+                if (linearMotorVelocityW.Z > 0f)
+                    linearMotorVelocityW.Z = 0f;
             }
 
             // Add this correction to the velocity to make it faster/slower.
-            VehicleVelocity += linearMotorVelocity;
+            VehicleVelocity += linearMotorVelocityW;
 
             VDetailLog("{0},  MoveLinear,velocity,vehVel={1},correction={2},force={3}",
-                        Prim.LocalID, VehicleVelocity, linearMotorCorrection, linearMotorVelocity);
+                        Prim.LocalID, VehicleVelocity, linearMotorCorrectionV, linearMotorVelocityW);
         }
 
         public void ComputeLinearTerrainHeightCorrection(float pTimestep)
@@ -1123,8 +1123,6 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         //    a downward raycast to find what is below.
         public void ComputeLinearMotorUp(float pTimestep)
         {
-            Vector3 ret = Vector3.Zero;
-
             if ((m_flags & (VehicleFlag.LIMIT_MOTOR_UP)) != 0)
             {
                 // This code tries to decide if the object is not on the ground and then pushing down
@@ -1250,8 +1248,8 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         private void ComputeAngularTurning(float pTimestep)
         {
             // The user wants this many radians per second angular change?
-            Vector3 currentAngular = VehicleRotationalVelocity * Quaternion.Inverse(VehicleOrientation);
-            Vector3 angularMotorContribution = m_angularMotor.Step(pTimestep, currentAngular);
+            Vector3 currentAngularV = VehicleRotationalVelocity * Quaternion.Inverse(VehicleOrientation);
+            Vector3 angularMotorContributionV = m_angularMotor.Step(pTimestep, currentAngularV);
 
             // ==================================================================
             // From http://wiki.secondlife.com/wiki/LlSetVehicleFlags :
@@ -1263,12 +1261,12 @@ namespace OpenSim.Region.Physics.BulletSPlugin
             //    is a linear effect. Where should this check go?
             if ((m_flags & (VehicleFlag.NO_DEFLECTION_UP)) != 0)
             {
-                angularMotorContribution.X = 0f;
-                angularMotorContribution.Y = 0f;
+                angularMotorContributionV.X = 0f;
+                angularMotorContributionV.Y = 0f;
             }
 
-            VehicleRotationalVelocity += angularMotorContribution * VehicleOrientation;
-            VDetailLog("{0},  MoveAngular,angularTurning,angularMotorContrib={1}", Prim.LocalID, angularMotorContribution);
+            VehicleRotationalVelocity += angularMotorContributionV * VehicleOrientation;
+            VDetailLog("{0},  MoveAngular,angularTurning,angularMotorContrib={1}", Prim.LocalID, angularMotorContributionV);
         }
 
         // From http://wiki.secondlife.com/wiki/Linden_Vehicle_Tutorial:
@@ -1284,7 +1282,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
             // If vertical attaction timescale is reasonable
             if (enableAngularVerticalAttraction && m_verticalAttractionTimescale < m_verticalAttractionCutoff)
             {
-                Vector3 vertContribution = Vector3.Zero;
+                Vector3 vertContributionV = Vector3.Zero;
 
                 // Take a vector pointing up and convert it from world to vehicle relative coords.
                 Vector3 verticalError = Vector3.UnitZ * VehicleOrientation;
@@ -1299,26 +1297,26 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
                 // Y error means needed rotation around X axis and visa versa.
                 // Since the error goes from zero to one, the asin is the corresponding angle.
-                vertContribution.X = (float)Math.Asin(verticalError.Y);
+                vertContributionV.X = (float)Math.Asin(verticalError.Y);
                 // (Tilt forward (positive X) needs to tilt back (rotate negative) around Y axis.)
-                vertContribution.Y = -(float)Math.Asin(verticalError.X);
+                vertContributionV.Y = -(float)Math.Asin(verticalError.X);
 
                 // If verticalError.Z is negative, the vehicle is upside down. Add additional push.
                 if (verticalError.Z < 0f)
                 {
-                    vertContribution.X += PIOverFour;
+                    vertContributionV.X += PIOverFour;
                     // vertContribution.Y -= PIOverFour;
                 }
 
                 // 'vertContrbution' is now the necessary angular correction to correct tilt in one second.
                 //     Correction happens over a number of seconds.
-                Vector3 unscaledContrib = vertContribution;     // DEBUG DEBUG
-                vertContribution /= m_verticalAttractionTimescale;
+                Vector3 unscaledContrib = vertContributionV;     // DEBUG DEBUG
+                vertContributionV /= m_verticalAttractionTimescale;
 
-                VehicleRotationalVelocity += vertContribution * VehicleOrientation;
+                VehicleRotationalVelocity += vertContributionV * VehicleOrientation;
 
                 VDetailLog("{0},  MoveAngular,verticalAttraction,,verticalError={1},unscaled={2},eff={3},ts={4},vertAttr={5}",
-                                Prim.LocalID, verticalError, unscaledContrib, m_verticalAttractionEfficiency, m_verticalAttractionTimescale, vertContribution);
+                                Prim.LocalID, verticalError, unscaledContrib, m_verticalAttractionEfficiency, m_verticalAttractionTimescale, vertContributionV);
             }
         }
 
@@ -1336,7 +1334,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
 
             if (enableAngularDeflection && m_angularDeflectionEfficiency != 0 && VehicleForwardSpeed > 0.2)
             {
-                Vector3 deflectContribution = Vector3.Zero;
+                Vector3 deflectContributionV = Vector3.Zero;
 
                 // The direction the vehicle is moving
                 Vector3 movingDirection = VehicleVelocity;
@@ -1363,13 +1361,13 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 // ret = m_angularDeflectionCorrectionMotor(1f, deflectionError);
 
                 // Scale the correction by recovery timescale and efficiency
-                deflectContribution = (-deflectionError) * m_angularDeflectionEfficiency;
-                deflectContribution /= m_angularDeflectionTimescale;
+                deflectContributionV = (-deflectionError) * m_angularDeflectionEfficiency;
+                deflectContributionV /= m_angularDeflectionTimescale;
 
-                VehicleRotationalVelocity += deflectContribution * VehicleOrientation;
+                VehicleRotationalVelocity += deflectContributionV * VehicleOrientation;
 
                 VDetailLog("{0},  MoveAngular,Deflection,movingDir={1},pointingDir={2},deflectError={3},ret={4}",
-                    Prim.LocalID, movingDirection, pointingDirection, deflectionError, deflectContribution);
+                    Prim.LocalID, movingDirection, pointingDirection, deflectionError, deflectContributionV);
                 VDetailLog("{0},  MoveAngular,Deflection,fwdSpd={1},defEff={2},defTS={3}",
                     Prim.LocalID, VehicleForwardSpeed, m_angularDeflectionEfficiency, m_angularDeflectionTimescale);
             }
@@ -1410,7 +1408,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
         {
             if (enableAngularBanking && m_bankingEfficiency != 0 && m_verticalAttractionTimescale < m_verticalAttractionCutoff)
             {
-                Vector3 bankingContribution = Vector3.Zero;
+                Vector3 bankingContributionV = Vector3.Zero;
 
                 // Rotate a UnitZ vector (pointing up) to how the vehicle is oriented.
                 // As the vehicle rolls to the right or left, the Y value will increase from
@@ -1428,15 +1426,15 @@ namespace OpenSim.Region.Physics.BulletSPlugin
                 mixedYawAngle = ClampInRange(-20f, mixedYawAngle, 20f);
 
                 // Build the force vector to change rotation from what it is to what it should be
-                bankingContribution.Z = -mixedYawAngle;
+                bankingContributionV.Z = -mixedYawAngle;
 
                 // Don't do it all at once.
-                bankingContribution /= m_bankingTimescale;
+                bankingContributionV /= m_bankingTimescale;
 
-                VehicleRotationalVelocity += bankingContribution * VehicleOrientation;
+                VehicleRotationalVelocity += bankingContributionV * VehicleOrientation;
 
                 VDetailLog("{0},  MoveAngular,Banking,rollComp={1},speed={2},rollComp={3},yAng={4},mYAng={5},ret={6}",
-                            Prim.LocalID, rollComponents, VehicleForwardSpeed, rollComponents, yawAngle, mixedYawAngle, bankingContribution);
+                            Prim.LocalID, rollComponents, VehicleForwardSpeed, rollComponents, yawAngle, mixedYawAngle, bankingContributionV);
             }
         }
 
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 731ab7ba52..f80084a7fd 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -1619,7 +1619,7 @@ public sealed class BSPrim : BSPhysObject
                 // entprop.RotationalVelocity = OMV.Vector3.Zero;
             }
 
-            DetailLog("{0},BSPrim.UpdateProperties,entry,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
+            // DetailLog("{0},BSPrim.UpdateProperties,entry,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
 
             // Undo any center-of-mass displacement that might have been done.
             if (PositionDisplacement != OMV.Vector3.Zero)
@@ -1636,7 +1636,7 @@ public sealed class BSPrim : BSPhysObject
             _acceleration = entprop.Acceleration;
             _rotationalVelocity = entprop.RotationalVelocity;
 
-            DetailLog("{0},BSPrim.UpdateProperties,afterAssign,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
+            // DetailLog("{0},BSPrim.UpdateProperties,afterAssign,entprop={1}", LocalID, entprop);   // DEBUG DEBUG
 
             // The sanity check can change the velocity and/or position.
             if (IsPhysical && PositionSanityCheck(true))