mirror of
https://github.com/Garux/netradiant-custom.git
synced 2026-09-28 00:00:03 +02:00
optimize vertices reselection during vertex manipulations
This commit is contained in:
+2
-4
@@ -309,10 +309,8 @@ void Brush::buildBRep(){
|
||||
}
|
||||
|
||||
if( m_vertexModeOn ){
|
||||
for( const auto& i : m_vertexModeVertices )
|
||||
if( i.m_selected )
|
||||
for ( Observers::iterator o = m_observers.begin(); o != m_observers.end(); ++o )
|
||||
( *o )->vertex_select( i.m_vertexTransformed );
|
||||
for ( Observers::iterator o = m_observers.begin(); o != m_observers.end(); ++o )
|
||||
( *o )->vertex_select();
|
||||
}
|
||||
}
|
||||
m_BRep_evaluation = false;
|
||||
|
||||
+11
-9
@@ -1553,7 +1553,7 @@ virtual void edge_push_back( SelectableEdge& edge ) = 0;
|
||||
virtual void vertex_clear() = 0;
|
||||
virtual void vertex_push_back( SelectableVertex& vertex ) = 0;
|
||||
|
||||
virtual void vertex_select( const Vector3& vertex ) = 0;
|
||||
virtual void vertex_select() = 0;
|
||||
virtual void vertex_snap( const float snap ) = 0;
|
||||
|
||||
virtual void DEBUG_verify() const = 0;
|
||||
@@ -3206,10 +3206,12 @@ void gather( Brush::VertexModeVertices& vertexModeVertices ) const {
|
||||
}
|
||||
while ( faceVertex.getFace() != m_vertex->m_faceVertex.getFace() );
|
||||
}
|
||||
void vertex_select( const Vector3& vertex ){
|
||||
bool vertex_select( const Vector3& vertex ){
|
||||
if( vector3_length_squared( vertex - m_vertex->getFace().getWinding()[m_vertex->m_faceVertex.getVertex()].vertex ) < ( 0.1 * 0.1 ) ){
|
||||
setSelected( true );
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3407,13 +3409,13 @@ void vertex_push_back( SelectableVertex& vertex ){
|
||||
m_vertexInstances.push_back( VertexInstance( m_faceInstances, vertex ) );
|
||||
}
|
||||
|
||||
void vertex_select( const Vector3& vertex ){
|
||||
for( auto& i : m_vertexInstances )
|
||||
i.vertex_select( vertex );
|
||||
for ( const auto& i : m_faceInstances )
|
||||
if( i.selectedComponents( SelectionSystem::eVertex ) ) //got something selected, okay
|
||||
return;
|
||||
if( !m_vertexInstances.empty() )
|
||||
void vertex_select(){
|
||||
bool selected = false;
|
||||
for( const auto& v : m_brush.m_vertexModeVertices )
|
||||
if( v.m_selected )
|
||||
for( auto& i : m_vertexInstances )
|
||||
selected |= i.vertex_select( v.m_vertexTransformed );
|
||||
if( !selected && !m_vertexInstances.empty() )
|
||||
m_vertexInstances[0].setSelected( true ); //select at least something to prevent transform interruption after removing all selected vertices during vertexModeTransform
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user