From cdea572d2ea0256423a4cd72f132346d88a93e92 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 10 Jul 2012 23:50:04 +0100
Subject: refactor: move management of SOP.SitTargetAvatar into
 SOP.AddSittingAvatar() and SOP.RemoveSittingAvatar()

---
 OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 6 ++++++
 OpenSim/Region/Framework/Scenes/ScenePresence.cs   | 5 -----
 2 files changed, 6 insertions(+), 5 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index dcec7e9..b3f11a7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -4525,6 +4525,9 @@ namespace OpenSim.Region.Framework.Scenes
         /// <param name='avatarId'></param>
         protected internal bool AddSittingAvatar(UUID avatarId)
         {
+            if (IsSitTargetSet && SitTargetAvatar == UUID.Zero)
+                SitTargetAvatar = avatarId;
+
             HashSet<UUID> sittingAvatars = m_sittingAvatars;
 
             if (sittingAvatars == null)
@@ -4547,6 +4550,9 @@ namespace OpenSim.Region.Framework.Scenes
         /// <param name='avatarId'></param>
         protected internal bool RemoveSittingAvatar(UUID avatarId)
         {
+            if (SitTargetAvatar == avatarId)
+                SitTargetAvatar = UUID.Zero;
+
             HashSet<UUID> sittingAvatars = m_sittingAvatars;
 
             // This can occur under a race condition where another thread
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index a8c98ed..514c314 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1799,10 +1799,6 @@ namespace OpenSim.Region.Framework.Scenes
                     }
                 }
 
-                // Reset sit target.
-                if (part.SitTargetAvatar == UUID)
-                    part.SitTargetAvatar = UUID.Zero;
-
                 ParentPosition = part.GetWorldPosition();
                 ControllingClient.SendClearFollowCamProperties(part.ParentUUID);
 
@@ -1884,7 +1880,6 @@ namespace OpenSim.Region.Framework.Scenes
 //                        "[SCENE PRESENCE]: Sitting {0} on {1} {2} because sit target is set and unoccupied",
 //                        Name, part.Name, part.LocalId);
 
-                    part.SitTargetAvatar = UUID;
                     offset = part.SitTargetPosition;
                     sitOrientation = part.SitTargetOrientation;
                     canSit = true;
-- 
cgit v1.1