aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRobert Adams2013-08-14 14:36:13 -0700
committerRobert Adams2013-08-14 14:49:24 -0700
commite8b1e91a1d4bb3ca65886c367c654a82033f4e03 (patch)
treebdd2f2d34b4f68f3335925a977a3b3d7e6a1cb86
parentBulletSim: add physical object initialized flag so updates and collisions (diff)
downloadopensim-SC-e8b1e91a1d4bb3ca65886c367c654a82033f4e03.zip
opensim-SC-e8b1e91a1d4bb3ca65886c367c654a82033f4e03.tar.gz
opensim-SC-e8b1e91a1d4bb3ca65886c367c654a82033f4e03.tar.bz2
opensim-SC-e8b1e91a1d4bb3ca65886c367c654a82033f4e03.tar.xz
BulletSim: include check for volume detect in check for zeroing avatar motion.
Normally, avatar motion is zeroed if colliding with a stationary object so they don't slide down hills and such. Without volume detect check this also allowed avatars to stand on volume detect objects and to have some jiggling when they were in the volume detect object. This commit fixes both.
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs2
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs6
2 files changed, 6 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs b/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
index c0589cd..68bc1b9 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
@@ -183,7 +183,7 @@ public class BSActorAvatarMove : BSActor
183 if (m_controllingPrim.IsColliding) 183 if (m_controllingPrim.IsColliding)
184 { 184 {
185 // If we are colliding with a stationary object, presume we're standing and don't move around 185 // If we are colliding with a stationary object, presume we're standing and don't move around
186 if (!m_controllingPrim.ColliderIsMoving) 186 if (!m_controllingPrim.ColliderIsMoving && !m_controllingPrim.ColliderIsVolumeDetect)
187 { 187 {
188 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,zeroingMotion", m_controllingPrim.LocalID); 188 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,zeroingMotion", m_controllingPrim.LocalID);
189 m_controllingPrim.IsStationary = true; 189 m_controllingPrim.IsStationary = true;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
index b26fef0..9dc52d5 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs
@@ -132,7 +132,8 @@ public abstract class BSPhysObject : PhysicsActor
132 public string PhysObjectName { get; protected set; } 132 public string PhysObjectName { get; protected set; }
133 public string TypeName { get; protected set; } 133 public string TypeName { get; protected set; }
134 134
135 // Set to 'true' when the object is completely initialized 135 // Set to 'true' when the object is completely initialized.
136 // This mostly prevents property updates and collisions until the object is completely here.
136 public bool IsInitialized { get; protected set; } 137 public bool IsInitialized { get; protected set; }
137 138
138 // Return the object mass without calculating it or having side effects 139 // Return the object mass without calculating it or having side effects
@@ -356,6 +357,8 @@ public abstract class BSPhysObject : PhysicsActor
356 // On a collision, check the collider and remember if the last collider was moving 357 // On a collision, check the collider and remember if the last collider was moving
357 // Used to modify the standing of avatars (avatars on stationary things stand still) 358 // Used to modify the standing of avatars (avatars on stationary things stand still)
358 public bool ColliderIsMoving; 359 public bool ColliderIsMoving;
360 // 'true' if the last collider was a volume detect object
361 public bool ColliderIsVolumeDetect;
359 // Used by BSCharacter to manage standing (and not slipping) 362 // Used by BSCharacter to manage standing (and not slipping)
360 public bool IsStationary; 363 public bool IsStationary;
361 364
@@ -435,6 +438,7 @@ public abstract class BSPhysObject : PhysicsActor
435 438
436 // For movement tests, remember if we are colliding with an object that is moving. 439 // For movement tests, remember if we are colliding with an object that is moving.
437 ColliderIsMoving = collidee != null ? (collidee.RawVelocity != OMV.Vector3.Zero) : false; 440 ColliderIsMoving = collidee != null ? (collidee.RawVelocity != OMV.Vector3.Zero) : false;
441 ColliderIsVolumeDetect = collidee != null ? (collidee.IsVolumeDetect) : false;
438 442
439 // Make a collection of the collisions that happened the last simulation tick. 443 // Make a collection of the collisions that happened the last simulation tick.
440 // This is different than the collection created for sending up to the simulator as it is cleared every tick. 444 // This is different than the collection created for sending up to the simulator as it is cleared every tick.