aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs17
1 files changed, 16 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs b/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
index 928b350..0f11c4a 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSActorAvatarMove.cs
@@ -130,6 +130,7 @@ public class BSActorAvatarMove : BSActor
130 SetVelocityAndTarget(m_controllingPrim.RawVelocity, m_controllingPrim.TargetVelocity, true /* inTaintTime */); 130 SetVelocityAndTarget(m_controllingPrim.RawVelocity, m_controllingPrim.TargetVelocity, true /* inTaintTime */);
131 131
132 m_physicsScene.BeforeStep += Mover; 132 m_physicsScene.BeforeStep += Mover;
133 m_controllingPrim.OnPreUpdateProperty += Process_OnPreUpdateProperty;
133 134
134 m_walkingUpStairs = 0; 135 m_walkingUpStairs = 0;
135 } 136 }
@@ -139,6 +140,7 @@ public class BSActorAvatarMove : BSActor
139 { 140 {
140 if (m_velocityMotor != null) 141 if (m_velocityMotor != null)
141 { 142 {
143 m_controllingPrim.OnPreUpdateProperty -= Process_OnPreUpdateProperty;
142 m_physicsScene.BeforeStep -= Mover; 144 m_physicsScene.BeforeStep -= Mover;
143 m_velocityMotor = null; 145 m_velocityMotor = null;
144 } 146 }
@@ -197,7 +199,7 @@ public class BSActorAvatarMove : BSActor
197 { 199 {
198 if (m_controllingPrim.Flying) 200 if (m_controllingPrim.Flying)
199 { 201 {
200 // Flying and not collising and velocity nearly zero. 202 // Flying and not colliding and velocity nearly zero.
201 m_controllingPrim.ZeroMotion(true /* inTaintTime */); 203 m_controllingPrim.ZeroMotion(true /* inTaintTime */);
202 } 204 }
203 } 205 }
@@ -266,6 +268,19 @@ public class BSActorAvatarMove : BSActor
266 } 268 }
267 } 269 }
268 270
271 // Called just as the property update is received from the physics engine.
272 // Do any mode necessary for avatar movement.
273 private void Process_OnPreUpdateProperty(ref EntityProperties entprop)
274 {
275 // Don't change position if standing on a stationary object.
276 if (m_controllingPrim.IsStationary)
277 {
278 entprop.Position = m_controllingPrim.RawPosition;
279 m_physicsScene.PE.SetTranslation(m_controllingPrim.PhysBody, entprop.Position, entprop.Rotation);
280 }
281
282 }
283
269 // Decide if the character is colliding with a low object and compute a force to pop the 284 // Decide if the character is colliding with a low object and compute a force to pop the
270 // avatar up so it can walk up and over the low objects. 285 // avatar up so it can walk up and over the low objects.
271 private OMV.Vector3 WalkUpStairs() 286 private OMV.Vector3 WalkUpStairs()