diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Util.cs | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index e8f8e01..8d1671a 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -1558,5 +1558,86 @@ namespace OpenSim.Framework | |||
1558 | return string.Empty; | 1558 | return string.Empty; |
1559 | } | 1559 | } |
1560 | 1560 | ||
1561 | #region Xml Serialization Utilities | ||
1562 | public static bool ReadBoolean(XmlTextReader reader) | ||
1563 | { | ||
1564 | reader.ReadStartElement(); | ||
1565 | bool result = Boolean.Parse(reader.ReadContentAsString().ToLower()); | ||
1566 | reader.ReadEndElement(); | ||
1567 | |||
1568 | return result; | ||
1569 | } | ||
1570 | |||
1571 | public static UUID ReadUUID(XmlTextReader reader, string name) | ||
1572 | { | ||
1573 | UUID id; | ||
1574 | string idStr; | ||
1575 | |||
1576 | reader.ReadStartElement(name); | ||
1577 | |||
1578 | if (reader.Name == "Guid") | ||
1579 | idStr = reader.ReadElementString("Guid"); | ||
1580 | else if (reader.Name == "UUID") | ||
1581 | idStr = reader.ReadElementString("UUID"); | ||
1582 | else // no leading tag | ||
1583 | idStr = reader.ReadContentAsString(); | ||
1584 | UUID.TryParse(idStr, out id); | ||
1585 | reader.ReadEndElement(); | ||
1586 | |||
1587 | return id; | ||
1588 | } | ||
1589 | |||
1590 | public static Vector3 ReadVector(XmlTextReader reader, string name) | ||
1591 | { | ||
1592 | Vector3 vec; | ||
1593 | |||
1594 | reader.ReadStartElement(name); | ||
1595 | vec.X = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // X or x | ||
1596 | vec.Y = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // Y or y | ||
1597 | vec.Z = reader.ReadElementContentAsFloat(reader.Name, String.Empty); // Z or z | ||
1598 | reader.ReadEndElement(); | ||
1599 | |||
1600 | return vec; | ||
1601 | } | ||
1602 | |||
1603 | public static Quaternion ReadQuaternion(XmlTextReader reader, string name) | ||
1604 | { | ||
1605 | Quaternion quat = new Quaternion(); | ||
1606 | |||
1607 | reader.ReadStartElement(name); | ||
1608 | while (reader.NodeType != XmlNodeType.EndElement) | ||
1609 | { | ||
1610 | switch (reader.Name.ToLower()) | ||
1611 | { | ||
1612 | case "x": | ||
1613 | quat.X = reader.ReadElementContentAsFloat(reader.Name, String.Empty); | ||
1614 | break; | ||
1615 | case "y": | ||
1616 | quat.Y = reader.ReadElementContentAsFloat(reader.Name, String.Empty); | ||
1617 | break; | ||
1618 | case "z": | ||
1619 | quat.Z = reader.ReadElementContentAsFloat(reader.Name, String.Empty); | ||
1620 | break; | ||
1621 | case "w": | ||
1622 | quat.W = reader.ReadElementContentAsFloat(reader.Name, String.Empty); | ||
1623 | break; | ||
1624 | } | ||
1625 | } | ||
1626 | |||
1627 | reader.ReadEndElement(); | ||
1628 | |||
1629 | return quat; | ||
1630 | } | ||
1631 | |||
1632 | public static T ReadEnum<T>(XmlTextReader reader, string name) | ||
1633 | { | ||
1634 | string value = reader.ReadElementContentAsString(name, String.Empty); | ||
1635 | // !!!!! to deal with flags without commas | ||
1636 | if (value.Contains(" ") && !value.Contains(",")) | ||
1637 | value = value.Replace(" ", ", "); | ||
1638 | |||
1639 | return (T)Enum.Parse(typeof(T), value); ; | ||
1640 | } | ||
1641 | #endregion | ||
1561 | } | 1642 | } |
1562 | } | 1643 | } |