summaryrefslogtreecommitdiffstats
path: root/src/Data/Gate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Gate.cpp')
-rw-r--r--src/Data/Gate.cpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/Data/Gate.cpp b/src/Data/Gate.cpp
index 2aa89ee..62794c2 100644
--- a/src/Data/Gate.cpp
+++ b/src/Data/Gate.cpp
@@ -18,6 +18,7 @@
*/
#include "Gate.h"
+#include "Triangle.h"
namespace ZoomEdit {
namespace Data {
@@ -29,7 +30,7 @@ Gate::Gate(xmlpp::Element *node) : gateNode(node) {
xmlpp::Element *tNode = dynamic_cast<xmlpp::Element*>(*t);
if(tNode)
- triangles.push_back(Triangle(tNode));
+ triangles.push_back(new Triangle(tNode));
}
id = node->get_attribute_value("id");
@@ -37,5 +38,40 @@ Gate::Gate(xmlpp::Element *node) : gateNode(node) {
room2 = node->get_attribute_value("room2");
}
+Gate::~Gate() {
+ for(std::list<Triangle*>::iterator t = triangles.begin(); t != triangles.end(); ++t)
+ delete *t;
+}
+
+Triangle* Gate::addTriangle() {
+ xmlpp::Element *tNode = gateNode->add_child("triangle");
+
+ xmlpp::Element *node = tNode->add_child("vertex");
+ node->set_attribute("x", "0.0");
+ node->set_attribute("y", "0.0");
+ node->set_attribute("z", "0.0");
+
+ node = tNode->add_child("vertex");
+ node->set_attribute("x", "0.0");
+ node->set_attribute("y", "0.0");
+ node->set_attribute("z", "0.0");
+
+ node = tNode->add_child("vertex");
+ node->set_attribute("x", "0.0");
+ node->set_attribute("y", "0.0");
+ node->set_attribute("z", "0.0");
+
+ Triangle *t = new Triangle(tNode);
+ triangles.push_back(t);
+
+ return t;
+}
+
+void Gate::removeTriangle(Triangle *t) {
+ gateNode->remove_child(t->getNode());
+ triangles.remove(t);
+ delete t;
+}
+
}
}