From d3050724d8fdb0de5b87285b782de9c4d2f9bac7 Mon Sep 17 00:00:00 2001 From: dan miller Date: Fri, 21 Sep 2007 02:31:36 +0000 Subject: physics-related fixes; should stabilize border crossings --- OpenSim/Region/Environment/Scenes/Scene.cs | 3 ++- OpenSim/Region/Environment/Scenes/ScenePresence.cs | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 5b08155..d89ca28 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -833,6 +833,7 @@ namespace OpenSim.Region.Environment.Scenes if (presence.PhysicsActor != null) { phyScene.RemoveAvatar(presence.PhysicsActor); + presence.PhysicsActor = null; } }); @@ -1028,7 +1029,7 @@ namespace OpenSim.Region.Environment.Scenes { if (m_scenePresences.ContainsKey(agentID)) { - m_scenePresences[agentID].MakeAvatar(position, isFlying); + m_scenePresences[agentID].MakeAvatarPhysical(position, isFlying); } } } diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index c0b9a35..1a38244 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -336,7 +336,7 @@ namespace OpenSim.Region.Environment.Scenes } } - public void MakeAvatar(LLVector3 pos, bool isFlying) + public void MakeAvatarPhysical(LLVector3 pos, bool isFlying) { newAvatar = true; childAgent = false; @@ -363,6 +363,7 @@ namespace OpenSim.Region.Environment.Scenes private void RemoveFromPhysicalScene() { m_scene.PhysScene.RemoveAvatar( this.PhysicsActor ); + this.PhysicsActor = null; } /// @@ -429,6 +430,15 @@ namespace OpenSim.Region.Environment.Scenes /// public void HandleAgentUpdate(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation) { + if (childAgent) + { + Console.WriteLine("DEBUG: HandleAgentUpdate: child agent"); + return; + } + if(PhysicsActor==null) { + Console.WriteLine("DEBUG: HandleAgentUpdate: null PhysicsActor!"); + return; + } int i = 0; bool update_movementflag = false; bool update_rotation = false; @@ -501,6 +511,11 @@ namespace OpenSim.Region.Environment.Scenes protected void AddNewMovement(Vector3 vec, Quaternion rotation) { + if (childAgent) + { + Console.WriteLine("DEBUG: AddNewMovement: child agent"); + return; + } NewForce newVelocity = new NewForce(); Vector3 direc = rotation*vec; direc.Normalize(); -- cgit v1.1