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;
else if(!detectedFormat && string_equal(primitive, "("))
{
detectedFormat = true;
+ wrongFormat = true;
Tokeniser_unexpectedError(tokeniser, primitive, "#quake3-switch-to-texdef");
return g_nullNode;
}
else if(!detectedFormat && string_equal(primitive, "("))
{
detectedFormat = true;
+ wrongFormat = true;
Tokeniser_unexpectedError(tokeniser, primitive, "#quake3-switch-to-brush-primitives");
return g_nullNode;
}
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();
}
}
+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)
void Brush_clipperColourChanged();
void Brush_unlatchPreferences();
+void Brush_toggleProjection();
#endif
#include "debugging/debugging.h"
#include "imap.h"
+MapModules& ReferenceAPI_getMapModules();
#include "iselection.h"
#include "iundo.h"
#include "ibrush.h"
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());
}