Fixed a couple of func_groups with TrenchBroom related bugs

This commit is contained in:
Robert Beckebans 2022-02-18 18:00:09 +01:00
parent be5825d239
commit 1f2df87be7
4 changed files with 40 additions and 1 deletions

View file

@ -49,6 +49,29 @@ You need to call exportImagesToTrenchBroom and exportModelsToTrenchBroom once an
* Added CMake options STANDALONE and DOOM_CLASSIC
* Added command convertMapQuakeToDoom `<map>` that expects a Quake 1 .map in the Valve220 format and does some Doom 3 specific fixes
* The gamecode ignores func_group entities if they were created by TrenchBroom instead to warn that there is no spawn function
* dmap / idMapFile move brushes of func_group entities to worldspawn before compiling the BSP.
This also means func_group brushes are structural.
If you want to optimize the BSP then move those to func_static instead which is the same as func_detail in Quake.
* Fixed that dmap failed writing the BSP .proc file if the command was interrupted by an error
[COMMUNITY]
Steve Saunders contributed
* Updated mac OS support
* Improved Vulkan / Molten support
* Fixed FFmpeg 5 compatibility for newer Linux distros
* Bink videos can play audio if they contain audio tracks (merged from DOOM BFA by Mr.GK)
[ASSETS]
* Added TrenchBroom helper entityDefs like a Quake 3 style misc_model to comply with TrenchBroom's Solid/PointClass rules for editing entities

View file

@ -4022,6 +4022,17 @@ bool idGameLocal::InhibitEntitySpawn( idDict& spawnArgs )
}
}
// RB: TrenchBroom interop skip func_group entities
{
const char* name = spawnArgs.GetString( "classname" );
const char* groupType = spawnArgs.GetString( "_tb_type" );
if( idStr::Icmp( name, "func_group" ) == 0 || idStr::Icmp( groupType, "func_group" ) == 0 )
{
result = true;
}
}
return result;
}

View file

@ -1730,7 +1730,10 @@ bool idMapFile::Parse( const char* filename, bool ignoreRegion, bool osPath )
}
// move the primitives of any func_group entities to the worldspawn
if( entities[0]->epairs.GetBool( "moveFuncGroups" ) )
// RB: TrenchBroom interop - especially those created by TrenchBroom and
// they also won't be spawned by the gamecode
if( entities[0]->epairs.GetBool( "moveFuncGroups" ) || valve220Format )
{
for( i = 1; i < entities.Num(); i++ )
{

View file

@ -424,6 +424,7 @@ static void WriteOutputSurfaces( int entityNum, int areaNum )
entity->epairs.GetString( "name", "", &name );
if( !name[0] )
{
fileSystem->CloseFile( procFile );
common->Error( "Entity %i has surfaces, but no name key", entityNum );
}
procFile->WriteFloatString( "model { /* name = */ \"%s\" /* numSurfaces = */ %i\n\n",
@ -495,6 +496,7 @@ static void WriteOutputSurfaces( int entityNum, int areaNum )
if( surfaceNum >= numSurfaces )
{
fileSystem->CloseFile( procFile );
common->Error( "WriteOutputSurfaces: surfaceNum >= numSurfaces" );
}