Example #1
0
//-----------------------------------------------------------------------------
// 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;
	}
}