summaryrefslogtreecommitdiffstats
path: root/src/Data/Room.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Room.cpp')
-rw-r--r--src/Data/Room.cpp38
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;
+}
+
}
}