diff options
author | Robert Adams | 2013-01-28 15:11:50 -0800 |
---|---|---|
committer | Robert Adams | 2013-01-28 15:11:50 -0800 |
commit | e9aff0a91d6a4d02498ce45759389bb09b34fcbc (patch) | |
tree | 7379562cbd8825413be1db2bc9a7f4a501e58207 /OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |
parent | BulletSim: rename 'uint' to 'UInt32' to make clear the type that is passed to... (diff) | |
download | opensim-SC-e9aff0a91d6a4d02498ce45759389bb09b34fcbc.zip opensim-SC-e9aff0a91d6a4d02498ce45759389bb09b34fcbc.tar.gz opensim-SC-e9aff0a91d6a4d02498ce45759389bb09b34fcbc.tar.bz2 opensim-SC-e9aff0a91d6a4d02498ce45759389bb09b34fcbc.tar.xz |
BulletSim: do not zero an avatar's standing velocity if it is standing
on a moving object.
Rearrange pre/post action subscription code to put more in locks.
Add meshmerizer params to BulletSimTestUtil scene creation (and fix line endings).
Rebuilt version of DLLs and SOs with cleaned up code and no profiling for sure.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index 7603254..3884a5d 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |||
@@ -56,7 +56,6 @@ public sealed class BSCharacter : BSPhysObject | |||
56 | private int _physicsActorType; | 56 | private int _physicsActorType; |
57 | private bool _isPhysical; | 57 | private bool _isPhysical; |
58 | private bool _flying; | 58 | private bool _flying; |
59 | private bool _wasWalking; // 'true' if the avatar was walking/moving last frame | ||
60 | private bool _setAlwaysRun; | 59 | private bool _setAlwaysRun; |
61 | private bool _throttleUpdates; | 60 | private bool _throttleUpdates; |
62 | private bool _floatOnWater; | 61 | private bool _floatOnWater; |
@@ -84,7 +83,6 @@ public sealed class BSCharacter : BSPhysObject | |||
84 | _position = pos; | 83 | _position = pos; |
85 | 84 | ||
86 | _flying = isFlying; | 85 | _flying = isFlying; |
87 | _wasWalking = true; // causes first step to initialize standing | ||
88 | _orientation = OMV.Quaternion.Identity; | 86 | _orientation = OMV.Quaternion.Identity; |
89 | _velocity = OMV.Vector3.Zero; | 87 | _velocity = OMV.Vector3.Zero; |
90 | _buoyancy = ComputeBuoyancyFromFlying(isFlying); | 88 | _buoyancy = ComputeBuoyancyFromFlying(isFlying); |
@@ -220,7 +218,13 @@ public sealed class BSCharacter : BSPhysObject | |||
220 | { | 218 | { |
221 | // The avatar shouldn't be moving | 219 | // The avatar shouldn't be moving |
222 | _velocityMotor.Zero(); | 220 | _velocityMotor.Zero(); |
223 | ZeroMotion(true /* inTaintTime */); | 221 | |
222 | // If we are colliding with a stationary object, presume we're standing and don't move around | ||
223 | if (!ColliderIsMoving) | ||
224 | { | ||
225 | DetailLog("{0},BSCharacter.MoveMotor,collidingWithStationary,zeroingMotion", LocalID); | ||
226 | ZeroMotion(true /* inTaintTime */); | ||
227 | } | ||
224 | 228 | ||
225 | // Standing has more friction on the ground | 229 | // Standing has more friction on the ground |
226 | if (_currentFriction != BSParam.AvatarStandingFriction) | 230 | if (_currentFriction != BSParam.AvatarStandingFriction) |
@@ -229,8 +233,6 @@ public sealed class BSCharacter : BSPhysObject | |||
229 | PhysicsScene.PE.SetFriction(PhysBody, _currentFriction); | 233 | PhysicsScene.PE.SetFriction(PhysBody, _currentFriction); |
230 | } | 234 | } |
231 | DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1}", LocalID, _velocityMotor.TargetValue); | 235 | DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1}", LocalID, _velocityMotor.TargetValue); |
232 | |||
233 | _wasWalking = false; | ||
234 | } | 236 | } |
235 | else | 237 | else |
236 | { | 238 | { |
@@ -260,7 +262,6 @@ public sealed class BSCharacter : BSPhysObject | |||
260 | 262 | ||
261 | DetailLog("{0},BSCharacter.MoveMotor,move,stepVel={1},vel={2},mass={3},moveForce={4}", LocalID, stepVelocity, _velocity, Mass, moveForce); | 263 | DetailLog("{0},BSCharacter.MoveMotor,move,stepVel={1},vel={2},mass={3},moveForce={4}", LocalID, stepVelocity, _velocity, Mass, moveForce); |
262 | PhysicsScene.PE.ApplyCentralImpulse(PhysBody, moveForce); | 264 | PhysicsScene.PE.ApplyCentralImpulse(PhysBody, moveForce); |
263 | _wasWalking = true; | ||
264 | } | 265 | } |
265 | }); | 266 | }); |
266 | } | 267 | } |