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

📄 cblockpoolmesh.cpp

📁 俄罗斯方块3D 程序+源码俄罗斯方块3D(程序+源码
💻 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 + -