예제 #1
0
        private void ReplaceItemIdsWithDna(XmlElement avatarNode)
        {
            if (avatarNode == null)
            {
                throw new ArgumentNullException("avatarNode");
            }

            if (HasResolvedAssets(avatarNode))
            {
                return;
            }

            XmlDocument avatarXmlDoc = avatarNode.OwnerDocument;

            List <ItemId> avatarItemIds;

            if (AvatarXmlUtil.GetItemIdsFromAvatarXmlNode(avatarNode, out avatarItemIds))
            {
                XmlDocument assetsXml = mServerStateMachine.ServerAssetRepository.GetXmlDna(avatarItemIds);
                XmlNode     dnaNode   = avatarNode.SelectSingleNode("AvatarDna");

                if (dnaNode == null)
                {
                    throw new Exception("avatarNode is not in the expected format.\n" + avatarNode.OuterXml);
                }

                dnaNode.RemoveAll();
                dnaNode.AppendChild(avatarXmlDoc.ImportNode(assetsXml.SelectSingleNode("//Items"), true));
            }
            else
            {
                XmlNode errorNode = avatarXmlDoc.CreateElement("Error");
                errorNode.InnerText = "avatarNode does not have the expected format";
                avatarNode.AppendChild(errorNode);
            }
        }