aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs54
1 files changed, 46 insertions, 8 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index c9ef173..ec238ef 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -365,6 +365,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
365 /// </value> 365 /// </value>
366 protected HashSet<uint> m_killRecord; 366 protected HashSet<uint> m_killRecord;
367 367
368// protected HashSet<uint> m_attachmentsQueued;
369// protected HashSet<uint> m_attachmentsSent;
370
368 private int m_moneyBalance; 371 private int m_moneyBalance;
369 private int m_animationSequenceNumber = 1; 372 private int m_animationSequenceNumber = 1;
370 private bool m_SendLogoutPacketWhenClosing = true; 373 private bool m_SendLogoutPacketWhenClosing = true;
@@ -456,6 +459,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
456 m_primFullUpdates = new PriorityQueue<double, ObjectUpdatePacket.ObjectDataBlock>(m_scene.Entities.Count); 459 m_primFullUpdates = new PriorityQueue<double, ObjectUpdatePacket.ObjectDataBlock>(m_scene.Entities.Count);
457 m_fullUpdateDataBlocksBuilder = new List<ObjectUpdatePacket.ObjectDataBlock>(); 460 m_fullUpdateDataBlocksBuilder = new List<ObjectUpdatePacket.ObjectDataBlock>();
458 m_killRecord = new HashSet<uint>(); 461 m_killRecord = new HashSet<uint>();
462// m_attachmentsQueued = new HashSet<uint>();
463// m_attachmentsSent = new HashSet<uint>();
459 464
460 m_assetService = m_scene.RequestModuleInterface<IAssetService>(); 465 m_assetService = m_scene.RequestModuleInterface<IAssetService>();
461 m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>(); 466 m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>();
@@ -3400,6 +3405,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3400 objupdate.ObjectData[0] = CreateAvatarUpdateBlock(data); 3405 objupdate.ObjectData[0] = CreateAvatarUpdateBlock(data);
3401 3406
3402 OutPacket(objupdate, ThrottleOutPacketType.Task); 3407 OutPacket(objupdate, ThrottleOutPacketType.Task);
3408
3409 // We need to record the avatar local id since the root prim of an attachment points to this.
3410// m_attachmentsSent.Add(data.AvatarLocalID);
3403 } 3411 }
3404 3412
3405 /// <summary> 3413 /// <summary>
@@ -3522,6 +3530,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3522 return; 3530 return;
3523 3531
3524 ObjectUpdatePacket.ObjectDataBlock objectData = CreatePrimUpdateBlock(data); 3532 ObjectUpdatePacket.ObjectDataBlock objectData = CreatePrimUpdateBlock(data);
3533
3534// if (data.attachment)
3535// m_attachmentsQueued.Add(data.localID);
3525 3536
3526 lock (m_primFullUpdates.SyncRoot) 3537 lock (m_primFullUpdates.SyncRoot)
3527 m_primFullUpdates.Enqueue(data.priority, objectData, data.localID); 3538 m_primFullUpdates.Enqueue(data.priority, objectData, data.localID);
@@ -3548,15 +3559,37 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3548 ObjectUpdatePacket.ObjectDataBlock block = m_primFullUpdates.Dequeue(); 3559 ObjectUpdatePacket.ObjectDataBlock block = m_primFullUpdates.Dequeue();
3549 3560
3550 if (!m_killRecord.Contains(block.ID)) 3561 if (!m_killRecord.Contains(block.ID))
3551 { 3562 {
3563// if (m_attachmentsQueued.Contains(block.ID))
3564// {
3565// string text = Util.FieldToString(block.Text);
3566// if (text.IndexOf("\n") >= 0)
3567// text = text.Remove(text.IndexOf("\n"));
3568//
3569// if (m_attachmentsSent.Contains(block.ParentID))
3570// {
3571// m_log.DebugFormat(
3572// "[CLIENT]: Sending full info about attached prim {0} text {1}",
3573// block.ID, text);
3574//
3575// m_fullUpdateDataBlocksBuilder.Add(block);
3576//
3577// m_attachmentsSent.Add(block.ID);
3578// }
3579// else
3580// {
3581// m_log.DebugFormat(
3582// "[CLIENT]: Requeueing full update of prim {0} text {1} since we haven't sent its parent {2} yet",
3583// block.ID, text, block.ParentID);
3584//
3585// lock (m_primFullUpdates.SyncRoot)
3586// m_primFullUpdates.Enqueue(double.MaxValue, block, block.ID);
3587// }
3588// }
3589// else
3590// {
3552 m_fullUpdateDataBlocksBuilder.Add(block); 3591 m_fullUpdateDataBlocksBuilder.Add(block);
3553 3592// }
3554// string text = Util.FieldToString(outPacket.ObjectData[i].Text);
3555// if (text.IndexOf("\n") >= 0)
3556// text = text.Remove(text.IndexOf("\n"));
3557// m_log.DebugFormat(
3558// "[CLIENT]: Sending full info about prim {0} text {1} to client {2}",
3559// outPacket.ObjectData[i].ID, text, Name);
3560 } 3593 }
3561// else 3594// else
3562// { 3595// {
@@ -4505,6 +4538,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4505 4538
4506 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(SendPrimitiveData data) 4539 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(SendPrimitiveData data)
4507 { 4540 {
4541// if (data.attachment)
4542// m_log.DebugFormat(
4543// "[LLCLIENTVIEW]: Creating prim update block for {0}, parent {1}, priority {2}",
4544// data.localID, data.parentID, data.priority);
4545
4508 byte[] objectData = new byte[60]; 4546 byte[] objectData = new byte[60];
4509 data.pos.ToBytes(objectData, 0); 4547 data.pos.ToBytes(objectData, 0);
4510 data.vel.ToBytes(objectData, 12); 4548 data.vel.ToBytes(objectData, 12);