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

📄 mcparts.h

📁 国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国内还没有,所以找不到测试
💻 H
字号:
// MCParts.h: interface for the CMCParts class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MCPARTS_H__97201B8A_C32F_428F_91C9_76734962E5E0__INCLUDED_)
#define AFX_MCPARTS_H__97201B8A_C32F_428F_91C9_76734962E5E0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define MAX_PARTS	4

// Prototype
class CCollision;
class CPlayer;
struct PICKING;

enum DAMAGE_POS
{
	Damage_Head = 0,
	Damage_LeftArm, Damage_RightArm,
	Damage_LeftLeg, Damage_RightLeg
};

typedef struct DAMAGE_MESH
{
	CMCMesh *pMesh;
	DAMAGE_POS tagDamagePos;

	DAMAGE_MESH::DAMAGE_MESH():pMesh(NULL){}

}DAMAGE_MESH;

class CMCParts
{
public:
	CMCParts();
	virtual ~CMCParts();
	
	//--------------------------------------------------------------------------------------------------//
	//	积己&颇鲍 包访窃荐
	//--------------------------------------------------------------------------------------------------//
	HRESULT		CreateParts(LPDIRECT3DDEVICE9 pD3dDevice,DWORD nPartType, CMCModel *pModel);

	//--------------------------------------------------------------------------------------------------//
	//	罚歹傅 包访窃荐
	//--------------------------------------------------------------------------------------------------//
	bool		Render(bool bBoxbound=false,bool bWeir=false);
	void		RotateAxis(D3DXVECTOR3 *vAxis,float Angle,BOOL bChange=FALSE);
	void		RotateVector(D3DXQUATERNION *pQuter,D3DXVECTOR3 *pV);

	void		Scaling(float sx,float sy, float sz)		{ D3DXMatrixScaling(&m_matScale,sx,sy,sz); }
	void		Translation(D3DXVECTOR3 *pPos, BOOL bChange=FALSE);
		
	//--------------------------------------------------------------------------------------------------//
	//	局聪概捞记 包访窃荐
	//--------------------------------------------------------------------------------------------------//
	BOOL		SetAnimation(ANI_ACTION nType, int nLooping=-1);
	void		UpdateAnimation(DWORD dwElapsed);

	UINT		GetCurFrame()		{ return m_nCurFrame; }
	UINT		GetStartFrame() 	{ return m_nStartFrame; }
	UINT		GetEndFrame()		{ return m_nEndFrame; }
	UINT		GetCurAniType()		{ return m_nAniType; }
	UINT		GetLoopNum()		{ return m_nLooping; }
		
	//--------------------------------------------------------------------------------------------------//
	// m_pBasis篮 郴 磊脚捞(this) 弊妨历具且 困摹(tag)甫 啊柳 颇明狼 器牢磐捞促.
	void		SetParents(CMCParts *pPart,WORD wParentsRotateApply=TRUE, BOOL bParentsPosApply=TRUE)
												{ if(pPart!=NULL) m_pBasis = pPart;
												  m_bParentsPosApply = bParentsPosApply;
												  m_wParentsRotateApply = wParentsRotateApply; }
	
	D3DTAG*		GetCurTag()		{ return &m_pTag[m_nCurrentAniIndex][ m_nCurFrame * m_pModel->GetMD3Header( m_nCurrentAniIndex )->iTagNum ]; }
	D3DTAG*		GetNextTag()	{ return &m_pTag[m_nCurrentAniIndex][ m_nNextFrame * m_pModel->GetMD3Header( m_nCurrentAniIndex )->iTagNum ]; }
	float		GetInterPolation()				{ return m_finterPolation; }
	int			GetType()						{ return m_nPartType; }
	CMCModel*	GetModel()						{ return m_pModel; }
	MD3BOUNDBOX*GetBoundBox()					{ return m_pModel->GetBoundBox(m_nCurFrame, m_nCurrentAniIndex); }
	LPD3DXMESH  GetBoundBox(D3DXMATRIXA16 *pMatWorld, int nFrameNum = -1);
	LPD3DXMESH  GetBoundBox(char *strMeshName, D3DXMATRIXA16 *pMatWorld,int nFrameNum = -1);	// 技何 皋浆狼 官款爹 冠胶甫 父甸绢霖促.

	D3DXMATRIX*	GetWorldMatrix()				{ return &m_matWorld; }
	D3DXMATRIX* GetTransMatrix()				{ return &m_matTrans; }
	D3DXMATRIX* GetScaleMatrix()				{ return &m_matScale; }

	D3DXVECTOR3	GetLookDir()					{ return m_vLook; }
	D3DXVECTOR3	GetRightDir()					{ return m_vRight;}
	D3DXVECTOR3	GetUpDir()						{ return m_vUp; }

	D3DXVECTOR3 GetPosVector()					{ return D3DXVECTOR3(m_matTrans._41,m_matTrans._42,m_matTrans._43);}

	void	SetRotateQuater(D3DXQUATERNION q)	{ m_quateRotate = q;}
	D3DXQUATERNION* GetRotateQuater()			{ return &m_quateRotate;}
	D3DXQUATERNION* GetResultQuater()			{ return &m_quateResult;}

	void		SetWorldMatrix();
	D3DTAG*		FindTag(char *szTagName);
	
	bool		GetFirePos(D3DXVECTOR3 *pOut);
	bool		GetFireMatrix(D3DXMATRIX *pOut);
	MD3ANI*		FindAnimatin(ANI_ACTION Anitype);

	void		ReSetRotation(){	m_vLook		= D3DXVECTOR3(0.0f,0.0f,1.0f);
									m_vRight	= D3DXVECTOR3(1.0f,0.0f,0.0f);
									m_vUp		= D3DXVECTOR3(0.0f,1.0f,0.0f);	
									D3DXQuaternionIdentity(&m_quateRotate);
								}
	//---------------------------------------------------------------------------------------------
	// 面倒 盲农
	//---------------------------------------------------------------------------------------------
	CCollision*		GetCollision();

	// 窃荐 龋免阑 弥家拳 窍扁 困秦辑 咯扁辑 贸府 秦霖促.
	// 狼固甫 蝶瘤磊搁 Collision俊辑 贸府窍绰霸 嘎绰巴 鞍澜.
	CMCMesh*		MeshCollision(PICKING *pTagRay);

	BYTE			GetAniIndex() { return m_nCurrentAniIndex; }
	void			SetAniIndex( BYTE nIndex ) { m_nCurrentAniIndex = nIndex; }

public:
	
	//-----------------------------------------
	// 面倒盲农俊 静捞绰 函荐
	//vector<DAMAGE_MESH*> m_listMinDamage;

	int			m_nRenderType;

private:
	//--------------------------------------------------------------------------------------------------//
	// 观俊辑 荤侩窍搁 救登绰 窃荐甸
	//--------------------------------------------------------------------------------------------------//
	void	TagRender();	// tag俊 嘎苗辑 罚歹傅 且 荐 乐档废 霖厚秦霖促.
	
private:
	LPDIRECT3DDEVICE9 m_pd3dDevice;
	
	int m_nPartType;
	
	CCollision* m_pCollision;
	CMCModel *m_pModel;
	CMCParts *m_pBasis;	// 磊扁 磊脚狼 何葛拜?
	
	BOOL m_bParentsPosApply;	// 何葛狼 困摹蔼阑 罐阑搏瘤 扁夯蔼 TRUE
	WORD m_wParentsRotateApply; // 何葛狼 雀傈蔼阑 罐阑搏瘤 瘤沥 扁夯蔼 TRUE [ 2 = 何葛雀傈蔼俊 磊扁 磊脚狼 蔼阑 歹窃 ]

	D3DTAG *m_pTag[MAX_BONEANI];

	D3DXMATRIXA16 m_matTrans;
	D3DXMATRIXA16 m_matRotat;
	D3DXMATRIXA16 m_matScale;
	D3DXMATRIXA16 m_matWorld;

	D3DXQUATERNION m_quateRotate;	// 磊脚狼 雀傈蔼阑 啊瘤绊 乐绰 孽磐
	D3DXQUATERNION m_quateResult;	// Tag蔼苞 困俊 孽磐客 弥辆 拌魂登绢龙 孽磐(某腐磐俊 利侩登绰 孽磐)
	
	D3DXVECTOR3 m_vLook;
	D3DXVECTOR3 m_vUp;
	D3DXVECTOR3 m_vRight;
	
	// Animation 函荐
	ANI_ACTION m_nAniType;
	UINT m_nStartFrame;
	UINT m_nEndFrame;
	int m_nLooping;

	UINT m_nCurFrame;
	UINT m_nNextFrame;
	DWORD m_dwMSPF;		// Mill Second Per Frame
	DWORD m_dwAccTime;	// 穿利~
	float m_finterPolation; // 焊埃俊 静捞绰芭

	//-----------------------------------------
	// 面倒盲农俊 静捞绰 函荐
	vector<LPD3DXMESH> m_listPartBox[MAX_BONEANI];

	BYTE			m_nCurrentAniIndex;
};

#endif // !defined(AFX_MCPARTS_H__97201B8A_C32F_428F_91C9_76734962E5E0__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -