| 1113 | } |
| 1114 | |
| 1115 | void Tr2GrannyAnimation::RenderDynamicBounds( const Matrix& modelTransform ) |
| 1116 | { |
| 1117 | if( IsUsingCMF() ) |
| 1118 | { |
| 1119 | Vector3 transformed[8]; |
| 1120 | if( m_boneBounds.empty() && !InitializeBoundingInfo() ) |
| 1121 | { |
| 1122 | return; |
| 1123 | } |
| 1124 | |
| 1125 | Vector4 boundingSphere; |
| 1126 | bool initialized = false; |
| 1127 | |
| 1128 | Vector3 aabbMin, aabbMax; |
| 1129 | BoundingBoxInitialize( aabbMin, aabbMax ); |
| 1130 | |
| 1131 | for( const auto& bb : m_boneBounds ) |
| 1132 | { |
| 1133 | Matrix mat = m_worldTransforms[bb.m_boneIndex] * modelTransform; |
| 1134 | |
| 1135 | for( unsigned point = 0; point < 8; point++ ) |
| 1136 | { |
| 1137 | transformed[point] = TransformCoord( bb.m_corners[point], mat ); |
| 1138 | BoundingBoxUpdate( aabbMin, aabbMax, transformed[point] ); |
| 1139 | if( !initialized ) |
| 1140 | { |
| 1141 | boundingSphere.x = transformed[point].x; |
| 1142 | boundingSphere.y = transformed[point].y; |
| 1143 | boundingSphere.z = transformed[point].z; |
| 1144 | boundingSphere.w = 0; |
| 1145 | initialized = true; |
| 1146 | } |
| 1147 | else |
| 1148 | { |
| 1149 | BoundingSphereUpdate( transformed[point], boundingSphere ); |
| 1150 | } |
| 1151 | } |
| 1152 | |
| 1153 | Tr2Renderer::DrawLine( transformed[0], 0xff7f0000, transformed[2], 0xff7f0000 ); |
| 1154 | Tr2Renderer::DrawLine( transformed[0], 0xff7f0000, transformed[5], 0xff7f0000 ); |
| 1155 | Tr2Renderer::DrawLine( transformed[5], 0xff7f0000, transformed[6], 0xff7f0000 ); |
| 1156 | Tr2Renderer::DrawLine( transformed[2], 0xff7f0000, transformed[6], 0xff7f0000 ); |
| 1157 | |
| 1158 | Tr2Renderer::DrawLine( transformed[1], 0xff7f0000, transformed[7], 0xff7f0000 ); |
| 1159 | Tr2Renderer::DrawLine( transformed[1], 0xff7f0000, transformed[4], 0xff7f0000 ); |
| 1160 | Tr2Renderer::DrawLine( transformed[3], 0xff7f0000, transformed[4], 0xff7f0000 ); |
| 1161 | Tr2Renderer::DrawLine( transformed[3], 0xff7f0000, transformed[7], 0xff7f0000 ); |
| 1162 | |
| 1163 | Tr2Renderer::DrawLine( transformed[1], 0xff7f0000, transformed[6], 0xff7f0000 ); |
| 1164 | Tr2Renderer::DrawLine( transformed[0], 0xff7f0000, transformed[3], 0xff7f0000 ); |
| 1165 | Tr2Renderer::DrawLine( transformed[7], 0xff7f0000, transformed[5], 0xff7f0000 ); |
| 1166 | Tr2Renderer::DrawLine( transformed[4], 0xff7f0000, transformed[2], 0xff7f0000 ); |
| 1167 | } |
| 1168 | |
| 1169 | Tr2Renderer::DrawSphere( boundingSphere, 8, 0xffff0000 ); |
| 1170 | Tr2Renderer::DrawBox( aabbMin, aabbMax, 0xffff0000 ); |
| 1171 | |
| 1172 | return; |
nothing calls this directly
no test coverage detected