/* * Gate.cpp * * Copyright (C) 2008 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "Gate.h" #include "Triangle.h" namespace ZoomEdit { namespace Data { Gate::Gate(xmlpp::Element *node) : gateNode(node) { xmlpp::Node::NodeList triangleList = node->get_children("triangle"); for(xmlpp::Node::NodeList::iterator t = triangleList.begin(); t != triangleList.end(); ++t) { xmlpp::Element *tNode = dynamic_cast(*t); if(tNode) triangles.push_back(new Triangle(tNode)); } room1 = node->get_attribute_value("room1"); 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; } } }