| 801 | } |
| 802 | |
| 803 | void Tr2GStateAnimation::RenderDynamicBounds( const Matrix& modelTransform ) |
| 804 | { |
| 805 | Vector3 transformed[8]; |
| 806 | if( m_boneBounds.empty() && !InitializeBoundingInfo() ) |
| 807 | { |
| 808 | return; |
| 809 | } |
| 810 | |
| 811 | Vector4 boundingSphere; |
| 812 | bool initialized = false; |
| 813 | |
| 814 | Vector3 aabbMin, aabbMax; |
| 815 | BoundingBoxInitialize( aabbMin, aabbMax ); |
| 816 | Vector3 initialPlacement( 0, 0, 0 ); |
| 817 | const granny_file_info* fi = GetFileInfo(); |
| 818 | Matrix initialTranslation; |
| 819 | if( fi ) |
| 820 | { |
| 821 | initialPlacement = *reinterpret_cast<Vector3*>( fi->Models[m_modelIndex]->InitialPlacement.Position ); |
| 822 | } |
| 823 | initialTranslation = TranslationMatrix( initialPlacement ); |
| 824 | |
| 825 | for( unsigned i = 0; i < m_boneBounds.size(); ++i ) |
| 826 | { |
| 827 | |
| 828 | Matrix mat = *reinterpret_cast<const Matrix*>( GrannyGetWorldPose4x4( m_worldPose, m_boneBounds[i].m_boneIndex ) ) * modelTransform * initialTranslation; |
| 829 | |
| 830 | for( unsigned point = 0; point < 8; point++ ) |
| 831 | { |
| 832 | transformed[point] = TransformCoord( m_boneBounds[i].m_corners[point], mat ); |
| 833 | BoundingBoxUpdate( aabbMin, aabbMax, transformed[point] ); |
| 834 | if( !initialized ) |
| 835 | { |
| 836 | boundingSphere.x = transformed[point].x; |
| 837 | boundingSphere.y = transformed[point].y; |
| 838 | boundingSphere.z = transformed[point].z; |
| 839 | boundingSphere.w = 0; |
| 840 | initialized = true; |
| 841 | } |
| 842 | else |
| 843 | { |
| 844 | BoundingSphereUpdate( transformed[point], boundingSphere ); |
| 845 | } |
| 846 | } |
| 847 | |
| 848 | Tr2Renderer::DrawLine( transformed[0], 0xff7f0000, transformed[2], 0xff7f0000 ); |
| 849 | Tr2Renderer::DrawLine( transformed[0], 0xff7f0000, transformed[5], 0xff7f0000 ); |
| 850 | Tr2Renderer::DrawLine( transformed[5], 0xff7f0000, transformed[6], 0xff7f0000 ); |
| 851 | Tr2Renderer::DrawLine( transformed[2], 0xff7f0000, transformed[6], 0xff7f0000 ); |
| 852 | |
| 853 | Tr2Renderer::DrawLine( transformed[1], 0xff7f0000, transformed[7], 0xff7f0000 ); |
| 854 | Tr2Renderer::DrawLine( transformed[1], 0xff7f0000, transformed[4], 0xff7f0000 ); |
| 855 | Tr2Renderer::DrawLine( transformed[3], 0xff7f0000, transformed[4], 0xff7f0000 ); |
| 856 | Tr2Renderer::DrawLine( transformed[3], 0xff7f0000, transformed[7], 0xff7f0000 ); |
| 857 | |
| 858 | Tr2Renderer::DrawLine( transformed[1], 0xff7f0000, transformed[6], 0xff7f0000 ); |
| 859 | Tr2Renderer::DrawLine( transformed[0], 0xff7f0000, transformed[3], 0xff7f0000 ); |
| 860 | Tr2Renderer::DrawLine( transformed[7], 0xff7f0000, transformed[5], 0xff7f0000 ); |
nothing calls this directly
no test coverage detected