Added serialization/deserilaization of Attachment related SOP properties to sync AttachObject.
							parent
							
								
									21a1000da6
								
							
						
					
					
						commit
						f99b516eec
					
				|  | @ -48,7 +48,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule | |||
|             //Read in configuration, if the local actor is configured to be a client manager, load this module. | ||||
|             if (!actorType.Equals("client_manager")) | ||||
|             { | ||||
|                 m_log.Warn(LogHeader + ": not configured as Scene Persistence Actor. Shut down."); | ||||
|                 m_log.Warn(LogHeader + ": not configured as Client Manager Actor. Shut down."); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule | |||
|             //Read in configuration, if the local actor is configured to be a client manager, load this module. | ||||
|             if (!actorType.Equals("physics_engine")) | ||||
|             { | ||||
|                 m_log.Warn(LogHeader + ": not configured as Scene Persistence Actor. Shut down."); | ||||
|                 m_log.Warn(LogHeader + ": not configured as Physics Engine Actor. Shut down."); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|  |  | |||
|  | @ -226,19 +226,49 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         } | ||||
| 
 | ||||
|          | ||||
|         public bool IsAttachment; | ||||
|         //public bool IsAttachment; | ||||
|         private bool m_isAttachment; | ||||
|         public bool IsAttachment | ||||
|         { | ||||
|             get { return m_isAttachment; } | ||||
|             set { m_isAttachment = value; } | ||||
|         } | ||||
| 
 | ||||
|          | ||||
|         public scriptEvents AggregateScriptEvents; | ||||
|         //public scriptEvents AggregateScriptEvents; | ||||
|         private scriptEvents m_aggregateScriptEvents; | ||||
|         public scriptEvents AggregateScriptEvents | ||||
|         { | ||||
|             get { return m_aggregateScriptEvents; } | ||||
|             set { m_aggregateScriptEvents = value; } | ||||
|         } | ||||
|          | ||||
|          | ||||
|         //public UUID AttachedAvatar; | ||||
|         private UUID m_attachedAvatar; | ||||
|         public UUID AttachedAvatar | ||||
|         { | ||||
|             get { return m_attachedAvatar; } | ||||
|             set { m_attachedAvatar = value; } | ||||
|         } | ||||
| 
 | ||||
|          | ||||
|         public UUID AttachedAvatar; | ||||
|         //public Vector3 AttachedPos; | ||||
|         private Vector3 m_attachedPos; | ||||
|         public Vector3 AttachedPos | ||||
|         { | ||||
|             get { return m_attachedPos; } | ||||
|             set { m_attachedPos = value; } | ||||
|         } | ||||
| 
 | ||||
|          | ||||
|         public Vector3 AttachedPos; | ||||
| 
 | ||||
|          | ||||
|         public uint AttachmentPoint; | ||||
|         //public uint AttachmentPoint; | ||||
|         private uint m_attachmentPoint; | ||||
|         public uint AttachmentPoint | ||||
|         { | ||||
|             get { return m_attachmentPoint; } | ||||
|             set { m_attachmentPoint = value; } | ||||
|         } | ||||
| 
 | ||||
|          | ||||
|         public Vector3 RotationAxis = Vector3.One; | ||||
|  | @ -5158,11 +5188,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         IsPhysical, | ||||
|         Flying, | ||||
|         Buoyancy, | ||||
|         //TODO!!!! To be handled in serialization/deserizaltion for synchronization | ||||
|         AggregateScriptEvents, | ||||
|         IsSelected, | ||||
|         AttachmentPoint, | ||||
|         IsAttachment, | ||||
|         AttachedAvatar, | ||||
|         AttachedPos, | ||||
|         AttachmentPoint, | ||||
|         //TODO!!!! To be handled in serialization/deserizaltion for synchronization | ||||
|         IsSelected, | ||||
|         Sound, //This indicates any Sound related property has changed: Sound, SoundGain, SoundFlags,SoundRadius, | ||||
|         //Addition properties to be added here | ||||
| 
 | ||||
|  | @ -5406,6 +5438,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                 localPart.TextureAnimation = updatedPart.TextureAnimation; | ||||
|                 localPart.ParticleSystem = updatedPart.ParticleSystem; | ||||
| 
 | ||||
|                 if (!localPart.AttachedAvatar.Equals(updatedPart.AttachedAvatar)) | ||||
|                 { | ||||
|                     localPart.AttachedAvatar = updatedPart.AttachedAvatar; | ||||
|                     ScenePresence avatar = m_parentGroup.Scene.GetScenePresence(AttachedAvatar); | ||||
|                     localPart.ParentGroup.RootPart.SetParentLocalId(avatar.LocalId); | ||||
|                 } | ||||
|                 localPart.AttachedPos = updatedPart.AttachedPos; | ||||
|                 localPart.AttachmentPoint = updatedPart.AttachmentPoint; | ||||
|                 //NOTE!!!! IsAttachment can only be set after AttachedAvatar is set, see GroupPosition get function. | ||||
|                 if (!localPart.AttachedAvatar.Equals(UUID.Zero) && updatedPart.IsAttachment) | ||||
|                 { | ||||
|                     localPart.IsAttachment = updatedPart.IsAttachment; | ||||
|                 } | ||||
| 
 | ||||
|                 localPart.AggregateScriptEvents = updatedPart.AggregateScriptEvents; | ||||
| 
 | ||||
|                 m_bucketSyncInfoList[bucketName].LastUpdateTimeStamp = updatedPart.BucketSyncInfoList[bucketName].LastUpdateTimeStamp; | ||||
|                 m_bucketSyncInfoList[bucketName].LastUpdateActorID = updatedPart.BucketSyncInfoList[bucketName].LastUpdateActorID; | ||||
| 
 | ||||
|  | @ -5486,7 +5534,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             } | ||||
|             long timeStamp = DateTime.Now.Ticks; | ||||
| 
 | ||||
|             m_log.Debug("InitializeBucketSyncInfo called at " + timeStamp); | ||||
|             //m_log.Debug("InitializeBucketSyncInfo called at " + timeStamp); | ||||
| 
 | ||||
|             for (int i = 0; i < m_propertyBucketNames.Count; i++) | ||||
|             { | ||||
|  |  | |||
|  | @ -330,9 +330,15 @@ 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); | ||||
|             m_SOPXmlProcessors.Add("AttachedAvatar", ProcessAttachedAvatar); | ||||
|             m_SOPXmlProcessors.Add("AttachedPos", ProcessAttachedPos); | ||||
|             m_SOPXmlProcessors.Add("AttachmentPoint", ProcessAttachmentPoint); | ||||
|             m_SOPXmlProcessors.Add("AggregateScriptEvents", ProcessAggregateScriptEvents); | ||||
| 
 | ||||
|             m_SOPXmlProcessors.Add("BucketSyncInfoList", ProcessBucketSyncInfo); | ||||
|             //end of SYMMETRIC SYNC | ||||
| 
 | ||||
|  | @ -420,11 +426,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
| 
 | ||||
|         #region SOPXmlProcessors | ||||
|         //SYMMETRIC SYNC NOTE: -- assignments in de-serialization should directly set the values w/o triggering SceneObjectPart.UpdateBucketSyncInfo; | ||||
|         //That is, calling SetXXX(value) instead of using "XXX = value".  | ||||
|         private static void ProcessAllowedDrop(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|             obj.AllowedDrop = Util.ReadBoolean(reader); | ||||
|             //obj.SetAllowedDrop(Util.ReadBoolean(reader)); | ||||
|             obj.AllowedDrop = Util.ReadBoolean(reader);             | ||||
|         } | ||||
| 
 | ||||
|         private static void ProcessCreatorID(SceneObjectPart obj, XmlTextReader reader) | ||||
|  | @ -714,12 +718,38 @@ 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<PrimFlags>(reader, "LocalFlags"); | ||||
|         } | ||||
|          * */ | ||||
| 
 | ||||
|         private static void ProcessIsAttachment(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|             obj.IsAttachment = Util.ReadBoolean(reader);    | ||||
|         } | ||||
| 
 | ||||
|         private static void ProcessAttachedAvatar(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|             obj.AttachedAvatar = Util.ReadUUID(reader, "AttachedAvatar"); | ||||
|         } | ||||
| 
 | ||||
|         private static void ProcessAttachedPos(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|             obj.AttachedPos = Util.ReadVector(reader, "AttachedPos"); | ||||
|         } | ||||
| 
 | ||||
|         private static void ProcessAttachmentPoint(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|             obj.AttachmentPoint = (uint)reader.ReadElementContentAsInt("AttachmentPoint", string.Empty); | ||||
|         } | ||||
| 
 | ||||
|         private static void ProcessAggregateScriptEvents(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|             obj.AggregateScriptEvents = Util.ReadEnum<scriptEvents>(reader, "AggregateScriptEvents"); | ||||
|         } | ||||
| 
 | ||||
|         public static void ProcessBucketSyncInfo(SceneObjectPart obj, XmlTextReader reader) | ||||
|         { | ||||
|  | @ -1243,9 +1273,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); | ||||
|             //writer.WriteElementString("Flags", sop.Flags.ToString()); | ||||
|             //writer.WriteElementString("LocalFlags", sop.Flags.ToString()); | ||||
|             //WriteFlags(writer, "LocalFlags", sop.LocalFlags.ToString(), options); | ||||
|             //end SYMMETRIC SYNC | ||||
|             WriteUUID(writer, "CollisionSound", sop.CollisionSound, options); | ||||
|             writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString()); | ||||
|  | @ -1255,8 +1283,13 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
|             WriteBytes(writer, "ParticleSystem", sop.ParticleSystem); | ||||
| 
 | ||||
|             //SYMMETRIC SYNC | ||||
|             //writer.WriteElementString("LastUpdateTimeStamp", sop.LastUpdateTimeStamp.ToString()); | ||||
|             //writer.WriteElementString("LastUpdateActorID", sop.LastUpdateActorID); | ||||
|             //These properties are only meaningful for synchronization purpose. For saving oar files, they are not necessary. | ||||
|             //We may remove these if later we use a different method to encode object properties for synchronization. | ||||
|             writer.WriteElementString("IsAttachment", sop.IsAttachment.ToString().ToLower()); | ||||
|             WriteUUID(writer, "AttachedAvatar", sop.AttachedAvatar, options); | ||||
|             WriteVector(writer, "AttachedPos", sop.AttachedPos); | ||||
|             writer.WriteElementString("AttachmentPoint", sop.AttachmentPoint.ToString()); | ||||
|             WriteFlags(writer, "AggregateScriptEvents", sop.AggregateScriptEvents.ToString(), options); | ||||
|             WriteBucketSyncInfo(writer, sop.BucketSyncInfoList); | ||||
|             //end of SYMMETRIC SYNC | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Huaiyu (Kitty) Liu
						Huaiyu (Kitty) Liu