static void init( /*const string &path*/ ) { // // GLEW Initialization // ARParam wparam; /* open the video path */ if( arVideoOpen( vconf ) < 0 ) exit(0); /* find the size of the window */ if( arVideoInqSize(&xsize, &ysize) < 0 ) exit(0); printf("Image size (x,y) = (%d,%d)\n", xsize, ysize); /* set the initial camera parameters */ if( arParamLoad(cparam_name, 1, &wparam) < 0 ) { printf("Camera parameter load error !!\n"); exit(0); } arParamChangeSize( &wparam, xsize, ysize, &cparam ); arInitCparam( &cparam ); printf("*** Camera Parameter ***\n"); arParamDisp( &cparam ); /* if( (patt_id=arLoadPatt(patt_name)) < 0 ) { printf("pattern load error !!\n"); exit(0); } */ GLenum err = glewInit (); if (GLEW_OK != err) { // Problem: glewInit failed, something is seriously wrong. cerr << "Error: " << glewGetErrorString (err) << endl; shutdownApp (); } if( (object=read_ObjData(model_name, &objectnum)) == NULL ) exit(0); printf("Objectfile num = %d\n", objectnum); /* open the graphics window */ argInit( &cparam, 1.0, 0, 0, 0, 0 ); // Initialize timer timer.current_time = 0; timer.last_time = 0; //Init. camera input rot.x = 0.0f; eye.x = 0.0f; rot.y = 0.0f; eye.y = 0.0f; rot.z = 0.0f; eye.z = 8.0f; //remove the trailing slash in the path name // string dirname (path); // if (dirname.find_last_of ('/') == dirname.length () - 1) // dirname.assign (dirname, 0, dirname.find_last_of ('/')); string dirname = "hueteotl"; string dirname2 = "turret"; string dirname3 = "gazebo"; string dirname4 = "roof"; // Get base dir for player if a *.md2 file is given if (dirname.find (".md2") == dirname.length () - 4) #ifdef _WIN32 dirname.assign (dirname, 0, dirname.find_last_of ('\\')); #else dirname.assign (dirname, 0, dirname.find_last_of ('/')); #endif // Get base dir for player if a *.md2 file is given if (dirname2.find (".md2") == dirname2.length () - 4) #ifdef _WIN32 dirname.assign (dirname2, 0, dirname2.find_last_of ('\\')); #else dirname.assign (dirname2, 0, dirname2.find_last_of ('/')); #endif // Get base dir for player if a *.md2 file is given if (dirname3.find (".md2") == dirname3.length () - 4) #ifdef _WIN32 dirname.assign (dirname3, 0, dirname3.find_last_of ('\\')); #else dirname.assign (dirname3, 0, dirname3.find_last_of ('/')); #endif // Get base dir for player if a *.md2 file is given if (dirname4.find (".md2") == dirname3.length () - 4) #ifdef _WIN32 dirname.assign (dirname3, 0, dirname3.find_last_of ('\\')); #else dirname.assign (dirname3, 0, dirname3.find_last_of ('/')); #endif // Load MD2 models try { player = new Md2Player (dirname); player->setScale (1.0f); player->setAnim ("run"); } catch (std::runtime_error &err) { cerr << "Error: failed to load player from " << dirname << endl; cerr << "Reason: " << err.what () << endl; if (errno) cerr << strerror (errno) << endl; exit (-1); } try { turret = new Md2Player (dirname2); turret->setScale (1.0f); turret->setAnim ("pow"); } catch (std::runtime_error &err) { cerr << "Error: failed to load player from " << dirname << endl; cerr << "Reason: " << err.what () << endl; if (errno) cerr << strerror (errno) << endl; exit (-1); } try { teleport = new Md2Player (dirname3); teleport->setScale (0.5f); teleport->setAnim ("baseframe"); } catch (std::runtime_error &err) { cerr << "Error: failed to load player from " << dirname3 << endl; cerr << "Reason: " << err.what () << endl; if (errno) cerr << strerror (errno) << endl; exit (-1); } try { roof = new Md2Player (dirname4); roof->setScale (0.5f); roof->setAnim ("baseframe"); } catch (std::runtime_error &err) { cerr << "Error: failed to load player from " << dirname4 << endl; cerr << "Reason: " << err.what () << endl; if (errno) cerr << strerror (errno) << endl; exit (-1); } //initalize enemies init_enemies(); //initialize bullets init_bullets(); //initialize openGL /* glClearColor (0.5f, 0.5f, 0.5f, 1.0f); glShadeModel (GL_SMOOTH); glEnable (GL_DEPTH_TEST); glEnable (GL_TEXTURE_2D); glEnable (GL_CULL_FACE); glEnable (GL_LIGHTING); glEnable (GL_LIGHT0); glCullFace (GL_BACK); */ glutTimerFunc(BULLET_SPAWN_INTERVAL, spawnBullets, 0); }
int main(int argc, char * argv[]) { // Command line parsing char* path = GetCmdOption(argv, argv + argc, "-p"); g_path = path ? path : g_path; char* modelname = GetCmdOption(argv, argv + argc, "-f"); g_modelname = modelname ? modelname : g_modelname; char* width = GetCmdOption(argv, argv + argc, "-w"); g_window_width = width ? atoi(width) : g_window_width; char* height = GetCmdOption(argv, argv + argc, "-h"); g_window_height = width ? atoi(height) : g_window_height; char* aorays = GetCmdOption(argv, argv + argc, "-ao"); g_ao_radius = aorays ? (float)atof(aorays) : g_ao_radius; char* bounces = GetCmdOption(argv, argv + argc, "-nb"); g_num_bounces = bounces ? atoi(bounces) : g_num_bounces; char* camposx = GetCmdOption(argv, argv + argc, "-cpx"); g_camera_pos.x = camposx ? (float)atof(camposx) : g_camera_pos.x; char* camposy = GetCmdOption(argv, argv + argc, "-cpy"); g_camera_pos.y = camposy ? (float)atof(camposy) : g_camera_pos.y; char* camposz = GetCmdOption(argv, argv + argc, "-cpz"); g_camera_pos.z = camposz ? (float)atof(camposz) : g_camera_pos.z; char* camatx = GetCmdOption(argv, argv + argc, "-tpx"); g_camera_at.x = camatx ? (float)atof(camatx) : g_camera_at.x; char* camaty = GetCmdOption(argv, argv + argc, "-tpy"); g_camera_at.y = camaty ? (float)atof(camaty) : g_camera_at.y; char* camatz = GetCmdOption(argv, argv + argc, "-tpz"); g_camera_at.z = camatz ? (float)atof(camatz) : g_camera_at.z; char* envmapmul = GetCmdOption(argv, argv + argc, "-em"); g_envmapmul = envmapmul ? (float)atof(envmapmul) : g_envmapmul; char* numsamples = GetCmdOption(argv, argv + argc, "-ns"); g_num_samples = numsamples ? atoi(numsamples) : g_num_samples; char* interop = GetCmdOption(argv, argv + argc, "-interop"); g_interop = interop ? (atoi(interop) > 0) : g_interop; char* cfg = GetCmdOption(argv, argv + argc, "-config"); if (cfg) { if (strcmp(cfg, "cpu") == 0) g_mode = ConfigManager::Mode::kUseSingleCpu; else if (strcmp(cfg, "gpu") == 0) g_mode = ConfigManager::Mode::kUseSingleGpu; else if (strcmp(cfg, "mcpu") == 0) g_mode = ConfigManager::Mode::kUseCpus; else if (strcmp(cfg, "mgpu") == 0) g_mode = ConfigManager::Mode::kUseGpus; else if (strcmp(cfg, "all") == 0) g_mode = ConfigManager::Mode::kUseAll; } char* cspeed = GetCmdOption(argv, argv + argc, "-cspeed"); g_cspeed = cspeed ? atof(cspeed) : g_cspeed; if (aorays) { g_num_ao_rays = atoi(aorays); g_ao_enabled = true; } if (CmdOptionExists(argv, argv + argc, "-r")) { g_progressive = true; } // GLUT Window Initialization: glutInit(&argc, (char**)argv); glutInitWindowSize(g_window_width, g_window_height); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("App"); #ifndef __APPLE__ GLenum err = glewInit(); if (err != GLEW_OK) { std::cout << "GLEW initialization failed\n"; return -1; } #endif try { InitGraphics(); InitCl(); InitData(); // Register callbacks: glutDisplayFunc(Render); glutReshapeFunc(Reshape); glutSpecialFunc(OnKey); glutSpecialUpFunc(OnKeyUp); glutMouseFunc(OnMouseButton); glutMotionFunc(OnMouseMove); glutIdleFunc(Update); StartRenderThreads(); glutMainLoop(); for (int i = 0; i < g_cfgs.size(); ++i) { if (i == g_primary) continue; g_ctrl[i].stop.store(true); } } catch (std::runtime_error& err) { std::cout << err.what(); return -1; } return 0; }
static void init (const string &playerpath, const string &weaponpath) { // // GLEW Initialization // GLenum err = glewInit (); if (GLEW_OK != err) { cerr << "Error: " << glewGetErrorString (err) << endl; shutdownApp (); } // // Application initialization // // Initialize keyboard memset (keyboard.keymap, 0, 256); memset (keyboard.special, 0, 256); // Initialize timer timer.current_time = 0; timer.last_time = 0; // Initialize camera input rot.x = 0.0f; eye.x = 0.0f; rot.y = 0.0f; eye.y = 0.0f; rot.z = 0.0f; eye.z = 8.0f; // Get base dir for player if a *.md3 file is given string playerdir (playerpath); if (playerdir.find (".md3") == playerdir.length () - 4) #ifdef _WIN32 playerdir.assign (playerdir, 0, playerdir.find_last_of ('\\')); #else playerdir.assign (playerdir, 0, playerdir.find_last_of ('/')); #endif // Initialize MD3 player try { // Load MD3 player player = new Md3Player (playerdir); player->setScale (0.05f); player->setAnimation (kTorsoStand); player->setAnimation (kLegsIdle); projectile = new Md3Player ("models\\dalek"); projectile->setScale (0.01f); projectile->setAnimation (kTorsoStand); projectile->setAnimation (kLegsIdle); // Load 2nd MD3 player projectile2 = new Md3Player ("models\\dalek"); projectile2->setScale (0.01f); projectile2->setAnimation (kTorsoStand); projectile2->setAnimation (kLegsIdle); player2 = new Md3Player (playerdir); player2->setScale (0.05f); player2->setAnimation (kTorsoStand); player2->setAnimation (kLegsIdle); string colour = "blue"; player2->setSkin(colour); } // Error catching awesomeness catch (std::runtime_error &err) { cerr << "Error: failed to load stuff!" << endl; cerr << "Reason: " << err.what () << endl; exit (-1); } // // Initialize OpenGL // glClearColor (0.5f, 0.5f, 5.5f, 1.0f); glShadeModel (GL_SMOOTH); glEnable (GL_DEPTH_TEST); glEnable (GL_TEXTURE_2D); glEnable (GL_CULL_FACE); glEnable (GL_LIGHTING); glEnable (GL_LIGHT0); glCullFace (GL_BACK); }