void CEditorRoot::SaveAllGraphs() { for ( int i = 0; i < GetNumFlowGraphs(); i++ ) { if ( GetFlowGraph( i )->GetShadername() ) GetFlowGraph(i)->SaveToFile( GetFlowGraph(i)->GetShadername() ); } }
void CEditorRoot::InvokeShaderToScene( GenericShaderData *pShader ) { if ( pShader == NULL ) pShader = m_pLastFullCompiledShader; if ( pShader == NULL ) return; ReloadGameShaders( pShader ); for ( int i = 0; i < GetNumFlowGraphs(); i++ ) { if ( GetFlowGraph(i)->GetFlowgraphType() == CNodeView::FLOWGRAPH_POSTPROC ) GetFlowGraph(i)->MakeSolversDirty(); } }
void CEditorRoot::RefreshNodeInstances( int iNodeType, KeyValues *pParams ) { const char *pszParam_Path = pParams->GetString( "filepath" ); for ( int i = 0; i < pNodeSheet->GetNumPages(); i++ ) { CNodeView *pView = GetFlowGraph( i ); for ( int n = 0; n < pView->GetNumNodes(); n++ ) { CBaseNode *pNode = pView->GetNode( n ); if ( pNode->GetNodeType() != iNodeType ) continue; switch ( iNodeType ) { case HLSLNODE_UTILITY_CUSTOMCODE: { CNodeCustom *pCustomNode = (CNodeCustom*)pNode; if ( pCustomNode->IsUsingInlineCode() || Q_stricmp( pCustomNode->GetFilePath(), pszParam_Path ) ) break; pCustomNode->UpdateFromFile(); } break; } } } pParams->deleteThis(); }
void CEditorRoot::UpdateTabColor( CNodeView *pView ) { if ( !pView ) pView = GetSafeFlowgraph(); CNodeView::FlowGraphType_t mode = pView->GetFlowgraphType(); Color col( 127, 127, 127, 255 ); switch ( mode ) { case CNodeView::FLOWGRAPH_HLSL: col.SetColor( 100, 108, 102, 255 ); break; case CNodeView::FLOWGRAPH_POSTPROC: col.SetColor( 108, 104, 100, 255 ); break; default: Assert(0); break; } int pageIndex = -1; for ( int i = 0; i < pNodeSheet->GetNumPages() && pageIndex < 0; i++ ) if ( GetFlowGraph( i ) == pView ) pageIndex = i; Assert( pageIndex >= 0 && pageIndex < pNodeSheet->GetNumPages() ); pNodeSheet->SetTabColor( pageIndex, col ); }
void CEditorRoot::OnAskPageClose( KeyValues *pKV ) { Panel *pPageTab = (Panel*)pKV->GetPtr( "PageTab" ); CNodeView *pGraph = GetFlowGraph( pKV->GetInt( "TabIndex" ) ); if ( pPageTab == NULL || pGraph == NULL ) { Assert( 0 ); return; } ConfirmTabClose( pPageTab->GetVPanel() ); #if 0 if ( !m_bWarnOnClose || !pGraph->IsSaveDirty() ) ConfirmTabClose( pPageTab->GetVPanel() ); else { const char *pszShadername = pGraph->GetShadername(); char shortName[MAX_PATH*4]; KeyValues *pKVResponse_Yes = new KeyValues( "ResponseGraphSave", "DoSave", 1 ); KeyValues *pKVResponse_No = new KeyValues( "ResponseGraphSave", "DoSave", 0 ); if ( pszShadername == NULL ) { pKVResponse_No->deleteThis(); pKVResponse_No = new KeyValues( "ResponseGraphSave", "DoSave", 2 ); } else { Q_FileBase( pszShadername, shortName, sizeof( shortName ) ); } pKVResponse_Yes->SetPtr( "PageTab", pPageTab ); pKVResponse_No->SetPtr( "PageTab", pPageTab ); pKVResponse_Yes->SetPtr( "Graph", pGraph ); pKVResponse_No->SetPtr( "Graph", pGraph ); vgui::PromptSimple *prompt = new vgui::PromptSimple( this, "Unsaved changes" ); prompt->MoveToCenterOfScreen(); if ( pszShadername != NULL ) prompt->SetText( VarArgs( "The graph %s has unsaved changes. Save now?", shortName ) ); else prompt->SetText( "This graph has not been saved yet, are you sure that you want to close it?" ); prompt->AddButton( "Yes", pKVResponse_Yes ); prompt->AddButton( "No", pKVResponse_No ); prompt->MakeReadyForUse(); prompt->InvalidateLayout( true, true ); } #endif }
//------------------------------------------------------------------------------------------------------------------------ void CCustomAction::TerminateAction() { m_currentState = CAS_Ended; IFlowGraph* pFlowGraph = GetFlowGraph(); if (pFlowGraph) { pFlowGraph->SetCustomAction(0); } m_pObjectEntity = NULL; this->NotifyListeners(CAE_Terminated, *this); m_listeners.Clear(); }