From 184c6305a677d968e60eb6cba9b29dd840cdce3c Mon Sep 17 00:00:00 2001 From: neoraider Date: Sun, 13 Apr 2008 01:59:01 +0000 Subject: zoomedit: * New data interfaces, yay! Levels should now be completely editable * Fixed some -Wextra warnings --- src/Data/Gate.cpp | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/Data/Gate.cpp') 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(*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::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; +} + } } -- cgit v1.2.3