/** * Display callback function */ void DisplayCallback() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gameLogic(); if (gameState == GAME_RUNNING){ if(useDeferred) { //UPDATE PLIGHTS NEEDED if(plights.size() < torchFire->positions.size()) { addPointLights(); } //BUILD G-BUFFER dfe->PreDrawScene(); //lighting ADT Lights(); //DRAW OBJECTS AND EVIRONMENT //GETS STORED IN G-BUFFER FOR RENDERING renderWorld(); //transforms and draws the world as Rusko moves around drawRusko(); //transforms and draws Rusko //PREPARE FOR RENDING dfe->PostDrawScene(); //lighting ADT //-------------------------------// // Render the scene with shaders // //-------------------------------// dfe->DrawColors(windowWidth, windowHeight); dfe->PreDrawPointLights(windowWidth, windowHeight, zNear, zFar); DrawPointLights(); dfe->PostDrawPointLights(); //-----------------------------// // End render the scene // //-----------------------------// } else { renderWorld(); //transforms and draws the world as Rusko moves around drawRusko(); //transforms and draws Rusko } //FIRE RENDERED AFTER EVERYTHING ELSE drawRotatedParticles(); torchParticles->display(); } ReshapeCallback(windowWidth, windowHeight); glFlush(); glutSwapBuffers(); }
//void SetChromakey(); void SP_worldspawn (edict_t *ent) { // ACEBOT_ADD static char current_map[55]; // ACEBOT_END ent->movetype = MOVETYPE_PUSH; ent->solid = SOLID_BSP; ent->inuse = true; // since the world doesn't use G_Spawn() ent->s.modelindex = 1; // world model is always index 1 //--------------- // Knightmare- DM pause starts off paused = false; // reserve some spots for dead player bodies for coop / deathmatch InitBodyQue (); // set configstrings for items SetItemNames (); if (st.nextmap) strcpy (level.nextmap, st.nextmap); // make some data visible to the server if (ent->message && ent->message[0]) { gi.configstring (CS_NAME, ent->message); strncpy (level.level_name, ent->message, sizeof(level.level_name)); } else strncpy (level.level_name, level.mapname, sizeof(level.level_name)); if (st.sky && st.sky[0]) gi.configstring (CS_SKY, st.sky); else gi.configstring (CS_SKY, "unit1_"); gi.configstring (CS_SKYROTATE, va("%f", st.skyrotate) ); gi.configstring (CS_SKYAXIS, va("%f %f %f", st.skyaxis[0], st.skyaxis[1], st.skyaxis[2]) ); // Knightmare- if a named soundtrack is specified, play it instead of from CD if (ent->musictrack && strlen(ent->musictrack)) gi.configstring (CS_CDTRACK, ent->musictrack); else gi.configstring (CS_CDTRACK, va("%i", ent->sounds) ); gi.configstring (CS_MAXCLIENTS, va("%i", (int)(maxclients->value) ) ); // Knightmare added if (ttctf->value) { gi.cvar_forceset("ctf", "1"); gi.cvar_forceset("deathmatch", "1"); } else if (ctf->value) gi.cvar_forceset("deathmatch", "1"); // status bar program if (deathmatch->value) { //ZOID if (ctf->value) { if (ttctf->value) // Knightmare added gi.configstring (CS_STATUSBAR, ttctf_statusbar); else gi.configstring (CS_STATUSBAR, ctf_statusbar); CTFPrecache(); } else gi.configstring (CS_STATUSBAR, dm_statusbar); } //ZOID else gi.configstring (CS_STATUSBAR, single_statusbar); //--------------- // ACEBOT_ADD // If the map changes on us, init and reload the nodes if (deathmatch->value && strcmp(level.mapname,current_map)) { ACEND_InitNodes(); ACEND_LoadNodes(); //ACESP_LoadBots(); // Knightmare- removed this ACESP_LoadBotInfo(); // Knightmare- load bot info file strcpy(current_map,level.mapname); } // ACEBOT_END // help icon for statusbar gi.imageindex ("i_help"); level.pic_health = gi.imageindex ("i_health"); gi.imageindex ("help"); gi.imageindex ("field_3"); if (!st.gravity) gi.cvar_set("sv_gravity", "800"); else gi.cvar_set("sv_gravity", st.gravity); snd_fry = gi.soundindex ("player/fry.wav"); // standing in lava / slime PrecacheItem (FindItem ("Blaster")); gi.soundindex ("player/lava1.wav"); gi.soundindex ("player/lava2.wav"); gi.soundindex ("misc/pc_up.wav"); gi.soundindex ("misc/talk1.wav"); gi.soundindex ("misc/udeath.wav"); // gibs gi.soundindex ("items/respawn1.wav"); // sexed sounds gi.soundindex ("*death1.wav"); gi.soundindex ("*death2.wav"); gi.soundindex ("*death3.wav"); gi.soundindex ("*death4.wav"); gi.soundindex ("*fall1.wav"); gi.soundindex ("*fall2.wav"); gi.soundindex ("*gurp1.wav"); // drowning damage gi.soundindex ("*gurp2.wav"); gi.soundindex ("*jump1.wav"); // player jump gi.soundindex ("*pain25_1.wav"); gi.soundindex ("*pain25_2.wav"); gi.soundindex ("*pain50_1.wav"); gi.soundindex ("*pain50_2.wav"); gi.soundindex ("*pain75_1.wav"); gi.soundindex ("*pain75_2.wav"); gi.soundindex ("*pain100_1.wav"); gi.soundindex ("*pain100_2.wav"); // sexed models // THIS ORDER MUST MATCH THE DEFINES IN g_local.h // you can add more, max 64 if (use_vwep->value || deathmatch->value) { gi.modelindex ("#w_blaster.md2"); gi.modelindex ("#w_shotgun.md2"); gi.modelindex ("#w_sshotgun.md2"); gi.modelindex ("#w_machinegun.md2"); gi.modelindex ("#w_chaingun.md2"); gi.modelindex ("#a_grenades.md2"); gi.modelindex ("#w_glauncher.md2"); gi.modelindex ("#w_rlauncher.md2"); gi.modelindex ("#w_hyperblaster.md2"); gi.modelindex ("#w_railgun.md2"); gi.modelindex ("#w_bfg.md2"); if (ctf->value) gi.modelindex ("#w_grapple.md2"); } //------------------- gi.soundindex ("player/gasp1.wav"); // gasping for air gi.soundindex ("player/gasp2.wav"); // head breaking surface, not gasping gi.soundindex ("player/watr_in.wav"); // feet hitting water gi.soundindex ("player/watr_out.wav"); // feet leaving water gi.soundindex ("player/watr_un.wav"); // head going underwater gi.soundindex ("player/u_breath1.wav"); gi.soundindex ("player/u_breath2.wav"); gi.soundindex ("items/pkup.wav"); // bonus item pickup gi.soundindex ("world/land.wav"); // landing thud gi.soundindex ("misc/h2ohit1.wav"); // landing splash gi.soundindex ("items/damage.wav"); gi.soundindex ("items/protect.wav"); gi.soundindex ("items/protect4.wav"); gi.soundindex ("weapons/noammo.wav"); gi.soundindex ("infantry/inflies1.wav"); sm_meat_index = gi.modelindex ("models/objects/gibs/sm_meat/tris.md2"); gi.modelindex ("models/objects/gibs/arm/tris.md2"); gi.modelindex ("models/objects/gibs/bone/tris.md2"); gi.modelindex ("models/objects/gibs/bone2/tris.md2"); gi.modelindex ("models/objects/gibs/chest/tris.md2"); gi.modelindex ("models/objects/gibs/skull/tris.md2"); gi.modelindex ("models/objects/gibs/head2/tris.md2"); gi.soundindex ("mud/mud_in2.wav"); gi.soundindex ("mud/mud_out1.wav"); gi.soundindex ("mud/mud_un1.wav"); gi.soundindex ("mud/wade_mud1.wav"); gi.soundindex ("mud/wade_mud2.wav"); Lights(); // Fog clipping - if "fogclip" is non-zero, force gl_clear to a good // value for obscuring HOM with fog... "good" is driver-dependent if(ent->fogclip) { if(gl_driver && !Q_stricmp(gl_driver->string,"3dfxgl")) gi.cvar_forceset("gl_clear", "0"); else gi.cvar_forceset("gl_clear", "1"); } // cvar overrides for effects flags: if(alert_sounds->value) world->effects |= FX_WORLDSPAWN_ALERTSOUNDS; if(corpse_fade->value) world->effects |= FX_WORLDSPAWN_CORPSEFADE; if(jump_kick->value) world->effects |= FX_WORLDSPAWN_JUMPKICK; }
void ToggleLights() { gi.cvar_set ("lights", va("%i", !lights->value)); // lights->value = !lights->value; Lights(); }
void ToggleLights() { lights->value = !lights->value; Lights(); }