* "BrushAlwaysCaulk" option is saveable for brush types other than q3

* brush format is preference for [maptypes, brushtypes]: [mapq1, quake], [mapq2, quake2], [mapq3, quake3]:
		preferences->Brush->Brush type: Axial projection, Brush primitives, Valve 220
	* autodetect brush type on map opening
	* brush face surfaceflags are optional on loading for flexibility
	* 'Snap planes to integer grid' option is always off by default
This commit is contained in:
Garux
2017-09-16 16:37:39 +03:00
parent 4e4b8e1407
commit 0b3f42ffbc
12 changed files with 309 additions and 131 deletions

View File

@@ -27,6 +27,20 @@
#include "generic/vector.h"
#include "itexdef.h"
enum EBrushType
{
eBrushTypeUNKNOWN = 0,
eBrushTypeQuake,
eBrushTypeQuake2,
eBrushTypeQuake3,
eBrushTypeQuake3BP,
eBrushTypeQuake3Valve220,
eBrushTypeDoom3,
eBrushTypeQuake4,
eBrushTypeValve220,
};
namespace scene
{
class Node;
@@ -103,7 +117,7 @@ public:
INTEGER_CONSTANT( Version, 1 );
STRING_CONSTANT( Name, "brush" );
virtual scene::Node& createBrush() = 0;
virtual bool useAlternativeTextureProjection() const = 0;
virtual EBrushType getCurrentFormat() const = 0;
virtual void Brush_forEachFace( scene::Node& brush, const BrushFaceDataCallback& callback ) = 0;
virtual bool Brush_addFace( scene::Node& brush, const _QERFaceData& faceData ) = 0;
};

View File

@@ -46,6 +46,7 @@ virtual void exportTokens( TokenWriter& writer ) const = 0;
};
#include "iscenegraph.h"
#include "ibrush.h"
class EntityCreator;
@@ -61,7 +62,7 @@ class MapFormat
public:
INTEGER_CONSTANT( Version, 2 );
STRING_CONSTANT( Name, "map" );
mutable bool wrongFormat;
mutable EBrushType m_detectedFormat;
/// \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

@@ -39,6 +39,7 @@ virtual const char* getToken() = 0;
virtual void ungetToken() = 0;
virtual std::size_t getLine() const = 0;
virtual std::size_t getColumn() const = 0;
virtual bool bufferContains( const char* str ) = 0;
};
class TextInputStream;