diff --git a/libs/entitylib.h b/libs/entitylib.h index 8575d65e..6c9cc757 100644 --- a/libs/entitylib.h +++ b/libs/entitylib.h @@ -675,6 +675,7 @@ namespace std } } +/// this is only correct for radiant 2d views matrices inline bool aabb_fits_view( const AABB& aabb, const Matrix4& modelview, const Matrix4& viewport, int ratio ){ const AABB transformed_bounds = aabb_for_oriented_aabb( AABB( aabb.origin, Vector3( std::max( aabb.extents[0], 8.f ), std::max( aabb.extents[1], 8.f ), std::max( aabb.extents[2], 8.f ) ) ), diff --git a/plugins/entity/doom3group.cpp b/plugins/entity/doom3group.cpp index 68c8b783..b8dc9701 100644 --- a/plugins/entity/doom3group.cpp +++ b/plugins/entity/doom3group.cpp @@ -368,17 +368,14 @@ void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& l if ( m_renderName.excluded_not() && ( selected || childSelected || ( g_showNames && ( volume.fill() || aabb_fits_view( childBounds, volume.GetModelview(), volume.GetViewport(), g_showNamesRatio ) ) ) ) ) { // draw models as usual - if ( !isModel() ) { - // don't draw the name for worldspawn -// if ( !strcmp( m_entity.getEntityClass().name(), "worldspawn" ) ) { -// return; -// } - - // place name in the middle of the "children cloud" - m_name_origin = childBounds.origin; + if ( isModel() ) { + m_renderName.render( renderer, volume, localToWorld, selected, childSelected ); + } + else{ + // place name in the middle of the "children cloud" + m_name_origin = extents_valid( childBounds.extents.x() )? childBounds.origin : vector4_to_vector3( localToWorld.t() ); + m_renderName.render( renderer, volume, g_matrix4_identity, selected, childSelected ); } - - m_renderName.render( renderer, volume, localToWorld, selected, childSelected ); } } diff --git a/plugins/entity/group.cpp b/plugins/entity/group.cpp index ad34ccb0..707c6b19 100644 --- a/plugins/entity/group.cpp +++ b/plugins/entity/group.cpp @@ -160,9 +160,9 @@ void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& l // } // place name in the middle of the "children cloud" - m_name_origin = childBounds.origin; + m_name_origin = extents_valid( childBounds.extents.x() )? childBounds.origin : vector4_to_vector3( localToWorld.t() ); - m_renderName.render( renderer, volume, localToWorld, selected, childSelected ); + m_renderName.render( renderer, volume, g_matrix4_identity, selected, childSelected ); } }