- Fix: Added missing xml-writer pop-calls
- Ported mapxml plugin to Doom3 - mapxml now exports brushes with its vertices git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@159 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
@@ -37,29 +37,43 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
class MapXMLDependencies :
|
||||
public GlobalRadiantModuleRef,
|
||||
public GlobalBrushModuleRef,
|
||||
public GlobalPatchModuleRef,
|
||||
public GlobalFiletypesModuleRef,
|
||||
public GlobalEntityClassManagerModuleRef,
|
||||
public GlobalSceneGraphModuleRef
|
||||
{
|
||||
PatchModuleRef m_patchDef2Doom3Module;
|
||||
PatchModuleRef m_patchDoom3Module;
|
||||
public:
|
||||
MapXMLDependencies() :
|
||||
GlobalBrushModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("brushtypes")),
|
||||
GlobalPatchModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("patchtypes")),
|
||||
GlobalEntityClassManagerModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entityclass"))
|
||||
GlobalEntityClassManagerModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entityclass")),
|
||||
m_patchDef2Doom3Module("def2doom3"),
|
||||
m_patchDoom3Module("doom3")
|
||||
{
|
||||
}
|
||||
BrushCreator& getBrushDoom3()
|
||||
{
|
||||
return GlobalBrushModule::getTable();
|
||||
}
|
||||
PatchCreator& getPatchDoom3()
|
||||
{
|
||||
return *m_patchDoom3Module.getTable();
|
||||
}
|
||||
PatchCreator& getPatchDef2Doom3()
|
||||
{
|
||||
return *m_patchDef2Doom3Module.getTable();
|
||||
}
|
||||
};
|
||||
|
||||
class MapXMLAPI : public TypeSystemRef, public MapFormat
|
||||
{
|
||||
public:
|
||||
typedef MapFormat Type;
|
||||
STRING_CONSTANT(Name, "xmlq3");
|
||||
STRING_CONSTANT(Name, "xmldoom3");
|
||||
|
||||
MapXMLAPI()
|
||||
{
|
||||
GlobalFiletypesModule::getTable().addType(Type::Name(), Name(), filetype_t("xml quake3 maps", "*.xmap"));
|
||||
GlobalFiletypesModule::getTable().addType(Type::Name(), Name(), filetype_t("xml doom3 maps", "*.xmap"));
|
||||
}
|
||||
MapFormat* getTable()
|
||||
{
|
||||
@@ -84,7 +98,10 @@ MapXMLModule g_MapXMLModule;
|
||||
|
||||
extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
|
||||
{
|
||||
initialiseModule(server);
|
||||
GlobalErrorStream::instance().setOutputStream(server.getErrorStream());
|
||||
GlobalOutputStream::instance().setOutputStream(server.getOutputStream());
|
||||
GlobalDebugMessageHandler::instance().setHandler(server.getDebugMessageHandler());
|
||||
GlobalModuleServer::instance().set(server);
|
||||
|
||||
g_MapXMLModule.selfRegister();
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class MapQ3Importer : public TreeXMLImporter
|
||||
class MapDoom3Importer : public TreeXMLImporter
|
||||
{
|
||||
scene::Node& m_root;
|
||||
char m_child[sizeof(EntityImporter)];
|
||||
@@ -219,17 +219,17 @@ class MapQ3Importer : public TreeXMLImporter
|
||||
return *reinterpret_cast<EntityImporter*>(m_child);
|
||||
}
|
||||
public:
|
||||
MapQ3Importer(scene::Node& root, EntityCreator& entityTable) : m_root(root), m_entityTable(entityTable)
|
||||
MapDoom3Importer(scene::Node& root, EntityCreator& entityTable) : m_root(root), m_entityTable(entityTable)
|
||||
{
|
||||
}
|
||||
void pushElement(const XMLElement& element)
|
||||
{
|
||||
ASSERT_MESSAGE(string_equal(element.name(), "mapq3"), PARSE_ERROR);
|
||||
ASSERT_MESSAGE(string_equal(element.name(), "mapdoom3"), PARSE_ERROR);
|
||||
constructor(getEntity(), makeReference(m_root), makeReference(m_entityTable));
|
||||
}
|
||||
void popElement(const char* name)
|
||||
{
|
||||
ASSERT_MESSAGE(string_equal(name, "mapq3"), PARSE_ERROR);
|
||||
ASSERT_MESSAGE(string_equal(name, "mapdoom3"), PARSE_ERROR);
|
||||
destructor(getEntity());
|
||||
}
|
||||
std::size_t write(const char* data, std::size_t length)
|
||||
@@ -271,7 +271,7 @@ void Map_Read(scene::Node& root, TextInputStream& in, EntityCreator& entityTable
|
||||
{
|
||||
XMLStreamParser parser(in);
|
||||
|
||||
MapQ3Importer importer(root, entityTable);
|
||||
MapDoom3Importer importer(root, entityTable);
|
||||
TreeXMLImporterStack stack(importer);
|
||||
parser.exportXML(stack);
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ void Map_Write(scene::Node& root, GraphTraversalFunc traverse, TextOutputStream&
|
||||
XMLStreamWriter writer(out);
|
||||
writer.write("\n", 1);
|
||||
{
|
||||
StaticElement element("mapq3");
|
||||
StaticElement element("mapdoom3");
|
||||
writer.pushElement(element);
|
||||
|
||||
traverse(root, write_all(writer));
|
||||
|
||||
Reference in New Issue
Block a user