📄 ch21p1_gun.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 + -