diff options
Diffstat (limited to 'src/Data/Room.cpp')
-rw-r--r-- | src/Data/Room.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/Data/Room.cpp b/src/Data/Room.cpp index 9749b22..acc79be 100644 --- a/src/Data/Room.cpp +++ b/src/Data/Room.cpp @@ -18,6 +18,7 @@ */ #include "Room.h" +#include "Triangle.h" namespace ZoomEdit { namespace Data { @@ -29,11 +30,46 @@ Room::Room(xmlpp::Element *node) : roomNode(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"); } +Room::~Room() { + for(std::list<Triangle*>::iterator t = triangles.begin(); t != triangles.end(); ++t) + delete *t; +} + +Triangle* Room::addTriangle() { + xmlpp::Element *tNode = roomNode->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 Room::removeTriangle(Triangle *t) { + roomNode->remove_child(t->getNode()); + triangles.remove(t); + delete t; +} + } } |