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

📄 mcmodel.h

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

#if !defined(AFX_MCMODEL_H__05936A31_84B8_4099_8567_0A7262EFAABD__INCLUDED_)
#define AFX_MCMODEL_H__05936A31_84B8_4099_8567_0A7262EFAABD__INCLUDED_

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

//----------------------------------------------------------------------------------//
//	D e f i n e
//----------------------------------------------------------------------------------//
#ifndef SAFE_DELETE
#define SAFE_DELETE(p)  { if(p) { delete (p);     (p)=NULL; } }
#endif
#ifndef SAFE_DELETE_ARRAY
#define SAFE_DELETE_ARRAY(p) { if(p) {delete [](p); (p)=NULL;} }
#endif
#ifndef SAFE_RELEASE
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL;} }
#endif

#define MD3VERSION	15
#define MAX_MODEL 4 // 葛胆鸥涝狼 弥措摹甫 沥茄促~

#define D3DFVF_VERTEX (D3DFVF_XYZ | D3DFVF_NORMAL|D3DFVF_TEX1 )

enum MODEL_TYPE
{
	MODEL_EQUIP = 0,	//-> 葛电 厘厚幅俊 甸绢埃促.
	MODEL_PLAYER,
	MODEL_BULLET,

	MODEL_OBJECT = 100,
	MODEL_TERRAIN,
	MODEL_NOTTING,
};

// Animation Enum
enum ANI_ACTION
{
/*	!! 官诧 局聪 !! */

	// Torso Ani
	TORSO_STAND1 = 0,
	TORSO_STAND2,		TORSO_DEAD,
	TORSO_WEAPON_DOWN,	TORSO_WEAPON_UP,
	TORSO_ATTACK,		TORSO_SIGHT_ATTACK,
	TORSO_SIGHT_UP,		TORSO_SIGHT,
	TORSO_SIGHT_DOWN,	TORSO_RELOAD,
	TORSO_STRUCK,

	// Legs Ani
	LEGS_STAND1 = 1000,
	LEGS_STAND2,
	LEGS_DEAD,			LEGS_WALK,
	LEGS_BAKWALK,		LEGS_SIT_WALK,
	LEGS_SIT_BAKWALK,	LEGS_RUN,
	LEGS_JUMP,			LEGS_JUMPING,
	LEGS_LAND,			LEGS_LANDING,
	LEGS_DUME,			LEGS_SITDOWN,
	LEGS_SIT,			LEGS_SITUP,
	LEGS_STRUCK,		LEGS_BOOSTER_START,
	LEGS_BOOSTER,		LEGS_BOOSTER_END,

	MAX_ANI,
	STOP_ANI,

	MAX_ANIMATION	// MCModel.cpp 锭巩俊 混妨狄 绊模 第俊绰 昏力窍磊
};

typedef struct 
{
	ANI_ACTION Action;
	ANI_ACTION *pCanList;
	DWORD dwSize;
}ANI_LIST;

typedef struct
{
	DWORD id;
	int iVersion;
	char cFileName[68];

	int iBoneFrameNum;
	int iTagNum;
	int iMeshNum;
	int iMaxTextureNum;
	int iHeaderSize;
	
	int iTagStart;
	int iMeshStart;
	int iFileSize;
}MD3HEADER;

//----------------------------------------------------------------------------------//
// 颇老俊辑 佬绢棵锭父 静绊 滚赴促~
typedef struct 
{
	char	szTagName[64];
	float	Position[3];	// 怕弊狼 困摹牢啊
	float	fMatrix[3][3]; // 怕弊啊 啊府虐绰 规氢
}MD3TAG;

//-----------------------------------------------------------------------------------//
// MD3 MeshHeader
typedef struct 
{
	DWORD id;
	char szName[68];
	int iMeshFrameNum;
	int iTextureNum;
	int iVertexNum;

	int iTriangleNum;
	int iTriangleStart;
	int iHeaderSize;
	int iTecVecStart;
	int iVertexStart;
	int iMeshSize;
}MD3MESHHEADER;

//-----------------------------------------------------------------------------------//
// 胶农赋飘 包访 颇老阑 佬绰 备炼眉扼绰单...
// 2. 氓俊辑绰 咆胶贸匙烙捞扼绰单 ぱぱ;;; 构瘤
// 酒贰 2俺 备炼眉绰 (texname,triangle) 颇老阑 佬绢棵锭父 敬促.
typedef struct 
{
	char szString[68];
}MD3TEXNAME;

typedef struct 
{
	int Index[3];
}MD3TRIANGLE;

//-----------------------------------------------------------------------------------//
// 磺咆胶 汲疙~
// 阿阿阑 拘绵秦辑 历厘窍绰单, 关俊 阿 拘绵 规侥
//-----------------------------------------------------------------------------------//
// 磺咆胶 : 胶纳老傅蔼阑 啊瘤绊 拘绵茄促.
// float屈 谅钎 * 胶奶傅 = 弥辆蔼 | 叼内爹且锭绰 馆措肺 short屈 谅钎 / 胶奶傅 = 弥辆蔼
// 过急 : 盔贰扼搁 flaot x,y,z啊 鞘夸茄单 short屈栏肺 拘绵窃
// 构 困档客 版档啊 绢录绊 秦辑 x,y 滴俺肺 钎泅捞 啊瓷茄单 阿阿 蔼阑 0~255肺 力茄 矫虐搁
// 阿阿阑 8厚飘俊 淬阑荐 乐栏聪, 醚 16厚飘秦辑 short 茄俺俊 钎泅啊瓷窍促绊 窃 ぱぱ;
typedef struct 
{
	short Vertex[3];
	short Normal;
}MD3VERTEX_FILE;

//------------------------------------------------------------------------------------//
// 酒贰 滴 备炼眉绰 角力肺 罚歹傅 窍芭唱 且锭 静绰 备炼眉
typedef struct 
{
	D3DXVECTOR3 vVector;
	D3DXVECTOR3 vNoraml;
	D3DXVECTOR2 Tex;
}D3DFVFVERTEX;

typedef struct 
{
	char szTagName[64];
	D3DXMATRIXA16 matTag;
}D3DTAG;

// Animation
typedef struct 
{
	UINT nType;
	UINT nFirstFrame, nNumFrames,nLoopingFrames, nFramesPerSecond;
}MD3ANI;

// 怕弊蔼俊 狼茄 函券 青纺
typedef struct 
{
	D3DXMATRIXA16 matInverse;
}TAGINVERSE;

// 怕弊蔼俊 狼茄 函券 谅钎
typedef struct 
{
	D3DXVECTOR3	vPos;
}TAGPOS;

class CMCModel  
{
public:
	CMCModel();
	virtual ~CMCModel();

	HRESULT	CreateMD3Model(LPDIRECT3DDEVICE9 pD3dDevice, char *szMCFileName,char *szTexFileName, 
						char *szAniFileName, UINT nPartType, UINT nIDCode );

	HRESULT	CreateModelEx( char *szMCFileName, char *szTMFileName, char *szTexFileName, 
						char *szAniFileName, UINT nPartType );

	HRESULT	LoadFile( char * szFileName );
	HRESULT	LoadModel( char * szFileName );
	HRESULT	LoadTMFile( char * szFileName, BYTE nIndex);
	HRESULT LoadTexture( char * szFileName );
	HRESULT	LoadAnimation( char * szFileName, BYTE nIndex );
	BOOL	Render(UINT nCurFrame,UINT nNextFrame,float finter, BYTE nIndex );
	BOOL	RenderEx( D3DXMATRIX matWorld, UINT nCurFrame,UINT nNextFrame,float finter, BYTE nIndex);
	void	BoundingBoxRender(DWORD dwCurFrame, D3DXMATRIX& matWorld, BYTE nIndex);
	HRESULT CreateVertexIndexBuffer();
	HRESULT CreateVertexIndexBufferEx();		// MC6 俊辑 静捞绰巴..
	HRESULT CreateBoundBox( BYTE nIndex );					// MC6 俊辑 静捞绰巴..
	HRESULT ReleaseVertexIndex();

	MD3HEADER*		GetMD3Header(BYTE nIndex)	{ return &m_MD3Header[nIndex]; }
	MD3BOUNDBOX*	GetBoundBox( DWORD dwCurFrame, BYTE nIndex ) { return &m_pBoundBox[nIndex][dwCurFrame]; }
	D3DTAG*			GetTag(BYTE nIndex) { return m_pTag[nIndex]; }

	CMCMesh*		GetMesh(char *pName, int *pCurCnt = NULL);
	CMCMesh*		GetMesh()		{ return m_pBoneMesh; }		// 皋浆狼 矫累 林家甫 府畔
	int				GetMeshCnt()	{ return m_nMeshCount; }	// 皋浆 俺荐 府畔

	char *	GetFilePath()	{ return m_szMCFileName; }
	char *	GetTexPath()	{ return m_szTexFileName; }
	char *	GetAniPath()	{ return m_szAniFileName; }
	//int		GetIDCode()		{ return m_nIDCode; }
	int		GetType()		{ return m_nPartType; }
	
public:
	// Animation Info
	vector<MD3ANI * >	m_listAni[MAX_BONEANI];

private:
	LPDIRECT3DDEVICE9	m_pd3dDevice;

	int					m_nIDCode;		// 某腐磐 辆幅
	int					m_nPartType;	// 何困(颇明) 辆幅
	char *				m_szMCFileName;	// 颇老 版肺
	char *				m_szTexFileName;// 咆胶贸版肺
	char *				m_szAniFileName;// 局聪概捞记版肺

	int					m_nMeshCount;
	CMCMesh *			m_pBoneMesh;
	CMCAni *			m_pBoneAni[MAX_BONEANI];

	D3DTAG *			m_pTag[MAX_BONEANI];

	MD3HEADER			m_MD3Header[MAX_BONEANI];
	MD3BOUNDBOX *		m_pBoundBox[MAX_BONEANI];

	char				m_szName[68];
};

#endif // !defined(AFX_MCMODEL_H__05936A31_84B8_4099_8567_0A7262EFAABD__INCLUDED_)

⌨️ 快捷键说明

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