]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/brush.h
- Added "select inside" and "select touching"
[xonotic/netradiant.git] / radiant / brush.h
index 81d16a620f2da298efb1e8c50229e47d058b9bb2..5d06d7c932a27f1d3fe3470705c8af1a4ab3b88a 100644 (file)
@@ -65,8 +65,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include "winding.h"
 #include "brush_primit.h"
 
-#define CONTENTS_DETAIL 0x8000000
-
+const unsigned int BRUSH_DETAIL_FLAG = 27;
+const unsigned int BRUSH_DETAIL_MASK = (1 << BRUSH_DETAIL_FLAG);
 
 enum EBrushType
 {
@@ -380,15 +380,15 @@ public:
 
 inline void ContentsFlagsValue_assignMasked(ContentsFlagsValue& flags, const ContentsFlagsValue& other)
 {
-  bool detail = bitfield_enabled(flags.m_contentFlags, CONTENTS_DETAIL);
+  bool detail = bitfield_enabled(flags.m_contentFlags, BRUSH_DETAIL_MASK);
   flags = other;
   if(detail)
   {
-    flags.m_contentFlags = bitfield_enable(flags.m_contentFlags, CONTENTS_DETAIL);
+    flags.m_contentFlags = bitfield_enable(flags.m_contentFlags, BRUSH_DETAIL_MASK);
   }
   else
   {
-    flags.m_contentFlags = bitfield_disable(flags.m_contentFlags, CONTENTS_DETAIL);
+    flags.m_contentFlags = bitfield_disable(flags.m_contentFlags, BRUSH_DETAIL_MASK);
   }
 }
 
@@ -959,6 +959,7 @@ public:
 };
 
 bool face_filtered(Face& face);
+void add_face_filter(FaceFilter& filter, int mask, bool invert = false);
 
 void Brush_addTextureChangedCallback(const SignalHandler& callback);
 void Brush_textureChanged();
@@ -1415,18 +1416,18 @@ public:
 
   bool isDetail() const
   {
-    return (m_shader.m_flags.m_contentFlags & CONTENTS_DETAIL) != 0;
+    return (m_shader.m_flags.m_contentFlags & BRUSH_DETAIL_MASK) != 0;
   }
   void setDetail(bool detail)
   {
     undoSave();
     if(detail && !isDetail())
     {
-      m_shader.m_flags.m_contentFlags |= CONTENTS_DETAIL;
+      m_shader.m_flags.m_contentFlags |= BRUSH_DETAIL_MASK;
     }
     else if(!detail && isDetail())
     {
-      m_shader.m_flags.m_contentFlags &= ~CONTENTS_DETAIL;
+      m_shader.m_flags.m_contentFlags &= ~BRUSH_DETAIL_MASK;
     }
     m_observer->shaderChanged();
   }
@@ -1733,10 +1734,10 @@ public:
     m_render_faces(m_faceCentroidPoints, GL_POINTS),
     m_render_vertices(m_uniqueVertexPoints, GL_POINTS),
     m_render_edges(m_uniqueEdgePoints, GL_POINTS),
-    m_planeChanged(false),
-    m_transformChanged(false),
     m_evaluateTransform(evaluateTransform),
-    m_boundsChanged(boundsChanged)
+    m_boundsChanged(boundsChanged),
+    m_planeChanged(false),
+    m_transformChanged(false)
   {
     planeChanged();
   }
@@ -1747,10 +1748,10 @@ public:
     m_render_faces(m_faceCentroidPoints, GL_POINTS),
     m_render_vertices(m_uniqueVertexPoints, GL_POINTS),
     m_render_edges(m_uniqueEdgePoints, GL_POINTS),
-    m_planeChanged(false),
-    m_transformChanged(false),
     m_evaluateTransform(evaluateTransform),
-    m_boundsChanged(boundsChanged)
+    m_boundsChanged(boundsChanged),
+    m_planeChanged(false),
+    m_transformChanged(false)
   {
     copy(other);
   }
@@ -1758,6 +1759,7 @@ public:
     TransformNode(other),
     Bounded(other),
     Cullable(other),
+    Snappable(),
     Undoable(other),
     FaceObserver(other),
     Filterable(other),