本文整理汇总了C++中CM_InlineModel函数的典型用法代码示例。如果您正苦于以下问题:C++ CM_InlineModel函数的具体用法?C++ CM_InlineModel怎么用?C++ CM_InlineModel使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CM_InlineModel函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CL_ParseConfigString
/*
================
CL_ParseConfigString
================
*/
void CL_ParseConfigString(void)
{
int i;
char *s;
char olds[MAX_QPATH];
i = MSG_ReadShort(&net_message);
if (i < 0 || i >= MAX_CONFIGSTRINGS)
Com_Error(ERR_DROP, "configstring > MAX_CONFIGSTRINGS");
s = MSG_ReadString(&net_message);
strncpy(olds, cl.configstrings[i], sizeof(olds));
olds[sizeof(olds)-1] = 0;
strcpy(cl.configstrings[i], s);
// do something apropriate
if (i >= CS_LIGHTS && i < CS_LIGHTS + MAX_LIGHTSTYLES)
CL_SetLightstyle(i - CS_LIGHTS);
else if (i == CS_CDTRACK)
{
if (cl.refresh_prepped)
// CDAudio_Play (atoi(cl.configstrings[CS_CDTRACK]), true);
CL_PlayBackgroundTrack(); // Knightmare changed
}
else if (i >= CS_MODELS && i < CS_MODELS + MAX_MODELS)
{
if (cl.refresh_prepped)
{
cl.model_draw[i - CS_MODELS] = re.RegisterModel(cl.configstrings[i]);
if (cl.configstrings[i][0] == '*')
cl.model_clip[i - CS_MODELS] = CM_InlineModel(cl.configstrings[i]);
else
cl.model_clip[i - CS_MODELS] = NULL;
}
}
else if (i >= CS_SOUNDS && i < CS_SOUNDS + MAX_MODELS)
{
if (cl.refresh_prepped)
cl.sound_precache[i - CS_SOUNDS] = S_RegisterSound(cl.configstrings[i]);
}
else if (i >= CS_IMAGES && i < CS_IMAGES + MAX_MODELS)
{
if (cl.refresh_prepped)
cl.image_precache[i - CS_IMAGES] = re.RegisterPic(cl.configstrings[i]);
}
else if (i >= CS_PLAYERSKINS && i < CS_PLAYERSKINS + MAX_CLIENTS)
{
if (cl.refresh_prepped && strcmp(olds, s))
CL_ParseClientinfo(i - CS_PLAYERSKINS);
}
}
示例2: SV_ClearWorld
/*
===============
SV_ClearWorld
===============
*/
void SV_ClearWorld( void ) {
clipHandle_t h;
vec3_t mins, maxs;
Com_Memset( sv_worldSectors, 0, sizeof(sv_worldSectors) );
sv_numworldSectors = 0;
// get world map bounds
h = CM_InlineModel( 0 );
CM_ModelBounds( h, mins, maxs );
SV_CreateworldSector( 0, mins, maxs );
}
示例3: SV_ClipHandleForEntity
/*
================
SV_ClipHandleForEntity
Returns a headnode that can be used for testing or clipping to a
given entity. If the entity is a bsp model, the headnode will
be returned, otherwise a custom box tree will be constructed.
================
*/
clipHandle_t SV_ClipHandleForEntity( const sharedEntity_t *ent ) {
if ( ent->r.bmodel ) {
// explicit hulls in the BSP model
return CM_InlineModel( ent->s.modelindex );
}
if ( ent->r.svFlags & SVF_CAPSULE ) {
// create a temp capsule from bounding box sizes
return CM_TempBoxModel( ent->r.mins, ent->r.maxs, qtrue );
}
// create a temp tree from bounding box sizes
return CM_TempBoxModel( ent->r.mins, ent->r.maxs, qfalse );
}
示例4: SV_ClipHandleForEntity
/*
* SV_ClipHandleForEntity
*
* Returns a headnode that can be used for testing or clipping to a
* given entity. If the entity is a bsp model, the headnode will
* be returned, otherwise a custom box tree will be constructed.
*/
Cliphandle
SV_ClipHandleForEntity(const Sharedent *ent)
{
if(ent->r.bmodel)
/* explicit hulls in the BSP model */
return CM_InlineModel(ent->s.modelindex);
if(ent->r.svFlags & SVF_CAPSULE)
/* create a temp capsule from bounding box sizes */
return CM_TempBoxModel(ent->r.mins, ent->r.maxs, qtrue);
/* create a temp tree from bounding box sizes */
return CM_TempBoxModel(ent->r.mins, ent->r.maxs, qfalse);
}
示例5: SV_ClearWorld
/*
* SV_ClearWorld
*
*/
void
SV_ClearWorld(void)
{
Cliphandle h;
Vec3 mins, maxs;
Q_Memset(sv_worldSectors, 0, sizeof(sv_worldSectors));
sv_numworldSectors = 0;
/* get world map bounds */
h = CM_InlineModel(0);
CM_ModelBounds(h, mins, maxs);
SV_CreateworldSector(0, mins, maxs);
}
示例6: SV_ClipHandleForEntity
/*
================
SV_ClipHandleForEntity
Returns a headnode that can be used for testing or clipping to a
given entity. If the entity is a bsp model, the headnode will
be returned, otherwise a custom box tree will be constructed.
================
*/
clipHandle_t SV_ClipHandleForEntity( EntityBase* gameEnt )
{
if ( gameEnt->r.bmodel )
{
// explicit hulls in the BSP model
return CM_InlineModel( gameEnt->s.modelindex );
}
if ( gameEnt->r.svFlags & SVF_CAPSULE )
{
// create a temp capsule from bounding box sizes
return CM_TempBoxModel( gameEnt->r.mins, gameEnt->r.maxs, true );
}
// create a temp tree from bounding box sizes
return CM_TempBoxModel( gameEnt->r.mins, gameEnt->r.maxs, false );
}
示例7: SV_SetModel
/**
* @note Also sets mins and maxs for inline bmodels
* @sa CM_InlineModel
*/
static void SV_SetModel (edict_t * ent, const char *name)
{
if (!name)
Com_Error(ERR_DROP, "SV_SetModel: NULL");
ent->modelindex = SV_ModelIndex(name);
/* if it is an inline model, get the size information for it */
if (name[0] == '*') {
const cBspModel_t *mod = CM_InlineModel(&sv->mapTiles, name);
/* Copy model mins and maxs to entity */
VectorCopy(mod->mins, ent->mins);
VectorCopy(mod->maxs, ent->maxs);
/* This is to help the entity collision code out */
/* Copy entity origin and angles to model*/
CM_SetInlineModelOrientation(&sv->mapTiles, name, ent->origin, ent->angles);
}
}
示例8: CL_GridRecalcRouting
static void CL_GridRecalcRouting (const le_t* le)
{
/* We ALWAYS check against a model, even if it isn't in use.
* An unused model is NOT included in the inline list, so it doesn't get
* traced against. */
if (!le->model1 || le->inlineModelName[0] != '*')
return;
if (Com_ServerState())
return;
const cBspModel_t* model = CM_InlineModel(cl.mapTiles, le->inlineModelName);
if (!model) {
return;
}
AABB absBox(model->cbmBox);
absBox.shift(model->origin);
GridBox rerouteBox(absBox);
Grid_RecalcRouting(cl.mapTiles, cl.mapData->routing, le->inlineModelName, rerouteBox, cl.leInlineModelList);
}
示例9: BotImport_BSPModelMinsMaxsOrigin
/*
==================
BotImport_BSPModelMinsMaxsOrigin
==================
*/
static void BotImport_BSPModelMinsMaxsOrigin(int modelnum, vec3_t angles, vec3_t outmins, vec3_t outmaxs, vec3_t origin) {
clipHandle_t h;
vec3_t mins, maxs;
float max;
int i;
h = CM_InlineModel(modelnum);
CM_ModelBounds(h, mins, maxs);
//if the model is rotated
if ((angles[0] || angles[1] || angles[2])) {
// expand for rotation
max = RadiusFromBounds(mins, maxs);
for (i = 0; i < 3; i++) {
mins[i] = -max;
maxs[i] = max;
}
}
if (outmins) VectorCopy(mins, outmins);
if (outmaxs) VectorCopy(maxs, outmaxs);
if (origin) VectorClear(origin);
}
示例10: BotImport_BSPModelMinsMaxsOrigin
static void BotImport_BSPModelMinsMaxsOrigin(int modelnum, vector3 *angles, vector3 *outmins, vector3 *outmaxs, vector3 *origin) {
clipHandle_t h;
vector3 mins, maxs;
float max;
int i;
h = CM_InlineModel(modelnum);
CM_ModelBounds(h, &mins, &maxs);
//if the model is rotated
if ((angles->pitch || angles->yaw || angles->roll)) {
// expand for rotation
max = RadiusFromBounds(&mins, &maxs);
for (i = 0; i < 3; i++) {
mins.data[i] = -max;
maxs.data[i] = max;
}
}
if (outmins) VectorCopy(&mins, outmins);
if (outmaxs) VectorCopy(&maxs, outmaxs);
if (origin) VectorClear(origin);
}
示例11: AAS_CalcReachAndClusters
void AAS_CalcReachAndClusters(struct quakefile_s *qf)
{
float time;
Log_Print("loading collision map...\n");
//
if (!qf->pakfile[0])
{
strcpy(qf->pakfile, qf->filename);
}
//load the map
CM_LoadMap((char *) qf, qfalse, &(*aasworld).bspchecksum);
//get a handle to the world model
worldmodel = CM_InlineModel(0); // 0 = world, 1 + are bmodels
//initialize bot import structure
AAS_InitBotImport();
//load the BSP entity string
AAS_LoadBSPFile();
//init physics settings
AAS_InitSettings();
//initialize AAS link heap
AAS_InitAASLinkHeap();
//initialize the AAS linked entities for the new map
AAS_InitAASLinkedEntities();
//reset all reachabilities and clusters
(*aasworld).reachabilitysize = 0;
(*aasworld).numclusters = 0;
//set all view portals as cluster portals in case we re-calculate the reachabilities and clusters (with -reach)
AAS_SetViewPortalsAsClusterPortals();
//calculate reachabilities
AAS_InitReachability();
time = 0;
while (AAS_ContinueInitReachability(time))
time++;
//calculate clusters
AAS_InitClustering();
} //end of the function AAS_CalcReachAndClusters
示例12: SV_SetBrushModel
/*
=================
SV_SetBrushModel
sets mins and maxs for inline bmodels
=================
*/
void SV_SetBrushModel(sharedEntity_t * ent, const char *name) {
clipHandle_t h;
vec3_t mins, maxs;
if(!name) {
Com_Error(ERR_DROP, "SV_SetBrushModel: NULL");
}
if(name[0] != '*') {
Com_Error(ERR_DROP, "SV_SetBrushModel: %s isn't a brush model", name);
}
ent->s.modelindex = atoi(name + 1);
h = CM_InlineModel(ent->s.modelindex);
CM_ModelBounds(h, mins, maxs);
VectorCopy(mins, ent->r.mins);
VectorCopy(maxs, ent->r.maxs);
ent->r.bmodel = true;
ent->r.contents = -1; // we don't know exactly what is in the brushes
SV_LinkEntity(ent); // FIXME: remove
}
示例13: CL_ParseConfigString
/*
================
CL_ParseConfigString
================
*/
void CL_ParseConfigString (void)
{
int32_t i;
char *s;
char olds[MAX_QPATH];
char scratch[1024];
i = MSG_ReadShort (&net_message);
if (i < 0 || i >= MAX_CONFIGSTRINGS)
Com_Error (ERR_DROP, "configstring > MAX_CONFIGSTRINGS");
s = MSG_ReadString(&net_message);
strncpy (olds, cl.configstrings[i], sizeof(olds));
olds[sizeof(olds) - 1] = 0;
strcpy (cl.configstrings[i], s);
// do something apropriate
// Knightmare- 1/2/2002- BIG UGLY HACK for old demos or
// connected to server using old protocol
// Changed config strings require different parsing
if ( LegacyProtocol())
{
if (i >= OLD_CS_LIGHTS && i < OLD_CS_LIGHTS+MAX_LIGHTSTYLES)
CL_SetLightstyle (i - OLD_CS_LIGHTS);
else if (i == CS_CDTRACK)
{
if (cl.refresh_prepped)
CL_PlayBackgroundTrack ();
}
else if (i >= CS_MODELS && i < CS_MODELS+OLD_MAX_MODELS)
{
if (cl.refresh_prepped)
{
cl.model_draw[i-CS_MODELS] = R_RegisterModel (cl.configstrings[i]);
if (cl.configstrings[i][0] == '*')
cl.model_clip[i-CS_MODELS] = CM_InlineModel (cl.configstrings[i]);
else
cl.model_clip[i-CS_MODELS] = NULL;
}
}
else if (i >= OLD_CS_SOUNDS && i < OLD_CS_SOUNDS+OLD_MAX_SOUNDS)
{
if (cl.refresh_prepped)
cl.sound_precache[i-OLD_CS_SOUNDS] = S_RegisterSound (cl.configstrings[i]);
}
else if (i >= OLD_CS_IMAGES && i < OLD_CS_IMAGES+OLD_MAX_IMAGES)
{
if (cl.refresh_prepped)
cl.image_precache[i-OLD_CS_IMAGES] = R_DrawFindPic (cl.configstrings[i]);
}
else if (i >= OLD_CS_PLAYERSKINS && i < OLD_CS_PLAYERSKINS+MAX_CLIENTS)
{
if (cl.refresh_prepped && strcmp(olds, s))
CL_ParseClientinfo (i-OLD_CS_PLAYERSKINS);
} else if (i >= OLD_CS_ITEMS && i < OLD_CS_ITEMS + MAX_ITEMS) {
int j;
int item = i - OLD_CS_ITEMS;
int32_t token;
Com_sprintf (scratch, sizeof(scratch), "use %s", cl.configstrings[i]);
token = Q_STLookup(&key_table, scratch);
cl.inventorykey[item] = -1;
if (token >= 0) {
for (j=0; j<MAX_KEYEVENTS; j++)
{
if (keytokens[j] == token)
{
cl.inventorykey[item] = j;
break;
}
}
}
}
}
else // new configstring offsets
{
if (i >= CS_LIGHTS && i < CS_LIGHTS+MAX_LIGHTSTYLES)
CL_SetLightstyle (i - CS_LIGHTS);
else if (i == CS_CDTRACK)
{
if (cl.refresh_prepped)
CL_PlayBackgroundTrack ();
}
else if (i >= CS_MODELS && i < CS_MODELS+MAX_MODELS)
{
if (cl.refresh_prepped)
{
cl.model_draw[i-CS_MODELS] = R_RegisterModel (cl.configstrings[i]);
if (cl.configstrings[i][0] == '*')
cl.model_clip[i-CS_MODELS] = CM_InlineModel (cl.configstrings[i]);
else
cl.model_clip[i-CS_MODELS] = NULL;
}
//.........这里部分代码省略.........
示例14: CLWS_CgameSystemCalls
// The cgame module is making a system call
qintptr CLWS_CgameSystemCalls( qintptr* args ) {
switch ( args[ 0 ] ) {
case WSCG_PRINT:
common->Printf( "%s", ( char* )VMA( 1 ) );
return 0;
case WSCG_ERROR:
common->Error( "%s", ( char* )VMA( 1 ) );
return 0;
case WSCG_MILLISECONDS:
return Sys_Milliseconds();
case WSCG_CVAR_REGISTER:
Cvar_Register( ( vmCvar_t* )VMA( 1 ), ( char* )VMA( 2 ), ( char* )VMA( 3 ), args[ 4 ] );
return 0;
case WSCG_CVAR_UPDATE:
Cvar_Update( ( vmCvar_t* )VMA( 1 ) );
return 0;
case WSCG_CVAR_SET:
Cvar_Set( ( char* )VMA( 1 ), ( char* )VMA( 2 ) );
return 0;
case WSCG_CVAR_VARIABLESTRINGBUFFER:
Cvar_VariableStringBuffer( ( char* )VMA( 1 ), ( char* )VMA( 2 ), args[ 3 ] );
return 0;
case WSCG_ARGC:
return Cmd_Argc();
case WSCG_ARGV:
Cmd_ArgvBuffer( args[ 1 ], ( char* )VMA( 2 ), args[ 3 ] );
return 0;
case WSCG_ARGS:
Cmd_ArgsBuffer( ( char* )VMA( 1 ), args[ 2 ] );
return 0;
case WSCG_FS_FOPENFILE:
return FS_FOpenFileByMode( ( char* )VMA( 1 ), ( fileHandle_t* )VMA( 2 ), ( fsMode_t )args[ 3 ] );
case WSCG_FS_READ:
FS_Read( VMA( 1 ), args[ 2 ], args[ 3 ] );
return 0;
case WSCG_FS_WRITE:
return FS_Write( VMA( 1 ), args[ 2 ], args[ 3 ] );
case WSCG_FS_FCLOSEFILE:
FS_FCloseFile( args[ 1 ] );
return 0;
case WSCG_SENDCONSOLECOMMAND:
Cbuf_AddText( ( char* )VMA( 1 ) );
return 0;
case WSCG_ADDCOMMAND:
CLT3_AddCgameCommand( ( char* )VMA( 1 ) );
return 0;
case WSCG_REMOVECOMMAND:
Cmd_RemoveCommand( ( char* )VMA( 1 ) );
return 0;
case WSCG_SENDCLIENTCOMMAND:
CL_AddReliableCommand( ( char* )VMA( 1 ) );
return 0;
case WSCG_UPDATESCREEN:
SCR_UpdateScreen();
return 0;
case WSCG_CM_LOADMAP:
CLT3_CM_LoadMap( ( char* )VMA( 1 ) );
return 0;
case WSCG_CM_NUMINLINEMODELS:
return CM_NumInlineModels();
case WSCG_CM_INLINEMODEL:
return CM_InlineModel( args[ 1 ] );
case WSCG_CM_TEMPBOXMODEL:
return CM_TempBoxModel( ( float* )VMA( 1 ), ( float* )VMA( 2 ), false );
case WSCG_CM_TEMPCAPSULEMODEL:
return CM_TempBoxModel( ( float* )VMA( 1 ), ( float* )VMA( 2 ), true );
case WSCG_CM_POINTCONTENTS:
return CM_PointContentsQ3( ( float* )VMA( 1 ), args[ 2 ] );
case WSCG_CM_TRANSFORMEDPOINTCONTENTS:
return CM_TransformedPointContentsQ3( ( float* )VMA( 1 ), args[ 2 ], ( float* )VMA( 3 ), ( float* )VMA( 4 ) );
case WSCG_CM_BOXTRACE:
CM_BoxTraceQ3( ( q3trace_t* )VMA( 1 ), ( float* )VMA( 2 ), ( float* )VMA( 3 ), ( float* )VMA( 4 ), ( float* )VMA( 5 ), args[ 6 ], args[ 7 ], false );
return 0;
case WSCG_CM_TRANSFORMEDBOXTRACE:
CM_TransformedBoxTraceQ3( ( q3trace_t* )VMA( 1 ), ( float* )VMA( 2 ), ( float* )VMA( 3 ), ( float* )VMA( 4 ), ( float* )VMA( 5 ), args[ 6 ], args[ 7 ], ( float* )VMA( 8 ), ( float* )VMA( 9 ), false );
return 0;
case WSCG_CM_CAPSULETRACE:
CM_BoxTraceQ3( ( q3trace_t* )VMA( 1 ), ( float* )VMA( 2 ), ( float* )VMA( 3 ), ( float* )VMA( 4 ), ( float* )VMA( 5 ), args[ 6 ], args[ 7 ], true );
return 0;
case WSCG_CM_TRANSFORMEDCAPSULETRACE:
CM_TransformedBoxTraceQ3( ( q3trace_t* )VMA( 1 ), ( float* )VMA( 2 ), ( float* )VMA( 3 ), ( float* )VMA( 4 ), ( float* )VMA( 5 ), args[ 6 ], args[ 7 ], ( float* )VMA( 8 ), ( float* )VMA( 9 ), true );
return 0;
case WSCG_CM_MARKFRAGMENTS:
return R_MarkFragmentsWolf( args[ 1 ], ( const vec3_t* )VMA( 2 ), ( float* )VMA( 3 ), args[ 4 ], ( float* )VMA( 5 ), args[ 6 ], ( markFragment_t* )VMA( 7 ) );
case WSCG_S_STARTSOUND:
S_StartSound( ( float* )VMA( 1 ), args[ 2 ], args[ 3 ], args[ 4 ], 0.5 );
return 0;
case WSCG_S_STARTSOUNDEX:
S_StartSoundEx( ( float* )VMA( 1 ), args[ 2 ], args[ 3 ], args[ 4 ], args[ 5 ], 127 );
return 0;
case WSCG_S_STARTLOCALSOUND:
S_StartLocalSound( args[ 1 ], args[ 2 ], 127 );
return 0;
case WSCG_S_CLEARLOOPINGSOUNDS:
CLWS_ClearLoopingSounds( args[ 1 ] );
return 0;
case WSCG_S_ADDLOOPINGSOUND:
// FIXME MrE: handling of looping sounds changed
S_AddLoopingSound( args[ 1 ], ( float* )VMA( 2 ), ( float* )VMA( 3 ), args[ 4 ], args[ 5 ], args[ 6 ], 0 );
//.........这里部分代码省略.........
示例15: SV_SpawnServer
/*
* Change the server to a new map, taking all connected
* clients along with it.
*/
void SV_SpawnServer(char *server, char *spawnpoint, server_state_t serverstate, qboolean attractloop, qboolean loadgame)
{
int i;
unsigned checksum;
if (attractloop) {
Cvar_Set("paused", "0");
}
Com_Printf("Server init\n");
Com_DPrintf("SpawnServer: %s\n", server);
svs.spawncount++; /* any partially connected client will be restarted */
sv.state = ss_dead;
Com_SetServerState(sv.state);
/* wipe the entire per-level structure */
memset(&sv, 0, sizeof(sv));
svs.realtime = 0;
sv.loadgame = loadgame;
sv.attractloop = attractloop;
/* save name for levels that don't set message */
strcpy(sv.configstrings[CS_NAME], server);
if (Cvar_VariableValue("deathmatch")) {
sprintf(sv.configstrings[CS_AIRACCEL], "%g", sv_airaccelerate->value);
pm_airaccelerate = sv_airaccelerate->value;
} else {
strcpy(sv.configstrings[CS_AIRACCEL], "0");
pm_airaccelerate = 0;
}
SZ_Init(&sv.multicast, sv.multicast_buf, sizeof(sv.multicast_buf));
strcpy(sv.name, server);
/* leave slots at start for clients only */
for (i = 0; i < maxclients->value; i++) {
/* needs to reconnect */
if (svs.clients[i].state > cs_connected) {
svs.clients[i].state = cs_connected;
}
svs.clients[i].lastframe = -1;
}
sv.time = 1000;
strcpy(sv.name, server);
strcpy(sv.configstrings[CS_NAME], server);
if (serverstate != ss_game) {
sv.models[1] = CM_LoadMap("", false, &checksum); /* no real map */
} else {
Com_sprintf(sv.configstrings[CS_MODELS + 1], sizeof(sv.configstrings[CS_MODELS + 1]), "maps/%s.bsp", server);
sv.models[1] = CM_LoadMap(sv.configstrings[CS_MODELS + 1], false, &checksum);
}
Com_sprintf(sv.configstrings[CS_MAPCHECKSUM], sizeof(sv.configstrings[CS_MAPCHECKSUM]), "%i", checksum);
/* clear physics interaction links */
SV_ClearWorld();
for (i = 1; i < CM_NumInlineModels(); i++) {
Com_sprintf(sv.configstrings[CS_MODELS + 1 + i], sizeof(sv.configstrings[CS_MODELS + 1 + i]), "*%i", i);
sv.models[i + 1] = CM_InlineModel(sv.configstrings[CS_MODELS + 1 + i]);
}
/* spawn the rest of the entities on the map */
sv.state = ss_loading;
Com_SetServerState(sv.state);
/* load and spawn all other entities */
SpawnEntities(sv.name, CM_EntityString(), spawnpoint);
/* run two frames to allow everything to settle */
G_RunFrame();
G_RunFrame();
/* verify game didn't clobber important stuff */
if ((int) checksum != (int) strtol(sv.configstrings[CS_MAPCHECKSUM], (char **) NULL, 10)) {
Com_Error(ERR_DROP, "Game DLL corrupted server configstrings");
}
/* all precaches are complete */
sv.state = serverstate;
Com_SetServerState(sv.state);
/* create a baseline for more efficient communications */
SV_CreateBaseline();
/* set serverinfo variable */
Cvar_FullSet("mapname", sv.name, CVAR_SERVERINFO | CVAR_NOSET);
}