Radiant:
binds... swap paint and rect selectors: * M1 click: tunnel selector * shift + m1 drag: paint objects selection * ctrl + m1: select brush face * ctrl + m1 drag: paint faces selection * shift + m2: tunnel selector * shift + m2 drag: rectangular toggle selector * ctrl + m2: tunnel face selector * ctrl + m2 drag: rectangular selector of brush faces * alt + m2 drag: 2d zoom in/out * ctrl + m1: quick clipper mode (quits one after split done)
This commit is contained in:
parent
fab6205991
commit
e8686a54bf
|
|
@ -2783,13 +2783,8 @@ void deselectComponentsOrAll( bool components ){
|
||||||
|
|
||||||
void SelectPoint( const View& view, const float device_point[2], const float device_epsilon[2], RadiantSelectionSystem::EModifier modifier, bool face ){
|
void SelectPoint( const View& view, const float device_point[2], const float device_epsilon[2], RadiantSelectionSystem::EModifier modifier, bool face ){
|
||||||
//globalOutputStream() << device_point[0] << " " << device_point[1] << "\n";
|
//globalOutputStream() << device_point[0] << " " << device_point[1] << "\n";
|
||||||
#ifdef _DEBUG
|
|
||||||
ASSERT_MESSAGE( fabs( device_point[0] ) <= 1.0f && fabs( device_point[1] ) <= 1.0f, "point-selection error" );
|
ASSERT_MESSAGE( fabs( device_point[0] ) <= 1.0f && fabs( device_point[1] ) <= 1.0f, "point-selection error" );
|
||||||
#else
|
|
||||||
if( fabs( device_point[0] ) >= 1.0f || fabs( device_point[1] ) >= 1.0f ){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if ( modifier == eReplace ) {
|
if ( modifier == eReplace ) {
|
||||||
deselectComponentsOrAll( face );
|
deselectComponentsOrAll( face );
|
||||||
}
|
}
|
||||||
|
|
@ -2869,13 +2864,17 @@ void SelectPoint( const View& view, const float device_point[2], const float dev
|
||||||
break;
|
break;
|
||||||
case RadiantSelectionSystem::eSelect:
|
case RadiantSelectionSystem::eSelect:
|
||||||
{
|
{
|
||||||
|
if( !( *selector.begin() ).second->isSelected() ){
|
||||||
( *selector.begin() ).second->setSelected( true );
|
( *selector.begin() ).second->setSelected( true );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RadiantSelectionSystem::eDeselect:
|
case RadiantSelectionSystem::eDeselect:
|
||||||
{
|
{
|
||||||
|
if( ( *selector.begin() ).second->isSelected() ){
|
||||||
( *selector.begin() ).second->setSelected( false );
|
( *selector.begin() ).second->setSelected( false );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -2888,13 +2887,7 @@ void SelectPoint( const View& view, const float device_point[2], const float dev
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SelectPoint_InitPaint( const View& view, const float device_point[2], const float device_epsilon[2], bool face ){
|
bool SelectPoint_InitPaint( const View& view, const float device_point[2], const float device_epsilon[2], bool face ){
|
||||||
#ifdef _DEBUG
|
|
||||||
ASSERT_MESSAGE( fabs( device_point[0] ) <= 1.0f && fabs( device_point[1] ) <= 1.0f, "point-selection error" );
|
ASSERT_MESSAGE( fabs( device_point[0] ) <= 1.0f && fabs( device_point[1] ) <= 1.0f, "point-selection error" );
|
||||||
#else
|
|
||||||
if( fabs( device_point[0] ) >= 1.0f || fabs( device_point[1] ) >= 1.0f ){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if defined ( DEBUG_SELECTION )
|
#if defined ( DEBUG_SELECTION )
|
||||||
g_render_clipped.destroy();
|
g_render_clipped.destroy();
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -3574,12 +3567,13 @@ DeviceVector m_current;
|
||||||
DeviceVector m_epsilon;
|
DeviceVector m_epsilon;
|
||||||
ModifierFlags m_state;
|
ModifierFlags m_state;
|
||||||
bool m_mouse2;
|
bool m_mouse2;
|
||||||
bool m_paintInitialized;
|
bool m_mouseMoved;
|
||||||
|
bool m_mouseMovedWhilePressed;
|
||||||
bool m_paintSelect;
|
bool m_paintSelect;
|
||||||
const View* m_view;
|
const View* m_view;
|
||||||
RectangleCallback m_window_update;
|
RectangleCallback m_window_update;
|
||||||
|
|
||||||
Selector_() : m_start( 0.0f, 0.0f ), m_current( 0.0f, 0.0f ), m_state( c_modifierNone ), m_mouse2( false ){
|
Selector_() : m_start( 0.0f, 0.0f ), m_current( 0.0f, 0.0f ), m_state( c_modifierNone ), m_mouse2( false ), m_mouseMoved( false ), m_mouseMovedWhilePressed( false ){
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_area(){
|
void draw_area(){
|
||||||
|
|
@ -3592,11 +3586,11 @@ void testSelect( DeviceVector position ){
|
||||||
DeviceVector delta( position - m_start );
|
DeviceVector delta( position - m_start );
|
||||||
if ( fabs( delta.x() ) > m_epsilon.x() && fabs( delta.y() ) > m_epsilon.y() ) {
|
if ( fabs( delta.x() ) > m_epsilon.x() && fabs( delta.y() ) > m_epsilon.y() ) {
|
||||||
DeviceVector delta( position - m_start );
|
DeviceVector delta( position - m_start );
|
||||||
getSelectionSystem().SelectArea( *m_view, &m_start[0], &delta[0], modifier, ( m_state & c_modifier_face ) != c_modifierNone );
|
//getSelectionSystem().SelectArea( *m_view, &m_start[0], &delta[0], modifier, ( m_state & c_modifier_face ) != c_modifierNone );
|
||||||
|
getSelectionSystem().SelectArea( *m_view, &m_start[0], &delta[0], RadiantSelectionSystem::eToggle, ( m_state & c_modifier_face ) != c_modifierNone );
|
||||||
}
|
}
|
||||||
else
|
else if( !m_mouseMovedWhilePressed ){
|
||||||
{
|
if ( modifier == RadiantSelectionSystem::eReplace && !m_mouseMoved ) {
|
||||||
if ( modifier == RadiantSelectionSystem::eReplace ) {
|
|
||||||
modifier = RadiantSelectionSystem::eCycle;
|
modifier = RadiantSelectionSystem::eCycle;
|
||||||
}
|
}
|
||||||
getSelectionSystem().SelectPoint( *m_view, &position[0], &m_epsilon[0], modifier, ( m_state & c_modifier_face ) != c_modifierNone );
|
getSelectionSystem().SelectPoint( *m_view, &position[0], &m_epsilon[0], modifier, ( m_state & c_modifier_face ) != c_modifierNone );
|
||||||
|
|
@ -3608,18 +3602,19 @@ void testSelect( DeviceVector position ){
|
||||||
}
|
}
|
||||||
|
|
||||||
void testSelect_simpleM1( DeviceVector position ){
|
void testSelect_simpleM1( DeviceVector position ){
|
||||||
RadiantSelectionSystem::EModifier modifier = RadiantSelectionSystem::eReplace;
|
/*RadiantSelectionSystem::EModifier modifier = RadiantSelectionSystem::eReplace;
|
||||||
DeviceVector delta( position - m_start );
|
DeviceVector delta( position - m_start );
|
||||||
if ( fabs( delta.x() ) < m_epsilon.x() && fabs( delta.y() ) < m_epsilon.y() ) {
|
if ( fabs( delta.x() ) < m_epsilon.x() && fabs( delta.y() ) < m_epsilon.y() ) {
|
||||||
modifier = RadiantSelectionSystem::eCycle;
|
modifier = RadiantSelectionSystem::eCycle;
|
||||||
}
|
}
|
||||||
getSelectionSystem().SelectPoint( *m_view, &position[0], &m_epsilon[0], modifier, false );
|
getSelectionSystem().SelectPoint( *m_view, &position[0], &m_epsilon[0], modifier, false );*/
|
||||||
|
getSelectionSystem().SelectPoint( *m_view, &position[0], &m_epsilon[0], m_mouseMoved ? RadiantSelectionSystem::eReplace : RadiantSelectionSystem::eCycle, false );
|
||||||
m_start = m_current = device_constrained( position );
|
m_start = m_current = device_constrained( position );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool selecting() const {
|
bool selecting() const {
|
||||||
return m_state != c_modifier_manipulator && !m_mouse2;
|
return m_state != c_modifier_manipulator && m_mouse2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setState( ModifierFlags state ){
|
void setState( ModifierFlags state ){
|
||||||
|
|
@ -3643,31 +3638,27 @@ void modifierDisable( ModifierFlags type ){
|
||||||
|
|
||||||
void mouseDown( DeviceVector position ){
|
void mouseDown( DeviceVector position ){
|
||||||
m_start = m_current = device_constrained( position );
|
m_start = m_current = device_constrained( position );
|
||||||
m_paintInitialized = false;
|
if( !m_mouse2 && m_state != c_modifierNone ){
|
||||||
|
m_paintSelect = getSelectionSystem().SelectPoint_InitPaint( *m_view, &position[0], &m_epsilon[0], ( m_state & c_modifier_face ) != c_modifierNone );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mouseMoved( DeviceVector position ){
|
void mouseMoved( DeviceVector position ){
|
||||||
m_current = device_constrained( position );
|
m_current = device_constrained( position );
|
||||||
if( !m_mouse2 ){
|
m_mouseMovedWhilePressed = true;
|
||||||
|
if( m_mouse2 ){
|
||||||
draw_area();
|
draw_area();
|
||||||
}
|
}
|
||||||
else if( m_paintInitialized ){
|
else if( m_state != c_modifier_manipulator ){
|
||||||
getSelectionSystem().SelectPoint( *m_view, &position[0], &m_epsilon[0],
|
getSelectionSystem().SelectPoint( *m_view, &m_current[0], &m_epsilon[0],
|
||||||
m_paintSelect ? RadiantSelectionSystem::eSelect : RadiantSelectionSystem::eDeselect,
|
m_paintSelect ? RadiantSelectionSystem::eSelect : RadiantSelectionSystem::eDeselect,
|
||||||
( m_state & c_modifier_face ) != c_modifierNone );
|
( m_state & c_modifier_face ) != c_modifierNone );
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
DeviceVector delta( position - m_start );
|
|
||||||
if ( fabs( delta.x() ) > m_epsilon.x() || fabs( delta.y() ) > m_epsilon.y() ) {
|
|
||||||
m_paintSelect = getSelectionSystem().SelectPoint_InitPaint( *m_view, &position[0], &m_epsilon[0], ( m_state & c_modifier_face ) != c_modifierNone );
|
|
||||||
m_paintInitialized = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
typedef MemberCaller1<Selector_, DeviceVector, &Selector_::mouseMoved> MouseMovedCaller;
|
typedef MemberCaller1<Selector_, DeviceVector, &Selector_::mouseMoved> MouseMovedCaller;
|
||||||
|
|
||||||
void mouseUp( DeviceVector position ){
|
void mouseUp( DeviceVector position ){
|
||||||
if( !m_paintInitialized ){
|
if( m_mouse2 ){
|
||||||
testSelect( device_constrained( position ) );
|
testSelect( device_constrained( position ) );
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
@ -3744,6 +3735,7 @@ void onSizeChanged( int width, int height ){
|
||||||
void onMouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){
|
void onMouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){
|
||||||
if ( button == c_button_select || ( button == c_button_select2 && modifiers != c_modifierNone ) ) {
|
if ( button == c_button_select || ( button == c_button_select2 && modifiers != c_modifierNone ) ) {
|
||||||
m_mouse_down = true;
|
m_mouse_down = true;
|
||||||
|
//m_selector.m_mouseMoved = false;
|
||||||
|
|
||||||
DeviceVector devicePosition( window_to_normalised_device( position, m_width, m_height ) );
|
DeviceVector devicePosition( window_to_normalised_device( position, m_width, m_height ) );
|
||||||
if ( modifiers == c_modifier_manipulator && m_manipulator.mouseDown( devicePosition ) ) {
|
if ( modifiers == c_modifier_manipulator && m_manipulator.mouseDown( devicePosition ) ) {
|
||||||
|
|
@ -3752,13 +3744,13 @@ void onMouseDown( const WindowVector& position, ButtonIdentifier button, Modifie
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_selector.mouseDown( devicePosition );
|
|
||||||
if ( button == c_button_select ) {
|
if ( button == c_button_select ) {
|
||||||
m_selector.m_mouse2 = false;
|
m_selector.m_mouse2 = false;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
m_selector.m_mouse2 = true;
|
m_selector.m_mouse2 = true;
|
||||||
}
|
}
|
||||||
|
m_selector.mouseDown( devicePosition );
|
||||||
g_mouseMovedCallback.insert( MouseEventCallback( Selector_::MouseMovedCaller( m_selector ) ) );
|
g_mouseMovedCallback.insert( MouseEventCallback( Selector_::MouseMovedCaller( m_selector ) ) );
|
||||||
g_mouseUpCallback.insert( MouseEventCallback( Selector_::MouseUpCaller( m_selector ) ) );
|
g_mouseUpCallback.insert( MouseEventCallback( Selector_::MouseUpCaller( m_selector ) ) );
|
||||||
}
|
}
|
||||||
|
|
@ -3779,6 +3771,7 @@ void onMouseDown( const WindowVector& position, ButtonIdentifier button, Modifie
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void onMouseMotion( const WindowVector& position, ModifierFlags modifiers ){
|
void onMouseMotion( const WindowVector& position, ModifierFlags modifiers ){
|
||||||
|
m_selector.m_mouseMoved = true;
|
||||||
if ( m_mouse_down && !g_mouseMovedCallback.empty() ) {
|
if ( m_mouse_down && !g_mouseMovedCallback.empty() ) {
|
||||||
g_mouseMovedCallback.get() ( window_to_normalised_device( position, m_width, m_height ) );
|
g_mouseMovedCallback.get() ( window_to_normalised_device( position, m_width, m_height ) );
|
||||||
}
|
}
|
||||||
|
|
@ -3791,10 +3784,13 @@ void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierF
|
||||||
}
|
}
|
||||||
//L button w/o scene changed = tunnel selection
|
//L button w/o scene changed = tunnel selection
|
||||||
if( !getSelectionSystem().m_undo_begun && modifiers == c_modifierNone && button == c_button_select &&
|
if( !getSelectionSystem().m_undo_begun && modifiers == c_modifierNone && button == c_button_select &&
|
||||||
|
//( !m_selector.m_mouseMoved || !m_mouse_down ) &&
|
||||||
( GlobalSelectionSystem().Mode() != SelectionSystem::eComponent || GlobalSelectionSystem().ManipulatorMode() != SelectionSystem::eDrag ) ){
|
( GlobalSelectionSystem().Mode() != SelectionSystem::eComponent || GlobalSelectionSystem().ManipulatorMode() != SelectionSystem::eDrag ) ){
|
||||||
m_selector.testSelect_simpleM1( window_to_normalised_device( position, m_width, m_height ) );
|
m_selector.testSelect_simpleM1( device_constrained( window_to_normalised_device( position, m_width, m_height ) ) );
|
||||||
}
|
}
|
||||||
getSelectionSystem().m_undo_begun = false;
|
getSelectionSystem().m_undo_begun = false;
|
||||||
|
m_selector.m_mouseMoved = false;
|
||||||
|
m_selector.m_mouseMovedWhilePressed = false;
|
||||||
}
|
}
|
||||||
void onModifierDown( ModifierFlags type ){
|
void onModifierDown( ModifierFlags type ){
|
||||||
m_selector.modifierEnable( type );
|
m_selector.modifierEnable( type );
|
||||||
|
|
|
||||||
|
|
@ -933,7 +933,7 @@ unsigned int Clipper_buttons(){
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int Clipper_quick_buttons(){
|
unsigned int Clipper_quick_buttons(){
|
||||||
return RAD_RBUTTON | RAD_CONTROL;
|
return RAD_LBUTTON | RAD_CONTROL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void XYWnd::DropClipPoint( int pointx, int pointy ){
|
void XYWnd::DropClipPoint( int pointx, int pointy ){
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user