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_)