diff options
Diffstat (limited to '')
5 files changed, 60 insertions, 63 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 393cd03..0f1a1ca 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -3696,56 +3696,56 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3696 | 3696 | ||
3697 | #endregion Block Construction | 3697 | #endregion Block Construction |
3698 | } | 3698 | } |
3699 | } | ||
3700 | |||
3701 | #region Packet Sending | ||
3702 | |||
3703 | const float TIME_DILATION = 1.0f; | ||
3704 | ushort timeDilation = Utils.FloatToUInt16(TIME_DILATION, 0.0f, 1.0f); | ||
3705 | |||
3706 | if (objectUpdateBlocks.IsValueCreated) | ||
3707 | { | ||
3708 | List<ObjectUpdatePacket.ObjectDataBlock> blocks = objectUpdateBlocks.Value; | ||
3709 | |||
3710 | ObjectUpdatePacket packet = (ObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdate); | ||
3711 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3712 | packet.RegionData.TimeDilation = timeDilation; | ||
3713 | packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[blocks.Count]; | ||
3714 | |||
3715 | for (int i = 0; i < blocks.Count; i++) | ||
3716 | packet.ObjectData[i] = blocks[i]; | ||
3717 | |||
3718 | OutPacket(packet, ThrottleOutPacketType.Task, true); | ||
3719 | } | ||
3720 | |||
3721 | if (compressedUpdateBlocks.IsValueCreated) | ||
3722 | { | ||
3723 | List<ObjectUpdateCompressedPacket.ObjectDataBlock> blocks = compressedUpdateBlocks.Value; | ||
3724 | |||
3725 | ObjectUpdateCompressedPacket packet = (ObjectUpdateCompressedPacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdateCompressed); | ||
3726 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3727 | packet.RegionData.TimeDilation = timeDilation; | ||
3728 | packet.ObjectData = new ObjectUpdateCompressedPacket.ObjectDataBlock[blocks.Count]; | ||
3729 | |||
3730 | for (int i = 0; i < blocks.Count; i++) | ||
3731 | packet.ObjectData[i] = blocks[i]; | ||
3732 | |||
3733 | OutPacket(packet, ThrottleOutPacketType.Task, true); | ||
3734 | } | ||
3735 | |||
3736 | if (terseUpdateBlocks.IsValueCreated) | ||
3737 | { | ||
3738 | List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseUpdateBlocks.Value; | ||
3739 | |||
3740 | ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); | ||
3741 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3742 | packet.RegionData.TimeDilation = timeDilation; | ||
3743 | packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count]; | ||
3744 | |||
3745 | for (int i = 0; i < blocks.Count; i++) | ||
3746 | packet.ObjectData[i] = blocks[i]; | ||
3747 | 3699 | ||
3748 | OutPacket(packet, ThrottleOutPacketType.Task, true); | 3700 | #region Packet Sending |
3701 | |||
3702 | const float TIME_DILATION = 1.0f; | ||
3703 | ushort timeDilation = Utils.FloatToUInt16(TIME_DILATION, 0.0f, 1.0f); | ||
3704 | |||
3705 | if (objectUpdateBlocks.IsValueCreated) | ||
3706 | { | ||
3707 | List<ObjectUpdatePacket.ObjectDataBlock> blocks = objectUpdateBlocks.Value; | ||
3708 | |||
3709 | ObjectUpdatePacket packet = (ObjectUpdatePacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdate); | ||
3710 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3711 | packet.RegionData.TimeDilation = timeDilation; | ||
3712 | packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[blocks.Count]; | ||
3713 | |||
3714 | for (int i = 0; i < blocks.Count; i++) | ||
3715 | packet.ObjectData[i] = blocks[i]; | ||
3716 | |||
3717 | OutPacket(packet, ThrottleOutPacketType.Task, true); | ||
3718 | } | ||
3719 | |||
3720 | if (compressedUpdateBlocks.IsValueCreated) | ||
3721 | { | ||
3722 | List<ObjectUpdateCompressedPacket.ObjectDataBlock> blocks = compressedUpdateBlocks.Value; | ||
3723 | |||
3724 | ObjectUpdateCompressedPacket packet = (ObjectUpdateCompressedPacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdateCompressed); | ||
3725 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3726 | packet.RegionData.TimeDilation = timeDilation; | ||
3727 | packet.ObjectData = new ObjectUpdateCompressedPacket.ObjectDataBlock[blocks.Count]; | ||
3728 | |||
3729 | for (int i = 0; i < blocks.Count; i++) | ||
3730 | packet.ObjectData[i] = blocks[i]; | ||
3731 | |||
3732 | OutPacket(packet, ThrottleOutPacketType.Task, true); | ||
3733 | } | ||
3734 | |||
3735 | if (terseUpdateBlocks.IsValueCreated) | ||
3736 | { | ||
3737 | List<ImprovedTerseObjectUpdatePacket.ObjectDataBlock> blocks = terseUpdateBlocks.Value; | ||
3738 | |||
3739 | ImprovedTerseObjectUpdatePacket packet = new ImprovedTerseObjectUpdatePacket(); | ||
3740 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | ||
3741 | packet.RegionData.TimeDilation = timeDilation; | ||
3742 | packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[blocks.Count]; | ||
3743 | |||
3744 | for (int i = 0; i < blocks.Count; i++) | ||
3745 | packet.ObjectData[i] = blocks[i]; | ||
3746 | |||
3747 | OutPacket(packet, ThrottleOutPacketType.Task, true); | ||
3748 | } | ||
3749 | } | 3749 | } |
3750 | 3750 | ||
3751 | #endregion Packet Sending | 3751 | #endregion Packet Sending |
diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index 916148b..64567db 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs | |||
@@ -105,7 +105,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
105 | if (permissionToDelete) | 105 | if (permissionToDelete) |
106 | { | 106 | { |
107 | foreach (SceneObjectGroup g in objectGroups) | 107 | foreach (SceneObjectGroup g in objectGroups) |
108 | g.DeleteGroup(false); | 108 | g.DeleteGroupFromScene(false); |
109 | } | 109 | } |
110 | } | 110 | } |
111 | 111 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index ac2246c..33e3e5d 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2189,7 +2189,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2189 | EventManager.TriggerParcelPrimCountTainted(); | 2189 | EventManager.TriggerParcelPrimCountTainted(); |
2190 | } | 2190 | } |
2191 | 2191 | ||
2192 | group.DeleteGroup(silent); | 2192 | group.DeleteGroupFromScene(silent); |
2193 | 2193 | ||
2194 | // 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); |
2195 | } | 2195 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 52f6c1a..3411d18 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -29,7 +29,7 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Drawing; | 30 | using System.Drawing; |
31 | using System.IO; | 31 | using System.IO; |
32 | using System.Diagnostics; | 32 | using System.Linq; |
33 | using System.Threading; | 33 | using System.Threading; |
34 | using System.Xml; | 34 | using System.Xml; |
35 | using System.Xml.Serialization; | 35 | using System.Xml.Serialization; |
@@ -1564,7 +1564,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1564 | /// must be handled by the caller. | 1564 | /// must be handled by the caller. |
1565 | /// | 1565 | /// |
1566 | /// <param name="silent">If true then deletion is not broadcast to clients</param> | 1566 | /// <param name="silent">If true then deletion is not broadcast to clients</param> |
1567 | public void DeleteGroup(bool silent) | 1567 | public void DeleteGroupFromScene(bool silent) |
1568 | { | 1568 | { |
1569 | // We need to keep track of this state in case this group is still queued for backup. | 1569 | // We need to keep track of this state in case this group is still queued for backup. |
1570 | m_isDeleted = true; | 1570 | m_isDeleted = true; |
@@ -1572,28 +1572,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
1572 | DetachFromBackup(); | 1572 | DetachFromBackup(); |
1573 | 1573 | ||
1574 | lockPartsForRead(true); | 1574 | lockPartsForRead(true); |
1575 | List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values); | 1575 | List<SceneObjectPart> parts = new List<SceneObjectPart>(m_parts.Values); |
1576 | lockPartsForRead(false); | 1576 | lockPartsForRead(false); |
1577 | 1577 | ||
1578 | foreach (SceneObjectPart part in values) | 1578 | foreach (SceneObjectPart part in parts) |
1579 | { | 1579 | { |
1580 | // part.Inventory.RemoveScriptInstances(); | 1580 | Scene.ForEachScenePresence(delegate (ScenePresence avatar) |
1581 | |||
1582 | Scene.ForEachScenePresence(delegate (ScenePresence sp) | ||
1583 | { | 1581 | { |
1584 | if (sp.ParentID == LocalId) | 1582 | if (avatar.ParentID == LocalId) |
1585 | { | 1583 | { |
1586 | sp.StandUp(); | 1584 | avatar.StandUp(); |
1587 | } | 1585 | } |
1588 | 1586 | ||
1589 | if (!silent) | 1587 | if (!silent) |
1590 | { | 1588 | { |
1591 | part.UpdateFlag = 0; | 1589 | part.UpdateFlag = 0; |
1592 | if (part == m_rootPart) | 1590 | if (part == m_rootPart) |
1593 | sp.ControllingClient.SendKillObject(m_regionHandle, part.LocalId); | 1591 | avatar.ControllingClient.SendKillObject(m_regionHandle, part.LocalId); |
1594 | } | 1592 | } |
1595 | }); | 1593 | }); |
1596 | |||
1597 | } | 1594 | } |
1598 | 1595 | ||
1599 | 1596 | ||
diff --git a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs index fd59138..0b02a9f 100644 --- a/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs +++ b/OpenSim/Region/OptionalModules/ContentManagementSystem/CMModel.cs | |||
@@ -263,7 +263,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement | |||
263 | scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); | 263 | scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); |
264 | scene.SendKillObject(scene.Entities[uuid].LocalId); | 264 | scene.SendKillObject(scene.Entities[uuid].LocalId); |
265 | scene.SceneGraph.DeleteSceneObject(uuid, false); | 265 | scene.SceneGraph.DeleteSceneObject(uuid, false); |
266 | ((SceneObjectGroup)scene.Entities[uuid]).DeleteGroup(false); | 266 | ((SceneObjectGroup)scene.Entities[uuid]).DeleteGroupFromScene(false); |
267 | } | 267 | } |
268 | catch(Exception e) | 268 | catch(Exception e) |
269 | { | 269 | { |