From 374c3fc239c384022e511ffdd28f447c825aa13b Mon Sep 17 00:00:00 2001 From: Garux Date: Wed, 22 Oct 2025 21:16:58 +0500 Subject: [PATCH] indicate model loading failure by nomodel.png --- plugins/assmodel/model.cpp | 2 +- plugins/md3model/model.h | 2 +- plugins/model/model.cpp | 2 +- plugins/shaders/shaders.cpp | 5 ++++- radiant/nullmodel.cpp | 4 ++-- setup/data/tools/bitmaps/nomodel.png | Bin 0 -> 3723 bytes 6 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 setup/data/tools/bitmaps/nomodel.png diff --git a/plugins/assmodel/model.cpp b/plugins/assmodel/model.cpp index d9fe8eba..5d0aca17 100644 --- a/plugins/assmodel/model.cpp +++ b/plugins/assmodel/model.cpp @@ -354,7 +354,7 @@ private: *j++ = i; } - m_shader = ""; + m_shader = "nomodel"; UpdateAABB(); } diff --git a/plugins/md3model/model.h b/plugins/md3model/model.h index 43a542ae..7fcf3f8d 100644 --- a/plugins/md3model/model.h +++ b/plugins/md3model/model.h @@ -548,7 +548,7 @@ inline void Model_constructNull( Model& model ){ surface.indices().insert( *i ); } - surface.setShader( "" ); + surface.setShader( "nomodel" ); surface.updateAABB(); diff --git a/plugins/model/model.cpp b/plugins/model/model.cpp index 8338f385..5a154215 100644 --- a/plugins/model/model.cpp +++ b/plugins/model/model.cpp @@ -293,7 +293,7 @@ private: *j++ = *i; } - m_shader = ""; + m_shader = "nomodel"; UpdateAABB(); } diff --git a/plugins/shaders/shaders.cpp b/plugins/shaders/shaders.cpp index 80af4a40..32f23c68 100644 --- a/plugins/shaders/shaders.cpp +++ b/plugins/shaders/shaders.cpp @@ -955,7 +955,10 @@ public: if ( m_pTexture->texture_number == 0 ) { m_notfound = m_pTexture; - const auto name = StringStream( GlobalRadiant().getAppPath(), "bitmaps/", ( IsDefault() ? "notex.png" : "shadernotex.png" ) ); + const auto name = StringStream( GlobalRadiant().getAppPath(), "bitmaps/", + ( string_equal( m_template.getName(), "nomodel" )? "nomodel.png" + : IsDefault() ? "notex.png" + : "shadernotex.png" ) ); m_pTexture = GlobalTexturesCache().capture( LoadImageCallback( 0, loadBitmap ), name ); } diff --git a/radiant/nullmodel.cpp b/radiant/nullmodel.cpp index 365b3456..de090113 100644 --- a/radiant/nullmodel.cpp +++ b/radiant/nullmodel.cpp @@ -47,10 +47,10 @@ class NullModel : RenderableWireframeAABB m_aabb_wire; public: NullModel() : m_aabb_local( Vector3( 0, 0, 0 ), Vector3( 8, 8, 8 ) ), m_aabb_solid( m_aabb_local ), m_aabb_wire( m_aabb_local ){ - m_state = GlobalShaderCache().capture( "" ); + m_state = GlobalShaderCache().capture( "nomodel" ); } ~NullModel(){ - GlobalShaderCache().release( "" ); + GlobalShaderCache().release( "nomodel" ); } VolumeIntersectionValue intersectVolume( const VolumeTest& volume, const Matrix4& localToWorld ) const override { diff --git a/setup/data/tools/bitmaps/nomodel.png b/setup/data/tools/bitmaps/nomodel.png new file mode 100644 index 0000000000000000000000000000000000000000..dd923023ef582fe08ea6efd1f92a14f2c8fe89a7 GIT binary patch literal 3723 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 R85kHCJYD@<);T3K0RXGCCL#a; literal 0 HcmV?d00001