diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs index bebbb52cbe..76dfde7385 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODECharacter.cs @@ -1872,7 +1872,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde if (NewStatus) { AvatarGeomAndBodyDestroy(); - AvatarGeomAndBodyCreate(); m_parent_scene.actor_name_map[collider] = this; @@ -1882,7 +1881,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde { m_parent_scene.RemoveCollisionEventReporting(this); m_parent_scene.RemoveCharacter(this); - // destroy avatar capsule and related ODE data AvatarGeomAndBodyDestroy(); } diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs index 125bb1b8a4..d942d3fc25 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEScene.cs @@ -1286,7 +1286,10 @@ namespace OpenSim.Region.PhysicsModule.ubOde { int last = _charactersList.Count - 1; if(chr._charsListIndex != last) + { _charactersList[chr._charsListIndex] = _charactersList[last]; + _charactersList[chr._charsListIndex]._charsListIndex = chr._charsListIndex; + } _charactersList.RemoveAt(last); chr._charsListIndex = -1; }