summaryrefslogtreecommitdiffstats
path: root/Project/RateLimiter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/RateLimiter.cpp')
-rw-r--r--Project/RateLimiter.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/Project/RateLimiter.cpp b/Project/RateLimiter.cpp
index c8da81d..94e44f5 100644
--- a/Project/RateLimiter.cpp
+++ b/Project/RateLimiter.cpp
@@ -140,3 +140,32 @@ Element* RateLimiter::GetCopy()
*copy = *this;
return copy;
}
+
+void RateLimiter::SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode)
+{
+ auto elementNode = XMLParser::AppendNode(doc, elementListNode, "RateLimiter");
+ XMLParser::SetNodeAttribute(doc, elementNode, "ID", m_elementID);
+
+ SaveCADProperties(doc, elementNode);
+ SaveControlNodes(doc, elementNode);
+
+ // Element properties
+ auto upLimit = XMLParser::AppendNode(doc, elementNode, "UpperLimit");
+ XMLParser::SetNodeValue(doc, upLimit, m_upLimit);
+ auto lowLimit = XMLParser::AppendNode(doc, elementNode, "LowerLimit");
+ XMLParser::SetNodeValue(doc, lowLimit, m_lowLimit);
+}
+
+bool RateLimiter::OpenElement(rapidxml::xml_node<>* elementNode)
+{
+ if(!OpenCADProperties(elementNode)) return false;
+ if(!OpenControlNodes(elementNode)) return false;
+
+ // Element properties
+ m_upLimit = XMLParser::GetNodeValueDouble(elementNode, "UpperLimit");
+ m_lowLimit = XMLParser::GetNodeValueDouble(elementNode, "LowerLimit");
+
+ StartMove(m_position);
+ UpdatePoints();
+ return true;
+}