/// <summary> /// /// </summary> /// <param name="osPart"></param> /// <returns></returns> private SceneObjectPartSnapshot ConvertOpenSimPartToPartSnapshot(dynamic osPart) { //we need server weight and streaming cost SceneObjectPartSnapshot snap = new SceneObjectPartSnapshot { AngularVelocity = new Vector3(osPart.AngularVelocity.X, osPart.AngularVelocity.Y, osPart.AngularVelocity.Z), AngularVelocityTarget = new Vector3(osPart.AngularVelocity.X, osPart.AngularVelocity.Y, osPart.AngularVelocity.Z), BaseMask = osPart.BaseMask, Category = osPart.Category, ClickAction = osPart.ClickAction, CollisionSound = osPart.CollisionSound.Guid, CollisionSoundVolume = osPart.CollisionSoundVolume, CreationDate = osPart.CreationDate, CreatorId = m_creatorOverride == Guid.Empty ? osPart.CreatorID.Guid : m_creatorOverride, Description = osPart.Description, EveryoneMask = osPart.EveryoneMask, Flags = osPart.Flags, FromItemId = Guid.Empty, GroupId = osPart.GroupID.Guid, GroupMask = osPart.GroupMask, GroupPosition = osPart.GroupPosition, HoverText = osPart.Text, Id = osPart.UUID.Guid, Inventory = ExtractSOPInventorySnapshot(osPart), KeyframeAnimation = ExtractSOPKFASnapshot(osPart), LastOwnerId = osPart.LastOwnerID.Guid, LinkNumber = osPart.LinkNum, LocalId = osPart.LocalId, Material = (Material)osPart.Material, MediaUrl = osPart.MediaUrl, Name = osPart.Name, NextOwnerMask = osPart.NextOwnerMask, ObjectFlags = (PrimFlags)osPart.ObjectFlags, ObjectSaleType = osPart.ObjectSaleType, OffsetPosition = osPart.OffsetPosition, OwnerMask = osPart.OwnerMask, OwnershipCost = osPart.OwnershipCost, ParentId = osPart.ParentID, ParticleSystem = osPart.ParticleSystem, PassTouches = osPart.PassTouches, PayPrice = osPart.PayPrice, RegionHandle = osPart.RegionHandle, RotationOffset = new Quaternion(osPart.RotationOffset.X, osPart.RotationOffset.Y, osPart.RotationOffset.Z, osPart.RotationOffset.W), SalePrice = osPart.SalePrice, Scale = osPart.Scale, ScriptAccessPin = osPart.ScriptAccessPin, ServerWeight = 1, StreamingCost = 1, Shape = ExtractSOPBaseShape(osPart), OwnerId = m_ownerOverride == Guid.Empty ? osPart.OwnerID.Guid : m_ownerOverride, }; return(snap); }
/// <summary> /// Deserializes an OpenSim Xml2 serialized SceneObjectGroup into a SceneObjectGroupSnapshot /// </summary> /// <param name="xml">The XML blob representing the serialized object</param> /// <returns></returns> public SceneObjectGroupSnapshot SOGSnapshotFromOpenSimXml2(string xml) { dynamic osSog = m_fromXml2Method.Invoke(null, new object[] { xml }); dynamic osRootPart = osSog.RootPart; SceneObjectPartSnapshot rootPartSnap = ConvertOpenSimPartToPartSnapshot(osRootPart); SceneObjectGroupSnapshot sshot = new SceneObjectGroupSnapshot(); sshot.TaintedAttachment = false; sshot.TempAttachment = false; sshot.RootPart = rootPartSnap; return(sshot); }