MCPcopy Create free account
hub / github.com/carbonengine/trinity / RenderDynamicBounds

Method RenderDynamicBounds

trinity/Tr2GStateAnimation.cpp:803–868  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

801}
802
803void 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 );

Callers

nothing calls this directly

Calls 5

BoundingBoxInitializeFunction · 0.85
BoundingBoxUpdateFunction · 0.85
BoundingSphereUpdateFunction · 0.85
emptyMethod · 0.80
sizeMethod · 0.80

Tested by

no test coverage detected