void transform(const Matrix4& matrix, bool mirror)
{
if(g_brush_texturelock_enabled)
- {
Texdef_transformLocked(m_texdefTransformed, m_shader.width(), m_shader.height(), m_plane.plane3(), matrix);
- }
m_planeTransformed.transform(matrix, mirror);
ASSERT_MESSAGE(projectionaxis_for_normal(normal) == projectionaxis_for_normal(plane3().normal()), "bleh");
#endif
m_observer->planeChanged();
+
+ if(g_brush_texturelock_enabled)
+ Brush_textureChanged();
}
void assign_planepts(const PlanePoints planepts)
/// \brief Returns true if 'self' takes priority when building brush b-rep.
-inline bool plane3_inside(const Plane3& self, const Plane3& other)
+inline bool plane3_inside(const Plane3& self, const Plane3& other, bool selfIsLater)
{
if(vector3_equal_epsilon(self.normal(), other.normal(), 0.001))
{
+ // same plane? prefer the one with smaller index
+ if(self.dist() == other.dist())
+ return selfIsLater;
return self.dist() < other.dist();
}
return true;
if(m_type == eBrushTypeQuake3BP || m_type == eBrushTypeDoom3 || m_type == eBrushTypeQuake4)
{
g_bp_globals.m_texdefTypeId = TEXDEFTYPEID_BRUSHPRIMITIVES;
- g_brush_texturelock_enabled = true;
+ // g_brush_texturelock_enabled = true; // bad idea, this overrides user setting
}
else if(m_type == eBrushTypeHalfLife)
{
g_bp_globals.m_texdefTypeId = TEXDEFTYPEID_HALFLIFE;
- g_brush_texturelock_enabled = true;
+ // g_brush_texturelock_enabled = true; // bad idea, this overrides user setting
}
Face::m_quantise = (m_type == eBrushTypeQuake) ? quantiseInteger : quantiseFloating;
// duplicate plane
for(std::size_t i = 0; i < m_faces.size(); ++i)
{
- if(index != i && !plane3_inside(m_faces[index]->plane3(), m_faces[i]->plane3()))
+ if(index != i && !plane3_inside(m_faces[index]->plane3(), m_faces[i]->plane3(), index < i))
{
return false;
}
// also draw a line indicating the direction of the cut
Vector3 lineverts[2];
Winding_Centroid(m_winding, m_plane, lineverts[0]);
- lineverts[1] = vector3_added(lineverts[0], vector3_scaled(m_plane.normal(), g_MaxWorldCoord * 4));
+ lineverts[1] = vector3_added(lineverts[0], vector3_scaled(m_plane.normal(), Brush::m_maxWorldCoord * 4));
glVertexPointer(3, GL_FLOAT, sizeof(Vector3), &lineverts[0]);
glDrawArrays(GL_LINES, 0, GLsizei(2));