/* * Room.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 "Room.h" #include "Triangle.h" 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"); 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)); } id = node->get_attribute_value("id"); } Room::~Room() { for(std::list::iterator t = triangles.begin(); t != triangles.end(); ++t) delete *t; } Triangle* Room::addTriangle() { xmlpp::Element *tNode = roomNode->add_child("triangle"); populateTriangle(tNode); 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; } } }