summaryrefslogtreecommitdiffstats
path: root/src/Data/Gate.cpp
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2008-04-13 03:59:01 +0200
committerneoraider <devnull@localhost>2008-04-13 03:59:01 +0200
commit184c6305a677d968e60eb6cba9b29dd840cdce3c (patch)
tree9e0eaab4cf21c1e9717e29a79a9010678eccfc0b /src/Data/Gate.cpp
parent7fa8e4b4faf6dca308607977d2c2aaa5428ca60d (diff)
downloadzoomedit-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/Gate.cpp')
-rw-r--r--src/Data/Gate.cpp38
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;
+}
+
}
}