From 3fe31ad457ba3b663b0ff1b834dd06756526e771 Mon Sep 17 00:00:00 2001 From: "Huaiyu (Kitty) Liu" Date: Mon, 7 Mar 2011 15:51:59 -0800 Subject: [PATCH] Added back the LocalFlags as one of the SOP properties to be synced, so that script events such as touch is propogated properly. Also removed some debug messages. --- .../RegionSyncModule/RegionSyncServerModule.cs | 2 +- .../RegionSyncModule/SymmetricSync/RegionSyncModule.cs | 10 ++++++++-- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 7 ++++--- .../Scenes/Serialization/SceneObjectSerializer.cs | 7 ++++--- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs index e8972604c3..820cd18ea0 100644 --- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs +++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/RegionSyncServerModule.cs @@ -271,7 +271,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule { m_presenceUpdates[presence.UUID] = presence; } - m_log.DebugFormat("[REGION SYNC SERVER MODULE] QueuePresenceForUpdate: {0}", presence.UUID.ToString()); + //m_log.DebugFormat("[REGION SYNC SERVER MODULE] QueuePresenceForUpdate: {0}", presence.UUID.ToString()); } public void SendUpdates() diff --git a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs index dd13272bcc..2a2698bc49 100644 --- a/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs +++ b/OpenSim/Region/CoreModules/RegionSync/RegionSyncModule/SymmetricSync/RegionSyncModule.cs @@ -752,7 +752,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule data["LastUpdateActorID"] = OSD.FromString(updatedPart.BucketSyncInfoList[bucketName].LastUpdateActorID); SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedBucketProperties, OSDParser.SerializeJsonString(data)); - m_log.DebugFormat("{0}: PhysBucketSender for {1}, pos={2}", LogHeader, updatedPart.UUID.ToString(), pa.Position.ToString()); + //m_log.DebugFormat("{0}: PhysBucketSender for {1}, pos={2}", LogHeader, updatedPart.UUID.ToString(), pa.Position.ToString()); SendObjectUpdateToRelevantSyncConnectors(updatedPart, syncMsg); } } @@ -1268,8 +1268,14 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule HashSet newlist = new HashSet(currentlist); newlist.Remove(syncConnector); + if (newlist.Count == 0) + { + m_synced = false; + } + m_syncConnectors = newlist; } + } public void StopAllSyncConnectors() @@ -1517,7 +1523,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule UUID partUUID = data["UUID"].AsUUID(); string bucketName = data["Bucket"].AsString(); - m_log.DebugFormat("{0}: HandleUpdatedBucketProperties {1}: for {2}/{3}", LogHeader, senderActorID, partUUID.ToString(), bucketName); + //m_log.DebugFormat("{0}: HandleUpdatedBucketProperties {1}: for {2}/{3}", LogHeader, senderActorID, partUUID.ToString(), bucketName); /* Commented out since OSDMap is now passed all the way through to the unpacker. * Previous implementation is to create a SOP and copy the values into same and copy them out later. diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index df5320192a..d8461d4052 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -166,7 +166,7 @@ namespace OpenSim.Region.Framework.Scenes get { return m_physActor; } set { - m_log.DebugFormat("[SCENE OBJECT PART]: PhysActor set to {0} for {1} {2}", value, Name, UUID); + //m_log.DebugFormat("[SCENE OBJECT PART]: PhysActor set to {0} for {1} {2}", value, Name, UUID); m_physActor = value; } } @@ -5450,6 +5450,7 @@ namespace OpenSim.Region.Framework.Scenes localPart.EveryoneMask = updatedPart.EveryoneMask; localPart.NextOwnerMask = updatedPart.NextOwnerMask; localPart.Flags = updatedPart.Flags; + localPart.LocalFlags = updatedPart.LocalFlags; //We will update CollisionSound with special care so that it does not lead to ScheduleFullUpdate of this part, to make the actor think it just made an update and //need to propogate that update to other actors. @@ -5830,8 +5831,8 @@ namespace OpenSim.Region.Framework.Scenes { if (updatedProperties != null && updatedProperties.Count > 0) { - m_log.DebugFormat("{0}: Tainting bucket for properties {1}", - "[SCENE OBJECT PART]", updatedProperties.ToString()); + //m_log.DebugFormat("{0}: Tainting bucket for properties {1}", + // "[SCENE OBJECT PART]", updatedProperties.ToString()); foreach (SceneObjectPartProperties property in updatedProperties) { TaintBucketSyncInfo(property); diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 170c45a030..588ffc7dae 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs @@ -330,7 +330,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization m_SOPXmlProcessors.Add("ParticleSystem", ProcessParticleSystem); //SYMMETRIC SYNC - //m_SOPXmlProcessors.Add("LocalFlags", ProcessLocalFlags); + m_SOPXmlProcessors.Add("LocalFlags", ProcessLocalFlags); //m_SOPXmlProcessors.Add("LastUpdateTimeStamp", ProcessUpdateTimeStamp); //m_SOPXmlProcessors.Add("LastUpdateActorID", ProcessLastUpdateActorID); m_SOPXmlProcessors.Add("IsAttachment", ProcessIsAttachment); @@ -718,13 +718,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization { obj.LastUpdateActorID = reader.ReadElementContentAsString("LastUpdateActorID", string.Empty); } + * */ private static void ProcessLocalFlags(SceneObjectPart obj, XmlTextReader reader) { obj.LocalFlags = Util.ReadEnum(reader, "LocalFlags"); } - * */ + private static void ProcessIsAttachment(SceneObjectPart obj, XmlTextReader reader) { @@ -1273,7 +1274,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization writer.WriteElementString("NextOwnerMask", sop.NextOwnerMask.ToString()); //SYMMETRIC SYNC: also serialize SceneObjectPart:LocalFlags, so that it can be propogated across actors WriteFlags(writer, "Flags", sop.Flags.ToString(), options); - //WriteFlags(writer, "LocalFlags", sop.LocalFlags.ToString(), options); + WriteFlags(writer, "LocalFlags", sop.LocalFlags.ToString(), options); //end SYMMETRIC SYNC WriteUUID(writer, "CollisionSound", sop.CollisionSound, options); writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());