コード例 #1
0
        private static void CollisionFilterFromXml(ObjectPartInventoryItem item, XmlTextReader reader)
        {
            for (; ;)
            {
                if (!reader.Read())
                {
                    throw new InvalidObjectXmlException();
                }

                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.Name == "Name")
                    {
                        ObjectPartInventoryItem.CollisionFilterParam p = item.CollisionFilter;
                        p.Name = reader.ReadElementValueAsString();
                        item.CollisionFilter = p;
                    }
                    else if (reader.Name == "ID")
                    {
                        ObjectPartInventoryItem.CollisionFilterParam p = item.CollisionFilter;
                        string v = reader.ReadElementValueAsString();
                        if (!UUID.TryParse(v, out p.ID))
                        {
                            p.ID = UUID.Zero;
                        }
                        item.CollisionFilter = p;
                    }
                    else if (reader.Name == "Type")
                    {
                        ObjectPartInventoryItem.CollisionFilterParam p = item.CollisionFilter;
                        p.Type = (ObjectPartInventoryItem.CollisionFilterEnum)Enum.Parse(typeof(ObjectPartInventoryItem.CollisionFilterEnum), reader.ReadElementContentAsString());
                        item.CollisionFilter = p;
                    }
                    else
                    {
                        reader.ReadToEndElement();
                    }
                    break;

                case XmlNodeType.EndElement:
                    if (reader.Name != "CollisionFilter")
                    {
                        throw new InvalidObjectXmlException();
                    }
                    return;
                }
            }
            throw new InvalidObjectXmlException();
        }
コード例 #2
0
 public void ToXml(XmlTextWriter writer, UGUI nextOwner, XmlSerializationOptions options)
 {
     writer.WriteNamedValue("InventorySerial", InventorySerial);
     writer.WriteStartElement("TaskInventory");
     {
         foreach (ObjectPartInventoryItem item in Values)
         {
             writer.WriteStartElement("TaskInventoryItem");
             {
                 writer.WriteUUID("AssetID", (options & XmlSerializationOptions.AdjustForNextOwner) != 0 ? item.NextOwnerAssetID : item.AssetID);
                 writer.WriteNamedValue("BasePermissions", (uint)item.Permissions.Base);
                 writer.WriteNamedValue("CreationDate", item.CreationDate.AsUInt);
                 writer.WriteUUID("CreatorID", item.Creator.ID);
                 if (!string.IsNullOrEmpty(item.Creator.CreatorData))
                 {
                     writer.WriteNamedValue("CreatorData", item.Creator.CreatorData);
                 }
                 writer.WriteNamedValue("Description", item.Description);
                 writer.WriteNamedValue("EveryonePermissions", (uint)item.Permissions.EveryOne);
                 writer.WriteNamedValue("Flags", (uint)item.Flags);
                 if ((options & XmlSerializationOptions.WriteOwnerInfo) != XmlSerializationOptions.None)
                 {
                     writer.WriteNamedValue("GroupID", item.Group.ID);
                 }
                 else
                 {
                     writer.WriteNamedValue("GroupID", UUID.Zero);
                 }
                 writer.WriteNamedValue("GroupPermissions", (uint)item.Permissions.Group);
                 writer.WriteNamedValue("InvType", (uint)item.InventoryType);
                 writer.WriteUUID("ItemID", item.ID);
                 writer.WriteUUID("OldItemID", UUID.Zero);
                 writer.WriteUUID("LastOwnerID", item.LastOwner.ID);
                 writer.WriteNamedValue("Name", item.Name);
                 writer.WriteNamedValue("NextPermissions", (uint)item.Permissions.NextOwner);
                 if ((options & XmlSerializationOptions.WriteOwnerInfo) != XmlSerializationOptions.None)
                 {
                     writer.WriteUUID("OwnerID", item.Owner.ID);
                     writer.WriteNamedValue("CurrentPermissions", (uint)item.Permissions.Current);
                 }
                 else if ((options & XmlSerializationOptions.AdjustForNextOwner) != XmlSerializationOptions.None)
                 {
                     writer.WriteUUID("OwnerID", nextOwner.ID);
                     writer.WriteNamedValue("CurrentPermissions", (uint)item.Permissions.NextOwner);
                 }
                 else
                 {
                     writer.WriteUUID("OwnerID", UUID.Zero);
                     writer.WriteNamedValue("CurrentPermissions", (uint)item.Permissions.Current);
                 }
                 writer.WriteUUID("ParentID", item.ParentFolderID);
                 writer.WriteUUID("ParentPartID", item.ParentFolderID);
                 var grantinfo = item.PermsGranter;
                 writer.WriteUUID("PermsGranter", grantinfo.PermsGranter.ID);
                 writer.WriteNamedValue("PermsMask", (uint)grantinfo.PermsMask);
                 writer.WriteNamedValue("Type", (int)item.AssetType);
                 writer.WriteNamedValue("OwnerChanged", (options & XmlSerializationOptions.AdjustForNextOwner) != XmlSerializationOptions.None);
                 UEI experienceID = item.ExperienceID;
                 if (experienceID != UEI.Unknown)
                 {
                     writer.WriteNamedValue("ExperienceID", experienceID.ToString());
                 }
                 {
                     ObjectPartInventoryItem.CollisionFilterParam p = item.CollisionFilter;
                     if (p.ID != UUID.Zero || p.Name?.Length != 0)
                     {
                         writer.WriteStartElement("CollisionFilter");
                         writer.WriteNamedValue("Name", p.Name);
                         writer.WriteNamedValue("ID", p.ID);
                         writer.WriteNamedValue("Type", p.Type.ToString());
                         writer.WriteEndElement();
                     }
                 }
             }
             writer.WriteEndElement();
         }
     }
     writer.WriteEndElement();
 }