📄 cblockpoolmesh.cpp
字号:
#include "CBlockPoolMesh.h"
#include "normal.h"
#include "CGameState.h"
#include "CMaterialManager.h"
extern CMaterialManager theMaterialManager;
extern CGameState theGameState;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBlockPoolMesh::CBlockPoolMesh()
{
m_pMatBottom = NULL;
m_pMatLeft = NULL;
m_pMatRight = NULL;
m_pMeshBottom = NULL;
m_pMeshSide = NULL;
m_fSize = 0.2f;
}
CBlockPoolMesh::~CBlockPoolMesh()
{
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
bool CBlockPoolMesh::Init( IDirect3DDevice9 *pD )
{
float fWidth = float( ( theGameState.GetHalfCol() + 0 ) * 2 + 2 ) * m_fSize;
float fHeight= (float)( theGameState.GetHalfRow() * 2 + 2) * m_fSize;
bool re = true;
HRESULT hr = D3DXCreateBox( pD, fWidth, m_fSize, m_fSize, &m_pMeshBottom, NULL );
if ( FAILED( hr ) )
re = false;
hr = D3DXCreateBox( pD, m_fSize, fHeight, m_fSize, &m_pMeshSide, NULL );
if ( FAILED( hr ) )
re = false;
m_pMatBottom = new D3DXMATRIX;
m_pMatLeft = new D3DXMATRIX;
m_pMatRight = new D3DXMATRIX;
if ( m_pMatBottom && m_pMatLeft && m_pMatRight )
{
float y = (float)( theGameState.GetHalfRow() + 1 ) * m_fSize;
float x1 = (float)( theGameState.GetHalfCol() + 1 ) * m_fSize;
float x2 = (float)theGameState.GetHalfCol() * m_fSize;
D3DXMatrixTranslation( m_pMatBottom, -0.1f, -y, 0.0f );
D3DXMatrixTranslation( m_pMatLeft, -x1, 0.0f, 0.0f );
D3DXMatrixTranslation( m_pMatRight, x2, 0.0f, 0.0f );
}
if ( re == false )
Free();
return re;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CBlockPoolMesh::Free()
{
SafeRelease( m_pMeshBottom );
SafeRelease( m_pMeshSide );
SafeDelete( m_pMatBottom );
SafeDelete( m_pMatLeft );
SafeDelete( m_pMatRight );
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CBlockPoolMesh::Draw( IDirect3DDevice9 *pD )
{
pD->SetRenderState( D3DRS_LIGHTING, FALSE );
pD->SetTransform( D3DTS_WORLD, m_pMatBottom );
m_pMeshBottom->DrawSubset( 0 );
pD->SetTransform( D3DTS_WORLD, m_pMatLeft );
m_pMeshSide->DrawSubset( 0 );
pD->SetTransform( D3DTS_WORLD, m_pMatRight );
m_pMeshSide->DrawSubset( 0 );
pD->SetRenderState( D3DRS_LIGHTING, TRUE );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -