ref: properly return false to the engine if renderer refuses to load the model for some reason

This commit is contained in:
Alibek Omarov 2025-01-22 19:13:23 +03:00
parent c2da140ccc
commit 719093c10b
2 changed files with 50 additions and 49 deletions

View file

@ -124,14 +124,21 @@ static void Mod_UnloadTextures( model_t *mod )
static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf ) static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf )
{ {
qboolean loaded = true; qboolean loaded = false;
if( create ) if( !create )
{ {
if( gEngfuncs.drawFuncs->Mod_ProcessUserData )
gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, false, buf );
Mod_UnloadTextures( mod );
return true;
}
switch( mod->type ) switch( mod->type )
{ {
case mod_studio: case mod_studio:
// Mod_LoadStudioModel( mod, buf, loaded ); case mod_brush:
loaded = true;
break; break;
case mod_sprite: case mod_sprite:
Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo ); Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo );
@ -139,18 +146,13 @@ static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte
case mod_alias: case mod_alias:
Mod_LoadAliasModel( mod, buf, &loaded ); Mod_LoadAliasModel( mod, buf, &loaded );
break; break;
case mod_brush: default:
// Mod_LoadBrushModel( mod, buf, loaded ); gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type );
break; return false;
default: gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type );
}
} }
if( loaded && gEngfuncs.drawFuncs->Mod_ProcessUserData ) if( gEngfuncs.drawFuncs->Mod_ProcessUserData )
gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, create, buf ); gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, true, buf );
if( !create )
Mod_UnloadTextures( mod );
return loaded; return loaded;
} }

View file

@ -66,34 +66,33 @@ void Mod_UnloadTextures( model_t *mod );
static qboolean GAME_EXPORT Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf ) static qboolean GAME_EXPORT Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf )
{ {
qboolean loaded = true; qboolean loaded = false;
if( create ) if( !create )
{ {
if( gEngfuncs.drawFuncs->Mod_ProcessUserData )
gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, false, buf );
Mod_UnloadTextures( mod );
return true;
}
switch( mod->type ) switch( mod->type )
{ {
case mod_studio: case mod_studio:
// Mod_LoadStudioModel( mod, buf, loaded ); case mod_brush:
case mod_alias:
loaded = true;
break; break;
case mod_sprite: case mod_sprite:
Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo ); Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo );
break; break;
case mod_alias: default:
// Mod_LoadAliasModel( mod, buf, &loaded ); gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type );
break; return false;
case mod_brush:
// Mod_LoadBrushModel( mod, buf, loaded );
break;
default: gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type );
}
} }
if( loaded && gEngfuncs.drawFuncs->Mod_ProcessUserData ) if( gEngfuncs.drawFuncs->Mod_ProcessUserData )
gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, create, buf ); gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, true, buf );
if( !create )
Mod_UnloadTextures( mod );
return loaded; return loaded;
} }