void CG_RestartLevel( void ) { int snapshotNum; int r; snapshotNum = cg.processedSnapshotNum; /* Ghoul2 Insert Start */ // memset( cg_entities, 0, sizeof( cg_entities ) ); CG_Init_CGents(); // this is a No-No now we have stl vector classes in here. // memset( &cg, 0, sizeof( cg ) ); CG_Init_CG(); /* Ghoul2 Insert End */ CG_LinkCentsToGents(); CG_InitLocalEntities(); CG_InitMarkPolys(); // regrab the first snapshot of the restart cg.processedSnapshotNum = snapshotNum; r = cgi_GetSnapshot( cg.processedSnapshotNum, &cg.activeSnapshots[0] ); if ( !r ) { CG_Error( "cgi_GetSnapshot failed on restart" ); } CG_SetInitialSnapshot( &cg.activeSnapshots[0] ); cg.time = cg.snap->serverTime; }
/* ======================== CG_ReadNextSnapshot This is the only place new snapshots are requested This may increment cg.processedSnapshotNum multiple times if the client system fails to return a valid snapshot. ======================== */ snapshot_t *CG_ReadNextSnapshot( void ) { qboolean r; snapshot_t *dest; while ( cg.processedSnapshotNum < cg.latestSnapshotNum ) { // decide which of the two slots to load it into if ( cg.snap == &cg.activeSnapshots[0] ) { dest = &cg.activeSnapshots[1]; } else { dest = &cg.activeSnapshots[0]; } // try to read the snapshot from the client system cg.processedSnapshotNum++; r = cgi_GetSnapshot( cg.processedSnapshotNum, dest ); // if it succeeded, return if ( r ) { return dest; } // a GetSnapshot will return failure if the snapshot // never arrived, or is so old that its entities // have been shoved off the end of the circular // buffer in the client system. // record as a dropped packet // CG_AddLagometerSnapshotInfo( NULL ); // If there are additional snapshots, continue trying to // read them. } // nothing left to read return NULL; }
static void CG_RestartLevel( void ) { int snapshotNum; int r; snapshotNum = cg.processedSnapshotNum; memset( cg_entities, 0, sizeof( cg_entities ) ); CG_Init_CG(); CG_LinkCentsToGents(); CG_InitLocalEntities(); CG_InitMarkPolys(); // regrab the first snapshot of the restart cg.processedSnapshotNum = snapshotNum; r = cgi_GetSnapshot( cg.processedSnapshotNum, &cg.activeSnapshots[0] ); if ( !r ) { CG_Error( "cgi_GetSnapshot failed on restart" ); } CG_SetInitialSnapshot( &cg.activeSnapshots[0] ); cg.time = cg.snap->serverTime; }