📄 mcparts.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 + -