diff options
Diffstat (limited to 'OpenSim/Region')
4 files changed, 19 insertions, 5 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 25af9ac..88bd869 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -405,7 +405,7 @@ namespace OpenSim | |||
405 | } | 405 | } |
406 | } | 406 | } |
407 | 407 | ||
408 | m_log.InfoFormat("[SCENE]: Secure permissions loading enabled, modules loaded: {0}", String.Join(" ", m_permsModules)); | 408 | m_log.InfoFormat("[SCENE]: Secure permissions loading enabled, modules loaded: {0}", String.Join(" ", m_permsModules.ToArray())); |
409 | } | 409 | } |
410 | 410 | ||
411 | scene.SetModuleInterfaces(); | 411 | scene.SetModuleInterfaces(); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index eebb8ae..f4ea975 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -3933,6 +3933,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3933 | part.Shape.ProfileHollow = 27500; | 3933 | part.Shape.ProfileHollow = 27500; |
3934 | } | 3934 | } |
3935 | } | 3935 | } |
3936 | else if (update.Entity is ScenePresence) | ||
3937 | { | ||
3938 | ScenePresence presence = (ScenePresence)update.Entity; | ||
3939 | |||
3940 | // If ParentUUID is not UUID.Zero and ParentID is 0, this | ||
3941 | // avatar is in the process of crossing regions while | ||
3942 | // sat on an object. In this state, we don't want any | ||
3943 | // updates because they will visually orbit the avatar. | ||
3944 | // Update will be forced once crossing is completed anyway. | ||
3945 | if (presence.ParentUUID != UUID.Zero && presence.ParentID == 0) | ||
3946 | continue; | ||
3947 | } | ||
3936 | 3948 | ||
3937 | ++updatesThisCall; | 3949 | ++updatesThisCall; |
3938 | 3950 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index f306651..3e1dcaa 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -591,6 +591,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
591 | avinfo.ParentID = av.ParentID; | 591 | avinfo.ParentID = av.ParentID; |
592 | avsToCross.Add(avinfo); | 592 | avsToCross.Add(avinfo); |
593 | 593 | ||
594 | av.PrevSitOffset = av.OffsetPosition; | ||
594 | av.ParentID = 0; | 595 | av.ParentID = 0; |
595 | } | 596 | } |
596 | 597 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 0ab267a..7004d23 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -242,7 +242,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
242 | 242 | ||
243 | private int m_movementAnimationUpdateCounter = 0; | 243 | private int m_movementAnimationUpdateCounter = 0; |
244 | 244 | ||
245 | private Vector3 m_prevSitOffset; | 245 | public Vector3 PrevSitOffset { get; set; } |
246 | 246 | ||
247 | protected AvatarAppearance m_appearance; | 247 | protected AvatarAppearance m_appearance; |
248 | 248 | ||
@@ -957,7 +957,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
957 | // ParentPosition = part.GetWorldPosition(); | 957 | // ParentPosition = part.GetWorldPosition(); |
958 | ParentID = part.LocalId; | 958 | ParentID = part.LocalId; |
959 | ParentPart = part; | 959 | ParentPart = part; |
960 | m_pos = m_prevSitOffset; | 960 | m_pos = PrevSitOffset; |
961 | // pos = ParentPosition; | 961 | // pos = ParentPosition; |
962 | pos = part.GetWorldPosition(); | 962 | pos = part.GetWorldPosition(); |
963 | } | 963 | } |
@@ -2261,6 +2261,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2261 | 2261 | ||
2262 | if (ParentID != 0) | 2262 | if (ParentID != 0) |
2263 | { | 2263 | { |
2264 | PrevSitOffset = m_pos; // Save sit offset | ||
2264 | SceneObjectPart part = ParentPart; | 2265 | SceneObjectPart part = ParentPart; |
2265 | UnRegisterSeatControls(part.ParentGroup.UUID); | 2266 | UnRegisterSeatControls(part.ParentGroup.UUID); |
2266 | 2267 | ||
@@ -3487,7 +3488,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3487 | cAgent.Appearance = new AvatarAppearance(Appearance); | 3488 | cAgent.Appearance = new AvatarAppearance(Appearance); |
3488 | 3489 | ||
3489 | cAgent.ParentPart = ParentUUID; | 3490 | cAgent.ParentPart = ParentUUID; |
3490 | cAgent.SitOffset = m_pos; | 3491 | cAgent.SitOffset = PrevSitOffset; |
3491 | 3492 | ||
3492 | lock (scriptedcontrols) | 3493 | lock (scriptedcontrols) |
3493 | { | 3494 | { |
@@ -3530,7 +3531,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3530 | CameraLeftAxis = cAgent.LeftAxis; | 3531 | CameraLeftAxis = cAgent.LeftAxis; |
3531 | CameraUpAxis = cAgent.UpAxis; | 3532 | CameraUpAxis = cAgent.UpAxis; |
3532 | ParentUUID = cAgent.ParentPart; | 3533 | ParentUUID = cAgent.ParentPart; |
3533 | m_prevSitOffset = cAgent.SitOffset; | 3534 | PrevSitOffset = cAgent.SitOffset; |
3534 | 3535 | ||
3535 | // When we get to the point of re-computing neighbors everytime this | 3536 | // When we get to the point of re-computing neighbors everytime this |
3536 | // changes, then start using the agent's drawdistance rather than the | 3537 | // changes, then start using the agent's drawdistance rather than the |