//----------------------------------------------------------------------------- // Renders the weapon. //----------------------------------------------------------------------------- void Weapon::Render( SceneObject *parent ) { // Render the weapon using the correct weapon object. if( m_useViewWeapon == true ) m_viewWeapon->Render(); else { // Get the translation (world space) to render the 3rd person weapon. Frame *attach = ( (PlayerObject*)parent )->GetMesh()->GetReferencePoint( "rp_weapon_attach" ); D3DXMATRIX transform; D3DXMatrixMultiply( &transform, &attach->finalTransformationMatrix, parent->GetWorldMatrix() ); m_bodyWeapon->Render( &transform ); } // Check if a flash needs to be displayed. if( m_displayFlash == true ) { // Get a random flash material. Material *material = m_flashes->GetRandom(); // Use the sprite interface to render the flash at the muzzel point. D3DXMATRIX view, world; D3DXMatrixIdentity( &world ); g_engine->GetDevice()->GetTransform( D3DTS_VIEW, &view ); g_engine->GetSprite()->SetWorldViewLH( &world, &view ); g_engine->GetSprite()->Begin( D3DXSPRITE_BILLBOARD | D3DXSPRITE_ALPHABLEND ); g_engine->GetSprite()->Draw( material->GetTexture(), NULL, &D3DXVECTOR3( material->GetWidth() / 2.0f, material->GetHeight() / 2.0f, 0.0f ), &m_muzzelPoint, 0xFFFFFFFF ); g_engine->GetSprite()->End(); // Indicate that the flash has been rendered this frame. m_displayFlash = false; } }