diff options
19 files changed, 79 insertions, 53 deletions
diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index 87b99e0..df9d21b 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs | |||
@@ -897,7 +897,13 @@ namespace OpenSim.Client.MXP.ClientStack | |||
897 | // Need to translate to MXP somehow | 897 | // Need to translate to MXP somehow |
898 | } | 898 | } |
899 | 899 | ||
900 | public void SendKillObject(ulong regionHandle, uint localID) | 900 | public void SendKillObject(ulong regionHandle, List<uint> localIDs) |
901 | { | ||
902 | foreach (uint localID in localIDs) | ||
903 | SendKillObject(regionHandle, localID); | ||
904 | } | ||
905 | |||
906 | private void SendKillObject(ulong regionHandle, uint localID) | ||
901 | { | 907 | { |
902 | DisappearanceEventMessage de = new DisappearanceEventMessage(); | 908 | DisappearanceEventMessage de = new DisappearanceEventMessage(); |
903 | de.ObjectIndex = localID; | 909 | de.ObjectIndex = localID; |
diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index 51c5c17..26be5d9 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs | |||
@@ -495,7 +495,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack | |||
495 | throw new System.NotImplementedException(); | 495 | throw new System.NotImplementedException(); |
496 | } | 496 | } |
497 | 497 | ||
498 | public void SendKillObject(ulong regionHandle, uint localID) | 498 | public void SendKillObject(ulong regionHandle, List<uint> localID) |
499 | { | 499 | { |
500 | throw new System.NotImplementedException(); | 500 | throw new System.NotImplementedException(); |
501 | } | 501 | } |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 9025dda..51482a1 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -979,7 +979,7 @@ namespace OpenSim.Framework | |||
979 | /// </summary> | 979 | /// </summary> |
980 | /// <param name="regionHandle"></param> | 980 | /// <param name="regionHandle"></param> |
981 | /// <param name="localID"></param> | 981 | /// <param name="localID"></param> |
982 | void SendKillObject(ulong regionHandle, uint localID); | 982 | void SendKillObject(ulong regionHandle, List<uint> localID); |
983 | 983 | ||
984 | void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); | 984 | void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); |
985 | void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); | 985 | void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2b1bd97..fff4300 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -1516,35 +1516,46 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1516 | OutPacket(pc, ThrottleOutPacketType.Unknown); | 1516 | OutPacket(pc, ThrottleOutPacketType.Unknown); |
1517 | } | 1517 | } |
1518 | 1518 | ||
1519 | public void SendKillObject(ulong regionHandle, uint localID) | 1519 | public void SendKillObject(ulong regionHandle, List<uint> localIDs) |
1520 | { | 1520 | { |
1521 | // m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, localID, regionHandle); | 1521 | // m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, localID, regionHandle); |
1522 | 1522 | ||
1523 | KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); | 1523 | KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); |
1524 | // TODO: don't create new blocks if recycling an old packet | 1524 | // TODO: don't create new blocks if recycling an old packet |
1525 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; | 1525 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[localIDs.Count]; |
1526 | kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); | 1526 | for (int i = 0 ; i < localIDs.Count ; i++ ) |
1527 | kill.ObjectData[0].ID = localID; | 1527 | { |
1528 | kill.ObjectData[i] = new KillObjectPacket.ObjectDataBlock(); | ||
1529 | kill.ObjectData[i].ID = localIDs[i]; | ||
1530 | } | ||
1528 | kill.Header.Reliable = true; | 1531 | kill.Header.Reliable = true; |
1529 | kill.Header.Zerocoded = true; | 1532 | kill.Header.Zerocoded = true; |
1530 | 1533 | ||
1531 | if (m_scene.GetScenePresence(localID) == null) | 1534 | if (localIDs.Count == 1) |
1532 | { | 1535 | { |
1533 | lock (m_entityUpdates.SyncRoot) | 1536 | if (m_scene.GetScenePresence(localIDs[0]) != null) |
1534 | { | 1537 | { |
1535 | m_killRecord.Add(localID); | 1538 | OutPacket(kill, ThrottleOutPacketType.State); |
1536 | 1539 | return; | |
1537 | // The throttle queue used here must match that being used for updates. Otherwise, there is a | ||
1538 | // chance that a kill packet put on a separate queue will be sent to the client before an existing | ||
1539 | // update packet on another queue. Receiving updates after kills results in unowned and undeletable | ||
1540 | // scene objects in a viewer until that viewer is relogged in. | ||
1541 | OutPacket(kill, ThrottleOutPacketType.Task); | ||
1542 | } | 1540 | } |
1541 | m_killRecord.Add(localIDs[0]); | ||
1543 | } | 1542 | } |
1544 | else | 1543 | else |
1545 | { | 1544 | { |
1546 | OutPacket(kill, ThrottleOutPacketType.State); | 1545 | lock (m_entityUpdates.SyncRoot) |
1546 | { | ||
1547 | foreach (uint localID in localIDs) | ||
1548 | m_killRecord.Add(localID); | ||
1549 | } | ||
1547 | } | 1550 | } |
1551 | |||
1552 | // The throttle queue used here must match that being used for | ||
1553 | // updates. Otherwise, there is a chance that a kill packet put | ||
1554 | // on a separate queue will be sent to the client before an | ||
1555 | // existing update packet on another queue. Receiving updates | ||
1556 | // after kills results in unowned and undeletable | ||
1557 | // scene objects in a viewer until that viewer is relogged in. | ||
1558 | OutPacket(kill, ThrottleOutPacketType.Task); | ||
1548 | } | 1559 | } |
1549 | 1560 | ||
1550 | /// <summary> | 1561 | /// <summary> |
@@ -10969,7 +10980,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10969 | { | 10980 | { |
10970 | // It's a ghost! tell the client to delete it from view. | 10981 | // It's a ghost! tell the client to delete it from view. |
10971 | simClient.SendKillObject(Scene.RegionInfo.RegionHandle, | 10982 | simClient.SendKillObject(Scene.RegionInfo.RegionHandle, |
10972 | localId); | 10983 | new List<uint>() { localId }); |
10973 | } | 10984 | } |
10974 | else | 10985 | else |
10975 | { | 10986 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 87c9100..6ff0ffc 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -616,7 +616,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
616 | // | 616 | // |
617 | if (so.IsSelected) | 617 | if (so.IsSelected) |
618 | { | 618 | { |
619 | m_scene.SendKillObject(so.RootPart.LocalId); | 619 | m_scene.SendKillObject(new List<uint> { so.RootPart.LocalId }); |
620 | } | 620 | } |
621 | 621 | ||
622 | so.IsSelected = false; // fudge.... | 622 | so.IsSelected = false; // fudge.... |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index d506208..2921b0d 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -529,7 +529,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
529 | 529 | ||
530 | protected void KillEntity(Scene scene, uint localID) | 530 | protected void KillEntity(Scene scene, uint localID) |
531 | { | 531 | { |
532 | scene.SendKillObject(localID); | 532 | scene.SendKillObject(new List<uint>() { localID }); |
533 | } | 533 | } |
534 | 534 | ||
535 | protected virtual GridRegion GetFinalDestination(GridRegion region) | 535 | protected virtual GridRegion GetFinalDestination(GridRegion region) |
diff --git a/OpenSim/Region/Examples/SimpleModule/ComplexObject.cs b/OpenSim/Region/Examples/SimpleModule/ComplexObject.cs index e951bef..7a0ce51 100644 --- a/OpenSim/Region/Examples/SimpleModule/ComplexObject.cs +++ b/OpenSim/Region/Examples/SimpleModule/ComplexObject.cs | |||
@@ -25,6 +25,7 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System.Collections.Generic; | ||
28 | using OpenMetaverse; | 29 | using OpenMetaverse; |
29 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
30 | using OpenSim.Region.Framework.Scenes; | 31 | using OpenSim.Region.Framework.Scenes; |
@@ -110,7 +111,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
110 | { | 111 | { |
111 | m_parts.Remove(part.UUID); | 112 | m_parts.Remove(part.UUID); |
112 | 113 | ||
113 | remoteClient.SendKillObject(m_regionHandle, part.LocalId); | 114 | remoteClient.SendKillObject(m_regionHandle, new List<uint>() { part.LocalId} ); |
114 | remoteClient.AddMoney(1); | 115 | remoteClient.AddMoney(1); |
115 | remoteClient.SendChatMessage("Poof!", 1, AbsolutePosition, "Party Party", UUID.Zero, (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); | 116 | remoteClient.SendChatMessage("Poof!", 1, AbsolutePosition, "Party Party", UUID.Zero, (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); |
116 | } | 117 | } |
@@ -121,7 +122,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
121 | { | 122 | { |
122 | m_parts.Remove(m_rootPart.UUID); | 123 | m_parts.Remove(m_rootPart.UUID); |
123 | m_scene.DeleteSceneObject(this, false); | 124 | m_scene.DeleteSceneObject(this, false); |
124 | remoteClient.SendKillObject(m_regionHandle, m_rootPart.LocalId); | 125 | remoteClient.SendKillObject(m_regionHandle, new List<uint>() { m_rootPart.LocalId }); |
125 | remoteClient.AddMoney(50); | 126 | remoteClient.AddMoney(50); |
126 | remoteClient.SendChatMessage("KABLAM!!!", 1, AbsolutePosition, "Groupie Groupie", UUID.Zero, (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); | 127 | remoteClient.SendChatMessage("KABLAM!!!", 1, AbsolutePosition, "Groupie Groupie", UUID.Zero, (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); |
127 | } | 128 | } |
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 944ad94..db427b4 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | |||
@@ -429,7 +429,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
429 | 429 | ||
430 | } | 430 | } |
431 | 431 | ||
432 | public virtual void SendKillObject(ulong regionHandle, uint localID) | 432 | public virtual void SendKillObject(ulong regionHandle, List<uint> localID) |
433 | { | 433 | { |
434 | } | 434 | } |
435 | 435 | ||
diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index 8feb022..a8d24fd 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs | |||
@@ -104,8 +104,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
104 | // better than losing the object for now. | 104 | // better than losing the object for now. |
105 | if (permissionToDelete) | 105 | if (permissionToDelete) |
106 | { | 106 | { |
107 | List<uint> killIDs = new List<uint>(); | ||
108 | |||
107 | foreach (SceneObjectGroup g in objectGroups) | 109 | foreach (SceneObjectGroup g in objectGroups) |
110 | { | ||
111 | killIDs.Add(g.LocalId); | ||
108 | g.DeleteGroupFromScene(false); | 112 | g.DeleteGroupFromScene(false); |
113 | } | ||
114 | |||
115 | m_scene.SendKillObject(killIDs); | ||
109 | } | 116 | } |
110 | } | 117 | } |
111 | 118 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 8b5316a..6d7f984 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1709,7 +1709,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1709 | if (part == null) | 1709 | if (part == null) |
1710 | { | 1710 | { |
1711 | //Client still thinks the object exists, kill it | 1711 | //Client still thinks the object exists, kill it |
1712 | SendKillObject(localID); | 1712 | deleteIDs.Add(localID); |
1713 | continue; | 1713 | continue; |
1714 | } | 1714 | } |
1715 | 1715 | ||
@@ -1717,7 +1717,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1717 | if (part.ParentGroup == null || part.ParentGroup.IsDeleted) | 1717 | if (part.ParentGroup == null || part.ParentGroup.IsDeleted) |
1718 | { | 1718 | { |
1719 | //Client still thinks the object exists, kill it | 1719 | //Client still thinks the object exists, kill it |
1720 | SendKillObject(localID); | 1720 | deleteIDs.Add(localID); |
1721 | continue; | 1721 | continue; |
1722 | } | 1722 | } |
1723 | 1723 | ||
@@ -1727,8 +1727,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1727 | 1727 | ||
1728 | SceneObjectGroup grp = part.ParentGroup; | 1728 | SceneObjectGroup grp = part.ParentGroup; |
1729 | 1729 | ||
1730 | deleteIDs.Add(localID); | ||
1731 | deleteGroups.Add(grp); | 1730 | deleteGroups.Add(grp); |
1731 | deleteIDs.Add(grp.LocalId); | ||
1732 | 1732 | ||
1733 | if (remoteClient == null) | 1733 | if (remoteClient == null) |
1734 | { | 1734 | { |
@@ -1811,6 +1811,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1811 | } | 1811 | } |
1812 | } | 1812 | } |
1813 | 1813 | ||
1814 | SendKillObject(deleteIDs); | ||
1815 | |||
1814 | if (permissionToTake) | 1816 | if (permissionToTake) |
1815 | { | 1817 | { |
1816 | m_asyncSceneObjectDeleter.DeleteToInventory( | 1818 | m_asyncSceneObjectDeleter.DeleteToInventory( |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 76e160d..48ae4ca 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2188,6 +2188,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2188 | } | 2188 | } |
2189 | 2189 | ||
2190 | group.DeleteGroupFromScene(silent); | 2190 | group.DeleteGroupFromScene(silent); |
2191 | if (!silent) | ||
2192 | SendKillObject(new List<uint>() { group.LocalId }); | ||
2191 | 2193 | ||
2192 | // m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID); | 2194 | // m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID); |
2193 | } | 2195 | } |
@@ -3273,7 +3275,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3273 | delegate(IClientAPI client) | 3275 | delegate(IClientAPI client) |
3274 | { | 3276 | { |
3275 | //We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway | 3277 | //We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway |
3276 | try { client.SendKillObject(avatar.RegionHandle, avatar.LocalId); } | 3278 | try { client.SendKillObject(avatar.RegionHandle, new List<uint>() { avatar.LocalId}); } |
3277 | catch (NullReferenceException) { } | 3279 | catch (NullReferenceException) { } |
3278 | }); | 3280 | }); |
3279 | 3281 | ||
@@ -3336,18 +3338,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
3336 | 3338 | ||
3337 | #region Entities | 3339 | #region Entities |
3338 | 3340 | ||
3339 | public void SendKillObject(uint localID) | 3341 | public void SendKillObject(List<uint> localIDs) |
3340 | { | 3342 | { |
3341 | SceneObjectPart part = GetSceneObjectPart(localID); | 3343 | List<uint> deleteIDs = new List<uint>(); |
3342 | if (part != null) // It is a prim | 3344 | |
3345 | foreach (uint localID in localIDs) | ||
3343 | { | 3346 | { |
3344 | if (part.ParentGroup != null && !part.ParentGroup.IsDeleted) // Valid | 3347 | SceneObjectPart part = GetSceneObjectPart(localID); |
3348 | if (part != null) // It is a prim | ||
3345 | { | 3349 | { |
3346 | if (part.ParentGroup.RootPart != part) // Child part | 3350 | if (part.ParentGroup != null && !part.ParentGroup.IsDeleted) // Valid |
3347 | return; | 3351 | { |
3352 | if (part.ParentGroup.RootPart != part) // Child part | ||
3353 | continue; | ||
3354 | } | ||
3348 | } | 3355 | } |
3356 | deleteIDs.Add(localID); | ||
3349 | } | 3357 | } |
3350 | ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, localID); }); | 3358 | ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, deleteIDs); }); |
3351 | } | 3359 | } |
3352 | 3360 | ||
3353 | #endregion | 3361 | #endregion |
@@ -3365,7 +3373,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
3365 | //m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; | 3373 | //m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; |
3366 | //m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; | 3374 | //m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; |
3367 | m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid; | 3375 | m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid; |
3368 | m_sceneGridService.KiPrimitive += SendKillObject; | ||
3369 | m_sceneGridService.OnGetLandData += GetLandData; | 3376 | m_sceneGridService.OnGetLandData += GetLandData; |
3370 | } | 3377 | } |
3371 | 3378 | ||
@@ -3374,7 +3381,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
3374 | /// </summary> | 3381 | /// </summary> |
3375 | public void UnRegisterRegionWithComms() | 3382 | public void UnRegisterRegionWithComms() |
3376 | { | 3383 | { |
3377 | m_sceneGridService.KiPrimitive -= SendKillObject; | ||
3378 | m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid; | 3384 | m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid; |
3379 | //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; | 3385 | //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; |
3380 | //m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; | 3386 | //m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 1293d5d..632646d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -44,8 +44,6 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; | |||
44 | 44 | ||
45 | namespace OpenSim.Region.Framework.Scenes | 45 | namespace OpenSim.Region.Framework.Scenes |
46 | { | 46 | { |
47 | public delegate void KiPrimitiveDelegate(uint localID); | ||
48 | |||
49 | public delegate void RemoveKnownRegionsFromAvatarList(UUID avatarID, List<ulong> regionlst); | 47 | public delegate void RemoveKnownRegionsFromAvatarList(UUID avatarID, List<ulong> regionlst); |
50 | 48 | ||
51 | /// <summary> | 49 | /// <summary> |
@@ -113,8 +111,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
113 | // private LogOffUser handlerLogOffUser = null; | 111 | // private LogOffUser handlerLogOffUser = null; |
114 | // private GetLandData handlerGetLandData = null; // OnGetLandData | 112 | // private GetLandData handlerGetLandData = null; // OnGetLandData |
115 | 113 | ||
116 | public KiPrimitiveDelegate KiPrimitive; | ||
117 | |||
118 | public SceneCommunicationService() | 114 | public SceneCommunicationService() |
119 | { | 115 | { |
120 | } | 116 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 9a7d560..c870797 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1151,7 +1151,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1151 | // | 1151 | // |
1152 | if (IsSelected) | 1152 | if (IsSelected) |
1153 | { | 1153 | { |
1154 | m_scene.SendKillObject(m_rootPart.LocalId); | 1154 | m_scene.SendKillObject(new List<uint> { m_rootPart.LocalId }); |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | IsSelected = false; // fudge.... | 1157 | IsSelected = false; // fudge.... |
@@ -1415,11 +1415,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1415 | avatar.StandUp(); | 1415 | avatar.StandUp(); |
1416 | 1416 | ||
1417 | if (!silent) | 1417 | if (!silent) |
1418 | { | ||
1419 | part.UpdateFlag = 0; | 1418 | part.UpdateFlag = 0; |
1420 | if (part == m_rootPart) | ||
1421 | avatar.ControllingClient.SendKillObject(m_regionHandle, part.LocalId); | ||
1422 | } | ||
1423 | }); | 1419 | }); |
1424 | } | 1420 | } |
1425 | 1421 | ||
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 4ab67aa..72e5ebd 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs | |||
@@ -947,7 +947,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
947 | 947 | ||
948 | } | 948 | } |
949 | 949 | ||
950 | public void SendKillObject(ulong regionHandle, uint localID) | 950 | public void SendKillObject(ulong regionHandle, List<uint> localID) |
951 | { | 951 | { |
952 | 952 | ||
953 | } | 953 | } |
diff --git a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs index 3a6996e..84c7f29 100644 --- a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs +++ b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs | |||
@@ -259,9 +259,10 @@ namespace OpenSim.Region.OptionalModules.ContentManagement | |||
259 | // I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles. | 259 | // I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles. |
260 | ((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup(); | 260 | ((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup(); |
261 | scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); | 261 | scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); |
262 | scene.SendKillObject(scene.Entities[uuid].LocalId); | 262 | scene.SendKillObject(new List<uint>() { scene.Entities[uuid].LocalId }); |
263 | scene.SceneGraph.DeleteSceneObject(uuid, false); | 263 | scene.SceneGraph.DeleteSceneObject(uuid, false); |
264 | ((SceneObjectGroup)scene.Entities[uuid]).DeleteGroupFromScene(false); | 264 | ((SceneObjectGroup)scene.Entities[uuid]).DeleteGroupFromScene(false); |
265 | scene.SendKillObject(new List<uint>() { ((SceneObjectGroup)scene.Entities[uuid]).LocalId }); | ||
265 | } | 266 | } |
266 | catch(Exception e) | 267 | catch(Exception e) |
267 | { | 268 | { |
diff --git a/OpenSim/Region/OptionalModules/ContentManagementSystem/MetaEntity.cs b/OpenSim/Region/OptionalModules/ContentManagementSystem/MetaEntity.cs index c7b1ed7..cd60f4b 100644 --- a/OpenSim/Region/OptionalModules/ContentManagementSystem/MetaEntity.cs +++ b/OpenSim/Region/OptionalModules/ContentManagementSystem/MetaEntity.cs | |||
@@ -175,7 +175,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement | |||
175 | //This is important because we are not IN any database. | 175 | //This is important because we are not IN any database. |
176 | //m_Entity.FakeDeleteGroup(); | 176 | //m_Entity.FakeDeleteGroup(); |
177 | foreach (SceneObjectPart part in m_Entity.Parts) | 177 | foreach (SceneObjectPart part in m_Entity.Parts) |
178 | client.SendKillObject(m_Entity.RegionHandle, part.LocalId); | 178 | client.SendKillObject(m_Entity.RegionHandle, new List<uint>() { part.LocalId }); |
179 | } | 179 | } |
180 | 180 | ||
181 | /// <summary> | 181 | /// <summary> |
@@ -187,7 +187,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement | |||
187 | { | 187 | { |
188 | m_Entity.Scene.ForEachClient( | 188 | m_Entity.Scene.ForEachClient( |
189 | delegate(IClientAPI controller) | 189 | delegate(IClientAPI controller) |
190 | { controller.SendKillObject(m_Entity.RegionHandle, part.LocalId); } | 190 | { controller.SendKillObject(m_Entity.RegionHandle, new List<uint>() { part.LocalId }); } |
191 | ); | 191 | ); |
192 | } | 192 | } |
193 | } | 193 | } |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 1653ecb..3cbe391 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -519,7 +519,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
519 | 519 | ||
520 | } | 520 | } |
521 | 521 | ||
522 | public virtual void SendKillObject(ulong regionHandle, uint localID) | 522 | public virtual void SendKillObject(ulong regionHandle, List<uint> localID) |
523 | { | 523 | { |
524 | } | 524 | } |
525 | 525 | ||
diff --git a/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs b/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs index 421da36..2563361 100644 --- a/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs +++ b/OpenSim/Region/OptionalModules/World/TreePopulator/TreePopulatorModule.cs | |||
@@ -386,7 +386,7 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator | |||
386 | m_scene.ForEachClient(delegate(IClientAPI controller) | 386 | m_scene.ForEachClient(delegate(IClientAPI controller) |
387 | { | 387 | { |
388 | controller.SendKillObject(m_scene.RegionInfo.RegionHandle, | 388 | controller.SendKillObject(m_scene.RegionInfo.RegionHandle, |
389 | selectedTree.LocalId); | 389 | new List<uint>() { selectedTree.LocalId }); |
390 | }); | 390 | }); |
391 | } | 391 | } |
392 | else | 392 | else |
@@ -727,7 +727,7 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator | |||
727 | m_scene.ForEachClient(delegate(IClientAPI controller) | 727 | m_scene.ForEachClient(delegate(IClientAPI controller) |
728 | { | 728 | { |
729 | controller.SendKillObject(m_scene.RegionInfo.RegionHandle, | 729 | controller.SendKillObject(m_scene.RegionInfo.RegionHandle, |
730 | selectedTree.LocalId); | 730 | new List<uint>() { selectedTree.LocalId }); |
731 | }); | 731 | }); |
732 | 732 | ||
733 | break; | 733 | break; |
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index 1c860a7..6324146 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs | |||
@@ -487,7 +487,7 @@ namespace OpenSim.Tests.Common.Mock | |||
487 | 487 | ||
488 | } | 488 | } |
489 | 489 | ||
490 | public virtual void SendKillObject(ulong regionHandle, uint localID) | 490 | public virtual void SendKillObject(ulong regionHandle, List<uint> localID) |
491 | { | 491 | { |
492 | } | 492 | } |
493 | 493 | ||