diff options
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index fe8475a..7090855 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -331,6 +331,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
331 | /// </value> | 331 | /// </value> |
332 | protected HashSet<uint> m_killRecord; | 332 | protected HashSet<uint> m_killRecord; |
333 | 333 | ||
334 | // protected HashSet<uint> m_attachmentsSent; | ||
335 | |||
334 | private int m_moneyBalance; | 336 | private int m_moneyBalance; |
335 | private int m_animationSequenceNumber = 1; | 337 | private int m_animationSequenceNumber = 1; |
336 | private bool m_SendLogoutPacketWhenClosing = true; | 338 | private bool m_SendLogoutPacketWhenClosing = true; |
@@ -430,6 +432,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
430 | m_entityUpdates = new PriorityQueue(m_scene.Entities.Count); | 432 | m_entityUpdates = new PriorityQueue(m_scene.Entities.Count); |
431 | m_fullUpdateDataBlocksBuilder = new List<ObjectUpdatePacket.ObjectDataBlock>(); | 433 | m_fullUpdateDataBlocksBuilder = new List<ObjectUpdatePacket.ObjectDataBlock>(); |
432 | m_killRecord = new HashSet<uint>(); | 434 | m_killRecord = new HashSet<uint>(); |
435 | // m_attachmentsSent = new HashSet<uint>(); | ||
433 | 436 | ||
434 | m_assetService = m_scene.RequestModuleInterface<IAssetService>(); | 437 | m_assetService = m_scene.RequestModuleInterface<IAssetService>(); |
435 | m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>(); | 438 | m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>(); |
@@ -3411,6 +3414,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3411 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(presence); | 3414 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(presence); |
3412 | 3415 | ||
3413 | OutPacket(objupdate, ThrottleOutPacketType.Task); | 3416 | OutPacket(objupdate, ThrottleOutPacketType.Task); |
3417 | |||
3418 | // We need to record the avatar local id since the root prim of an attachment points to this. | ||
3419 | // m_attachmentsSent.Add(avatar.LocalId); | ||
3414 | } | 3420 | } |
3415 | 3421 | ||
3416 | public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) | 3422 | public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) |
@@ -3466,7 +3472,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3466 | double priority = m_prioritizer.GetUpdatePriority(this, entity); | 3472 | double priority = m_prioritizer.GetUpdatePriority(this, entity); |
3467 | 3473 | ||
3468 | lock (m_entityUpdates.SyncRoot) | 3474 | lock (m_entityUpdates.SyncRoot) |
3469 | m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags), entity.LocalId); | 3475 | m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags), entity.LocalId); |
3470 | } | 3476 | } |
3471 | 3477 | ||
3472 | private void ProcessEntityUpdates(int maxUpdates) | 3478 | private void ProcessEntityUpdates(int maxUpdates) |
@@ -3542,9 +3548,42 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3542 | if (!canUseImproved && !canUseCompressed) | 3548 | if (!canUseImproved && !canUseCompressed) |
3543 | { | 3549 | { |
3544 | if (update.Entity is ScenePresence) | 3550 | if (update.Entity is ScenePresence) |
3551 | { | ||
3545 | objectUpdateBlocks.Value.Add(CreateAvatarUpdateBlock((ScenePresence)update.Entity)); | 3552 | objectUpdateBlocks.Value.Add(CreateAvatarUpdateBlock((ScenePresence)update.Entity)); |
3553 | } | ||
3546 | else | 3554 | else |
3547 | objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); | 3555 | { |
3556 | // if (update.Entity is SceneObjectPart && ((SceneObjectPart)update.Entity).IsAttachment) | ||
3557 | // { | ||
3558 | // SceneObjectPart sop = (SceneObjectPart)update.Entity; | ||
3559 | // string text = sop.Text; | ||
3560 | // if (text.IndexOf("\n") >= 0) | ||
3561 | // text = text.Remove(text.IndexOf("\n")); | ||
3562 | // | ||
3563 | // if (m_attachmentsSent.Contains(sop.ParentID)) | ||
3564 | // { | ||
3565 | //// m_log.DebugFormat( | ||
3566 | //// "[CLIENT]: Sending full info about attached prim {0} text {1}", | ||
3567 | //// sop.LocalId, text); | ||
3568 | // | ||
3569 | // objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock(sop, this.m_agentId)); | ||
3570 | // | ||
3571 | // m_attachmentsSent.Add(sop.LocalId); | ||
3572 | // } | ||
3573 | // else | ||
3574 | // { | ||
3575 | // m_log.DebugFormat( | ||
3576 | // "[CLIENT]: Requeueing full update of prim {0} text {1} since we haven't sent its parent {2} yet", | ||
3577 | // sop.LocalId, text, sop.ParentID); | ||
3578 | // | ||
3579 | // m_entityUpdates.Enqueue(double.MaxValue, update, sop.LocalId); | ||
3580 | // } | ||
3581 | // } | ||
3582 | // else | ||
3583 | // { | ||
3584 | objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); | ||
3585 | // } | ||
3586 | } | ||
3548 | } | 3587 | } |
3549 | else if (!canUseImproved) | 3588 | else if (!canUseImproved) |
3550 | { | 3589 | { |