diff options
Diffstat (limited to '')
9 files changed, 122 insertions, 22 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs index d68c683..4abc215 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs | |||
@@ -260,7 +260,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion | |||
260 | { | 260 | { |
261 | if (s.RegionInfo.RegionHandle == regionHandle) | 261 | if (s.RegionInfo.RegionHandle == regionHandle) |
262 | { | 262 | { |
263 | //m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject"); | 263 | m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject"); |
264 | if (isLocalCall) | 264 | if (isLocalCall) |
265 | { | 265 | { |
266 | // We need to make a local copy of the object | 266 | // We need to make a local copy of the object |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index a2634f7..f556b35 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -2449,6 +2449,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2449 | return; | 2449 | return; |
2450 | } | 2450 | } |
2451 | 2451 | ||
2452 | m_log.DebugFormat("[SCENE INVENTORY]: {0} {1} IsAttachment={2}", att.Name, att.LocalId, att.IsAttachment); | ||
2453 | Console.WriteLine("HERE X"); | ||
2452 | ScenePresence presence; | 2454 | ScenePresence presence; |
2453 | if (TryGetAvatar(remoteClient.AgentId, out presence)) | 2455 | if (TryGetAvatar(remoteClient.AgentId, out presence)) |
2454 | { | 2456 | { |
@@ -2456,9 +2458,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2456 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); | 2458 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); |
2457 | item = InventoryService.GetItem(item); | 2459 | item = InventoryService.GetItem(item); |
2458 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); | 2460 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); |
2461 | Console.WriteLine("HERE Y"); | ||
2459 | 2462 | ||
2460 | if (m_AvatarFactory != null) | 2463 | if (m_AvatarFactory != null) |
2461 | m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); | 2464 | m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); |
2465 | |||
2466 | Console.WriteLine("HERE Z"); | ||
2462 | } | 2467 | } |
2463 | } | 2468 | } |
2464 | 2469 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index ac04dc7..d8e604f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -124,6 +124,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
124 | { | 124 | { |
125 | if (((SceneObjectGroup)ent).LocalId == primLocalID) | 125 | if (((SceneObjectGroup)ent).LocalId == primLocalID) |
126 | { | 126 | { |
127 | m_log.DebugFormat("[SCENE]: Received full update request for {0} from {1}", primLocalID, remoteClient.Name); | ||
127 | ((SceneObjectGroup)ent).SendFullUpdateToClient(remoteClient); | 128 | ((SceneObjectGroup)ent).SendFullUpdateToClient(remoteClient); |
128 | return; | 129 | return; |
129 | } | 130 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e8c4978..f8ca047 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1850,9 +1850,31 @@ namespace OpenSim.Region.Framework.Scenes | |||
1850 | /// true if the object was added, false if an object with the same uuid was already in the scene | 1850 | /// true if the object was added, false if an object with the same uuid was already in the scene |
1851 | /// </returns> | 1851 | /// </returns> |
1852 | public bool AddRestoredSceneObject( | 1852 | public bool AddRestoredSceneObject( |
1853 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates) | ||
1854 | { | ||
1855 | return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, sendClientUpdates); | ||
1856 | } | ||
1857 | |||
1858 | /// <summary> | ||
1859 | /// Add an object into the scene that has come from storage | ||
1860 | /// </summary> | ||
1861 | /// | ||
1862 | /// <param name="sceneObject"></param> | ||
1863 | /// <param name="attachToBackup"> | ||
1864 | /// If true, changes to the object will be reflected in its persisted data | ||
1865 | /// If false, the persisted data will not be changed even if the object in the scene is changed | ||
1866 | /// </param> | ||
1867 | /// <param name="alreadyPersisted"> | ||
1868 | /// If true, we won't persist this object until it changes | ||
1869 | /// If false, we'll persist this object immediately | ||
1870 | /// </param> | ||
1871 | /// <returns> | ||
1872 | /// true if the object was added, false if an object with the same uuid was already in the scene | ||
1873 | /// </returns> | ||
1874 | public bool AddRestoredSceneObject( | ||
1853 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) | 1875 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) |
1854 | { | 1876 | { |
1855 | return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted); | 1877 | return AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, true); |
1856 | } | 1878 | } |
1857 | 1879 | ||
1858 | /// <summary> | 1880 | /// <summary> |
@@ -2465,7 +2487,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2465 | /// <returns></returns> | 2487 | /// <returns></returns> |
2466 | public bool IncomingCreateObject(ISceneObject sog) | 2488 | public bool IncomingCreateObject(ISceneObject sog) |
2467 | { | 2489 | { |
2468 | //m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); | 2490 | m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); |
2469 | SceneObjectGroup newObject; | 2491 | SceneObjectGroup newObject; |
2470 | try | 2492 | try |
2471 | { | 2493 | { |
@@ -2537,10 +2559,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2537 | 2559 | ||
2538 | if (sceneObject.IsAttachmentCheckFull()) // Attachment | 2560 | if (sceneObject.IsAttachmentCheckFull()) // Attachment |
2539 | { | 2561 | { |
2562 | m_log.DebugFormat("[SCENE]: Adding attachment {0} {1}", sceneObject.Name, sceneObject.LocalId); | ||
2563 | |||
2540 | sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); | 2564 | sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); |
2541 | sceneObject.RootPart.AddFlag(PrimFlags.Phantom); | 2565 | sceneObject.RootPart.AddFlag(PrimFlags.Phantom); |
2542 | 2566 | ||
2543 | AddRestoredSceneObject(sceneObject, false, false); | 2567 | AddRestoredSceneObject(sceneObject, false, false, false); |
2544 | 2568 | ||
2545 | // Handle attachment special case | 2569 | // Handle attachment special case |
2546 | SceneObjectPart RootPrim = sceneObject.RootPart; | 2570 | SceneObjectPart RootPrim = sceneObject.RootPart; |
@@ -2548,6 +2572,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2548 | // Fix up attachment Parent Local ID | 2572 | // Fix up attachment Parent Local ID |
2549 | ScenePresence sp = GetScenePresence(sceneObject.OwnerID); | 2573 | ScenePresence sp = GetScenePresence(sceneObject.OwnerID); |
2550 | 2574 | ||
2575 | Console.WriteLine("AAAA"); | ||
2576 | |||
2551 | //uint parentLocalID = 0; | 2577 | //uint parentLocalID = 0; |
2552 | if (sp != null) | 2578 | if (sp != null) |
2553 | { | 2579 | { |
@@ -2566,20 +2592,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
2566 | //grp.SetFromAssetID(grp.RootPart.LastOwnerID); | 2592 | //grp.SetFromAssetID(grp.RootPart.LastOwnerID); |
2567 | m_log.DebugFormat( | 2593 | m_log.DebugFormat( |
2568 | "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); | 2594 | "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); |
2569 | 2595 | ||
2596 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | ||
2570 | AttachObject( | 2597 | AttachObject( |
2571 | sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); | 2598 | sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); |
2572 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | 2599 | |
2573 | grp.SendGroupFullUpdate(); | 2600 | //grp.SendGroupFullUpdate(); |
2574 | } | 2601 | } |
2575 | else | 2602 | else |
2576 | { | 2603 | { |
2577 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | 2604 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); |
2578 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); | 2605 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); |
2579 | } | 2606 | } |
2607 | |||
2608 | Console.WriteLine("BBBB"); | ||
2580 | } | 2609 | } |
2581 | else | 2610 | else |
2582 | { | 2611 | { |
2612 | m_log.DebugFormat("[SCENE]: Adding ordinary object {0} {1}", sceneObject.Name, sceneObject.LocalId); | ||
2613 | |||
2583 | AddRestoredSceneObject(sceneObject, true, false); | 2614 | AddRestoredSceneObject(sceneObject, true, false); |
2584 | 2615 | ||
2585 | if (!Permissions.CanObjectEntry(sceneObject.UUID, | 2616 | if (!Permissions.CanObjectEntry(sceneObject.UUID, |
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 2f6a0db..50feb17 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -1383,7 +1383,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1383 | // now we have a child agent in this region. Request all interesting data about other (root) agents | 1383 | // now we have a child agent in this region. Request all interesting data about other (root) agents |
1384 | agent.SendInitialFullUpdateToAllClients(); | 1384 | agent.SendInitialFullUpdateToAllClients(); |
1385 | 1385 | ||
1386 | Console.WriteLine("SCS 1"); | ||
1386 | agent.CrossAttachmentsIntoNewRegion(neighbourHandle, true); | 1387 | agent.CrossAttachmentsIntoNewRegion(neighbourHandle, true); |
1388 | Console.WriteLine("SCS 2"); | ||
1387 | 1389 | ||
1388 | // m_scene.SendKillObject(m_localId); | 1390 | // m_scene.SendKillObject(m_localId); |
1389 | 1391 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 59a2f41..fa3c5eb 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -216,11 +216,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
216 | /// If true, we won't persist this object until it changes | 216 | /// If true, we won't persist this object until it changes |
217 | /// If false, we'll persist this object immediately | 217 | /// If false, we'll persist this object immediately |
218 | /// </param> | 218 | /// </param> |
219 | /// <param name="sendClientUpdate"> | ||
220 | /// If true, we send updates to the client to tell it about this object | ||
221 | /// If false, we leave it up to the caller to do this | ||
222 | /// </param> | ||
219 | /// <returns> | 223 | /// <returns> |
220 | /// true if the object was added, false if an object with the same uuid was already in the scene | 224 | /// true if the object was added, false if an object with the same uuid was already in the scene |
221 | /// </returns> | 225 | /// </returns> |
222 | protected internal bool AddRestoredSceneObject( | 226 | protected internal bool AddRestoredSceneObject( |
223 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) | 227 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates) |
224 | { | 228 | { |
225 | if (!alreadyPersisted) | 229 | if (!alreadyPersisted) |
226 | { | 230 | { |
@@ -228,8 +232,29 @@ namespace OpenSim.Region.Framework.Scenes | |||
228 | sceneObject.HasGroupChanged = true; | 232 | sceneObject.HasGroupChanged = true; |
229 | } | 233 | } |
230 | 234 | ||
231 | return AddSceneObject(sceneObject, attachToBackup, true); | 235 | return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates); |
232 | } | 236 | } |
237 | |||
238 | // /// <summary> | ||
239 | // /// Add an object into the scene that has come from storage | ||
240 | // /// </summary> | ||
241 | // /// <param name="sceneObject"></param> | ||
242 | // /// <param name="attachToBackup"> | ||
243 | // /// If true, changes to the object will be reflected in its persisted data | ||
244 | // /// If false, the persisted data will not be changed even if the object in the scene is changed | ||
245 | // /// </param> | ||
246 | // /// <param name="alreadyPersisted"> | ||
247 | // /// If true, we won't persist this object until it changes | ||
248 | // /// If false, we'll persist this object immediately | ||
249 | // /// </param> | ||
250 | // /// <returns> | ||
251 | // /// true if the object was added, false if an object with the same uuid was already in the scene | ||
252 | // /// </returns> | ||
253 | // protected internal bool AddRestoredSceneObject( | ||
254 | // SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) | ||
255 | // { | ||
256 | // AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, true); | ||
257 | // } | ||
233 | 258 | ||
234 | /// <summary> | 259 | /// <summary> |
235 | /// Add a newly created object to the scene. This will both update the scene, and send information about the | 260 | /// Add a newly created object to the scene. This will both update the scene, and send information about the |
@@ -611,11 +636,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
611 | protected internal bool AttachObject( | 636 | protected internal bool AttachObject( |
612 | IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent) | 637 | IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent) |
613 | { | 638 | { |
639 | Console.WriteLine("HERE A"); | ||
614 | SceneObjectGroup group = GetGroupByPrim(objectLocalID); | 640 | SceneObjectGroup group = GetGroupByPrim(objectLocalID); |
615 | if (group != null) | 641 | if (group != null) |
616 | { | 642 | { |
617 | if (m_parentScene.Permissions.CanTakeObject(group.UUID, remoteClient.AgentId)) | 643 | if (m_parentScene.Permissions.CanTakeObject(group.UUID, remoteClient.AgentId)) |
618 | { | 644 | { |
645 | Console.WriteLine("HERE -1"); | ||
619 | // If the attachment point isn't the same as the one previously used | 646 | // If the attachment point isn't the same as the one previously used |
620 | // set it's offset position = 0 so that it appears on the attachment point | 647 | // set it's offset position = 0 so that it appears on the attachment point |
621 | // and not in a weird location somewhere unknown. | 648 | // and not in a weird location somewhere unknown. |
@@ -654,9 +681,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
654 | itemId = group.GetFromItemID(); | 681 | itemId = group.GetFromItemID(); |
655 | } | 682 | } |
656 | 683 | ||
684 | Console.WriteLine("HERE 0"); | ||
657 | m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group); | 685 | m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group); |
658 | 686 | ||
687 | Console.WriteLine("HERE 1"); | ||
659 | group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent); | 688 | group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent); |
689 | Console.WriteLine("HERE 2"); | ||
660 | // In case it is later dropped again, don't let | 690 | // In case it is later dropped again, don't let |
661 | // it get cleaned up | 691 | // it get cleaned up |
662 | // | 692 | // |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 602b811..ba3fde7 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1494,6 +1494,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1494 | 1494 | ||
1495 | public void SendFullUpdateToClient(IClientAPI remoteClient) | 1495 | public void SendFullUpdateToClient(IClientAPI remoteClient) |
1496 | { | 1496 | { |
1497 | if (IsAttachment) | ||
1498 | m_log.DebugFormat( | ||
1499 | "[SOG]: Sending full update to client {0} for {1} {2}", remoteClient.Name, Name, LocalId); | ||
1500 | |||
1497 | SendPartFullUpdate(remoteClient, RootPart, m_scene.Permissions.GenerateClientFlags(remoteClient.AgentId, RootPart.UUID)); | 1501 | SendPartFullUpdate(remoteClient, RootPart, m_scene.Permissions.GenerateClientFlags(remoteClient.AgentId, RootPart.UUID)); |
1498 | 1502 | ||
1499 | lock (m_parts) | 1503 | lock (m_parts) |
@@ -1513,8 +1517,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1513 | /// <param name="part"></param> | 1517 | /// <param name="part"></param> |
1514 | internal void SendPartFullUpdate(IClientAPI remoteClient, SceneObjectPart part, uint clientFlags) | 1518 | internal void SendPartFullUpdate(IClientAPI remoteClient, SceneObjectPart part, uint clientFlags) |
1515 | { | 1519 | { |
1516 | // m_log.DebugFormat( | 1520 | if (IsAttachment) |
1517 | // "[SOG]: Sending part full update to {0} for {1} {2}", remoteClient.Name, part.Name, part.LocalId); | 1521 | m_log.DebugFormat( |
1522 | "[SOG]: Sending part full update to {0} for {1} {2}", remoteClient.Name, part.Name, part.LocalId); | ||
1518 | 1523 | ||
1519 | if (m_rootPart.UUID == part.UUID) | 1524 | if (m_rootPart.UUID == part.UUID) |
1520 | { | 1525 | { |
@@ -1994,7 +1999,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1994 | 1999 | ||
1995 | public void ScheduleFullUpdateToAvatar(ScenePresence presence) | 2000 | public void ScheduleFullUpdateToAvatar(ScenePresence presence) |
1996 | { | 2001 | { |
1997 | // m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1} just to avatar {2}", Name, UUID, presence.Name); | 2002 | if (IsAttachment) |
2003 | m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1} just to avatar {2}", Name, UUID, presence.Name); | ||
1998 | 2004 | ||
1999 | RootPart.AddFullUpdateToAvatar(presence); | 2005 | RootPart.AddFullUpdateToAvatar(presence); |
2000 | 2006 | ||
@@ -2026,7 +2032,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2026 | /// </summary> | 2032 | /// </summary> |
2027 | public void ScheduleGroupForFullUpdate() | 2033 | public void ScheduleGroupForFullUpdate() |
2028 | { | 2034 | { |
2029 | // m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, UUID); | 2035 | if (IsAttachment) |
2036 | m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, UUID); | ||
2030 | 2037 | ||
2031 | checkAtTargets(); | 2038 | checkAtTargets(); |
2032 | RootPart.ScheduleFullUpdate(); | 2039 | RootPart.ScheduleFullUpdate(); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index a85a4b3..ffbb427 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -1259,16 +1259,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
1259 | /// Tell all scene presences that they should send updates for this part to their clients | 1259 | /// Tell all scene presences that they should send updates for this part to their clients |
1260 | /// </summary> | 1260 | /// </summary> |
1261 | public void AddFullUpdateToAllAvatars() | 1261 | public void AddFullUpdateToAllAvatars() |
1262 | { | 1262 | { |
1263 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); | 1263 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); |
1264 | for (int i = 0; i < avatars.Length; i++) | 1264 | for (int i = 0; i < avatars.Length; i++) |
1265 | { | 1265 | AddFullUpdateToAvatar(avatars[i]); |
1266 | avatars[i].SceneViewer.QueuePartForUpdate(this); | ||
1267 | } | ||
1268 | } | 1266 | } |
1269 | 1267 | ||
1270 | public void AddFullUpdateToAvatar(ScenePresence presence) | 1268 | public void AddFullUpdateToAvatar(ScenePresence presence) |
1271 | { | 1269 | { |
1270 | if (IsAttachment) | ||
1271 | m_log.DebugFormat("AddFullUpdateToAllAvatar() {0} for {1} {2}", presence.Name, Name, LocalId); | ||
1272 | |||
1272 | presence.SceneViewer.QueuePartForUpdate(this); | 1273 | presence.SceneViewer.QueuePartForUpdate(this); |
1273 | } | 1274 | } |
1274 | 1275 | ||
@@ -1287,13 +1288,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
1287 | { | 1288 | { |
1288 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); | 1289 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); |
1289 | for (int i = 0; i < avatars.Length; i++) | 1290 | for (int i = 0; i < avatars.Length; i++) |
1290 | { | 1291 | AddTerseUpdateToAvatar(avatars[i]); |
1291 | avatars[i].SceneViewer.QueuePartForUpdate(this); | ||
1292 | } | ||
1293 | } | 1292 | } |
1294 | 1293 | ||
1295 | public void AddTerseUpdateToAvatar(ScenePresence presence) | 1294 | public void AddTerseUpdateToAvatar(ScenePresence presence) |
1296 | { | 1295 | { |
1296 | if (IsAttachment) | ||
1297 | m_log.DebugFormat("AddTerseUpdateToAvatar() {0} for {1} {2}", presence.Name, Name, LocalId); | ||
1298 | |||
1297 | presence.SceneViewer.QueuePartForUpdate(this); | 1299 | presence.SceneViewer.QueuePartForUpdate(this); |
1298 | } | 1300 | } |
1299 | 1301 | ||
@@ -2727,7 +2729,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2727 | /// </summary> | 2729 | /// </summary> |
2728 | public void ScheduleFullUpdate() | 2730 | public void ScheduleFullUpdate() |
2729 | { | 2731 | { |
2730 | // m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId); | 2732 | if (IsAttachment) |
2733 | m_log.DebugFormat("[SOP]: Scheduling full update for {0} {1}", Name, LocalId); | ||
2731 | 2734 | ||
2732 | if (m_parentGroup != null) | 2735 | if (m_parentGroup != null) |
2733 | { | 2736 | { |
@@ -2840,6 +2843,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2840 | /// <param name="remoteClient"></param> | 2843 | /// <param name="remoteClient"></param> |
2841 | public void SendFullUpdate(IClientAPI remoteClient, uint clientFlags) | 2844 | public void SendFullUpdate(IClientAPI remoteClient, uint clientFlags) |
2842 | { | 2845 | { |
2846 | if (IsAttachment) | ||
2847 | m_log.DebugFormat( | ||
2848 | "[SCENE OBJECT PART]: Sending part full update to {0} for {1} {2}", remoteClient.Name, Name, LocalId); | ||
2849 | |||
2843 | m_parentGroup.SendPartFullUpdate(remoteClient, this, clientFlags); | 2850 | m_parentGroup.SendPartFullUpdate(remoteClient, this, clientFlags); |
2844 | } | 2851 | } |
2845 | 2852 | ||
@@ -2848,6 +2855,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2848 | /// </summary> | 2855 | /// </summary> |
2849 | public void SendFullUpdateToAllClients() | 2856 | public void SendFullUpdateToAllClients() |
2850 | { | 2857 | { |
2858 | if (IsAttachment) | ||
2859 | m_log.DebugFormat( | ||
2860 | "[SCENE OBJECT PART]: Sending full update for {0} {1} for all clients", Name, LocalId); | ||
2861 | |||
2851 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); | 2862 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); |
2852 | for (int i = 0; i < avatars.Length; i++) | 2863 | for (int i = 0; i < avatars.Length; i++) |
2853 | { | 2864 | { |
@@ -2859,6 +2870,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2859 | 2870 | ||
2860 | public void SendFullUpdateToAllClientsExcept(UUID agentID) | 2871 | public void SendFullUpdateToAllClientsExcept(UUID agentID) |
2861 | { | 2872 | { |
2873 | if (IsAttachment) | ||
2874 | m_log.DebugFormat( | ||
2875 | "[SCENE OBJECT PART]: Sending full update for {0} {1} to all clients except {2}", Name, LocalId, agentID); | ||
2876 | |||
2862 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); | 2877 | ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); |
2863 | for (int i = 0; i < avatars.Length; i++) | 2878 | for (int i = 0; i < avatars.Length; i++) |
2864 | { | 2879 | { |
@@ -2965,6 +2980,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2965 | { | 2980 | { |
2966 | if (m_updateFlag == 2) // is a new prim, just created/reloaded or has major changes | 2981 | if (m_updateFlag == 2) // is a new prim, just created/reloaded or has major changes |
2967 | { | 2982 | { |
2983 | if (IsAttachment) | ||
2984 | m_log.DebugFormat("[SOP]: Sending scheduled full update for {0} {1}", Name, LocalId); | ||
2985 | |||
2968 | AddFullUpdateToAllAvatars(); | 2986 | AddFullUpdateToAllAvatars(); |
2969 | ClearUpdateSchedule(); | 2987 | ClearUpdateSchedule(); |
2970 | } | 2988 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneViewer.cs b/OpenSim/Region/Framework/Scenes/SceneViewer.cs index e4296ef..6f2bef9 100644 --- a/OpenSim/Region/Framework/Scenes/SceneViewer.cs +++ b/OpenSim/Region/Framework/Scenes/SceneViewer.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Reflection; | ||
30 | using OpenMetaverse; | 31 | using OpenMetaverse; |
31 | using log4net; | 32 | using log4net; |
32 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
@@ -39,6 +40,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
39 | { | 40 | { |
40 | public class SceneViewer : ISceneViewer | 41 | public class SceneViewer : ISceneViewer |
41 | { | 42 | { |
43 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
44 | |||
42 | protected ScenePresence m_presence; | 45 | protected ScenePresence m_presence; |
43 | protected UpdateQueue m_partsUpdateQueue = new UpdateQueue(); | 46 | protected UpdateQueue m_partsUpdateQueue = new UpdateQueue(); |
44 | protected Queue<SceneObjectGroup> m_pendingObjects; | 47 | protected Queue<SceneObjectGroup> m_pendingObjects; |
@@ -60,6 +63,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
60 | /// <param name="part"></param> | 63 | /// <param name="part"></param> |
61 | public void QueuePartForUpdate(SceneObjectPart part) | 64 | public void QueuePartForUpdate(SceneObjectPart part) |
62 | { | 65 | { |
66 | if (part.IsAttachment) | ||
67 | m_log.DebugFormat("[SCENE VIEWER]: Queueing part {0} {1} for update", part.Name, part.LocalId); | ||
68 | |||
63 | lock (m_partsUpdateQueue) | 69 | lock (m_partsUpdateQueue) |
64 | { | 70 | { |
65 | m_partsUpdateQueue.Enqueue(part); | 71 | m_partsUpdateQueue.Enqueue(part); |
@@ -134,7 +140,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
134 | } | 140 | } |
135 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) | 141 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) |
136 | { | 142 | { |
137 | // m_log.DebugFormat( | 143 | // m_log.DebugFormat(AddFullUpdateToAvatar |
138 | // "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", | 144 | // "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", |
139 | // part.Name, part.UUID, part.TimeStampTerse); | 145 | // part.Name, part.UUID, part.TimeStampTerse); |
140 | 146 | ||