diff options
author | Robert Adams | 2012-08-17 13:30:46 -0700 |
---|---|---|
committer | Robert Adams | 2012-08-17 13:34:22 -0700 |
commit | 03d76e94034bbaa82d1872284d1fadbaa263411d (patch) | |
tree | 1671d1481282e0fb64d609b4be8d82a2faf78c0f /OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |
parent | Modify order of code so SOP doesn't set the physics actor flying (diff) | |
download | opensim-SC-03d76e94034bbaa82d1872284d1fadbaa263411d.zip opensim-SC-03d76e94034bbaa82d1872284d1fadbaa263411d.tar.gz opensim-SC-03d76e94034bbaa82d1872284d1fadbaa263411d.tar.bz2 opensim-SC-03d76e94034bbaa82d1872284d1fadbaa263411d.tar.xz |
BulletSim: restore most of the Detail logging statements. Will have
no effect on non-logging running.
Capture region name that is passed to the physics engine and use
it for detail logging file name prefix.
Fix problem with avatars dropping when flying across region boundries.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index e2f7af9..1b23a36 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |||
@@ -124,10 +124,14 @@ public class BSCharacter : PhysicsActor | |||
124 | // do actual create at taint time | 124 | // do actual create at taint time |
125 | _scene.TaintedObject("BSCharacter.create", delegate() | 125 | _scene.TaintedObject("BSCharacter.create", delegate() |
126 | { | 126 | { |
127 | DetailLog("{0},BSCharacter.create", _localID); | ||
127 | BulletSimAPI.CreateObject(parent_scene.WorldID, shapeData); | 128 | BulletSimAPI.CreateObject(parent_scene.WorldID, shapeData); |
128 | 129 | ||
130 | // Set the buoyancy for flying. This will be refactored when all the settings happen in C# | ||
131 | BulletSimAPI.SetObjectBuoyancy(_scene.WorldID, LocalID, _buoyancy); | ||
132 | |||
129 | m_body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); | 133 | m_body = new BulletBody(LocalID, BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID)); |
130 | // avatars get all collisions no matter what | 134 | // avatars get all collisions no matter what (makes walking on ground and such work) |
131 | BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); | 135 | BulletSimAPI.AddToCollisionFlags2(Body.Ptr, CollisionFlags.BS_SUBSCRIBE_COLLISION_EVENTS); |
132 | }); | 136 | }); |
133 | 137 | ||
@@ -137,7 +141,7 @@ public class BSCharacter : PhysicsActor | |||
137 | // called when this character is being destroyed and the resources should be released | 141 | // called when this character is being destroyed and the resources should be released |
138 | public void Destroy() | 142 | public void Destroy() |
139 | { | 143 | { |
140 | // DetailLog("{0},BSCharacter.Destroy", LocalID); | 144 | DetailLog("{0},BSCharacter.Destroy", LocalID); |
141 | _scene.TaintedObject("BSCharacter.destroy", delegate() | 145 | _scene.TaintedObject("BSCharacter.destroy", delegate() |
142 | { | 146 | { |
143 | BulletSimAPI.DestroyObject(_scene.WorldID, _localID); | 147 | BulletSimAPI.DestroyObject(_scene.WorldID, _localID); |
@@ -319,14 +323,13 @@ public class BSCharacter : PhysicsActor | |||
319 | public override bool Flying { | 323 | public override bool Flying { |
320 | get { return _flying; } | 324 | get { return _flying; } |
321 | set { | 325 | set { |
322 | if (_flying != value) | 326 | _flying = value; |
323 | { | 327 | // simulate flying by changing the effect of gravity |
324 | _flying = value; | 328 | this.Buoyancy = ComputeBuoyancyFromFlying(_flying); |
325 | // simulate flying by changing the effect of gravity | ||
326 | this.Buoyancy = ComputeBuoyancyFromFlying(_flying); | ||
327 | } | ||
328 | } | 329 | } |
329 | } | 330 | } |
331 | // Flying is implimented by changing the avatar's buoyancy. | ||
332 | // Would this be done better with a vehicle type? | ||
330 | private float ComputeBuoyancyFromFlying(bool ifFlying) { | 333 | private float ComputeBuoyancyFromFlying(bool ifFlying) { |
331 | return ifFlying ? 1f : 0f; | 334 | return ifFlying ? 1f : 0f; |
332 | } | 335 | } |
@@ -488,11 +491,9 @@ public class BSCharacter : PhysicsActor | |||
488 | // Avatars don't report their changes the usual way. Changes are checked for in the heartbeat loop. | 491 | // Avatars don't report their changes the usual way. Changes are checked for in the heartbeat loop. |
489 | // base.RequestPhysicsterseUpdate(); | 492 | // base.RequestPhysicsterseUpdate(); |
490 | 493 | ||
491 | /* | ||
492 | DetailLog("{0},BSCharacter.UpdateProperties,call,pos={1},orient={2},vel={3},accel={4},rotVel={5}", | 494 | DetailLog("{0},BSCharacter.UpdateProperties,call,pos={1},orient={2},vel={3},accel={4},rotVel={5}", |
493 | LocalID, entprop.Position, entprop.Rotation, entprop.Velocity, | 495 | LocalID, entprop.Position, entprop.Rotation, entprop.Velocity, |
494 | entprop.Acceleration, entprop.RotationalVelocity); | 496 | entprop.Acceleration, entprop.RotationalVelocity); |
495 | */ | ||
496 | } | 497 | } |
497 | 498 | ||
498 | // Called by the scene when a collision with this object is reported | 499 | // Called by the scene when a collision with this object is reported |