diff options
author | Robert Adams | 2013-05-22 16:06:06 -0700 |
---|---|---|
committer | Robert Adams | 2013-05-22 16:14:05 -0700 |
commit | 5444b3b1a5578224c5760f565c375fb1773a5bf4 (patch) | |
tree | cb557cd0b23b768e7d0e422c49fbca15b3700237 /OpenSim/Region/Physics/BulletSPlugin | |
parent | Eliminate race condition where SimStatsReporter starts reporting (diff) | |
download | opensim-SC_OLD-5444b3b1a5578224c5760f565c375fb1773a5bf4.zip opensim-SC_OLD-5444b3b1a5578224c5760f565c375fb1773a5bf4.tar.gz opensim-SC_OLD-5444b3b1a5578224c5760f565c375fb1773a5bf4.tar.bz2 opensim-SC_OLD-5444b3b1a5578224c5760f565c375fb1773a5bf4.tar.xz |
BulletSim: fix problem with walking up stairs that are oriented
in certain directions. The problem was really that the avatar capsule
orientation was being set incorrectly.
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index ff5b6ab..48f842e 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |||
@@ -483,8 +483,15 @@ public sealed class BSCharacter : BSPhysObject | |||
483 | { | 483 | { |
484 | // Bullet assumes we know what we are doing when forcing orientation | 484 | // Bullet assumes we know what we are doing when forcing orientation |
485 | // so it lets us go against all the rules and just compensates for them later. | 485 | // so it lets us go against all the rules and just compensates for them later. |
486 | // This keeps us from flipping the capsule over which the veiwer does not understand. | 486 | // This forces rotation to be only around the Z axis and doesn't change any of the other axis. |
487 | ForceOrientation = new OMV.Quaternion(0, 0, _orientation.Z,0); | 487 | // This keeps us from flipping the capsule over which the veiwer does not understand. |
488 | float oRoll, oPitch, oYaw; | ||
489 | _orientation.GetEulerAngles(out oRoll, out oPitch, out oYaw); | ||
490 | OMV.Quaternion trimmedOrientation = OMV.Quaternion.CreateFromEulers(0f, 0f, oYaw); | ||
491 | // DetailLog("{0},BSCharacter.setOrientation,taint,val={1},valDir={2},conv={3},convDir={4}", | ||
492 | // LocalID, _orientation, OMV.Vector3.UnitX * _orientation, | ||
493 | // trimmedOrientation, OMV.Vector3.UnitX * trimmedOrientation); | ||
494 | ForceOrientation = trimmedOrientation; | ||
488 | }); | 495 | }); |
489 | } | 496 | } |
490 | } | 497 | } |