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.cpp62
1 files changed, 47 insertions, 15 deletions
diff --git a/src/Data/Room.cpp b/src/Data/Room.cpp
index acc79be..b1d7473 100644
--- a/src/Data/Room.cpp
+++ b/src/Data/Room.cpp
@@ -23,8 +23,36 @@
namespace ZoomEdit {
namespace Data {
+void Room::populateTriangle(xmlpp::Element *tNode) {
+ 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");
+}
+
Room::Room(xmlpp::Element *node) : roomNode(node) {
- xmlpp::Node::NodeList triangleList = node->get_children("triangle");
+ floorNode = dynamic_cast<xmlpp::Element*>(node->get_children("floor").front());
+
+ xmlpp::Node::NodeList triangleList = floorNode->get_children("triangle");
+
+ for(xmlpp::Node::NodeList::iterator t = triangleList.begin(); t != triangleList.end(); ++t) {
+ xmlpp::Element *tNode = dynamic_cast<xmlpp::Element*>(*t);
+
+ if(tNode)
+ floor.push_back(new Triangle(tNode));
+ }
+
+ triangleList = node->get_children("triangle");
for(xmlpp::Node::NodeList::iterator t = triangleList.begin(); t != triangleList.end(); ++t) {
xmlpp::Element *tNode = dynamic_cast<xmlpp::Element*>(*t);
@@ -44,20 +72,7 @@ Room::~Room() {
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");
+ populateTriangle(tNode);
Triangle *t = new Triangle(tNode);
triangles.push_back(t);
@@ -71,5 +86,22 @@ void Room::removeTriangle(Triangle *t) {
delete t;
}
+Triangle* Room::addFloorTriangle() {
+ xmlpp::Element *tNode = floorNode->add_child("triangle");
+
+ populateTriangle(tNode);
+
+ Triangle *t = new Triangle(tNode);
+ floor.push_back(t);
+
+ return t;
+}
+
+void Room::removeFloorTriangle(Triangle *t) {
+ floorNode->remove_child(t->getNode());
+ floor.remove(t);
+ delete t;
+}
+
}
}