somewhat unclean code, sorry... but it allows opening brushPrimitives maps in nonBrushPrimitives mode (experimental) by temp toggling to the correct mode

This commit is contained in:
Rudolf Polzer 2010-10-10 10:47:16 +02:00
parent 652a2d36fb
commit 2b0a97c814
5 changed files with 30 additions and 0 deletions

View File

@ -61,6 +61,7 @@ class MapFormat
public:
INTEGER_CONSTANT(Version, 2);
STRING_CONSTANT(Name, "map");
mutable bool wrongFormat;
/// \brief Read a map graph into \p root from \p outputStream, using \p entityTable to create entities.
virtual void readGraph(scene::Node& root, TextInputStream& inputStream, EntityCreator& entityTable) const = 0;

View File

@ -291,6 +291,7 @@ public:
else if(!detectedFormat && string_equal(primitive, "("))
{
detectedFormat = true;
wrongFormat = true;
Tokeniser_unexpectedError(tokeniser, primitive, "#quake3-switch-to-texdef");
return g_nullNode;
}
@ -306,6 +307,7 @@ public:
else if(!detectedFormat && string_equal(primitive, "("))
{
detectedFormat = true;
wrongFormat = true;
Tokeniser_unexpectedError(tokeniser, primitive, "#quake3-switch-to-brush-primitives");
return g_nullNode;
}
@ -319,6 +321,7 @@ public:
void readGraph(scene::Node& root, TextInputStream& inputStream, EntityCreator& entityTable) const
{
detectedFormat = false;
wrongFormat = false;
Tokeniser& tokeniser = GlobalScripLibModule::getTable().m_pfnNewSimpleTokeniser(inputStream);
Map_Read(root, tokeniser, entityTable, *this);
tokeniser.release();

View File

@ -101,6 +101,17 @@ void Brush_unlatchPreferences()
}
}
void Brush_toggleProjection()
{
if(g_showAlternativeTextureProjectionOption)
{
g_useAlternativeTextureProjection.m_value = !g_useAlternativeTextureProjection.m_value;
globalErrorStream() << "Toggled g_useAlternativeTextureProjection (" << g_useAlternativeTextureProjection.m_value << ")\n";
Brush::destroyStatic();
Brush::constructStatic(g_useAlternativeTextureProjection.m_value ? eBrushTypeQuake3BP : eBrushTypeQuake3);
}
}
void Brush_Construct(EBrushType type)
{
if(type == eBrushTypeQuake3)

View File

@ -24,5 +24,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
void Brush_clipperColourChanged();
void Brush_unlatchPreferences();
void Brush_toggleProjection();
#endif

View File

@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "debugging/debugging.h"
#include "imap.h"
MapModules& ReferenceAPI_getMapModules();
#include "iselection.h"
#include "iundo.h"
#include "ibrush.h"
@ -1038,7 +1039,20 @@ void Map_LoadFile (const char *filename)
ScopeTimer timer("map load");
g_map.m_resource = GlobalReferenceCache().capture(g_map.m_name.c_str());
const MapFormat* format = ReferenceAPI_getMapModules().findModule("mapq3");
format->wrongFormat = false;
g_map.m_resource->attach(g_map);
if(format->wrongFormat)
{
// try toggling BrushPrimitives
Map_Free();
Brush_toggleProjection();
g_map.m_name = filename;
Map_UpdateTitle(g_map);
g_map.m_resource = GlobalReferenceCache().capture(g_map.m_name.c_str());
g_map.m_resource->attach(g_map);
}
Node_getTraversable(GlobalSceneGraph().root())->traverse(entity_updateworldspawn());
}