diff options
author | Teravus Ovares (Dan Olivares) | 2009-10-16 03:32:30 -0400 |
---|---|---|
committer | Teravus Ovares (Dan Olivares) | 2009-10-16 03:32:30 -0400 |
commit | ac2f98b846eba85ab3d9acb5bd0f355a404de86c (patch) | |
tree | 30cd43aeb953adaff3f9d833d4c1b05cbb61a135 /OpenSim/Region/Framework/Scenes/ScenePresence.cs | |
parent | minor: Change commented out authentication service realm setting to "users" t... (diff) | |
download | opensim-SC-ac2f98b846eba85ab3d9acb5bd0f355a404de86c.zip opensim-SC-ac2f98b846eba85ab3d9acb5bd0f355a404de86c.tar.gz opensim-SC-ac2f98b846eba85ab3d9acb5bd0f355a404de86c.tar.bz2 opensim-SC-ac2f98b846eba85ab3d9acb5bd0f355a404de86c.tar.xz |
* A hacky attempt at resolving mantis #4260. I think ODE was unable to allocate memory, and therefore the unmanaged wrapper call fails or worse.. there's some unmanaged resource accounting in the ODEPlugin for ODECharacter that isn't being done properly now.
* The broken avatar may not be able to move, but it won't stop simulate from pressing on now. And, the simulator will try to destroy the avatar's physics proxy and recreate it again... but if this is what I think it is, it may not help.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 646a483..96fa467 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -3410,11 +3410,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
3410 | scene.AddPhysicsActorTaint(m_physicsActor); | 3410 | scene.AddPhysicsActorTaint(m_physicsActor); |
3411 | //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; | 3411 | //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; |
3412 | m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; | 3412 | m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; |
3413 | m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong | ||
3413 | m_physicsActor.SubscribeEvents(500); | 3414 | m_physicsActor.SubscribeEvents(500); |
3414 | m_physicsActor.LocalID = LocalId; | 3415 | m_physicsActor.LocalID = LocalId; |
3415 | 3416 | ||
3416 | } | 3417 | } |
3417 | 3418 | ||
3419 | private void OutOfBoundsCall(PhysicsVector pos) | ||
3420 | { | ||
3421 | bool flying = m_physicsActor.Flying; | ||
3422 | RemoveFromPhysicalScene(); | ||
3423 | |||
3424 | AddToPhysicalScene(flying); | ||
3425 | } | ||
3426 | |||
3418 | // Event called by the physics plugin to tell the avatar about a collision. | 3427 | // Event called by the physics plugin to tell the avatar about a collision. |
3419 | private void PhysicsCollisionUpdate(EventArgs e) | 3428 | private void PhysicsCollisionUpdate(EventArgs e) |
3420 | { | 3429 | { |