⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch21p1_gun.cpp

📁 游戏开发特殊技巧-special.effects.game.programming
💻 CPP
字号:
#include "Ch21p1_Gun.h"

CGun::CGun()
{
	m_pMesh = NULL;
	m_pd3dDevice = NULL;
}

CGun::~CGun()
{
	InvalidateDeviceObjects();
}

HRESULT CGun::RestoreDeviceObjects(LPDIRECT3DDEVICE8 pDev, const char *strMeshFilename)
{
	m_pd3dDevice = pDev;
	m_pMesh = new CD3DMesh;

	TCHAR buf[256];
	DXUtil_ConvertGenericStringToAnsi(buf, strMeshFilename, sizeof(buf));

	if( FAILED( m_pMesh->Create(m_pd3dDevice, buf) ) )
    return E_FAIL;

	m_pMesh->RestoreDeviceObjects(m_pd3dDevice);

	return S_OK;
}

void CGun::InvalidateDeviceObjects()
{
	if (m_pMesh) {
		m_pMesh->Destroy();
		SAFE_DELETE(m_pMesh);
	}
}

void CGun::AssembleWorldMatrix(CCamera &camera, D3DXMATRIX &matWorld,
															 D3DXVECTOR3 vTranslation)
{
	D3DXMATRIX matTrans, matScale, matRot;
	D3DXMATRIX matView = camera.GetViewMatrix();
	D3DXMATRIX matViewInverse;
	float fDet;

	D3DXMatrixInverse(&matViewInverse, &fDet, &matView);
	D3DXMatrixTranslation(&matTrans, 
		m_vPos.x+vTranslation.x, 
		m_vPos.y+vTranslation.y, 
		m_vPos.z+vTranslation.z);

	D3DXMatrixScaling(&matScale, 0.15f, 0.15f, 0.15f);
	D3DXMatrixRotationYawPitchRoll(&matRot, 
		(float)PI-((float)PI/15.0f), 
		(float)PI/16.0f, 0.0f);
	
	matWorld = matRot * matScale * matTrans * matViewInverse; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -