aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs15
1 files changed, 12 insertions, 3 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index f781aea..8dca7c6 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -83,7 +83,7 @@ public sealed class BSCharacter : BSPhysObject
83 _velocity = OMV.Vector3.Zero; 83 _velocity = OMV.Vector3.Zero;
84 _buoyancy = ComputeBuoyancyFromFlying(isFlying); 84 _buoyancy = ComputeBuoyancyFromFlying(isFlying);
85 Friction = BSParam.AvatarStandingFriction; 85 Friction = BSParam.AvatarStandingFriction;
86 Density = BSParam.AvatarDensity; 86 Density = BSParam.AvatarDensity / BSParam.DensityScaleFactor;
87 87
88 // Old versions of ScenePresence passed only the height. If width and/or depth are zero, 88 // Old versions of ScenePresence passed only the height. If width and/or depth are zero,
89 // replace with the default values. 89 // replace with the default values.
@@ -231,6 +231,15 @@ public sealed class BSCharacter : BSPhysObject
231 PhysicsScene.PE.SetFriction(PhysBody, Friction); 231 PhysicsScene.PE.SetFriction(PhysBody, Friction);
232 } 232 }
233 } 233 }
234 else
235 {
236 if (Flying)
237 {
238 // Flying and not collising and velocity nearly zero.
239 ZeroMotion(true /* inTaintTime */);
240 }
241 }
242
234 DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1},colliding={2}", LocalID, _velocityMotor.TargetValue, IsColliding); 243 DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1},colliding={2}", LocalID, _velocityMotor.TargetValue, IsColliding);
235 } 244 }
236 else 245 else
@@ -274,7 +283,7 @@ public sealed class BSCharacter : BSPhysObject
274 // This test is done if moving forward, not flying and is colliding with something. 283 // This test is done if moving forward, not flying and is colliding with something.
275 // DetailLog("{0},BSCharacter.WalkUpStairs,IsColliding={1},flying={2},targSpeed={3},collisions={4}", 284 // DetailLog("{0},BSCharacter.WalkUpStairs,IsColliding={1},flying={2},targSpeed={3},collisions={4}",
276 // LocalID, IsColliding, Flying, TargetSpeed, CollisionsLastTick.Count); 285 // LocalID, IsColliding, Flying, TargetSpeed, CollisionsLastTick.Count);
277 if (IsColliding && !Flying && TargetSpeed > 0.1f /* && ForwardSpeed < 0.1f */) 286 if (IsColliding && !Flying && TargetVelocitySpeed > 0.1f /* && ForwardSpeed < 0.1f */)
278 { 287 {
279 // The range near the character's feet where we will consider stairs 288 // The range near the character's feet where we will consider stairs
280 float nearFeetHeightMin = RawPosition.Z - (Size.Z / 2f) + 0.05f; 289 float nearFeetHeightMin = RawPosition.Z - (Size.Z / 2f) + 0.05f;
@@ -869,7 +878,7 @@ public sealed class BSCharacter : BSPhysObject
869 * Math.Min(Size.X, Size.Y) / 2 878 * Math.Min(Size.X, Size.Y) / 2
870 * Size.Y / 2f // plus the volume of the capsule end caps 879 * Size.Y / 2f // plus the volume of the capsule end caps
871 ); 880 );
872 _mass = Density * _avatarVolume; 881 _mass = Density * BSParam.DensityScaleFactor * _avatarVolume;
873 } 882 }
874 883
875 // The physics engine says that properties have updated. Update same and inform 884 // The physics engine says that properties have updated. Update same and inform