diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs index e0b23184aa..8385e09641 100644 --- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs +++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs @@ -3684,12 +3684,18 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule foreach (KeyValuePair> updatedPrimProperties in primPropertyUpdates) { UUID primUUID = updatedPrimProperties.Key; - HashSet updatedProperties = updatedPrimProperties.Value; + SceneObjectPart sop = m_scene.GetSceneObjectPart(primUUID); - //Sync the SOP data and cached property values in PrimSyncInfoManager again - //HashSet propertiesWithSyncInfoUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoByLocal(part, updatedProperties); + if (sop == null || sop.ParentGroup.IsDeleted) + continue; + else + { + HashSet updatedProperties = updatedPrimProperties.Value; - SendPrimPropertyUpdates(primUUID, updatedProperties); + //Sync the SOP data and cached property values in PrimSyncInfoManager again + HashSet propertiesWithSyncInfoUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoByLocal(sop, new List(updatedProperties)); + SendPrimPropertyUpdates(sop, updatedProperties); + } } // Indicate that the current batch of updates has been completed @@ -3702,13 +3708,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule } } - private void SendPrimPropertyUpdates(UUID primUUID, HashSet updatedProperties) + private void SendPrimPropertyUpdates(SceneObjectPart sop, HashSet updatedProperties) { - SceneObjectPart sop = m_scene.GetSceneObjectPart(primUUID); - - if (sop == null || sop.ParentGroup.IsDeleted) - return; - OSDMap syncData = m_primSyncInfoManager.EncodePrimProperties(sop, updatedProperties); if (syncData.Count > 0) @@ -3741,7 +3742,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedPrimProperties, OSDParser.SerializeJsonString(syncData)); - SendPrimUpdateToRelevantSyncConnectors(primUUID, syncMsg); + SendPrimUpdateToRelevantSyncConnectors(sop.UUID, syncMsg); } }