示例#1
0
        /// <summary>
        /// Creates new enviromental object element.
        /// </summary>
        /// <param name="name">Environmental object name.</param>
        /// <param name="errorMessage">
        /// Output parameter, which holds error message catched during serialization.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool EnvironmentalObjects(string name, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(name, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IncorectCharacters));
                }

                // <environmentalObject name="a"/>
                XmlElement environmentalObjectElement = v_InventoryXmlDocument.CreateElement("environmentalObject");
                environmentalObjectElement.SetAttribute("name", name);

                XmlNode environmentalObject = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/environmentalObjects");
                environmentalObject?.AppendChild(environmentalObjectElement);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
示例#2
0
        /// <summary>
        /// Creates new radius element.
        /// </summary>
        /// <param name="value">Radius value.</param>
        /// <param name="errorMessage">
        /// Output parameter, which holds error message catched during serialization.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool Radius(string value, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(value))
                {
                    throw new ArgumentException(ExceptionsMessage("value", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(value, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("value", (int)ErrorMessages.IncorectFloatingNumber));
                }

                //<radius value="0.1"/>
                XmlElement radiuseElement = v_InventoryXmlDocument.CreateElement("radius");
                radiuseElement.SetAttribute("name", value);

                XmlNode radius = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration");
                radius?.AppendChild(radiuseElement);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
示例#3
0
        /// <summary>
        /// Creates new protein element.
        /// </summary>
        /// <param name="name">Protein name.</param>
        /// <param name="errorMessage">
        /// Output parameter, which holds error message catched during serialization.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool Proteins(string name, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(name, Regexp.Check.StringWithApostroph))
                {
                    throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IncorectCharactersWithApostroph));
                }

                // < protein name = "p0" />
                XmlElement protein = v_InventoryXmlDocument.CreateElement("protein");
                protein.SetAttribute("name", name);

                XmlNode proteins = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/proteins");
                proteins?.AppendChild(protein);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
        /// <summary>
        /// Creates new evoRule element within evoRulesWithPriority block.
        /// </summary>
        /// <remarks>
        /// Catches all exceptions and returned as errorMessage.
        /// </remarks>
        /// <param name="type">EvoRule type can be metabolic, divide, center or destroy.</param>
        /// <param name="priority">EvoRule priority.</param>
        /// <param name="leftSideList">Container leftSide object.</param>
        /// <param name="rightSideList">Container rightSide object.</param>
        /// <param name="errorMessage">
        /// Output parameter, which holds error message catched during serialization.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool EvoRule(string type, int priority, List <string> leftSideList, List <string> rightSideList, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(type))
                {
                    throw new ArgumentException(ExceptionsMessage("type", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(type, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("type", (int)ErrorMessages.IncorectCharacters));
                }
                if (leftSideList == null || leftSideList.Count == 0)
                {
                    throw new ArgumentException(ExceptionsMessage("leftSideList", (int)ErrorMessages.EmptyList));
                }
                if (rightSideList == null || rightSideList.Count == 0)
                {
                    throw new ArgumentException(ExceptionsMessage("rightSideList", (int)ErrorMessages.EmptyList));
                }

                /*<evoRule type="2res" priority="0">
                 *  <leftside >
                 *      <object name="a"/>
                 *  </leftside>
                 *  <rightside>
                 *      <object name="p1"/>
                 *  </rightside>
                 * </evoRule>*/
                XmlElement evoRule = v_EvolutionXmlDocument.CreateElement("evoRule");
                evoRule.SetAttribute("priority", priority.ToString());
                evoRule.SetAttribute("type", type);

                XmlElement leftsideElement = (XmlElement)evoRule.AppendChild(v_EvolutionXmlDocument.CreateElement("leftside"));
                foreach (string leftSide in leftSideList)
                {
                    XmlElement leftobject = (XmlElement)leftsideElement.AppendChild(v_EvolutionXmlDocument.CreateElement("object"));
                    leftobject.SetAttribute("name", leftSide);
                }

                XmlElement rightsideElement = (XmlElement)evoRule.AppendChild(v_EvolutionXmlDocument.CreateElement("rightside"));
                foreach (string rightSide in rightSideList)
                {
                    XmlElement rightobject = (XmlElement)rightsideElement.AppendChild(v_EvolutionXmlDocument.CreateElement("object"));
                    rightobject.SetAttribute("name", rightSide);
                }

                XmlNode evoRulesWithPriority = v_EvolutionXmlDocument.SelectSingleNode("evolution/evoRulesWithPriority");
                evoRulesWithPriority?.AppendChild(evoRule);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
示例#5
0
        /// <summary>
        /// Creates new floating object.
        /// </summary>
        /// <param name="name">Floating object name.</param>
        /// <param name="valueOfSides">Sides value.</param>
        /// <param name="valueOfRadius">Radius value.</param>
        /// <param name="errorMessage">
        /// Output parameter, which holds error message catched during serialization.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool FloatingObjects(string name, string valueOfSides, string valueOfRadius, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new ArgumentException(ExceptionsMessage("floating object", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(name, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("floating object", (int)ErrorMessages.IncorectCharacters));
                }
                if (string.IsNullOrEmpty(valueOfSides))
                {
                    throw new ArgumentException(ExceptionsMessage("sides", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(valueOfSides, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("sides", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(valueOfRadius))
                {
                    throw new ArgumentException(ExceptionsMessage("radius", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(valueOfRadius, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("radius", (int)ErrorMessages.IncorectFloatingNumber));
                }

                /* <floatingObject name="a">
                 *      <sides value="5"/>
                 *      <radius value="0.05"/>
                 * </floatingObject> */
                XmlElement floatingObject = v_InventoryXmlDocument.CreateElement("floatingObject");
                floatingObject.SetAttribute("name", name);

                XmlElement sides = (XmlElement)floatingObject.AppendChild(v_InventoryXmlDocument.CreateElement("sides"));
                sides.SetAttribute("value", valueOfSides);

                XmlElement radius = (XmlElement)floatingObject.AppendChild(v_InventoryXmlDocument.CreateElement("radius"));
                radius.SetAttribute("value", valueOfRadius);

                XmlNode floatingObjects = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/floatingObjects");
                floatingObjects?.AppendChild(floatingObject);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
示例#6
0
        public void RegexpTestsForDifferentInputs()
        {
            Assert.IsTrue(Regexp.CheckInputText(string.Empty, Regexp.Check.NumberOrEmptyString));
            Assert.IsTrue(Regexp.CheckInputText("123", Regexp.Check.NumberOrEmptyString));
            Assert.IsFalse(Regexp.CheckInputText("1 23", Regexp.Check.NumberOrEmptyString));

            Assert.IsTrue(Regexp.CheckInputText(string.Empty, Regexp.Check.FloatingNumberOrEmptyString));
            Assert.IsTrue(Regexp.CheckInputText("123.5", Regexp.Check.FloatingNumberOrEmptyString));
            Assert.IsFalse(Regexp.CheckInputText("1 23.5", Regexp.Check.FloatingNumberOrEmptyString));

            Assert.IsTrue(Regexp.CheckInputText(string.Empty, Regexp.Check.StringOrEmptyString));
            Assert.IsTrue(Regexp.CheckInputText("test", Regexp.Check.StringOrEmptyString));
            Assert.IsFalse(Regexp.CheckInputText("test test", Regexp.Check.StringOrEmptyString));
        }
        /// <summary>
        /// Creates new glueTuple element.
        /// </summary>
        /// <param name="protein1">Name of the protein1.</param>
        /// <param name="protein2">Name of the protein2.</param>
        /// <param name="signalM">Signal M set string.</param>
        /// <param name="errorMessage">
        /// Used as error output if exception is caught.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool GlueRelation(string protein1, string protein2, string signalM, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(protein1))
                {
                    throw new ArgumentException(ExceptionsMessage("protein1", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(protein1, Regexp.Check.StringWithApostroph))
                {
                    throw new ArgumentException(ExceptionsMessage("protein1", (int)ErrorMessages.IncorectCharactersWithApostroph));
                }
                if (string.IsNullOrEmpty(protein2))
                {
                    throw new ArgumentException(ExceptionsMessage("protein2", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(protein2, Regexp.Check.StringWithApostroph))
                {
                    throw new ArgumentException(ExceptionsMessage("protein2", (int)ErrorMessages.IncorectCharactersWithApostroph));
                }
                if (!Regexp.CheckInputText(signalM, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("protein1", (int)ErrorMessages.IncorectCharacters));
                }

                // <glueTuple protein1="p0" protein2="p2" signalMset=""/>
                XmlElement glueTuple = v_EvolutionXmlDocument.CreateElement("glueTuple");
                glueTuple.SetAttribute("signalMset", signalM);
                glueTuple.SetAttribute("protein2", protein2);
                glueTuple.SetAttribute("protein1", protein1);

                XmlNode glueRelations = v_EvolutionXmlDocument.SelectSingleNode("evolution/glueRelations");
                glueRelations?.AppendChild(glueTuple);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
示例#8
0
        /// <summary>
        /// Creates new tile element.
        /// </summary>
        /// <param name="tileName">Tile name.</param>
        /// <param name="polygonSides">Polygon sides value.</param>
        /// <param name="polygonVertexDistance">Polygon vertex distance value.</param>
        /// <param name="polygonAngle">Polygon angle value.</param>
        /// <param name="positionsList">List of positions.</param>
        /// <param name="connectorList">List of connectors.</param>
        /// <param name="surfaceGluen">Surface glue value.</param>
        /// <param name="proteinsList">List of proteins.</param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        public bool Tiles(string tileName, string polygonSides, string polygonVertexDistance, string polygonAngle, List <Positions> positionsList, List <Connect> connectorList, string surfaceGluen, List <string> proteinsList, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(tileName))
                {
                    throw new ArgumentException(ExceptionsMessage("tileName", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(tileName, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("tileName", (int)ErrorMessages.IncorectCharacters));
                }
                if (string.IsNullOrEmpty(polygonSides))
                {
                    throw new ArgumentException(ExceptionsMessage("polygonSides", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(polygonSides, Regexp.Check.Number))
                {
                    throw new ArgumentException(ExceptionsMessage("polygonSides", (int)ErrorMessages.IncorectNumber));
                }
                if (string.IsNullOrEmpty(polygonVertexDistance))
                {
                    throw new ArgumentException(ExceptionsMessage("polygonVertexDistance", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(polygonVertexDistance, Regexp.Check.Number))
                {
                    throw new ArgumentException(ExceptionsMessage("polygonVertexDistance", (int)ErrorMessages.IncorectNumber));
                }
                if (string.IsNullOrEmpty(polygonAngle))
                {
                    throw new ArgumentException(ExceptionsMessage("polygonAngle", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(polygonAngle, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("polygonAngle", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(surfaceGluen))
                {
                    throw new ArgumentException(ExceptionsMessage("surfaceGlue", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(surfaceGluen, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("surfaceGlue", (int)ErrorMessages.IncorectCharacters));
                }
                if (connectorList.Count == 0)
                {
                    throw new ArgumentException(ExceptionsMessage("connectorList", (int)ErrorMessages.EmptyList));
                }

                XmlElement xmlTiles = v_InventoryXmlDocument.CreateElement("tile");
                xmlTiles.SetAttribute("name", tileName);

                XmlElement polygon = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("polygon"));
                XmlElement sides   = (XmlElement)polygon.AppendChild(v_InventoryXmlDocument.CreateElement("sides"));
                sides.SetAttribute("value", polygonSides);
                XmlElement vertexDistance = (XmlElement)polygon.AppendChild(v_InventoryXmlDocument.CreateElement("vertexDistance"));
                vertexDistance.SetAttribute("value", polygonVertexDistance);
                XmlElement angleElement = (XmlElement)polygon.AppendChild(v_InventoryXmlDocument.CreateElement("angleElement"));
                angleElement.SetAttribute("value", polygonAngle);

                if (positionsList.Count != 0)
                {
                    XmlElement positions = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("positions"));
                    foreach (Positions posit in positionsList)
                    {
                        XmlElement position = (XmlElement)positions.AppendChild(v_InventoryXmlDocument.CreateElement("position"));
                        position.SetAttribute("name", posit.PositionName);
                        XmlElement positionPosX = (XmlElement)position.AppendChild(v_InventoryXmlDocument.CreateElement("posX"));
                        positionPosX.SetAttribute("value", posit.PositionPosX.ToString(CultureInfo.InvariantCulture));
                        XmlElement positionPosY = (XmlElement)position.AppendChild(v_InventoryXmlDocument.CreateElement("posY"));
                        positionPosY.SetAttribute("value", posit.PositionPosY.ToString(CultureInfo.InvariantCulture));
                        XmlElement positionPosZ = (XmlElement)position.AppendChild(v_InventoryXmlDocument.CreateElement("posZ"));
                        positionPosZ.SetAttribute("value", posit.PositionPosZ.ToString(CultureInfo.InvariantCulture));
                    }
                }

                XmlElement connectors = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("connectors"));
                foreach (Connect connect in connectorList)
                {
                    XmlElement connector = (XmlElement)connectors.AppendChild(v_InventoryXmlDocument.CreateElement("connector"));
                    connector.SetAttribute("name", connect.ConnectorAngle);

                    XmlElement connectorPositions = (XmlElement)connector.AppendChild(v_InventoryXmlDocument.CreateElement("positions"));

                    foreach (string position in connect.ConnectorPosition)
                    {
                        XmlElement connectorPosition = (XmlElement)connectorPositions.AppendChild(v_InventoryXmlDocument.CreateElement("position"));
                        connectorPosition.SetAttribute("name", position);
                    }

                    XmlElement protein = (XmlElement)connector.AppendChild(v_InventoryXmlDocument.CreateElement("protein"));
                    protein.SetAttribute("name", connect.ConnectorProtein);

                    if (connect.ConnectorAngle != string.Empty)
                    {
                        XmlElement angle = (XmlElement)connector.AppendChild(v_InventoryXmlDocument.CreateElement("angle"));
                        angle.SetAttribute("value", connect.ConnectorAngle.ToString(CultureInfo.InvariantCulture));
                    }
                }

                XmlElement surfaceGlue = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("surfaceGlue"));
                surfaceGlue.SetAttribute("name", surfaceGluen);

                XmlElement proteins = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("proteins"));
                if (proteinsList.Count != 0)
                {
                    foreach (string protein in proteinsList)
                    {
                        XmlElement proteinsProtein = (XmlElement)proteins.AppendChild(v_InventoryXmlDocument.CreateElement("protein"));
                        proteinsProtein.SetAttribute("name", protein);
                    }
                }

                XmlNode tiles = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/fixedObjects");
                tiles?.AppendChild(xmlTiles);
                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }
示例#9
0
        /// <summary>
        /// Creates new initial object element.
        /// </summary>
        /// <param name="name">Name.</param>
        /// <param name="posX">Parameter posX.</param>
        /// <param name="posY">Parameter posY.</param>
        /// <param name="posZ">Parameter posZ.</param>
        /// <param name="angleX">Parameter angleX.</param>
        /// <param name="angleY">Parameter angleY.</param>
        /// <param name="angleZ">Parameter angleZ.</param>
        /// <param name="errorMessage">
        /// Output parameter, which holds error message catched during serialization.
        /// </param>
        /// <returns>
        /// True if serialization was succesfull otherwise returns false.
        /// </returns>
        public bool SeedTiles(string name, string posX, string posY, string posZ, string angleX, string angleY, string angleZ, out string errorMessage)
        {
            try
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(name, Regexp.Check.String))
                {
                    throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IncorectCharacters));
                }
                if (string.IsNullOrEmpty(posX))
                {
                    throw new ArgumentException(ExceptionsMessage("posX", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(posX, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("posX", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(posY))
                {
                    throw new ArgumentException(ExceptionsMessage("posY", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(posY, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("posY", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(posZ))
                {
                    throw new ArgumentException(ExceptionsMessage("posZ", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(posZ, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("posZ", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(angleX))
                {
                    throw new ArgumentException(ExceptionsMessage("angleX", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(angleX, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("angleX", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(angleY))
                {
                    throw new ArgumentException(ExceptionsMessage("angleY", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(angleY, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("angleY", (int)ErrorMessages.IncorectFloatingNumber));
                }
                if (string.IsNullOrEmpty(angleZ))
                {
                    throw new ArgumentException(ExceptionsMessage("angleZ", (int)ErrorMessages.IsNullOrEmpty));
                }
                if (!Regexp.CheckInputText(angleZ, Regexp.Check.FloatingNumber))
                {
                    throw new ArgumentException(ExceptionsMessage("angleZ", (int)ErrorMessages.IncorectFloatingNumber));
                }

                /* <initialObject name="q2">
                 *      <posX value="0"/>
                 *      <posY value="0"/>
                 *      <posZ value="-16.18"/>
                 *      <angleX value="0"/>
                 *      <angleY value="0"/>
                 *      <angleZ value="0"/>
                 * </initialObject> */
                XmlElement seedTile = v_InventoryXmlDocument.CreateElement("initialObject");
                seedTile.SetAttribute("name", name);

                XmlElement posXElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("posX"));
                posXElement.SetAttribute("value", posX);
                XmlElement posYElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("posY"));
                posYElement.SetAttribute("value", posY);
                XmlElement posZElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("posZ"));
                posZElement.SetAttribute("value", posZ);
                XmlElement angleXElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("angleX"));
                angleXElement.SetAttribute("value", angleX);
                XmlElement angleYElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("angleY"));
                angleYElement.SetAttribute("value", angleY);
                XmlElement angleZElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("angleZ"));
                angleZElement.SetAttribute("value", angleZ);

                XmlNode seedTiles = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/initialObjects");
                seedTiles?.AppendChild(seedTile);

                errorMessage = null;
                return(true);
            }
            catch (Exception exception)
            {
                errorMessage = exception.Message;
                return(false);
            }
        }