/* =============== idCommonLocal::Draw =============== */ void idCommonLocal::Draw() { // debugging tool to test frame dropping behavior if ( com_sleepDraw.GetInteger() ) { Sys_Sleep( com_sleepDraw.GetInteger() ); } if ( loadGUI != NULL ) { loadGUI->Render( renderSystem, Sys_Milliseconds() ); } else if ( currentGame == DOOM_CLASSIC || currentGame == DOOM2_CLASSIC ) { const float sysWidth = renderSystem->GetWidth() * renderSystem->GetPixelAspect(); const float sysHeight = renderSystem->GetHeight(); const float sysAspect = sysWidth / sysHeight; const float doomAspect = 4.0f / 3.0f; const float adjustment = sysAspect / doomAspect; const float barHeight = ( adjustment >= 1.0f ) ? 0.0f : ( 1.0f - adjustment ) * (float)SCREEN_HEIGHT * 0.25f; const float barWidth = ( adjustment <= 1.0f ) ? 0.0f : ( adjustment - 1.0f ) * (float)SCREEN_WIDTH * 0.25f; if ( barHeight > 0.0f ) { renderSystem->SetColor( colorBlack ); renderSystem->DrawStretchPic( 0, 0, SCREEN_WIDTH, barHeight, 0, 0, 1, 1, whiteMaterial ); renderSystem->DrawStretchPic( 0, SCREEN_HEIGHT - barHeight, SCREEN_WIDTH, barHeight, 0, 0, 1, 1, whiteMaterial ); } if ( barWidth > 0.0f ) { renderSystem->SetColor( colorBlack ); renderSystem->DrawStretchPic( 0, 0, barWidth, SCREEN_HEIGHT, 0, 0, 1, 1, whiteMaterial ); renderSystem->DrawStretchPic( SCREEN_WIDTH - barWidth, 0, barWidth, SCREEN_HEIGHT, 0, 0, 1, 1, whiteMaterial ); } renderSystem->SetColor4( 1, 1, 1, 1 ); renderSystem->DrawStretchPic( barWidth, barHeight, SCREEN_WIDTH - barWidth * 2.0f, SCREEN_HEIGHT - barHeight * 2.0f, 0, 0, 1, 1, doomClassicMaterial ); } else if ( game && game->Shell_IsActive() ) { bool gameDraw = game->Draw( game->GetLocalClientNum() ); if ( !gameDraw ) { renderSystem->SetColor( colorBlack ); renderSystem->DrawStretchPic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, 1, 1, whiteMaterial ); } game->Shell_Render(); } else if ( readDemo ) { renderWorld->RenderScene( ¤tDemoRenderView ); renderSystem->DrawDemoPics(); } else if ( mapSpawned ) { bool gameDraw = false; // normal drawing for both single and multi player if ( !com_skipGameDraw.GetBool() && Game()->GetLocalClientNum() >= 0 ) { // draw the game view int start = Sys_Milliseconds(); if ( game ) { gameDraw = game->Draw( Game()->GetLocalClientNum() ); } int end = Sys_Milliseconds(); time_gameDraw += ( end - start ); // note time used for com_speeds } if ( !gameDraw ) { renderSystem->SetColor( colorBlack ); renderSystem->DrawStretchPic( 0, 0, 640, 480, 0, 0, 1, 1, whiteMaterial ); } // save off the 2D drawing from the game if ( writeDemo ) { renderSystem->WriteDemoPics(); } } else { renderSystem->SetColor4( 0, 0, 0, 1 ); renderSystem->DrawStretchPic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, 1, 1, whiteMaterial ); } { SCOPED_PROFILE_EVENT( "Post-Draw" ); // draw the wipe material on top of this if it hasn't completed yet DrawWipeModel(); Dialog().Render( loadGUI != NULL ); // draw the half console / notify console on top of everything console->Draw( false ); } }
/* =============== idCommonLocal::Draw =============== */ void idCommonLocal::Draw() { // debugging tool to test frame dropping behavior if( com_sleepDraw.GetInteger() ) { Sys_Sleep( com_sleepDraw.GetInteger() ); } if( loadGUI != NULL ) { loadGUI->Render( renderSystem, Sys_Milliseconds() ); } else if( game && game->Shell_IsActive() ) { bool gameDraw = game->Draw( game->GetLocalClientNum() ); if( !gameDraw ) { renderSystem->SetColor( colorBlack ); renderSystem->DrawStretchPic( 0, 0, renderSystem->GetVirtualWidth(), renderSystem->GetVirtualHeight(), 0, 0, 1, 1, whiteMaterial ); } game->Shell_Render(); } else if( readDemo ) { renderWorld->RenderScene( ¤tDemoRenderView ); renderSystem->DrawDemoPics(); } else if( mapSpawned ) { bool gameDraw = false; // normal drawing for both single and multi player if( !com_skipGameDraw.GetBool() && Game()->GetLocalClientNum() >= 0 ) { // draw the game view int start = Sys_Milliseconds(); if( game ) { gameDraw = game->Draw( Game()->GetLocalClientNum() ); } int end = Sys_Milliseconds(); time_gameDraw += ( end - start ); // note time used for com_speeds } if( !gameDraw ) { renderSystem->SetColor( colorBlack ); renderSystem->DrawStretchPic( 0, 0, renderSystem->GetVirtualWidth(), renderSystem->GetVirtualHeight(), 0, 0, 1, 1, whiteMaterial ); } // save off the 2D drawing from the game if( writeDemo ) { renderSystem->WriteDemoPics(); } } else { renderSystem->SetColor4( 0, 0, 0, 1 ); renderSystem->DrawStretchPic( 0, 0, renderSystem->GetVirtualWidth(), renderSystem->GetVirtualHeight(), 0, 0, 1, 1, whiteMaterial ); } { SCOPED_PROFILE_EVENT( "Post-Draw" ); // draw the wipe material on top of this if it hasn't completed yet DrawWipeModel(); Dialog().Render( loadGUI != NULL ); // draw the half console / notify console on top of everything console->Draw( false ); } }