|
|
|
@ -69,27 +69,30 @@ bool EDA_3D_CONTROLLER::Init() |
|
|
|
|
|
|
|
void EDA_3D_CONTROLLER::Reset( RESET_REASON aReason ) |
|
|
|
{ |
|
|
|
TOOLS_HOLDER* holder = m_toolMgr->GetToolHolder(); |
|
|
|
|
|
|
|
wxASSERT( holder ); |
|
|
|
|
|
|
|
m_canvas = nullptr; |
|
|
|
m_boardAdapter = nullptr; |
|
|
|
m_camera = nullptr; |
|
|
|
|
|
|
|
if( holder ) |
|
|
|
{ |
|
|
|
m_canvas = dynamic_cast<EDA_3D_CANVAS*>( holder->GetToolCanvas() ); |
|
|
|
TOOLS_HOLDER* holder = m_toolMgr->GetToolHolder(); |
|
|
|
|
|
|
|
EDA_3D_BOARD_HOLDER* holder3d = dynamic_cast<EDA_3D_BOARD_HOLDER*>( holder ); |
|
|
|
wxCHECK( holder, /* void */ ); |
|
|
|
wxCHECK( holder->GetToolCanvas()->GetId() == EDA_3D_CANVAS_ID, /* void */ ); |
|
|
|
|
|
|
|
wxASSERT( holder3d ); |
|
|
|
m_canvas = static_cast<EDA_3D_CANVAS*>( holder->GetToolCanvas() ); |
|
|
|
|
|
|
|
if( holder3d ) |
|
|
|
{ |
|
|
|
m_boardAdapter = &holder3d->GetAdapter(); |
|
|
|
m_camera = &holder3d->GetCurrentCamera(); |
|
|
|
} |
|
|
|
if( EDA_BASE_FRAME* frame = dynamic_cast<EDA_BASE_FRAME*>( holder ) ) |
|
|
|
{ |
|
|
|
wxCHECK( frame->GetFrameType() == FRAME_PCB_DISPLAY3D, /* void */ ); |
|
|
|
|
|
|
|
m_boardAdapter = &static_cast<EDA_3D_VIEWER_FRAME*>( frame )->GetAdapter(); |
|
|
|
m_camera = &static_cast<EDA_3D_VIEWER_FRAME*>( frame )->GetCurrentCamera(); |
|
|
|
} |
|
|
|
else if( wxWindow* previewWindow = dynamic_cast<wxWindow*>( holder ) ) |
|
|
|
{ |
|
|
|
wxCHECK( previewWindow->GetId() == PANEL_PREVIEW_3D_MODEL_ID, /* void */ ); |
|
|
|
|
|
|
|
m_boardAdapter = &static_cast<PANEL_PREVIEW_3D_MODEL*>( holder )->GetAdapter(); |
|
|
|
m_camera = &static_cast<PANEL_PREVIEW_3D_MODEL*>( holder )->GetCurrentCamera(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -117,10 +120,13 @@ int EDA_3D_CONTROLLER::Main( const TOOL_EVENT& aEvent ) |
|
|
|
{ |
|
|
|
if( evt->IsCancelInteractive() ) |
|
|
|
{ |
|
|
|
wxWindow* canvas = m_toolMgr->GetToolHolder()->GetToolCanvas(); |
|
|
|
wxWindow* canvas = m_toolMgr->GetToolHolder()->GetToolCanvas(); |
|
|
|
KIWAY_HOLDER* parent = dynamic_cast<KIWAY_HOLDER*>( wxGetTopLevelParent( canvas ) ); |
|
|
|
|
|
|
|
if( DIALOG_SHIM* dialog = dynamic_cast<DIALOG_SHIM*>( wxGetTopLevelParent( canvas ) ) ) |
|
|
|
if( parent && parent->GetType() == KIWAY_HOLDER::DIALOG ) |
|
|
|
{ |
|
|
|
DIALOG_SHIM* dialog = static_cast<DIALOG_SHIM*>( parent ); |
|
|
|
|
|
|
|
if( dialog->IsQuasiModal() ) |
|
|
|
dialog->EndQuasiModal( wxID_CANCEL ); |
|
|
|
else |
|
|
|
@ -197,8 +203,10 @@ int EDA_3D_CONTROLLER::SetMaterial( const TOOL_EVENT& aEvent ) |
|
|
|
{ |
|
|
|
m_boardAdapter->m_Cfg->m_Render.material_mode = aEvent.Parameter<MATERIAL_MODE>(); |
|
|
|
|
|
|
|
if( auto* viewer = dynamic_cast<EDA_3D_VIEWER_FRAME*>( m_toolMgr->GetToolHolder() ) ) |
|
|
|
viewer->NewDisplay( true ); |
|
|
|
EDA_BASE_FRAME* frame = dynamic_cast<EDA_BASE_FRAME*>( m_toolMgr->GetToolHolder() ); |
|
|
|
|
|
|
|
if( frame && frame->GetFrameType() == FRAME_PCB_DISPLAY3D ) |
|
|
|
static_cast<EDA_3D_VIEWER_FRAME*>( frame )->NewDisplay( true ); |
|
|
|
else |
|
|
|
m_canvas->Request_refresh(); |
|
|
|
|
|
|
|
@ -229,8 +237,10 @@ int EDA_3D_CONTROLLER::ToggleVisibility( const TOOL_EVENT& aEvent ) |
|
|
|
appearanceManager->OnLayerVisibilityChanged( layer, !visibilityFlags.test( layer ) ); |
|
|
|
}; |
|
|
|
|
|
|
|
if( auto viewer = dynamic_cast<EDA_3D_VIEWER_FRAME*>( m_toolMgr->GetToolHolder() ) ) |
|
|
|
appearanceManager = viewer->GetAppearanceManager(); |
|
|
|
EDA_BASE_FRAME* frame = dynamic_cast<EDA_BASE_FRAME*>( m_toolMgr->GetToolHolder() ); |
|
|
|
|
|
|
|
if( frame && frame->GetFrameType() == FRAME_PCB_DISPLAY3D ) |
|
|
|
appearanceManager = static_cast<EDA_3D_VIEWER_FRAME*>( frame )->GetAppearanceManager(); |
|
|
|
|
|
|
|
if( appearanceManager ) |
|
|
|
{ |
|
|
|
@ -256,8 +266,10 @@ int EDA_3D_CONTROLLER::ToggleVisibility( const TOOL_EVENT& aEvent ) |
|
|
|
|
|
|
|
int EDA_3D_CONTROLLER::ToggleLayersManager( const TOOL_EVENT& aEvent ) |
|
|
|
{ |
|
|
|
if( auto* viewer = dynamic_cast<EDA_3D_VIEWER_FRAME*>( m_toolMgr->GetToolHolder() ) ) |
|
|
|
viewer->ToggleAppearanceManager(); |
|
|
|
EDA_BASE_FRAME* frame = dynamic_cast<EDA_BASE_FRAME*>( m_toolMgr->GetToolHolder() ); |
|
|
|
|
|
|
|
if( frame && frame->GetFrameType() == FRAME_PCB_DISPLAY3D ) |
|
|
|
static_cast<EDA_3D_VIEWER_FRAME*>( frame )->ToggleAppearanceManager(); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|