diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 54 |
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); |