From feb058f5c53b76ab0dab1680d2b0dd15fd2bfa6d Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Sun, 6 Mar 2016 11:30:25 -0800 Subject: [PATCH] BulletSim: Send out avatar position update if velocity is now zero and it wasn't zero last tick. This will prevent some avatar creeping. Adjust BulletSim default avatar velocity zeroing so the avatar stops sooner. --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 +++ OpenSim/Region/PhysicsModules/BulletS/BSParam.cs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index b281e5f12f..e4c9de1c71 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3571,6 +3571,9 @@ namespace OpenSim.Region.Framework.Scenes !Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || !m_pos.ApproxEquals(m_lastPosition, POSITION_LARGETOLERANCE) + // if velocity is zero and it wasn't zero last time, send the update + || (Velocity == Vector3.Zero && m_lastVelocity != Vector3.Zero) + // if position has moved just a little and velocity is very low, send the update || (!m_pos.ApproxEquals(m_lastPosition, POSITION_SMALLTOLERANCE) && Velocity.LengthSquared() < LOWVELOCITYSQ ) ) ) { diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSParam.cs b/OpenSim/Region/PhysicsModules/BulletS/BSParam.cs index 389a4418b7..e34e3a9267 100755 --- a/OpenSim/Region/PhysicsModules/BulletS/BSParam.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSParam.cs @@ -633,7 +633,7 @@ public static class BSParam new ParameterDefn("AvatarAddForcePushFactor", "BSCharacter.AddForce is multiplied by this and mass to be like other physics engines", 0.315f ), new ParameterDefn("AvatarStopZeroThreshold", "Movement velocity below which avatar is assumed to be stopped", - 0.4f, + 0.45f, (s) => { return (float)AvatarStopZeroThreshold; }, (s,v) => { AvatarStopZeroThreshold = v; AvatarStopZeroThresholdSquared = v * v; } ), new ParameterDefn("AvatarBelowGroundUpCorrectionMeters", "Meters to move avatar up if it seems to be below ground",