Added SyncDeleteObject to replace calling to SendDeleteObject.
parent
21c48088d8
commit
e84a7157b4
|
@ -569,13 +569,32 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
OSDMap encodedSOG = SceneObjectEncoder(sog);
|
||||
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.NewObject, OSDParser.SerializeJsonString(encodedSOG));
|
||||
|
||||
//SendObjectUpdateToRelevantSyncConnectors(sog, rsm);
|
||||
//SendSceneEventToRelevantSyncConnectors(m_actorID, rsm, sog);
|
||||
SendSpecialObjectUpdateToRelevantSyncConnectors(m_actorID, sog, syncMsg);
|
||||
}
|
||||
|
||||
public void SyncDeleteObject(SceneObjectGroup sog, bool softDelete)
|
||||
{
|
||||
//First, remove from PrimSyncInfoManager's record.
|
||||
foreach (SceneObjectPart part in sog.Parts)
|
||||
{
|
||||
m_primSyncInfoManager.RemovePrimSyncInfo(part);
|
||||
}
|
||||
|
||||
if (!IsSyncingWithOtherSyncNodes())
|
||||
{
|
||||
//no SyncConnector connected. Do nothing.
|
||||
return;
|
||||
}
|
||||
|
||||
OSDMap data = new OSDMap();
|
||||
data["UUID"] = OSD.FromUUID(sog.UUID);
|
||||
//TODO: need to put in SyncID instead of ActorID here.
|
||||
//For now, keep it the same for simple debugging
|
||||
data["actorID"] = OSD.FromString(m_actorID);
|
||||
data["softDelete"] = OSD.FromBoolean(softDelete);
|
||||
|
||||
SymmetricSyncMessage rsm = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.RemovedObject, OSDParser.SerializeJsonString(data));
|
||||
SendSpecialObjectUpdateToRelevantSyncConnectors(m_actorID, sog, rsm);
|
||||
}
|
||||
|
||||
#endregion //IRegionSyncModule
|
||||
|
@ -2445,6 +2464,10 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
if (!softDelete)
|
||||
{
|
||||
//m_log.DebugFormat("{0}: hard delete object {1}", LogHeader, sog.UUID);
|
||||
foreach (SceneObjectPart part in sog.Parts)
|
||||
{
|
||||
m_primSyncInfoManager.RemovePrimSyncInfo(part);
|
||||
}
|
||||
m_scene.DeleteSceneObjectBySynchronization(sog);
|
||||
}
|
||||
else
|
||||
|
@ -3123,9 +3146,6 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
/// <param name="updatedProperties"></param>
|
||||
public void ProcessAndEnqueuePrimUpdatesByLocal(SceneObjectPart part, List<SceneObjectPartSyncProperties> updatedProperties)
|
||||
{
|
||||
m_log.DebugFormat("ProcessAndEnqueuePrimUpdatesByLocal called. Simply return for now. More testing later.");
|
||||
return;
|
||||
|
||||
//Sync values with SOP's data and update timestamp according, to
|
||||
//obtain the list of properties that really have been updated
|
||||
//and should be propogated to other sync nodes.
|
||||
|
@ -3386,6 +3406,11 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
}
|
||||
}
|
||||
|
||||
foreach (SceneObjectPart part in sog.Parts)
|
||||
{
|
||||
partsPrimSyncInfo[part.UUID].SetGroupProperties(part);
|
||||
}
|
||||
|
||||
//Convert the coordinates if necessary
|
||||
/*
|
||||
Vector3 globalPos;
|
||||
|
@ -4501,7 +4526,10 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
|
||||
public void SetGroupProperties(SceneObjectPart sop)
|
||||
{
|
||||
|
||||
foreach (SceneObjectPartSyncProperties property in GroupProperties)
|
||||
{
|
||||
SetSOPPropertyValue(sop, property);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitPropertiesSyncInfo(SceneObjectPart part, long initUpdateTimestamp, string syncID)
|
||||
|
@ -6280,6 +6308,22 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
}
|
||||
}
|
||||
|
||||
public bool RemovePrimSyncInfo(SceneObjectPart part)
|
||||
{
|
||||
if (!m_primsInSync.ContainsKey(part.UUID))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
lock (m_primsInSyncLock)
|
||||
{
|
||||
Dictionary<UUID, PrimSyncInfo> newPrimsInSync = new Dictionary<UUID, PrimSyncInfo>(m_primsInSync);
|
||||
newPrimsInSync.Remove(part.UUID);
|
||||
|
||||
m_primsInSync = newPrimsInSync;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public PrimSyncInfo GetPrimSyncInfo(UUID primUUID)
|
||||
{
|
||||
if (m_primsInSync.ContainsKey(primUUID))
|
||||
|
|
|
@ -709,9 +709,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
//Similar to DeleteSceneObject, except that this does not change LastUpdateActorID and LastUpdateTimeStamp
|
||||
public void DeleteSceneObjectBySynchronization(SceneObjectGroup group)
|
||||
{
|
||||
// m_log.DebugFormat("[SCENE]: Deleting scene object {0} {1}", group.Name, group.UUID);
|
||||
|
||||
//SceneObjectPart rootPart = group.GetChildPart(group.UUID);
|
||||
|
||||
// Serialise calls to RemoveScriptInstances to avoid
|
||||
// deadlocking on m_parts inside SceneObjectGroup
|
||||
|
@ -2593,16 +2590,18 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
EventManager.TriggerParcelPrimCountTainted();
|
||||
}
|
||||
|
||||
group.DeleteGroupFromScene(silent);
|
||||
|
||||
// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);
|
||||
|
||||
//DSG SYNC
|
||||
//Propagate the RemovedObject message
|
||||
if (RegionSyncModule != null)
|
||||
{
|
||||
RegionSyncModule.SendDeleteObject(group, false);
|
||||
//RegionSyncModule.SendDeleteObject(group, false);
|
||||
RegionSyncModule.SyncDeleteObject(group, false);
|
||||
}
|
||||
//end of SYMMETRIC SYNC
|
||||
//end of DSG SYNC
|
||||
|
||||
group.DeleteGroupFromScene(silent);
|
||||
|
||||
// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue