diff options
author | Justin Clark-Casey | 2014-11-19 19:08:33 +0000 |
---|---|---|
committer | Justin Clark-Casey | 2014-11-19 19:08:33 +0000 |
commit | 67e56872f3529e5e2b1bf6b6f548bc00fec129e7 (patch) | |
tree | 4c3ed489f3d2fa7f63a5bb85d33a8253873897d0 | |
parent | Minor: Update LLLoginService to handle explicitly set login locations that in... (diff) | |
download | opensim-SC-67e56872f3529e5e2b1bf6b6f548bc00fec129e7.zip opensim-SC-67e56872f3529e5e2b1bf6b6f548bc00fec129e7.tar.gz opensim-SC-67e56872f3529e5e2b1bf6b6f548bc00fec129e7.tar.bz2 opensim-SC-67e56872f3529e5e2b1bf6b6f548bc00fec129e7.tar.xz |
If llStopMoveToTarget() is called on an attachment, then stop the avatar if it was moving to target.
Same behaviour as on Linden Lab grid.
Will probably also address http://opensimulator.org/mantis/view.php?id=7369 by not generating spurious object updates when llStopMoveToTarget() is called in attachments where the avatar is not moving.
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 8535587..167485e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1891,10 +1891,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1891 | if (IsAttachment) | 1891 | if (IsAttachment) |
1892 | { | 1892 | { |
1893 | ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar); | 1893 | ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar); |
1894 | |||
1894 | if (avatar != null) | 1895 | if (avatar != null) |
1895 | { | ||
1896 | avatar.MoveToTarget(target, false, false); | 1896 | avatar.MoveToTarget(target, false, false); |
1897 | } | ||
1898 | } | 1897 | } |
1899 | else | 1898 | else |
1900 | { | 1899 | { |
@@ -1911,10 +1910,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
1911 | 1910 | ||
1912 | public void stopMoveToTarget() | 1911 | public void stopMoveToTarget() |
1913 | { | 1912 | { |
1914 | PhysicsActor pa = RootPart.PhysActor; | 1913 | if (IsAttachment) |
1914 | { | ||
1915 | ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar); | ||
1915 | 1916 | ||
1916 | if (pa != null) | 1917 | if (avatar != null) |
1917 | pa.PIDActive = false; | 1918 | avatar.ResetMoveToTarget(); |
1919 | } | ||
1920 | else | ||
1921 | { | ||
1922 | PhysicsActor pa = RootPart.PhysActor; | ||
1923 | |||
1924 | if (pa != null) | ||
1925 | { | ||
1926 | pa.PIDActive = false; | ||
1927 | |||
1928 | ScheduleGroupForTerseUpdate(); | ||
1929 | //ParentGroup.ScheduleGroupForFullUpdate(); | ||
1930 | } | ||
1931 | } | ||
1918 | } | 1932 | } |
1919 | 1933 | ||
1920 | /// <summary> | 1934 | /// <summary> |