diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index cbc1772..3f7b5e1 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |||
@@ -584,18 +584,6 @@ public sealed class BSCharacter : BSPhysObject | |||
584 | get { return _throttleUpdates; } | 584 | get { return _throttleUpdates; } |
585 | set { _throttleUpdates = value; } | 585 | set { _throttleUpdates = value; } |
586 | } | 586 | } |
587 | public override bool IsColliding { | ||
588 | get { return (CollidingStep == PhysicsScene.SimulationStep); } | ||
589 | set { _isColliding = value; } | ||
590 | } | ||
591 | public override bool CollidingGround { | ||
592 | get { return (CollidingGroundStep == PhysicsScene.SimulationStep); } | ||
593 | set { CollidingGround = value; } | ||
594 | } | ||
595 | public override bool CollidingObj { | ||
596 | get { return _collidingObj; } | ||
597 | set { _collidingObj = value; } | ||
598 | } | ||
599 | public override bool FloatOnWater { | 587 | public override bool FloatOnWater { |
600 | set { | 588 | set { |
601 | _floatOnWater = value; | 589 | _floatOnWater = value; |
@@ -769,22 +757,26 @@ public sealed class BSCharacter : BSPhysObject | |||
769 | 757 | ||
770 | OMV.Vector3 stepVelocity = _velocityMotor.Step(PhysicsScene.LastTimeStep); | 758 | OMV.Vector3 stepVelocity = _velocityMotor.Step(PhysicsScene.LastTimeStep); |
771 | 759 | ||
772 | // If falling, we keep the world's downward vector no matter what the other axis specify. | 760 | // Check for cases to turn off the motor. |
773 | if (!Flying && !IsColliding) | 761 | if ( |
774 | { | 762 | // If the walking motor is all done, turn it off |
775 | stepVelocity.Z = entprop.Velocity.Z; | 763 | (_velocityMotor.TargetValue.ApproxEquals(OMV.Vector3.Zero, 0.01f) && _velocityMotor.ErrorIsZero) ) |
776 | DetailLog("{0},BSCharacter.UpdateProperties,taint,overrideStepZWithWorldZ,stepVel={1}", LocalID, stepVelocity); | ||
777 | } | ||
778 | |||
779 | // If the user has said stop and we've stopped applying velocity correction, | ||
780 | // the motor can be turned off. Set the velocity to zero so the zero motion is sent to the viewer. | ||
781 | if (_velocityMotor.TargetValue.ApproxEquals(OMV.Vector3.Zero, 0.01f) && _velocityMotor.ErrorIsZero) | ||
782 | { | 764 | { |
783 | ZeroMotion(true); | 765 | ZeroMotion(true); |
784 | stepVelocity = OMV.Vector3.Zero; | 766 | stepVelocity = OMV.Vector3.Zero; |
785 | _velocityMotor.Enabled = false; | 767 | _velocityMotor.Enabled = false; |
786 | DetailLog("{0},BSCharacter.UpdateProperties,taint,disableVelocityMotor,m={1}", LocalID, _velocityMotor); | 768 | DetailLog("{0},BSCharacter.UpdateProperties,taint,disableVelocityMotor,m={1}", LocalID, _velocityMotor); |
787 | } | 769 | } |
770 | else | ||
771 | { | ||
772 | // If the motor is not being turned off... | ||
773 | // If falling, we keep the world's downward vector no matter what the other axis specify. | ||
774 | if (!Flying && !IsColliding) | ||
775 | { | ||
776 | stepVelocity.Z = entprop.Velocity.Z; | ||
777 | DetailLog("{0},BSCharacter.UpdateProperties,taint,overrideStepZWithWorldZ,stepVel={1}", LocalID, stepVelocity); | ||
778 | } | ||
779 | } | ||
788 | 780 | ||
789 | _velocity = stepVelocity; | 781 | _velocity = stepVelocity; |
790 | entprop.Velocity = _velocity; | 782 | entprop.Velocity = _velocity; |