diff options
author | neoraider <devnull@localhost> | 2008-04-13 03:59:01 +0200 |
---|---|---|
committer | neoraider <devnull@localhost> | 2008-04-13 03:59:01 +0200 |
commit | 184c6305a677d968e60eb6cba9b29dd840cdce3c (patch) | |
tree | 9e0eaab4cf21c1e9717e29a79a9010678eccfc0b /src/Data/Room.cpp | |
parent | 7fa8e4b4faf6dca308607977d2c2aaa5428ca60d (diff) | |
download | zoomedit-184c6305a677d968e60eb6cba9b29dd840cdce3c.tar zoomedit-184c6305a677d968e60eb6cba9b29dd840cdce3c.zip |
zoomedit:
* New data interfaces, yay! Levels should now be completely editable
* Fixed some -Wextra warnings
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; +} + } } |