mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-03-14 22:50:45 +00:00
Dmap: always write a .cm file, especially when overwriting from a mod dir
This commit is contained in:
parent
844bbb577f
commit
a664f8599e
5 changed files with 10 additions and 12 deletions
|
@ -93,7 +93,7 @@ public:
|
|||
virtual ~idCollisionModelManager() {}
|
||||
|
||||
// Loads collision models from a map file.
|
||||
virtual void LoadMap( const idMapFile* mapFile ) = 0;
|
||||
virtual void LoadMap( const idMapFile* mapFile, bool ignoreOldCollisionFile ) = 0;
|
||||
// Frees all the collision models.
|
||||
virtual void FreeMap() = 0;
|
||||
|
||||
|
|
|
@ -4256,7 +4256,7 @@ void idCollisionModelManagerLocal::ListModels()
|
|||
idCollisionModelManagerLocal::BuildModels
|
||||
================
|
||||
*/
|
||||
void idCollisionModelManagerLocal::BuildModels( const idMapFile* mapFile )
|
||||
void idCollisionModelManagerLocal::BuildModels( const idMapFile* mapFile, bool ignoreOldCollisionFile )
|
||||
{
|
||||
int i;
|
||||
const idMapEntity* mapEnt;
|
||||
|
@ -4264,9 +4264,8 @@ void idCollisionModelManagerLocal::BuildModels( const idMapFile* mapFile )
|
|||
idTimer timer;
|
||||
timer.Start();
|
||||
|
||||
if( !LoadCollisionModelFile( mapFile->GetName(), mapFile->GetGeometryCRC() ) )
|
||||
if( ignoreOldCollisionFile || !LoadCollisionModelFile( mapFile->GetName(), mapFile->GetGeometryCRC() ) )
|
||||
{
|
||||
|
||||
if( !mapFile->GetNumEntities() )
|
||||
{
|
||||
return;
|
||||
|
@ -4355,7 +4354,7 @@ void idCollisionModelManagerLocal::Preload( const char* mapName )
|
|||
idCollisionModelManagerLocal::LoadMap
|
||||
================
|
||||
*/
|
||||
void idCollisionModelManagerLocal::LoadMap( const idMapFile* mapFile )
|
||||
void idCollisionModelManagerLocal::LoadMap( const idMapFile* mapFile, bool ignoreOldCollisionFile )
|
||||
{
|
||||
|
||||
if( mapFile == NULL )
|
||||
|
@ -4398,7 +4397,7 @@ void idCollisionModelManagerLocal::LoadMap( const idMapFile* mapFile )
|
|||
common->UpdateLevelLoadPacifier();
|
||||
|
||||
// build collision models
|
||||
BuildModels( mapFile );
|
||||
BuildModels( mapFile, ignoreOldCollisionFile );
|
||||
|
||||
common->UpdateLevelLoadPacifier();
|
||||
|
||||
|
|
|
@ -326,7 +326,7 @@ class idCollisionModelManagerLocal : public idCollisionModelManager
|
|||
{
|
||||
public:
|
||||
// load collision models from a map file
|
||||
void LoadMap( const idMapFile* mapFile );
|
||||
void LoadMap( const idMapFile* mapFile, bool ignoreOldCollisionFile );
|
||||
// frees all the collision models
|
||||
void FreeMap();
|
||||
|
||||
|
@ -502,7 +502,7 @@ private: // CollisionMap_load.cpp
|
|||
void RemapEdges( cm_node_t* node, int* edgeRemap );
|
||||
void OptimizeArrays( cm_model_t* model );
|
||||
void FinishModel( cm_model_t* model );
|
||||
void BuildModels( const idMapFile* mapFile );
|
||||
void BuildModels( const idMapFile* mapFile, bool ignoreOldCollisionFile );
|
||||
cmHandle_t FindModel( const char* name );
|
||||
cm_model_t* CollisionModelForMapEntity( const idMapEntity* mapEnt ); // brush/patch model from .map
|
||||
cm_model_t* LoadRenderModel( const char* fileName ); // ASE/LWO models
|
||||
|
|
|
@ -976,7 +976,7 @@ void idGameLocal::LoadMap( const char* mapName, int randseed )
|
|||
mapFileName = mapFile->GetName();
|
||||
|
||||
// load the collision map
|
||||
collisionModelManager->LoadMap( mapFile );
|
||||
collisionModelManager->LoadMap( mapFile, false );
|
||||
collisionModelManager->Preload( mapName );
|
||||
|
||||
numClients = 0;
|
||||
|
|
|
@ -456,17 +456,16 @@ void Dmap( const idCmdArgs& args )
|
|||
|
||||
if( !leaked )
|
||||
{
|
||||
|
||||
if( !noCM )
|
||||
{
|
||||
|
||||
// make sure the collision model manager is not used by the game
|
||||
cmdSystem->BufferCommandText( CMD_EXEC_NOW, "disconnect" );
|
||||
|
||||
// create the collision map
|
||||
start = Sys_Milliseconds();
|
||||
|
||||
collisionModelManager->LoadMap( dmapGlobals.dmapFile );
|
||||
// write always a fresh .cm file
|
||||
collisionModelManager->LoadMap( dmapGlobals.dmapFile, true );
|
||||
collisionModelManager->FreeMap();
|
||||
|
||||
end = Sys_Milliseconds();
|
||||
|
|
Loading…
Reference in a new issue