aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs16
1 files changed, 10 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index c375450..3167282 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -570,6 +570,7 @@ namespace OpenSim.Region.Framework.Scenes
570 570
571 public bool haveGroupInformation; 571 public bool haveGroupInformation;
572 public bool gotCrossUpdate; 572 public bool gotCrossUpdate;
573 public byte crossingFlags;
573 574
574 public string Grouptitle 575 public string Grouptitle
575 { 576 {
@@ -1231,8 +1232,10 @@ namespace OpenSim.Region.Framework.Scenes
1231 else 1232 else
1232 { 1233 {
1233 part.AddSittingAvatar(this); 1234 part.AddSittingAvatar(this);
1234 if (part.SitTargetPosition != Vector3.Zero) 1235 // if not actually on the target invalidate it
1235 part.SitTargetAvatar = UUID; 1236 if(gotCrossUpdate && (crossingFlags & 0x04) == 0)
1237 part.SitTargetAvatar = UUID.Zero;
1238
1236 ParentID = part.LocalId; 1239 ParentID = part.LocalId;
1237 ParentPart = part; 1240 ParentPart = part;
1238 m_pos = PrevSitOffset; 1241 m_pos = PrevSitOffset;
@@ -1505,6 +1508,7 @@ namespace OpenSim.Region.Framework.Scenes
1505 { 1508 {
1506 haveGroupInformation = false; 1509 haveGroupInformation = false;
1507 gotCrossUpdate = false; 1510 gotCrossUpdate = false;
1511 crossingFlags = 0;
1508 m_scene.EventManager.OnRegionHeartbeatEnd -= RegionHeartbeatEnd; 1512 m_scene.EventManager.OnRegionHeartbeatEnd -= RegionHeartbeatEnd;
1509 1513
1510 RegionHandle = newRegionHandle; 1514 RegionHandle = newRegionHandle;
@@ -2212,6 +2216,7 @@ namespace OpenSim.Region.Framework.Scenes
2212 2216
2213 haveGroupInformation = true; 2217 haveGroupInformation = true;
2214 gotCrossUpdate = false; 2218 gotCrossUpdate = false;
2219 crossingFlags = 0;
2215 2220
2216 m_scene.EventManager.OnRegionHeartbeatEnd += RegionHeartbeatEnd; 2221 m_scene.EventManager.OnRegionHeartbeatEnd += RegionHeartbeatEnd;
2217 2222
@@ -4552,11 +4557,10 @@ namespace OpenSim.Region.Framework.Scenes
4552 if (Scene.AttachmentsModule != null) 4557 if (Scene.AttachmentsModule != null)
4553 Scene.AttachmentsModule.CopyAttachments(this, cAgent); 4558 Scene.AttachmentsModule.CopyAttachments(this, cAgent);
4554 4559
4555 cAgent.isCrossingUpdate = isCrossUpdate; 4560 cAgent.CrossingFlags = isCrossUpdate ? crossingFlags : (byte)0;
4556 4561
4557 if(isCrossUpdate && haveGroupInformation) 4562 if(isCrossUpdate && haveGroupInformation)
4558 { 4563 {
4559
4560 cAgent.agentCOF = COF; 4564 cAgent.agentCOF = COF;
4561 cAgent.ActiveGroupID = ControllingClient.ActiveGroupId; 4565 cAgent.ActiveGroupID = ControllingClient.ActiveGroupId;
4562 cAgent.ActiveGroupName = ControllingClient.ActiveGroupName; 4566 cAgent.ActiveGroupName = ControllingClient.ActiveGroupName;
@@ -4705,8 +4709,8 @@ namespace OpenSim.Region.Framework.Scenes
4705 } 4709 }
4706 } 4710 }
4707 4711
4708 gotCrossUpdate = cAgent.isCrossingUpdate; 4712 crossingFlags = cAgent.CrossingFlags;
4709 4713 gotCrossUpdate = (crossingFlags != 0);
4710 4714
4711 lock (m_originRegionIDAccessLock) 4715 lock (m_originRegionIDAccessLock)
4712 m_originRegionID = cAgent.RegionID; 4716 m_originRegionID = cAgent.RegionID;