diff options
Diffstat (limited to 'src/Data/Gate.cpp')
-rw-r--r-- | src/Data/Gate.cpp | 38 |
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; +} + } } |