In SyncOutPrimUpdates(), calling UpdatePrimSyncInfoByLocal again before calling
SendPrimPropertyUpdates, to make sure local updates are sync'ed into RegionSyncModule's cache.dsg
parent
eeb09f33e3
commit
4acd23f0f9
|
@ -3684,12 +3684,18 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
foreach (KeyValuePair<UUID, HashSet<SceneObjectPartSyncProperties>> updatedPrimProperties in primPropertyUpdates)
|
foreach (KeyValuePair<UUID, HashSet<SceneObjectPartSyncProperties>> updatedPrimProperties in primPropertyUpdates)
|
||||||
{
|
{
|
||||||
UUID primUUID = updatedPrimProperties.Key;
|
UUID primUUID = updatedPrimProperties.Key;
|
||||||
HashSet<SceneObjectPartSyncProperties> updatedProperties = updatedPrimProperties.Value;
|
SceneObjectPart sop = m_scene.GetSceneObjectPart(primUUID);
|
||||||
|
|
||||||
//Sync the SOP data and cached property values in PrimSyncInfoManager again
|
if (sop == null || sop.ParentGroup.IsDeleted)
|
||||||
//HashSet<SceneObjectPartSyncProperties> propertiesWithSyncInfoUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoByLocal(part, updatedProperties);
|
continue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HashSet<SceneObjectPartSyncProperties> updatedProperties = updatedPrimProperties.Value;
|
||||||
|
|
||||||
SendPrimPropertyUpdates(primUUID, updatedProperties);
|
//Sync the SOP data and cached property values in PrimSyncInfoManager again
|
||||||
|
HashSet<SceneObjectPartSyncProperties> propertiesWithSyncInfoUpdated = m_primSyncInfoManager.UpdatePrimSyncInfoByLocal(sop, new List<SceneObjectPartSyncProperties>(updatedProperties));
|
||||||
|
SendPrimPropertyUpdates(sop, updatedProperties);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Indicate that the current batch of updates has been completed
|
// 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<SceneObjectPartSyncProperties> updatedProperties)
|
private void SendPrimPropertyUpdates(SceneObjectPart sop, HashSet<SceneObjectPartSyncProperties> updatedProperties)
|
||||||
{
|
{
|
||||||
SceneObjectPart sop = m_scene.GetSceneObjectPart(primUUID);
|
|
||||||
|
|
||||||
if (sop == null || sop.ParentGroup.IsDeleted)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OSDMap syncData = m_primSyncInfoManager.EncodePrimProperties(sop, updatedProperties);
|
OSDMap syncData = m_primSyncInfoManager.EncodePrimProperties(sop, updatedProperties);
|
||||||
|
|
||||||
if (syncData.Count > 0)
|
if (syncData.Count > 0)
|
||||||
|
@ -3741,7 +3742,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
||||||
|
|
||||||
|
|
||||||
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedPrimProperties, OSDParser.SerializeJsonString(syncData));
|
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedPrimProperties, OSDParser.SerializeJsonString(syncData));
|
||||||
SendPrimUpdateToRelevantSyncConnectors(primUUID, syncMsg);
|
SendPrimUpdateToRelevantSyncConnectors(sop.UUID, syncMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue