private static void Command_version(string[] parameters) { ConsoleManager.WriteLine(ConsoleVarManager.GetValueToString("VersionLong")); }
public unsafe static void Keyboard(byte key, int x, int y) { //Console.WriteLine("Key = " + key); if (ConsoleManager.IsOpen) { // If console is open... switch (key) { case 96: // "~" key pressed case 126: ConsoleManager.Close(); Reshape(ConsoleVarManager.GetValueToUShort("ScreenWidth"), ConsoleVarManager.GetValueToUShort("ScreenHeight")); break; case 8: // Backspace key pressed case 127: // Del key pressed ConsoleLogManager.DeleteBufferChar(); break; case 9: // Tab key pressed; do nothing case 27: // Escape key pressed; do nothing break; case 13: // Enter key pressed string Command = ConsoleLogManager.ReadBuffer(); // Flush the buffer ConsoleManager.WriteLine(); // Execute command CommandManager.ExecuteCommand(Command); // Redisplay the console ConsoleManager.Open(); break; default: byte *keyptr = &key; ConsoleManager.Write(new string((sbyte *)keyptr)); break; } } else { // If console is closed switch (key) { case 96: // "~" key pressed case 126: ConsoleManager.Open(); Reshape(ConsoleVarManager.GetValueToUShort("ScreenWidth"), ConsoleVarManager.GetValueToUShort("ScreenHeight")); break; } if (ConsoleVarManager.GetValueToByte("DemoFreeglut") == 1) { switch (key) { case 81: // 'Q' key pressed case 113: SpinIncrement += 0.25f; break; case 90: // 'Z' key pressed case 122: SpinIncrement -= 0.25f; break; case 70: // 'F' key pressed case 102: FG.FullScreenToggle(); break; case 49: // '1', '2', '3', '4', '5' key pressed case 50: case 51: case 52: case 53: key -= 48; DrawObject = (ObjectNames)key; break; case 65: // 'A' key pressed case 97: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(-1.0f, 0.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 83: // 'S' key pressed case 115: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(0.0f, -1.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 68: // 'D' key pressed case 100: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(+1.0f, 0.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 87: // 'W' key pressed case 119: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(0.0f, +1.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 27: // ESCAPE key pressed, so exit the program RotateAroundX = false; RotateAroundY = false; RotateAroundZ = false; FG.IdleFunc(null); FG.KeyboardFunc(null); FG.MouseFunc(null); FG.ReshapeFunc(null); FG.DestroyWindow(FG.GetWindow()); break; } } if (ConsoleVarManager.GetValueToByte("DemoGUI") == 1) { switch (key) { case 81: // 'Q' key pressed case 113: SpinIncrement += 0.25f; break; case 90: // 'Z' key pressed case 122: SpinIncrement -= 0.25f; break; case 70: // 'F' key pressed case 102: FG.FullScreenToggle(); break; case 65: // 'A' key pressed case 97: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(-1.0f, 0.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 83: // 'S' key pressed case 115: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(0.0f, -1.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 68: // 'D' key pressed case 100: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(+1.0f, 0.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 87: // 'W' key pressed case 119: GL.MatrixMode(GL.GL_PROJECTION); GL.Translatef(0.0f, +1.0f, 0.0f); GL.MatrixMode(GL.GL_MODELVIEW); break; case 27: // ESCAPE key pressed, so exit the program RotateAroundX = false; RotateAroundY = false; RotateAroundZ = false; FG.IdleFunc(null); FG.KeyboardFunc(null); FG.MouseFunc(null); FG.ReshapeFunc(null); FG.DestroyWindow(FG.GetWindow()); break; } } } }
// Init public static void Init() { if (ConsoleVarManager.GetValueToString("Q2ConsoleInit") == "true") { // Init FreeGlut int[] argc = new int[1]; argc[0] = 0; string[] argv = null; FG.Init(argc, argv); FG.InitDisplayMode(FG.GLUT_RGBA | FG.GLUT_DOUBLE | FG.GLUT_DEPTH); FG.InitWindowPosition(25, 25); FG.InitWindowSize(1024, 768); FG.InitContextVersion(2, 1); FG.InitContextFlags((int)FG.GLUT_FORWARD_COMPATIBLE); FG.InitContextProfile((int)FG.GLUT_COMPATIBILITY_PROFILE); int hWindow = FG.CreateWindow(ConsoleVarManager.GetValueToString("VersionLong")); // Setup OpenGL window and OpenGL itself GL.Init(true); // Init DevIL -> Developers Image Libary IL.Init(); ILU.Init(); ILUT.Init(); ILUT.Renderer(ILUT.ILUT_OPENGL); } SetupGL(); // Each time ScreenSize changes, this must be called ConsoleManager.Init(); // Each time ScreenSize changes, this must be called if (ConsoleVarManager.GetValueToString("Q2ConsoleInit") == "true") { string[] OpenGLDotNetInitLog = GLConfig.LogDumpToString(); foreach (string Line in OpenGLDotNetInitLog) { ConsoleManager.WriteLine(Line); } } if (ConsoleVarManager.GetValueToString("Q2ConsoleInit") == "true") { // We don't want to Init and Add commands each time ScreenSize changes CommandManager.Init(); CommandManager.ExecuteCommand("openglinfo"); CommandManager.ExecuteCommand("cpuinfo"); CommandManager.ExecuteCommand("help"); FG.IdleFunc(IdleProc); FG.KeyboardFunc(KeyboardProc); FG.MouseFunc(MouseProc); FG.ReshapeFunc(ReshapeProc); FG.DisplayFunc(DisplayProc); GL.Clear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); FG.SwapBuffers(); // Before entering FG.MainLoop(), we must set the variable ConsoleVarManager.Set("Q2ConsoleInit", "false"); // Enter the FG.MainLoop() FG.SetOption(FG.GLUT_ACTION_ON_WINDOW_CLOSE, (int)FG.GLUT_ACTION_GLUTMAINLOOP_RETURNS); FG.MainLoop(); } }
public static void Reshape(int width, int height) { //Console.WriteLine("Reshape: {0}x{1}", width, height); if (width <= 0) { width = 1; } if (height <= 0) { height = 1; } ConsoleVarManager.SetOrCreate("ScreenWidth", width.ToString(), 0); ConsoleVarManager.SetOrCreate("ScreenHeight", height.ToString(), 0); ConsoleManager.Init(); SetupGL(); if (ConsoleManager.IsOpen) { GL.Viewport(0, 0, width, height); GL.MatrixMode(GL.GL_PROJECTION); GL.LoadIdentity(); GL.Ortho(0, width, height, 0, -4096, 4096); GL.MatrixMode(GL.GL_MODELVIEW); GL.LoadIdentity(); } else { if (ConsoleVarManager.GetValueToByte("DemoFreeglut") == 1) { float ratio = 0; float ortho = 30; GL.Viewport(0, 0, width, height); GL.MatrixMode(GL.GL_PROJECTION); GL.LoadIdentity(); if (width >= height) { ratio = (float)width / (float)height; GL.Ortho(-ortho * ratio, ortho * ratio, -ortho, ortho, -ortho, ortho); } else { ratio = (float)height / (float)width; GL.Ortho(-ortho, ortho, -ortho * ratio, ortho * ratio, -ortho, ortho); } GL.MatrixMode(GL.GL_MODELVIEW); GL.LoadIdentity(); } if (ConsoleVarManager.GetValueToByte("DemoCubemapping") == 1) { GL.Viewport(0, 0, width, height); // Set the viewport for the OpenGL window GL.MatrixMode(GL.GL_PROJECTION); GL.LoadIdentity(); GLU.Perspective(45.0, (float)width / (float)height, 1.0, 100.0); // Do the perspective calculations. Last value = max clipping depth GL.MatrixMode(GL.GL_MODELVIEW); GL.LoadIdentity(); } if (ConsoleVarManager.GetValueToByte("DemoGUI") == 1) { GL.Viewport(0, 0, width, height); GL.MatrixMode(GL.GL_PROJECTION); GL.LoadIdentity(); GL.Ortho(0, width, height, 0, -4096, 4096); GL.MatrixMode(GL.GL_MODELVIEW); GL.LoadIdentity(); } } }