diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 16 |
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; |