www.pudn.com > Game_11.rar > Unit.h


// Unit.h: interface for the CUnit class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_UNIT_H__2F05B455_E8FF_4757_8029_556AF3D4C273__INCLUDED_) 
#define AFX_UNIT_H__2F05B455_E8FF_4757_8029_556AF3D4C273__INCLUDED_ 
 
#include "SkinMesh.h" 
 
#include  
#include "Terrain.h" 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
 
class CUnit   
{ 
protected: 
	float		m_Angle; 
	float		m_Speed; 
	float		m_Sclae; 
	CSkinMesh*	m_pMesh; 
	D3DXVECTOR3 m_vDirection; 
	D3DXVECTOR3 m_vPos; 
	D3DXVECTOR3 m_vToPos; 
 
	CTerrain*	m_pTerrain; 
	 
 
public: 
	CUnit(LPDIRECT3DDEVICE9 pDevice,char *strMeshFile,	CTerrain* pTerrain); 
 
	virtual ~CUnit(); 
	virtual	LRESULT Render(float fTime); 
	void SetScale(float s) 
	{ 
		m_Sclae=s; 
	} 
 
	const	D3DXVECTOR3& GetObjectCenter() 
		{return m_pMesh->m_vObjectCenter;}; 
	const float GetObjectRadius(){return m_pMesh->m_fObjectRadius;}; 
	const D3DXVECTOR3 GetPosition(){return m_vPos;}; 
	void Update(float fTime); 
	void Goto(D3DXVECTOR3 vTo) 
	{ 
		m_vToPos=vTo; 
		D3DXVec3Normalize(&m_vDirection,&(m_vToPos-m_vPos)); 
		 
		m_Angle=-acosf(m_vDirection.x); 
		if(m_vDirection.z<0) m_Angle*=-1.0f; 
 
		m_Angle=m_Angle+D3DX_PI*3/2.0f; 
		m_pMesh->SetAnimationName("Run");   
  
	}; 
	void SetOrientation(float Angle)	 
	{ 
		m_Angle=Angle-D3DX_PI*3/2.0f; 
		m_vDirection.x=cosf(Angle); 
		m_vDirection.y=sinf(Angle); 
		m_vDirection.z=0; 
	 
	}; 
	void SetPosition(float x,float y,float z); 
	BOOL CollisionTest(CUnit*); 
 
}; 
 
#endif // !defined(AFX_UNIT_H__2F05B455_E8FF_4757_8029_556AF3D4C273__INCLUDED_)