diff options
3 files changed, 27 insertions, 23 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 45506ed..ac13d5e 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -209,7 +209,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
209 | sp.Teleport(position); | 209 | sp.Teleport(position); |
210 | 210 | ||
211 | foreach (SceneObjectGroup grp in sp.GetAttachments()) | 211 | foreach (SceneObjectGroup grp in sp.GetAttachments()) |
212 | sp.Scene.EventManager.TriggerOnScriptChangedEvent(grp.LocalId, (uint)Changed.TELEPORT); | 212 | { |
213 | if (grp.IsDeleted) | ||
214 | sp.Scene.EventManager.TriggerOnScriptChangedEvent(grp.LocalId, (uint)Changed.TELEPORT); | ||
215 | } | ||
213 | } | 216 | } |
214 | else // Another region possibly in another simulator | 217 | else // Another region possibly in another simulator |
215 | { | 218 | { |
@@ -326,11 +329,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
326 | if (sp.ParentID != (uint)0) | 329 | if (sp.ParentID != (uint)0) |
327 | sp.StandUp(); | 330 | sp.StandUp(); |
328 | 331 | ||
329 | if (!sp.ValidateAttachments()) | 332 | // if (!sp.ValidateAttachments()) |
330 | { | 333 | // { |
331 | sp.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); | 334 | // sp.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); |
332 | return; | 335 | // return; |
333 | } | 336 | // } |
334 | 337 | ||
335 | string reason; | 338 | string reason; |
336 | string version; | 339 | string version; |
@@ -944,8 +947,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
944 | 947 | ||
945 | Scene m_scene = agent.Scene; | 948 | Scene m_scene = agent.Scene; |
946 | 949 | ||
947 | if (neighbourRegion != null && agent.ValidateAttachments()) | 950 | if (neighbourRegion != null) |
948 | { | 951 | { |
952 | agent.ValidateAttachments(); | ||
953 | |||
949 | pos = pos + (agent.Velocity); | 954 | pos = pos + (agent.Velocity); |
950 | 955 | ||
951 | SetInTransit(agent.UUID); | 956 | SetInTransit(agent.UUID); |
@@ -1763,16 +1768,16 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1763 | List<SceneObjectGroup> m_attachments = sp.GetAttachments(); | 1768 | List<SceneObjectGroup> m_attachments = sp.GetAttachments(); |
1764 | 1769 | ||
1765 | // Validate | 1770 | // Validate |
1766 | foreach (SceneObjectGroup gobj in m_attachments) | 1771 | // foreach (SceneObjectGroup gobj in m_attachments) |
1767 | { | 1772 | // { |
1768 | if (gobj == null || gobj.IsDeleted) | 1773 | // if (gobj == null || gobj.IsDeleted) |
1769 | return false; | 1774 | // return false; |
1770 | } | 1775 | // } |
1771 | 1776 | ||
1772 | foreach (SceneObjectGroup gobj in m_attachments) | 1777 | foreach (SceneObjectGroup gobj in m_attachments) |
1773 | { | 1778 | { |
1774 | // If the prim group is null then something must have happened to it! | 1779 | // If the prim group is null then something must have happened to it! |
1775 | if (gobj != null) | 1780 | if (gobj != null && !gobj.IsDeleted) |
1776 | { | 1781 | { |
1777 | // Set the parent localID to 0 so it transfers over properly. | 1782 | // Set the parent localID to 0 so it transfers over properly. |
1778 | gobj.RootPart.SetParentLocalId(0); | 1783 | gobj.RootPart.SetParentLocalId(0); |
diff --git a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs index b20a875..a14a84b 100644 --- a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs | |||
@@ -323,7 +323,8 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm | |||
323 | List<UUID> targets = new List<UUID>(); | 323 | List<UUID> targets = new List<UUID>(); |
324 | foreach (SceneObjectGroup sog in attachments) | 324 | foreach (SceneObjectGroup sog in attachments) |
325 | { | 325 | { |
326 | targets.Add(sog.UUID); | 326 | if (!sog.IsDeleted) |
327 | targets.Add(sog.UUID); | ||
327 | } | 328 | } |
328 | 329 | ||
329 | // Need to check each attachment | 330 | // Need to check each attachment |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 1c283c7..f231a39 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -3498,7 +3498,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3498 | m_attachments.Clear(); | 3498 | m_attachments.Clear(); |
3499 | } | 3499 | } |
3500 | 3500 | ||
3501 | public bool ValidateAttachments() | 3501 | /// <summary> |
3502 | /// This is currently just being done for information. | ||
3503 | /// </summary> | ||
3504 | public void ValidateAttachments() | ||
3502 | { | 3505 | { |
3503 | lock (m_attachments) | 3506 | lock (m_attachments) |
3504 | { | 3507 | { |
@@ -3508,21 +3511,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
3508 | if (gobj == null) | 3511 | if (gobj == null) |
3509 | { | 3512 | { |
3510 | m_log.WarnFormat( | 3513 | m_log.WarnFormat( |
3511 | "[SCENE PRESENCE]: Failed to validate an attachment for {0} since it was null", Name); | 3514 | "[SCENE PRESENCE]: Failed to validate an attachment for {0} since it was null. Continuing", Name); |
3512 | return false; | ||
3513 | } | 3515 | } |
3514 | 3516 | else if (gobj.IsDeleted) | |
3515 | if (gobj.IsDeleted) | ||
3516 | { | 3517 | { |
3517 | m_log.WarnFormat( | 3518 | m_log.WarnFormat( |
3518 | "[SCENE PRESENCE]: Failed to validate attachment {0} {1} for {2} since it had been deleted", | 3519 | "[SCENE PRESENCE]: Failed to validate attachment {0} {1} for {2} since it had been deleted. Continuing", |
3519 | gobj.Name, gobj.UUID, Name); | 3520 | gobj.Name, gobj.UUID, Name); |
3520 | return false; | ||
3521 | } | 3521 | } |
3522 | } | 3522 | } |
3523 | } | 3523 | } |
3524 | |||
3525 | return true; | ||
3526 | } | 3524 | } |
3527 | 3525 | ||
3528 | /// <summary> | 3526 | /// <summary> |