#include #include using namespace Frontend; using namespace Frontend::Utils; using namespace Frontend::Utils::Simple; int main(int argc, char** argv) { SimpleSetup setup(GUI::CreateNativeWindowManager(), Graphics::OpenFrontendGL2CG()); try { // Initialize SimpleSetup setup.SetResolution(800, 600); setup.SetTitle("Hello Frontend!"); setup.SetFileSystemRoot("data"); setup.Start(); // Hook mouse and keyboard events Keyboard keyboard(setup.GetWindow()); Mouse mouse(setup.GetWindow()); setup.GetWindowManager()->HideCursor(); // Load scene RScene level("level.DAE"); // Load funky lightmap shader RProgram shader("shader.cg"); // Initialize renderer SimpleRenderer renderer(setup.GetGraphicsDevice()); renderer.SetProgram(shader); // Physics variables float walkSpeed = 50.0f; float turnSpeed = 0.1f; renderer.GetCamera()->SetPosition(Math::Vector3(0, 0, 5)); while (setup.Update()) { setup.GetGraphicsDevice()->Clear(Graphics::ClearBuffersAll, 0.3, 0.35, 0.65, 0, 1, 0); // Let WASD keys control walk/strafe float frameTime = setup.GetFrameTime(); if (keyboard.KeyDown('W')) renderer.GetCamera()->Move(frameTime * walkSpeed); if (keyboard.KeyDown('S')) renderer.GetCamera()->Move(-frameTime * walkSpeed); if (keyboard.KeyDown('A')) renderer.GetCamera()->Strafe(-frameTime * walkSpeed); if (keyboard.KeyDown('D')) renderer.GetCamera()->Strafe(frameTime * walkSpeed); // Let mouse control turn/pitch Math::Vector2i mouseDelta = mouse.Lock(setup.GetWindow()); renderer.GetCamera()->Turn(mouseDelta.x * turnSpeed); renderer.GetCamera()->Pitch(- mouseDelta.y * turnSpeed); // Draw the scene renderer.Render(setup.GetState(), level); } } catch (Exception e) { setup.HandleException(e); } }