/* ================= CL_SetSky_f Set a specified skybox (only for local clients) ================= */ void CL_SetSky_f( void ) { if( Cmd_Argc() < 2 ) { Msg( "Usage: skyname <shadername>\n" ); return; } R_SetupSky( Cmd_Argv( 1 )); }
/* ================== CL_ParseMovevars ================== */ void CL_ParseMovevars( sizebuf_t *msg ) { Delta_InitClient (); // finalize client delta's MSG_ReadDeltaMovevars( msg, &clgame.oldmovevars, &clgame.movevars ); // update sky if changed if( Q_strcmp( clgame.oldmovevars.skyName, clgame.movevars.skyName ) && cl.video_prepped ) R_SetupSky( clgame.movevars.skyName ); Q_memcpy( &clgame.oldmovevars, &clgame.movevars, sizeof( movevars_t )); // keep features an actual! clgame.oldmovevars.features = clgame.movevars.features = host.features; }
void R_NewMap( void ) { texture_t *tx; int i; R_ClearDecals(); // clear all level decals // upload detailtextures if( r_detailtextures->integer ) { string mapname, filepath; Q_strncpy( mapname, cl.worldmodel->name, sizeof( mapname )); FS_StripExtension( mapname ); Q_sprintf( filepath, "%s_detail.txt", mapname ); R_ParseDetailTextures( filepath ); } // clear out efrags in case the level hasn't been reloaded for( i = 0; i < cl.worldmodel->numleafs; i++ ) cl.worldmodel->leafs[i+1].efrags = NULL; tr.skytexturenum = -1; r_viewleaf = r_oldviewleaf = NULL; // clearing texture chains for( i = 0; i < cl.worldmodel->numtextures; i++ ) { if( !cl.worldmodel->textures[i] ) continue; tx = cl.worldmodel->textures[i]; if( !Q_strncmp( tx->name, "sky", 3 ) && tx->width == 256 && tx->height == 128) tr.skytexturenum = i; tx->texturechain = NULL; } R_SetupSky( cl.refdef.movevars->skyName ); GL_BuildLightmaps (); R_GenerateVBO(); }