aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs8
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs9
2 files changed, 13 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 8fa7880..aab6a49 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2992,10 +2992,14 @@ namespace OpenSim.Region.Framework.Scenes
2992 { 2992 {
2993 if (!m_rootPart.BlockGrab) 2993 if (!m_rootPart.BlockGrab)
2994 { 2994 {
2995 Vector3 llmoveforce = pos - AbsolutePosition; 2995/* Vector3 llmoveforce = pos - AbsolutePosition;
2996 Vector3 grabforce = llmoveforce; 2996 Vector3 grabforce = llmoveforce;
2997 grabforce = (grabforce / 10) * pa.Mass; 2997 grabforce = (grabforce / 10) * pa.Mass;
2998 pa.AddForce(grabforce, true); 2998 */
2999 // empirically convert distance diference to a impulse
3000 Vector3 grabforce = pos - AbsolutePosition;
3001 grabforce = grabforce * (pa.Mass/ 10.0f);
3002 pa.AddForce(grabforce, false);
2999 m_scene.PhysicsScene.AddPhysicsActorTaint(pa); 3003 m_scene.PhysicsScene.AddPhysicsActorTaint(pa);
3000 } 3004 }
3001 } 3005 }
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 2b1fb3d..a810de2 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1051,6 +1051,7 @@ namespace OpenSim.Region.Framework.Scenes
1051 IsChildAgent = true; 1051 IsChildAgent = true;
1052 m_scene.SwapRootAgentCount(true); 1052 m_scene.SwapRootAgentCount(true);
1053 RemoveFromPhysicalScene(); 1053 RemoveFromPhysicalScene();
1054 ParentID = 0; // Child agents can't be sitting
1054 1055
1055 // FIXME: Set RegionHandle to the region handle of the scene this agent is moving into 1056 // FIXME: Set RegionHandle to the region handle of the scene this agent is moving into
1056 1057
@@ -2091,6 +2092,9 @@ namespace OpenSim.Region.Framework.Scenes
2091 2092
2092 public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset) 2093 public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset)
2093 { 2094 {
2095 if (IsChildAgent)
2096 return;
2097
2094 if (ParentID != 0) 2098 if (ParentID != 0)
2095 { 2099 {
2096 StandUp(); 2100 StandUp();
@@ -2893,8 +2897,9 @@ namespace OpenSim.Region.Framework.Scenes
2893 2897
2894 // If we don't have a PhysActor, we can't cross anyway 2898 // If we don't have a PhysActor, we can't cross anyway
2895 // Also don't do this while sat, sitting avatars cross with the 2899 // Also don't do this while sat, sitting avatars cross with the
2896 // object they sit on. 2900 // object they sit on. ParentUUID denoted a pending sit, don't
2897 if (ParentID != 0 || PhysicsActor == null) 2901 // interfere with it.
2902 if (ParentID != 0 || PhysicsActor == null || ParentUUID != UUID.Zero)
2898 return; 2903 return;
2899 2904
2900 if (!IsInTransit) 2905 if (!IsInTransit)