| 493 | } |
| 494 | |
| 495 | void Tr2SkinnedObject::RenderDebugInfo( ITr2DebugRenderer2& renderer ) |
| 496 | { |
| 497 | if( !DoDisplay() ) |
| 498 | { |
| 499 | return; |
| 500 | } |
| 501 | |
| 502 | if( renderer.HasOption( GetRawRoot(), "Names" ) ) |
| 503 | { |
| 504 | Vector3 pos = GetPosition(); |
| 505 | Vector3 boxMin, boxMax; |
| 506 | if( GetLocalBoundingBox( boxMin, boxMax ) ) |
| 507 | { |
| 508 | pos = Vector3( 0, boxMax.y, 0 ); |
| 509 | } |
| 510 | renderer.DrawText( TRI_DBG_FONT_MEDIUM, TransformCoord( pos, GetTransform() ), 0xffff00ff, "%s", m_name.c_str() ); |
| 511 | } |
| 512 | if( renderer.HasOption( GetRawRoot(), "Transforms" ) ) |
| 513 | { |
| 514 | renderer.DrawAxis( this, m_transform, Tr2DebugRenderer::Lit ); |
| 515 | } |
| 516 | if( renderer.HasOption( GetRawRoot(), "Bounds" ) ) |
| 517 | { |
| 518 | Vector3 boxMin, boxMax; |
| 519 | if( GetLocalBoundingBox( boxMin, boxMax ) ) |
| 520 | { |
| 521 | if( m_useExplicitBounds ) |
| 522 | { |
| 523 | renderer.DrawBox( GetRawRoot(), m_transform, boxMin, boxMax, Tr2DebugRenderer::Wireframe, 0xffff8800 ); |
| 524 | } |
| 525 | else |
| 526 | { |
| 527 | renderer.DrawBox( GetRawRoot(), m_transform, boxMin, boxMax, Tr2DebugRenderer::Wireframe, 0xffffff00 ); |
| 528 | } |
| 529 | } |
| 530 | } |
| 531 | if( renderer.HasOption( GetRawRoot(), "Bones" ) && m_visualModel && m_visualModel->GetSkeleton() ) |
| 532 | { |
| 533 | TriGeometryResSkeletonData* skel = m_visualModel->GetSkeleton(); |
| 534 | unsigned int n = (unsigned int)m_accumulatedTransformsQueue.size(); |
| 535 | for( unsigned int frameIx = 0; frameIx < n; ++frameIx ) |
| 536 | { |
| 537 | unsigned int ix = ( m_skinningMatrixQueueIndex + n - frameIx ) % n; |
| 538 | const Matrix& worldTransform = m_worldTransformsQueue[ix]; |
| 539 | |
| 540 | for( unsigned int animRigIx = 0; animRigIx < m_skinningMatrixCount; ++animRigIx ) |
| 541 | { |
| 542 | unsigned int renderRigIx = m_animRigToRenderRigMapping[animRigIx]; |
| 543 | if( renderRigIx != -1 ) |
| 544 | { |
| 545 | unsigned int renderParentIx = skel->m_joints[renderRigIx].m_parentJoint; |
| 546 | if( renderParentIx != -1 ) |
| 547 | { |
| 548 | unsigned int parentIx = m_renderRigToAnimRigMapping[renderParentIx]; |
| 549 | if( parentIx != -1 ) |
| 550 | { |
| 551 | Matrix fromTransform = m_accumulatedTransformsQueue[ix][animRigIx]; |
| 552 | Matrix toTransform = m_accumulatedTransformsQueue[ix][parentIx]; |
nothing calls this directly
no test coverage detected