void Puppet::LoadParts(TiXmlElement *element, Part *intoPart) { TiXmlElement *xmlPart = element->FirstChildElement("Part"); while (xmlPart) { XMLFileNode xmlFileNode(xmlPart); Part *part = new Part(); part->SetPuppet(this); part->Load(&xmlFileNode); LoadParts(xmlPart, part); printf("loaded part [%s]\n", part->GetName().c_str()); if (intoPart) { intoPart->parts.push_back(part); part->SetParent(intoPart); printf(" into part [%s]\n", intoPart->GetName().c_str()); } else { part->SetParent(entity); } parts.push_back(part); Game::GetScene()->Add(part); //intoEntity->Add(part); xmlPart = xmlPart->NextSiblingElement("Part"); } }
void Puppet::SavePart(TiXmlElement *parentElement, Part *part) { printf("saving part [%s]\n", part->GetName().c_str()); TiXmlElement xmlPart("Part"); XMLFileNode xmlFileNode(&xmlPart); if (part) { part->Save(&xmlFileNode); } for (std::list<Part*>::iterator i = part->parts.begin(); i != part->parts.end(); ++i) { Part *iterPart = (*i); if (iterPart) { printf (" calling save on subpart [%s]\n", iterPart->GetName().c_str()); SavePart(&xmlPart, iterPart); } } parentElement->InsertEndChild(xmlPart); }