optimize vertices reselection during vertex manipulations
This commit is contained in:
parent
ab0f376d4a
commit
9186d18353
|
|
@ -309,10 +309,8 @@ void Brush::buildBRep(){
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_vertexModeOn ){
|
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 )
|
for ( Observers::iterator o = m_observers.begin(); o != m_observers.end(); ++o )
|
||||||
( *o )->vertex_select( i.m_vertexTransformed );
|
( *o )->vertex_select();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_BRep_evaluation = false;
|
m_BRep_evaluation = false;
|
||||||
|
|
|
||||||
|
|
@ -1553,7 +1553,7 @@ virtual void edge_push_back( SelectableEdge& edge ) = 0;
|
||||||
virtual void vertex_clear() = 0;
|
virtual void vertex_clear() = 0;
|
||||||
virtual void vertex_push_back( SelectableVertex& vertex ) = 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 vertex_snap( const float snap ) = 0;
|
||||||
|
|
||||||
virtual void DEBUG_verify() const = 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() );
|
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 ) ){
|
if( vector3_length_squared( vertex - m_vertex->getFace().getWinding()[m_vertex->m_faceVertex.getVertex()].vertex ) < ( 0.1 * 0.1 ) ){
|
||||||
setSelected( true );
|
setSelected( true );
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3407,13 +3409,13 @@ void vertex_push_back( SelectableVertex& vertex ){
|
||||||
m_vertexInstances.push_back( VertexInstance( m_faceInstances, vertex ) );
|
m_vertexInstances.push_back( VertexInstance( m_faceInstances, vertex ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void vertex_select( const Vector3& vertex ){
|
void vertex_select(){
|
||||||
|
bool selected = false;
|
||||||
|
for( const auto& v : m_brush.m_vertexModeVertices )
|
||||||
|
if( v.m_selected )
|
||||||
for( auto& i : m_vertexInstances )
|
for( auto& i : m_vertexInstances )
|
||||||
i.vertex_select( vertex );
|
selected |= i.vertex_select( v.m_vertexTransformed );
|
||||||
for ( const auto& i : m_faceInstances )
|
if( !selected && !m_vertexInstances.empty() )
|
||||||
if( i.selectedComponents( SelectionSystem::eVertex ) ) //got something selected, okay
|
|
||||||
return;
|
|
||||||
if( !m_vertexInstances.empty() )
|
|
||||||
m_vertexInstances[0].setSelected( true ); //select at least something to prevent transform interruption after removing all selected vertices during vertexModeTransform
|
m_vertexInstances[0].setSelected( true ); //select at least something to prevent transform interruption after removing all selected vertices during vertexModeTransform
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user