diff options
Implement SendPlacesReply
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index d63b719..ee4f04e 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -11997,7 +11997,61 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11997 | 11997 | ||
11998 | //ControllingClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, | 11998 | //ControllingClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, |
11999 | // AbsolutePosition, Velocity, Vector3.Zero, m_bodyRot, new Vector4(0,0,1,AbsolutePosition.Z - 0.5f), m_uuid, null, GetUpdatePriority(ControllingClient))); | 11999 | // AbsolutePosition, Velocity, Vector3.Zero, m_bodyRot, new Vector4(0,0,1,AbsolutePosition.Z - 0.5f), m_uuid, null, GetUpdatePriority(ControllingClient))); |
12000 | } | ||
12001 | |||
12002 | public void SendPlacesReply(UUID queryID, UUID transactionID, | ||
12003 | PlacesReplyData[] data) | ||
12004 | { | ||
12005 | PlacesReplyPacket reply = null; | ||
12006 | PlacesReplyPacket.QueryDataBlock[] dataBlocks = | ||
12007 | new PlacesReplyPacket.QueryDataBlock[0]; | ||
12008 | |||
12009 | for (int i = 0 ; i < data.Length ; i++) | ||
12010 | { | ||
12011 | PlacesReplyPacket.QueryDataBlock block = | ||
12012 | new PlacesReplyPacket.QueryDataBlock(); | ||
12013 | |||
12014 | block.OwnerID = data[i].OwnerID; | ||
12015 | block.Name = Util.StringToBytes256(data[i].Name); | ||
12016 | block.Desc = Util.StringToBytes1024(data[i].Desc); | ||
12017 | block.ActualArea = data[i].ActualArea; | ||
12018 | block.BillableArea = data[i].BillableArea; | ||
12019 | block.Flags = data[i].Flags; | ||
12020 | block.GlobalX = data[i].GlobalX; | ||
12021 | block.GlobalY = data[i].GlobalY; | ||
12022 | block.GlobalZ = data[i].GlobalZ; | ||
12023 | block.SimName = Util.StringToBytes256(data[i].SimName); | ||
12024 | block.SnapshotID = data[i].SnapshotID; | ||
12025 | block.Dwell = data[i].Dwell; | ||
12026 | block.Price = data[i].Price; | ||
12027 | |||
12028 | if (reply != null && reply.Length + block.Length > 1400) | ||
12029 | { | ||
12030 | OutPacket(reply, ThrottleOutPacketType.Task); | ||
12000 | 12031 | ||
12032 | reply = null; | ||
12033 | dataBlocks = new PlacesReplyPacket.QueryDataBlock[0]; | ||
12034 | } | ||
12035 | |||
12036 | if (reply == null) | ||
12037 | { | ||
12038 | reply = (PlacesReplyPacket)PacketPool.Instance.GetPacket(PacketType.PlacesReply); | ||
12039 | reply.AgentData = new PlacesReplyPacket.AgentDataBlock(); | ||
12040 | reply.AgentData.AgentID = AgentId; | ||
12041 | reply.AgentData.QueryID = queryID; | ||
12042 | |||
12043 | reply.TransactionData = new PlacesReplyPacket.TransactionDataBlock(); | ||
12044 | reply.TransactionData.TransactionID = transactionID; | ||
12045 | |||
12046 | reply.QueryData = dataBlocks; | ||
12047 | } | ||
12048 | |||
12049 | Array.Resize(ref dataBlocks, dataBlocks.Length + 1); | ||
12050 | dataBlocks[dataBlocks.Length - 1] = block; | ||
12051 | reply.QueryData = dataBlocks; | ||
12052 | } | ||
12053 | if (reply != null) | ||
12054 | OutPacket(reply, ThrottleOutPacketType.Task); | ||
12001 | } | 12055 | } |
12002 | } | 12056 | } |
12003 | } | 12057 | } |