Show
Ignore:
Timestamp:
08/27/10 11:30:01 (21 months ago)
Author:
Carsten
Message:

Reintegrated branches/cafu_to_wx back into trunk!

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • cafu/trunk/Ca3DE/Client/ClientStateInGame.cpp

    r48 r136  
    2222*/ 
    2323 
     24#include "../AppCafu.hpp" 
     25#include "../MainCanvas.hpp" 
     26#include "../MainFrame.hpp" 
     27#include "../NetConst.hpp" 
     28 
    2429#include "ClientStateInGame.hpp" 
    2530#include "Client.hpp" 
     
    2732#include "PathRecorder.hpp" 
    2833 
    29 #include "../NetConst.hpp" 
    3034#include "GuiSys/Gui.hpp" 
    3135#include "GuiSys/GuiMan.hpp" 
     
    359363void ClientStateInGameT::Render(float FrameTime) 
    360364{ 
     365    const wxSize FrameSize=wxGetApp().GetMainFrame()->GetClientSize(); 
     366 
    361367    Graphs.ClearForFrame(ClientFrameNr); 
    362368 
     
    377383            Graphs.PosZ   [ClientFrameNr & (512-1)]=((unsigned short)(OurEntityCurrentState->Origin.z/20.0)) & 511; 
    378384 
     385            MatSys::Renderer->PushMatrix(MatSys::RendererI::PROJECTION    ); 
     386            MatSys::Renderer->PushMatrix(MatSys::RendererI::MODEL_TO_WORLD); 
     387            MatSys::Renderer->PushMatrix(MatSys::RendererI::WORLD_TO_VIEW ); 
     388 
     389            MatSys::Renderer->SetMatrix(MatSys::RendererI::PROJECTION, 
     390                // Note that the far plane is located at infinity for our stencil shadows implementation! 
     391                // A fovY of 67.5 corresponds to a fovX of 90.0 when the aspect ratio is 4:3. 
     392                MatrixT::GetProjPerspectiveMatrix(67.5f, float(FrameSize.GetWidth())/float(FrameSize.GetHeight()), 100.0f, -1.0f)); 
     393 
     394            MatSys::Renderer->SetMatrix(MatSys::RendererI::MODEL_TO_WORLD, MatrixT()); 
     395            MatSys::Renderer->SetMatrix(MatSys::RendererI::WORLD_TO_VIEW,  MatrixT()); 
     396 
    379397            World->Draw(FrameTime, OurEntityCurrentState); 
     398 
     399            MatSys::Renderer->PopMatrix(MatSys::RendererI::PROJECTION    ); 
     400            MatSys::Renderer->PopMatrix(MatSys::RendererI::MODEL_TO_WORLD); 
     401            MatSys::Renderer->PopMatrix(MatSys::RendererI::WORLD_TO_VIEW ); 
    380402 
    381403            // Die Framerate ist zwar World-unabhängig, ihre Anzeige hier aber besser aufgehoben (aus rein kosmetischen Gründen). 
     
    383405            static ConVarT ShowPosition("showPos", false, ConVarT::FLAG_MAIN_EXE, "Toggles whether the current players position is shown."); 
    384406 
    385             if (ShowFrameRate.GetValueBool()) Font_f.Print(SingleOpenGLWindow->GetWidth()-100, SingleOpenGLWindow->GetHeight()-16, 0x00FFFFFF, "FPS %5.1f", 1.0f/FrameTime); 
     407            if (ShowFrameRate.GetValueBool()) Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-16, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "FPS %5.1f", 1.0f/FrameTime); 
    386408 
    387409            if (ShowPosition.GetValueBool()) 
     
    393415                //     LeafContents=World->GetCa3DEWorldP()->Map.Leaves[LeafNr].IsWaterLeaf ? 'w' : 'i'; 
    394416 
    395                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 15, 0x00FFFFFF, "X %10.1f", OurEntityCurrentState->Origin.x); 
    396                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 35, 0x00FFFFFF, "Y %10.1f", OurEntityCurrentState->Origin.y); 
    397                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 55, 0x00FFFFFF, "Z %10.1f", OurEntityCurrentState->Origin.z); 
    398                 Font_f.Print(SingleOpenGLWindow->GetWidth()-130, 75, 0x00FFFFFF, "Hdg %8u", OurEntityCurrentState->Heading); 
    399              // Font_f.Print(SingleOpenGLWindow->GetWidth()-100, SingleOpenGLWindow->GetHeight()-32, 0x00FFFFFF, "L %4u %c", LeafNr, LeafContents); 
     417                Font_f.Print(FrameSize.GetWidth()-130, 15, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "X %10.1f", OurEntityCurrentState->Origin.x); 
     418                Font_f.Print(FrameSize.GetWidth()-130, 35, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Y %10.1f", OurEntityCurrentState->Origin.y); 
     419                Font_f.Print(FrameSize.GetWidth()-130, 55, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Z %10.1f", OurEntityCurrentState->Origin.z); 
     420                Font_f.Print(FrameSize.GetWidth()-130, 75, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "Hdg %8u", OurEntityCurrentState->Heading); 
     421             // Font_f.Print(FrameSize.GetWidth()-100, FrameSize.GetHeight()-32, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00FFFFFF, "L %4u %c", LeafNr, LeafContents); 
    400422            } 
    401423 
     
    412434        else 
    413435        { 
    414             Font_f.Print(30, SingleOpenGLWindow->GetHeight()*2/3, 0x00004080, "Receiving entity baselines..."); 
     436            Font_f.Print(30, FrameSize.GetHeight()*2/3, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00004080, "Receiving entity baselines..."); 
    415437        } 
    416438    } 
     
    426448            MatSys::Renderer->SetMatrix(MatSys::RendererI::MODEL_TO_WORLD, MatrixT()); 
    427449            MatSys::Renderer->SetMatrix(MatSys::RendererI::WORLD_TO_VIEW,  MatrixT()); 
    428             MatSys::Renderer->SetMatrix(MatSys::RendererI::PROJECTION,     MatrixT::GetProjOrthoMatrix(0.0f, float(SingleOpenGLWindow->GetWidth()), float(SingleOpenGLWindow->GetHeight()), 0.0f, -1.0f, 1.0f)); 
     450            MatSys::Renderer->SetMatrix(MatSys::RendererI::PROJECTION,     MatrixT::GetProjOrthoMatrix(0.0f, float(FrameSize.GetWidth()), float(FrameSize.GetHeight()), 0.0f, -1.0f, 1.0f)); 
    429451 
    430452            MatSys::Renderer->SetCurrentRenderAction(MatSys::RendererI::AMBIENT); 
     
    442464                // The coordinates have also been tested with a hor. and ver. stripe pattern texture for making sure that there is no 
    443465                // inadvertent scaling by plus or minus one pixel. 
    444                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f-512.0f, SingleOpenGLWindow->GetHeight()/2.0f-256.0f-20.0f); // links  oben 
    445                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f+512.0f, SingleOpenGLWindow->GetHeight()/2.0f-256.0f-20.0f); // rechts oben 
    446                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f+512.0f, SingleOpenGLWindow->GetHeight()/2.0f+256.0f-20.0f); // rechts unten 
    447                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2.0f-512.0f, SingleOpenGLWindow->GetHeight()/2.0f+256.0f-20.0f); // links  unten 
     466                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2.0f-512.0f, FrameSize.GetHeight()/2.0f-256.0f-20.0f); // links  oben 
     467                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2.0f+512.0f, FrameSize.GetHeight()/2.0f-256.0f-20.0f); // rechts oben 
     468                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2.0f+512.0f, FrameSize.GetHeight()/2.0f+256.0f-20.0f); // rechts unten 
     469                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2.0f-512.0f, FrameSize.GetHeight()/2.0f+256.0f-20.0f); // links  unten 
    448470 
    449471                MatSys::Renderer->SetCurrentMaterial(LogoRenderMat); 
     
    453475 
    454476        #if 0 
    455             const unsigned long BarHalfWidth=SingleOpenGLWindow->GetWidth()/2-40; 
     477            const unsigned long BarHalfWidth=FrameSize.GetWidth()/2-40; 
    456478 
    457479            // Render the left end of the loading bar. 
    458480            { 
    459                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth-16, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    460                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    461                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    462                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth-16, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     481                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth-16, FrameSize.GetHeight()*9/10-20   ); 
     482                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth   , FrameSize.GetHeight()*9/10-20   ); 
     483                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth   , FrameSize.GetHeight()*9/10-20+32); 
     484                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth-16, FrameSize.GetHeight()*9/10-20+32); 
    463485 
    464486                MatSys::Renderer->SetCurrentMaterial(LoadingBarLMat); 
     
    468490            // Render the center left (filled) part of the loading bar. 
    469491            { 
    470                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    471                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    472                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    473                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     492                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth                               , FrameSize.GetHeight()*9/10-20   ); 
     493                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20   ); 
     494                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20+32); 
     495                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth                               , FrameSize.GetHeight()*9/10-20+32); 
    474496 
    475497                MatSys::Renderer->SetCurrentMaterial(LoadingBar1Mat); 
     
    479501            // Render the center right (not yet filled) part of the loading bar. 
    480502            { 
    481                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    482                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    483                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth                               , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    484                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     503                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20   ); 
     504                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth                               , FrameSize.GetHeight()*9/10-20   ); 
     505                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth                               , FrameSize.GetHeight()*9/10-20+32); 
     506                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2-BarHalfWidth+2*BarHalfWidth*ProgressPercent, FrameSize.GetHeight()*9/10-20+32); 
    485507 
    486508                MatSys::Renderer->SetCurrentMaterial(LoadingBar0Mat); 
     
    490512            // Render the right end of the loading bar. 
    491513            { 
    492                 M.Vertices[0].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    493                 M.Vertices[1].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth+16, SingleOpenGLWindow->GetHeight()*9/10-20   ); 
    494                 M.Vertices[2].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth+16, SingleOpenGLWindow->GetHeight()*9/10-20+32); 
    495                 M.Vertices[3].SetOrigin(SingleOpenGLWindow->GetWidth()/2+BarHalfWidth   , SingleOpenGLWindow->GetHeight()*9/10-20+32); 
     514                M.Vertices[0].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth   , FrameSize.GetHeight()*9/10-20   ); 
     515                M.Vertices[1].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth+16, FrameSize.GetHeight()*9/10-20   ); 
     516                M.Vertices[2].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth+16, FrameSize.GetHeight()*9/10-20+32); 
     517                M.Vertices[3].SetOrigin(FrameSize.GetWidth()/2+BarHalfWidth   , FrameSize.GetHeight()*9/10-20+32); 
    496518 
    497519                MatSys::Renderer->SetCurrentMaterial(LoadingBarRMat); 
     
    507529 
    508530            #ifdef DEBUG 
    509                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-34*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+12, 0x00800000, "Version: %s [Debug build], %s", __DATE__, LoadingProgressText.c_str()); 
     531                LoadingFont->Print(FrameSize.GetWidth()/2-34*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: %s [Debug build], %s", __DATE__, LoadingProgressText.c_str()); 
    510532            #else 
    511                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-20*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+12, 0x00800000, "Version: %s", __DATE__); 
     533                LoadingFont->Print(FrameSize.GetWidth()/2-20*CharWidth/2, FrameSize.GetHeight()*9/10+12, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Version: %s", __DATE__); 
    512534            #endif 
    513535 
    514536            if (LoadingProgressPercent>0) 
    515                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-10*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+30, 0x00800000, "Loading... %.0f%%", LoadingProgressPercent*100.0f); 
     537                LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Loading... %.0f%%", LoadingProgressPercent*100.0f); 
    516538            else 
    517                 LoadingFont->Print(SingleOpenGLWindow->GetWidth()/2-10*CharWidth/2, SingleOpenGLWindow->GetHeight()*9/10+30, 0x00800000, "Loading..."); 
     539                LoadingFont->Print(FrameSize.GetWidth()/2-10*CharWidth/2, FrameSize.GetHeight()*9/10+30, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00800000, "Loading..."); 
    518540        } 
    519541        else 
     
    521543            // We have no world yet, and are currently not loading one, 
    522544            // which means that we're still waiting for a SC1_WorldInfo message. 
    523             Font_f.Print(5, 200, 0x00DDFFBB, "Waiting for SC1_WorldInfo message..."); 
     545            Font_f.Print(5, 200, FrameSize.GetWidth(), FrameSize.GetHeight(), 0x00DDFFBB, "Waiting for SC1_WorldInfo message..."); 
    524546        } 
    525547    } 
     
    536558    } 
    537559 
    538     ChatScrollInfo  .Draw(Font_v, 5, SingleOpenGLWindow->GetHeight()-10-140); 
     560    ChatScrollInfo  .Draw(Font_v, 5, FrameSize.GetHeight()-10-140, FrameSize.GetWidth(), FrameSize.GetHeight()); 
    539561    ChatScrollInfo  .AdvanceTime(FrameTime); 
    540     SystemScrollInfo.Draw(Font_v, 5, 15); 
     562    SystemScrollInfo.Draw(Font_v, 5, 15, FrameSize.GetWidth(), FrameSize.GetHeight()); 
    541563    SystemScrollInfo.AdvanceTime(FrameTime); 
    542564 
     
    589611 
    590612    MatSys::Renderer->EndFrame(); 
    591     SingleOpenGLWindow->SwapBuffers(); 
     613    wxGetApp().GetMainFrame()->GetMainCanvas()->SwapBuffers(); 
    592614 
    593615    SoundSystem->Update(); 
     
    805827    if (World) 
    806828    { 
    807         cf::GuiSys::GuiI* ActiveGui=cf::GuiSys::GuiMan->GetTopmostActiveAndInteractive(); 
     829        cf::GuiSys::GuiI*  ActiveGui =cf::GuiSys::GuiMan->GetTopmostActiveAndInteractive(); 
     830        const wxMouseState MouseState=wxGetMouseState(); 
    808831        assert(ActiveGui!=NULL);    // The GUI of the client for the world output must always be there. 
    809832 
    810833        // This is unfortunately needed, because the users last click (in the GUI) that brought us here may still have the "LMB up" event pending. 
    811         WasLMBOnceUp|=(SingleOpenGLWindow->GetMouseButtonState() & 0x1)==0; 
     834        WasLMBOnceUp=WasLMBOnceUp || !MouseState.LeftIsDown(); 
    812835 
    813836        // FIXME: Should test for ActiveGui==ClientGui instead of ActiveGui->GetScriptName()=="". 
    814837        if (ActiveGui->GetScriptName()=="" && WasLMBOnceUp) 
    815838        { 
    816             if (SingleOpenGLWindow->GetMouseButtonState() & 0x1) PlayerCommand.Keys|=PCK_Fire1;  // Button 0 
    817             if (SingleOpenGLWindow->GetMouseButtonState() & 0x6) PlayerCommand.Keys|=PCK_Fire2;  // Button 1 oder 2 
     839            if (MouseState.LeftIsDown())                               PlayerCommand.Keys|=PCK_Fire1; 
     840            if (MouseState.MiddleIsDown() || MouseState.RightIsDown()) PlayerCommand.Keys|=PCK_Fire2; 
    818841 
    819842            // Alle anderen Keys via KeyboardState bestimmen und über die volle Frametime anwenden. 
     
    821844            // Mit anderen Worten: Diesen Kram mit in die obige Buffer-Schleife nehmen! 
    822845            // Player movement / state 
    823          // if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_RCONTROL   ]) ;                                       // R_Strg   Run 
    824             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_RSHIFT     ] ||                                       // R_Shift  Stealth 
    825                 SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_LSHIFT     ]) PlayerCommand.Keys|=PCK_Walk;           // L_Shift  Stealth 
    826             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_UP         ] ||                                       // Up       Walk forward 
    827                 SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_W          ]) PlayerCommand.Keys|=PCK_MoveForward;    // W        Walk forward 
    828             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_DOWN       ] ||                                       // Down     Walk backward 
    829                 SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_S          ]) PlayerCommand.Keys|=PCK_MoveBackward;   // S        Walk backward 
    830             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_A          ] ||                                       // A        Strafe left 
    831                 SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_COMMA      ]) PlayerCommand.Keys|=PCK_StrafeLeft;     // ,        Strafe left 
    832             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_D          ] ||                                       // D        Strafe right 
    833                 SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_PERIOD     ]) PlayerCommand.Keys|=PCK_StrafeRight;    // .        Strafe right 
    834             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_R          ]) PlayerCommand.Keys|=PCK_Fire1;          // R        Fire/Respawn 
    835             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_RETURN     ] ||                                       // RETURN   Use 
    836                 SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_NUMPADENTER]) PlayerCommand.Keys|=PCK_Use;            // ENTER    Use 
    837             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_LEFT       ]) PlayerCommand.Keys|=PCK_TurnLeft;       // Left     Turn left 
    838             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_RIGHT      ]) PlayerCommand.Keys|=PCK_TurnRight;      // Right    Turn right 
    839             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_PGDN       ]) PlayerCommand.Keys|=PCK_LookUp;         //          Look up 
    840             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_PGUP       ]) PlayerCommand.Keys|=PCK_LookDown;       //          Look down 
    841          // if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_HOME       ]) PlayerCommand.Keys|=PCK_BankCW          //          Bank CW 
    842          // if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_INSERT     ]) PlayerCommand.Keys|=PCK_BankCCW;        //          Bank CCW 
    843             if (SingleOpenGLWindow->GetKeyboardState()[CaKeyboardEventT::CK_END        ]) PlayerCommand.Keys|=PCK_CenterView; 
     846         // if (wxGetKeyState(WXK_CONTROL)     ) ;                                       // R_Strg   Run 
     847            if (wxGetKeyState(WXK_SHIFT)       ) PlayerCommand.Keys|=PCK_Walk;           // Shift  Stealth 
     848            if (wxGetKeyState(WXK_UP) ||                                                 // Up       Walk forward 
     849                wxGetKeyState(wxKeyCode('W'))  ) PlayerCommand.Keys|=PCK_MoveForward;    // W        Walk forward 
     850            if (wxGetKeyState(WXK_DOWN) ||                                               // Down     Walk backward 
     851                wxGetKeyState(wxKeyCode('S'))  ) PlayerCommand.Keys|=PCK_MoveBackward;   // S        Walk backward 
     852            if (wxGetKeyState(wxKeyCode('A')) ||                                         // A        Strafe left 
     853                wxGetKeyState(wxKeyCode(','))  ) PlayerCommand.Keys|=PCK_StrafeLeft;     // ,        Strafe left 
     854            if (wxGetKeyState(wxKeyCode('D')) ||                                         // D        Strafe right 
     855                wxGetKeyState(wxKeyCode('.'))  ) PlayerCommand.Keys|=PCK_StrafeRight;    // .        Strafe right 
     856            if (wxGetKeyState(wxKeyCode('R'))  ) PlayerCommand.Keys|=PCK_Fire1;          // R        Fire/Respawn 
     857            if (wxGetKeyState(WXK_RETURN) ||                                             // RETURN   Use 
     858                wxGetKeyState(WXK_NUMPAD_ENTER)) PlayerCommand.Keys|=PCK_Use;            // ENTER    Use 
     859            if (wxGetKeyState(WXK_LEFT        )) PlayerCommand.Keys|=PCK_TurnLeft;       // Left     Turn left 
     860            if (wxGetKeyState(WXK_RIGHT       )) PlayerCommand.Keys|=PCK_TurnRight;      // Right    Turn right 
     861            if (wxGetKeyState(WXK_PAGEDOWN    )) PlayerCommand.Keys|=PCK_LookUp;         //          Look up 
     862            if (wxGetKeyState(WXK_PAGEUP      )) PlayerCommand.Keys|=PCK_LookDown;       //          Look down 
     863         // if (wxGetKeyState(WXK_HOME        )) PlayerCommand.Keys|=PCK_BankCW          //          Bank CW 
     864         // if (wxGetKeyState(WXK_INSERT      )) PlayerCommand.Keys|=PCK_BankCCW;        //          Bank CCW 
     865            if (wxGetKeyState(WXK_END         )) PlayerCommand.Keys|=PCK_CenterView; 
    844866        } 
    845867