shorten code
This commit is contained in:
parent
da7c72547b
commit
4e82cdf2f4
|
|
@ -97,13 +97,9 @@ void Clipper_modeChanged( bool isClipper ){
|
||||||
GdkCursor* cursor = isClipper? g_clipper_cursor : 0;
|
GdkCursor* cursor = isClipper? g_clipper_cursor : 0;
|
||||||
|
|
||||||
if( g_pParentWnd ){
|
if( g_pParentWnd ){
|
||||||
XYWnd* xywnd;
|
g_pParentWnd->forEachXYWnd( [&cursor]( XYWnd* xywnd ){
|
||||||
if( ( xywnd = g_pParentWnd->GetXYWnd() ) )
|
|
||||||
gdk_window_set_cursor( xywnd->GetWidget()->window, cursor );
|
|
||||||
if( ( xywnd = g_pParentWnd->GetXZWnd() ) )
|
|
||||||
gdk_window_set_cursor( xywnd->GetWidget()->window, cursor );
|
|
||||||
if( ( xywnd = g_pParentWnd->GetYZWnd() ) )
|
|
||||||
gdk_window_set_cursor( xywnd->GetWidget()->window, cursor );
|
gdk_window_set_cursor( xywnd->GetWidget()->window, cursor );
|
||||||
|
} );
|
||||||
if( g_pParentWnd->GetCamWnd() )
|
if( g_pParentWnd->GetCamWnd() )
|
||||||
if( !isClipper || gdk_pointer_is_grabbed() == FALSE ) /* prevent cursor change `GDK_BLANK_CURSOR->g_clipper_cursor` during freelook */
|
if( !isClipper || gdk_pointer_is_grabbed() == FALSE ) /* prevent cursor change `GDK_BLANK_CURSOR->g_clipper_cursor` during freelook */
|
||||||
gdk_window_set_cursor( CamWnd_getWidget( *g_pParentWnd->GetCamWnd() )->window, cursor );
|
gdk_window_set_cursor( CamWnd_getWidget( *g_pParentWnd->GetCamWnd() )->window, cursor );
|
||||||
|
|
|
||||||
|
|
@ -728,14 +728,7 @@ void Paste(){
|
||||||
|
|
||||||
void TranslateToCamera(){
|
void TranslateToCamera(){
|
||||||
CamWnd& camwnd = *g_pParentWnd->GetCamWnd();
|
CamWnd& camwnd = *g_pParentWnd->GetCamWnd();
|
||||||
// Work out the delta
|
GlobalSelectionSystem().translateSelected( vector3_snapped( Camera_getOrigin( camwnd ) - GlobalSelectionSystem().getBoundsSelected().origin, GetSnapGridSize() ) );
|
||||||
Vector3 mid;
|
|
||||||
Select_GetMid( mid );
|
|
||||||
//Vector3 delta = vector3_subtracted( vector3_snapped( Camera_getOrigin( camwnd ), GetSnapGridSize() ), mid );
|
|
||||||
Vector3 delta = vector3_snapped( vector3_subtracted( Camera_getOrigin( camwnd ), mid ), GetSnapGridSize() );
|
|
||||||
|
|
||||||
// Move to camera
|
|
||||||
GlobalSelectionSystem().translateSelected( delta );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PasteToCamera(){
|
void PasteToCamera(){
|
||||||
|
|
@ -1945,33 +1938,11 @@ void GlobalCamera_UpdateWindow(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_UpdateWindow( MainFrame& mainframe ){
|
|
||||||
if ( mainframe.GetXYWnd() != 0 ) {
|
|
||||||
XYWnd_Update( *mainframe.GetXYWnd() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void XZ_UpdateWindow( MainFrame& mainframe ){
|
|
||||||
if ( mainframe.GetXZWnd() != 0 ) {
|
|
||||||
XYWnd_Update( *mainframe.GetXZWnd() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void YZ_UpdateWindow( MainFrame& mainframe ){
|
|
||||||
if ( mainframe.GetYZWnd() != 0 ) {
|
|
||||||
XYWnd_Update( *mainframe.GetYZWnd() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void XY_UpdateAllWindows( MainFrame& mainframe ){
|
|
||||||
XY_UpdateWindow( mainframe );
|
|
||||||
XZ_UpdateWindow( mainframe );
|
|
||||||
YZ_UpdateWindow( mainframe );
|
|
||||||
}
|
|
||||||
|
|
||||||
void XY_UpdateAllWindows(){
|
void XY_UpdateAllWindows(){
|
||||||
if ( g_pParentWnd != 0 ) {
|
if ( g_pParentWnd != 0 ) {
|
||||||
XY_UpdateAllWindows( *g_pParentWnd );
|
g_pParentWnd->forEachXYWnd( []( XYWnd* xywnd ){
|
||||||
|
XYWnd_Update( *xywnd );
|
||||||
|
} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3321,7 +3292,7 @@ void MainFrame::Create(){
|
||||||
SetActiveXY( m_pXYWnd );
|
SetActiveXY( m_pXYWnd );
|
||||||
|
|
||||||
AddGridChangeCallback( SetGridStatusCaller( *this ) );
|
AddGridChangeCallback( SetGridStatusCaller( *this ) );
|
||||||
AddGridChangeCallback( ReferenceCaller<MainFrame, XY_UpdateAllWindows>( *this ) );
|
AddGridChangeCallback( FreeCaller<XY_UpdateAllWindows>() );
|
||||||
|
|
||||||
g_defaultToolMode = DragMode;
|
g_defaultToolMode = DragMode;
|
||||||
g_defaultToolMode();
|
g_defaultToolMode();
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,13 @@ CamWnd* GetCamWnd(){
|
||||||
return m_pCamWnd;
|
return m_pCamWnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Functor>
|
||||||
|
void forEachXYWnd( const Functor& functor ){
|
||||||
|
for( XYWnd* xywnd : { GetXYWnd(), GetXZWnd(), GetYZWnd() } )
|
||||||
|
if( xywnd )
|
||||||
|
functor( xywnd );
|
||||||
|
}
|
||||||
|
|
||||||
EViewStyle CurrentStyle(){
|
EViewStyle CurrentStyle(){
|
||||||
return m_nCurrentStyle;
|
return m_nCurrentStyle;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -539,10 +539,6 @@ void Select_GetBounds( Vector3& mins, Vector3& maxs ){
|
||||||
mins = vector3_subtracted( bounds.origin, bounds.extents );
|
mins = vector3_subtracted( bounds.origin, bounds.extents );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Select_GetMid( Vector3& mid ){
|
|
||||||
mid = vector3_snapped( GlobalSelectionSystem().getBoundsSelected().origin );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Select_FlipAxis( int axis ){
|
void Select_FlipAxis( int axis ){
|
||||||
Vector3 flip( 1, 1, 1 );
|
Vector3 flip( 1, 1, 1 );
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
#include "math/vector.h"
|
#include "math/vector.h"
|
||||||
|
|
||||||
void Select_GetBounds( Vector3& mins, Vector3& maxs );
|
void Select_GetBounds( Vector3& mins, Vector3& maxs );
|
||||||
void Select_GetMid( Vector3& mid );
|
|
||||||
|
|
||||||
void Select_Delete();
|
void Select_Delete();
|
||||||
void Select_Invert();
|
void Select_Invert();
|
||||||
|
|
@ -34,13 +33,6 @@ void Select_Touching();
|
||||||
void Scene_ExpandSelectionToPrimitives();
|
void Scene_ExpandSelectionToPrimitives();
|
||||||
void Scene_ExpandSelectionToEntities();
|
void Scene_ExpandSelectionToEntities();
|
||||||
|
|
||||||
//void Selection_Flipx();
|
|
||||||
//void Selection_Flipy();
|
|
||||||
//void Selection_Flipz();
|
|
||||||
//void Selection_Rotatex();
|
|
||||||
//void Selection_Rotatey();
|
|
||||||
//void Selection_Rotatez();
|
|
||||||
|
|
||||||
|
|
||||||
void Selection_MoveDown();
|
void Selection_MoveDown();
|
||||||
void Selection_MoveUp();
|
void Selection_MoveUp();
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ void XYWnd::ZoomInWithMouse( int pointx, int pointy ){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void XYWnd::FocusOnBounds( AABB& bounds ){
|
void XYWnd::FocusOnBounds( const AABB& bounds ){
|
||||||
SetOrigin( bounds.origin );
|
SetOrigin( bounds.origin );
|
||||||
int nDim1 = ( m_viewType == YZ ) ? 1 : 0;
|
int nDim1 = ( m_viewType == YZ ) ? 1 : 0;
|
||||||
int nDim2 = ( m_viewType == XY ) ? 1 : 2;
|
int nDim2 = ( m_viewType == XY ) ? 1 : 2;
|
||||||
|
|
@ -2393,150 +2393,63 @@ void XYWnd::OnEntityCreate( const char* item ){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void GetCenterPosition( Vector3& position ){
|
inline AABB GetCenterBbox(){
|
||||||
if ( GlobalSelectionSystem().countSelected() != 0 ) {
|
return ( GlobalSelectionSystem().countSelected() != 0 )?
|
||||||
Select_GetMid( position );
|
GlobalSelectionSystem().getBoundsSelected() :
|
||||||
}
|
AABB( Camera_getOrigin( *g_pParentWnd->GetCamWnd() ), Vector3( 128.f, 128.f, 128.f ) );
|
||||||
else
|
|
||||||
{
|
|
||||||
position = Camera_getOrigin( *g_pParentWnd->GetCamWnd() );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XYWnd_Centralize( XYWnd* xywnd ){
|
void XYWnd_Centralize( XYWnd* xywnd ){
|
||||||
Vector3 position;
|
xywnd->PositionView( GetCenterBbox().origin );
|
||||||
GetCenterPosition( position );
|
|
||||||
xywnd->PositionView( position );
|
|
||||||
}
|
|
||||||
|
|
||||||
void XY_Split_Centralize(){
|
|
||||||
Vector3 position;
|
|
||||||
GetCenterPosition( position );
|
|
||||||
if ( g_pParentWnd->GetXYWnd() ) {
|
|
||||||
g_pParentWnd->GetXYWnd()->PositionView( position );
|
|
||||||
}
|
|
||||||
if ( g_pParentWnd->GetXZWnd() ) {
|
|
||||||
g_pParentWnd->GetXZWnd()->PositionView( position );
|
|
||||||
}
|
|
||||||
if ( g_pParentWnd->GetYZWnd() ) {
|
|
||||||
g_pParentWnd->GetYZWnd()->PositionView( position );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_Centralize(){
|
void XY_Centralize(){
|
||||||
if ( g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating ) {
|
const Vector3 position( GetCenterBbox().origin );
|
||||||
// centralize all
|
g_pParentWnd->forEachXYWnd( [&position]( XYWnd* xywnd ){
|
||||||
XY_Split_Centralize();
|
xywnd->PositionView( position );
|
||||||
return;
|
} );
|
||||||
}
|
|
||||||
|
|
||||||
XYWnd* xywnd = g_pParentWnd->GetXYWnd();
|
|
||||||
XYWnd_Centralize( xywnd );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void GetSelectionBbox( AABB& bounds ){
|
|
||||||
if ( GlobalSelectionSystem().countSelected() != 0 ) {
|
|
||||||
bounds = GlobalSelectionSystem().getBoundsSelected();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bounds = AABB( Camera_getOrigin( *g_pParentWnd->GetCamWnd() ), Vector3( 128.f, 128.f, 128.f ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void XYWnd_Focus( XYWnd* xywnd ){
|
|
||||||
AABB bounds;
|
|
||||||
GetSelectionBbox( bounds );
|
|
||||||
xywnd->FocusOnBounds( bounds );
|
|
||||||
}
|
|
||||||
|
|
||||||
void XY_Split_Focus(){
|
|
||||||
AABB bounds;
|
|
||||||
GetSelectionBbox( bounds );
|
|
||||||
if ( g_pParentWnd->GetXYWnd() ) {
|
|
||||||
g_pParentWnd->GetXYWnd()->FocusOnBounds( bounds );
|
|
||||||
}
|
|
||||||
if ( g_pParentWnd->GetXZWnd() ) {
|
|
||||||
g_pParentWnd->GetXZWnd()->FocusOnBounds( bounds );
|
|
||||||
}
|
|
||||||
if ( g_pParentWnd->GetYZWnd() ) {
|
|
||||||
g_pParentWnd->GetYZWnd()->FocusOnBounds( bounds );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_Focus(){
|
void XY_Focus(){
|
||||||
if ( g_pParentWnd->CurrentStyle() == MainFrame::eSplit || g_pParentWnd->CurrentStyle() == MainFrame::eFloating ) {
|
const AABB bounds( GetCenterBbox() );
|
||||||
// focus all
|
g_pParentWnd->forEachXYWnd( [&bounds]( XYWnd* xywnd ){
|
||||||
XY_Split_Focus();
|
xywnd->FocusOnBounds( bounds );
|
||||||
return;
|
} );
|
||||||
}
|
|
||||||
|
|
||||||
XYWnd* xywnd = g_pParentWnd->GetXYWnd();
|
|
||||||
XYWnd_Focus( xywnd );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void XY_TopFrontSide( VIEWTYPE viewtype ){
|
void XY_SetViewType( VIEWTYPE viewtype ){
|
||||||
if ( g_pParentWnd->CurrentStyle() == MainFrame::eSplit ) {
|
if ( g_pParentWnd->CurrentStyle() != MainFrame::eSplit ) { // do not want this in a split window
|
||||||
// cannot do this in a split window
|
XYWnd* xywnd = g_pParentWnd->ActiveXY();
|
||||||
// do something else that the user may want here
|
|
||||||
XY_Split_Centralize();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
XYWnd* xywnd = g_pParentWnd->CurrentStyle() == MainFrame::eFloating ? g_pParentWnd->ActiveXY() : g_pParentWnd->GetXYWnd();
|
|
||||||
xywnd->SetViewType( viewtype );
|
xywnd->SetViewType( viewtype );
|
||||||
XYWnd_Centralize( xywnd );
|
XYWnd_Centralize( xywnd );
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
XY_Centralize(); // do something else that the user may want here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void XY_Top(){
|
void XY_Top(){
|
||||||
XY_TopFrontSide( XY );
|
XY_SetViewType( XY );
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_Front(){
|
void XY_Front(){
|
||||||
XY_TopFrontSide( XZ );
|
XY_SetViewType( XZ );
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_Side(){
|
void XY_Side(){
|
||||||
XY_TopFrontSide( YZ );
|
XY_SetViewType( YZ );
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_NextView( XYWnd* xywnd ){
|
void XY_NextView(){
|
||||||
if ( xywnd->GetViewType() == XY ) {
|
XY_SetViewType( static_cast<VIEWTYPE>( ( g_pParentWnd->ActiveXY()->GetViewType() + 2 ) % 3 ) );
|
||||||
xywnd->SetViewType( XZ );
|
|
||||||
}
|
|
||||||
else if ( xywnd->GetViewType() == XZ ) {
|
|
||||||
xywnd->SetViewType( YZ );
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
xywnd->SetViewType( XY );
|
|
||||||
}
|
|
||||||
XYWnd_Centralize( xywnd );
|
|
||||||
}
|
|
||||||
|
|
||||||
void XY_Next(){
|
|
||||||
if ( g_pParentWnd->CurrentStyle() == MainFrame::eSplit ) {
|
|
||||||
// cannot do this in a split window
|
|
||||||
// do something else that the user may want here
|
|
||||||
XY_Split_Centralize();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
XYWnd* xywnd = g_pParentWnd->CurrentStyle() == MainFrame::eFloating ? g_pParentWnd->ActiveXY() : g_pParentWnd->GetXYWnd();
|
|
||||||
XY_NextView( xywnd );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_Zoom100(){
|
void XY_Zoom100(){
|
||||||
if ( g_pParentWnd->GetXYWnd() ) {
|
g_pParentWnd->forEachXYWnd( []( XYWnd* xywnd ){
|
||||||
g_pParentWnd->GetXYWnd()->SetScale( 1 );
|
xywnd->SetScale( 1 );
|
||||||
}
|
} );
|
||||||
if ( g_pParentWnd->GetXZWnd() ) {
|
|
||||||
g_pParentWnd->GetXZWnd()->SetScale( 1 );
|
|
||||||
}
|
|
||||||
if ( g_pParentWnd->GetYZWnd() ) {
|
|
||||||
g_pParentWnd->GetYZWnd()->SetScale( 1 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XY_ZoomIn(){
|
void XY_ZoomIn(){
|
||||||
|
|
@ -2737,15 +2650,9 @@ void ToggleShowGrid(){
|
||||||
|
|
||||||
void MSAAImport( int value ){
|
void MSAAImport( int value ){
|
||||||
g_xywindow_globals_private.m_MSAA = value ? 1 << value : value;
|
g_xywindow_globals_private.m_MSAA = value ? 1 << value : value;
|
||||||
if ( g_pParentWnd->GetXYWnd() ) {
|
g_pParentWnd->forEachXYWnd( []( XYWnd* xywnd ){
|
||||||
g_pParentWnd->GetXYWnd()->fbo_get()->reset( g_pParentWnd->GetXYWnd()->Width(), g_pParentWnd->GetXYWnd()->Height(), g_xywindow_globals_private.m_MSAA, false );
|
xywnd->fbo_get()->reset( xywnd->Width(), xywnd->Height(), g_xywindow_globals_private.m_MSAA, false );
|
||||||
}
|
} );
|
||||||
if ( g_pParentWnd->GetXZWnd() ) {
|
|
||||||
g_pParentWnd->GetXZWnd()->fbo_get()->reset( g_pParentWnd->GetXZWnd()->Width(), g_pParentWnd->GetXZWnd()->Height(), g_xywindow_globals_private.m_MSAA, false );
|
|
||||||
}
|
|
||||||
if ( g_pParentWnd->GetYZWnd() ) {
|
|
||||||
g_pParentWnd->GetYZWnd()->fbo_get()->reset( g_pParentWnd->GetYZWnd()->Width(), g_pParentWnd->GetYZWnd()->Height(), g_xywindow_globals_private.m_MSAA, false );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
typedef FreeCaller1<int, MSAAImport> MSAAImportCaller;
|
typedef FreeCaller1<int, MSAAImport> MSAAImportCaller;
|
||||||
|
|
||||||
|
|
@ -2821,7 +2728,7 @@ void XYWindow_Construct(){
|
||||||
GlobalToggles_insert( "ToggleView", ToggleShown::ToggleCaller( g_xy_top_shown ), ToggleItem::AddCallbackCaller( g_xy_top_shown.m_item ) );
|
GlobalToggles_insert( "ToggleView", ToggleShown::ToggleCaller( g_xy_top_shown ), ToggleItem::AddCallbackCaller( g_xy_top_shown.m_item ) );
|
||||||
GlobalToggles_insert( "ToggleSideView", ToggleShown::ToggleCaller( g_yz_side_shown ), ToggleItem::AddCallbackCaller( g_yz_side_shown.m_item ) );
|
GlobalToggles_insert( "ToggleSideView", ToggleShown::ToggleCaller( g_yz_side_shown ), ToggleItem::AddCallbackCaller( g_yz_side_shown.m_item ) );
|
||||||
GlobalToggles_insert( "ToggleFrontView", ToggleShown::ToggleCaller( g_xz_front_shown ), ToggleItem::AddCallbackCaller( g_xz_front_shown.m_item ) );
|
GlobalToggles_insert( "ToggleFrontView", ToggleShown::ToggleCaller( g_xz_front_shown ), ToggleItem::AddCallbackCaller( g_xz_front_shown.m_item ) );
|
||||||
GlobalCommands_insert( "NextView", FreeCaller<XY_Next>(), Accelerator( GDK_Tab, (GdkModifierType)GDK_CONTROL_MASK ) );
|
GlobalCommands_insert( "NextView", FreeCaller<XY_NextView>(), Accelerator( GDK_Tab, (GdkModifierType)GDK_CONTROL_MASK ) );
|
||||||
GlobalCommands_insert( "ZoomIn", FreeCaller<XY_ZoomIn>(), Accelerator( GDK_Delete ) );
|
GlobalCommands_insert( "ZoomIn", FreeCaller<XY_ZoomIn>(), Accelerator( GDK_Delete ) );
|
||||||
GlobalCommands_insert( "ZoomOut", FreeCaller<XY_ZoomOut>(), Accelerator( GDK_Insert ) );
|
GlobalCommands_insert( "ZoomOut", FreeCaller<XY_ZoomOut>(), Accelerator( GDK_Insert ) );
|
||||||
GlobalCommands_insert( "ViewTop", FreeCaller<XY_Top>(), Accelerator( GDK_KP_7 ) );
|
GlobalCommands_insert( "ViewTop", FreeCaller<XY_Top>(), Accelerator( GDK_KP_7 ) );
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ guint m_zoom_focusOut;
|
||||||
void ZoomIn();
|
void ZoomIn();
|
||||||
void ZoomOut();
|
void ZoomOut();
|
||||||
void ZoomInWithMouse( int pointx, int pointy );
|
void ZoomInWithMouse( int pointx, int pointy );
|
||||||
void FocusOnBounds( AABB& bounds );
|
void FocusOnBounds( const AABB& bounds );
|
||||||
|
|
||||||
void SetActive( bool b ){
|
void SetActive( bool b ){
|
||||||
m_bActive = b;
|
m_bActive = b;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user