void CXMLExporter::WriteLayers()
{
    if (m_pOptions->GetExportLayers())
    {
        HResult hr;

        CComPtr<ISkpLayers> pLayers;
        hr = m_pDocument->get_Layers(&pLayers);
        
        long count;
        hr = pLayers->get_Count(&count);

        if (count>0)
        {
            IncreaseIndent();
            Write("<Layers>\n", count);
            IncreaseIndent();
            for(long i=0; i<count; i++) 
            {
                CComPtr<ISkpLayer> pLayer;
                hr = pLayers->get_Item(i, &pLayer);
                WriteLayer(pLayer);
            }
            DecreaseIndent();
            Write("</Layers>\n");
            DecreaseIndent();
        }
    }
}
void XmlMapHandler::Save(std::ostream& file, const Map& map)
{
    wxXmlNode* root = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, "Map");

    const Tileset& tileset = map.GetTileset();
    const std::vector<AnimatedTile>& animated_tiles = tileset.GetAnimatedTiles();

    if (map.HasCollisionLayer())
        WriteCollision(root, map);
    for (const auto& tile : animated_tiles)
        WriteAnimation(root, map, tile);
    for (const auto& background : map.GetBackgrounds())
        WriteBackground(root, map, background);
    for (const auto& layer : map.GetLayers())
        WriteLayer(root, map, layer);
    WriteProperties(root, map);

    wxXmlDocument* doc = new wxXmlDocument();
    doc->SetRoot(root);

    wxOutputStream* fos = new wxFOutputStream(file);
    if (!doc->Save(*fos))
        throw "Failed to save XML file";
    delete fos;
}
Beispiel #3
0
bool CLwoWriter::Write()
{
	OBJ_ASSERT(m_pLwoFile);
	if(!m_pLwoFile)
		return false;

	std::string fileName(m_fileName.string()); // Extract native file path string

	m_ofs.open(fileName.c_str(), ios::out | ios::binary | std::ios::trunc);

	MSG_INFO("Writing LWO file : '" << fileName << "'.");
	if( !m_ofs.is_open() )
	{
		MSG_ERROR("Couldn't write to .LWO file '" << fileName << "'");
		return false;
	}

	// TODO iterate through layers here:
	m_curLayer = m_pLwoFile->GetLayerVector()[0]; // first layer

	// Build the chunk lengths
	BuildChunkLengths();

	// Write the LWO file header
	WriteHeader();

	{
		// Write TAGS strings
		WriteTagStrings();

		// Write LAYR : Support for only one layer
		WriteLayer();

		// Write PNTS
		WritePoints();

		// Write VMAP | TXUV
		WriteVertexMapping();

		// Write POLS | FACE
		WritePolygons();

		// Write PTAG
		WritePolygonTagMapping();

		// Write VMAD | TXUV
		WriteDiscVertexMapping();

		// Write CLIP
		WriteImageDefinitions();

		// Write SURF
		WriteSurfaces();
	}

	MSG_DEBUG("Done.");

	// Close file
	m_ofs.close();

	return true;
}