From 1bd3e7ae186b55fb61e3738d2493432c0b1f5a7b Mon Sep 17 00:00:00 2001 From: Garux Date: Thu, 16 Dec 2021 03:06:30 +0300 Subject: [PATCH] * model shader paths guessings: use material names, starting with textures/ or models/ as is so materials named intentionally as ingame shaders shall work as expected --- plugins/assmodel/model.cpp | 10 +++++++--- tools/quake3/q3map2/model.cpp | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/assmodel/model.cpp b/plugins/assmodel/model.cpp index d7f5dc84..31d6407b 100644 --- a/plugins/assmodel/model.cpp +++ b/plugins/assmodel/model.cpp @@ -234,9 +234,13 @@ private: #ifdef _DEBUG globalOutputStream() << "matname: " << matname.C_Str() << "\n"; #endif - aiString texname; - if( aiReturn_SUCCESS == material->Get( AI_MATKEY_TEXTURE_DIFFUSE(0), texname ) - && texname.length != 0 ){ + if( aiString texname; + aiReturn_SUCCESS == material->Get( AI_MATKEY_TEXTURE_DIFFUSE(0), texname ) + && texname.length != 0 + && !string_equal_prefix_nocase( matname.C_Str(), "textures/" ) /* matname looks intentionally named as ingame shader */ + && !string_equal_prefix_nocase( matname.C_Str(), "textures\"" ) + && !string_equal_prefix_nocase( matname.C_Str(), "models/" ) + && !string_equal_prefix_nocase( matname.C_Str(), "models\"" ) ){ #ifdef _DEBUG globalOutputStream() << "texname: " << texname.C_Str() << "\n"; #endif diff --git a/tools/quake3/q3map2/model.cpp b/tools/quake3/q3map2/model.cpp index 77735f06..ac88eaf2 100644 --- a/tools/quake3/q3map2/model.cpp +++ b/tools/quake3/q3map2/model.cpp @@ -202,9 +202,13 @@ struct AssModel #ifdef _DEBUG Sys_Printf( "matname: %s\n", matname.C_Str() ); #endif - aiString texname; - if( aiReturn_SUCCESS == material->Get( AI_MATKEY_TEXTURE_DIFFUSE(0), texname ) - && texname.length != 0 ){ + if( aiString texname; + aiReturn_SUCCESS == material->Get( AI_MATKEY_TEXTURE_DIFFUSE(0), texname ) + && texname.length != 0 + && !string_equal_prefix_nocase( matname.C_Str(), "textures/" ) /* matname looks intentionally named as ingame shader */ + && !string_equal_prefix_nocase( matname.C_Str(), "textures\"" ) + && !string_equal_prefix_nocase( matname.C_Str(), "models/" ) + && !string_equal_prefix_nocase( matname.C_Str(), "models\"" ) ){ #ifdef _DEBUG Sys_Printf( "texname: %s\n", texname.C_Str() ); #endif