aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorRobert Adams2016-01-18 07:00:50 -0800
committerRobert Adams2016-01-18 07:00:50 -0800
commitfb57d315386e4560d507f74c78a5a3c5208a5adf (patch)
tree1e288830b6ad9efb90891b712c5633fd30142ea8 /OpenSim
parentCode cleanup to terse update sending as given in a patch in Mantis 7813. (diff)
downloadopensim-SC-fb57d315386e4560d507f74c78a5a3c5208a5adf.zip
opensim-SC-fb57d315386e4560d507f74c78a5a3c5208a5adf.tar.gz
opensim-SC-fb57d315386e4560d507f74c78a5a3c5208a5adf.tar.bz2
opensim-SC-fb57d315386e4560d507f74c78a5a3c5208a5adf.tar.xz
BulletSim: revert avatar stationary testing for having slight velocity.
This fix causes drift (Mantis 7813). This revision will rebreak pushing (Mantis 7779) but drifting is bad and pushing will be fixed in future commits.
Diffstat (limited to 'OpenSim')
-rwxr-xr-xOpenSim/Region/PhysicsModules/BulletS/BSActorAvatarMove.cs19
1 files changed, 14 insertions, 5 deletions
diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSActorAvatarMove.cs b/OpenSim/Region/PhysicsModules/BulletS/BSActorAvatarMove.cs
index 12ffacb..71cd879 100755
--- a/OpenSim/Region/PhysicsModules/BulletS/BSActorAvatarMove.cs
+++ b/OpenSim/Region/PhysicsModules/BulletS/BSActorAvatarMove.cs
@@ -117,11 +117,13 @@ public class BSActorAvatarMove : BSActor
117 m_velocityMotor.SetTarget(targ); 117 m_velocityMotor.SetTarget(targ);
118 m_velocityMotor.SetCurrent(vel); 118 m_velocityMotor.SetCurrent(vel);
119 m_velocityMotor.Enabled = true; 119 m_velocityMotor.Enabled = true;
120 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,SetVelocityAndTarget,vel={1}, targ={2}, inTaintTime={3}",
121 m_controllingPrim.LocalID, vel, targ, inTaintTime);
120 } 122 }
121 }); 123 });
122 } 124 }
123 125
124 // If a hover motor has not been created, create one and start the hovering. 126 // If a movement motor has not been created, create one and start the hovering.
125 private void ActivateAvatarMove() 127 private void ActivateAvatarMove()
126 { 128 {
127 if (m_velocityMotor == null) 129 if (m_velocityMotor == null)
@@ -133,7 +135,7 @@ public class BSActorAvatarMove : BSActor
133 1f // efficiency 135 1f // efficiency
134 ); 136 );
135 m_velocityMotor.ErrorZeroThreshold = BSParam.AvatarStopZeroThreshold; 137 m_velocityMotor.ErrorZeroThreshold = BSParam.AvatarStopZeroThreshold;
136 // _velocityMotor.PhysicsScene = PhysicsScene; // DEBUG DEBUG so motor will output detail log messages. 138 // m_velocityMotor.PhysicsScene = m_controllingPrim.PhysScene; // DEBUG DEBUG so motor will output detail log messages.
137 SetVelocityAndTarget(m_controllingPrim.RawVelocity, m_controllingPrim.TargetVelocity, true /* inTaintTime */); 139 SetVelocityAndTarget(m_controllingPrim.RawVelocity, m_controllingPrim.TargetVelocity, true /* inTaintTime */);
138 140
139 m_physicsScene.BeforeStep += Mover; 141 m_physicsScene.BeforeStep += Mover;
@@ -190,8 +192,14 @@ public class BSActorAvatarMove : BSActor
190 // if colliding with something stationary and we're not doing volume detect . 192 // if colliding with something stationary and we're not doing volume detect .
191 if (!m_controllingPrim.ColliderIsMoving && !m_controllingPrim.ColliderIsVolumeDetect) 193 if (!m_controllingPrim.ColliderIsMoving && !m_controllingPrim.ColliderIsVolumeDetect)
192 { 194 {
193 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,totalForce={1}, vel={2}", /* DEBUG */ 195 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,zeroingMotion", m_controllingPrim.LocalID);
194 m_controllingPrim.LocalID, m_physicsScene.PE.GetTotalForce(m_controllingPrim.PhysBody), m_controllingPrim.Velocity); /* DEBUG */ 196 m_controllingPrim.IsStationary = true;
197 m_controllingPrim.ZeroMotion(true /* inTaintTime */);
198
199 /* 20160118 Attempt to not be stationary if some velocity applied. Caused drifting since still can't tell who applied velocity.
200 * Solution is to make clearer what is causing the added velocity (push or environment) when deciding if stationary.
201 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,totalForce={1}, vel={2}",
202 m_controllingPrim.LocalID, m_physicsScene.PE.GetTotalForce(m_controllingPrim.PhysBody), m_controllingPrim.Velocity);
195 // If velocity is very small, assume it is movement creep and suppress it. 203 // If velocity is very small, assume it is movement creep and suppress it.
196 // Applying push forces (Character.AddForce) should move the avatar and that is only seen here as velocity. 204 // Applying push forces (Character.AddForce) should move the avatar and that is only seen here as velocity.
197 if ( (m_controllingPrim.Velocity.LengthSquared() < BSParam.AvatarStopZeroThresholdSquared) 205 if ( (m_controllingPrim.Velocity.LengthSquared() < BSParam.AvatarStopZeroThresholdSquared)
@@ -199,13 +207,14 @@ public class BSActorAvatarMove : BSActor
199 { 207 {
200 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,zeroingMotion", m_controllingPrim.LocalID); 208 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,zeroingMotion", m_controllingPrim.LocalID);
201 m_controllingPrim.IsStationary = true; 209 m_controllingPrim.IsStationary = true;
202 m_controllingPrim.ZeroMotion(true /* inTaintTime */); 210 m_controllingPrim.ZeroMotion(true);
203 } 211 }
204 else 212 else
205 { 213 {
206 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,not zeroing because velocity={1}", 214 m_physicsScene.DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,not zeroing because velocity={1}",
207 m_controllingPrim.LocalID, m_controllingPrim.Velocity); 215 m_controllingPrim.LocalID, m_controllingPrim.Velocity);
208 } 216 }
217 */
209 } 218 }
210 219
211 // Standing has more friction on the ground 220 // Standing has more friction on the ground