📄 mdlobj.cpp
字号:
// mdlobj.cpp: implementation of the mdlobj class.
// 学程序编游戏系列丛书
// 唐明理 E_mail: cqtmL@163.com
//====================================================================
#include "stdafx.h"
#include "mdlobj.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
////////////////////////////////////////
TMDLModel MdlModel[2]; // MDL Model
//////////////////////////////////////////////////////////////////////////
mdlobj::mdlobj()
{ z_rot3=-90.0f;
Animation=0;
Models=1;
}
mdlobj::~mdlobj()
{
}
/////////////////////////////////////////////////////////////////////
void mdlobj::DrawModels(float x,float y,float z,int a,float size,float rz,float ry)
{ glPushMatrix();
glEnable(GL_LIGHTING); //使用贴图
glEnable(GL_TEXTURE_2D); //使用光照
glTranslatef(x, y, z);
glScalef( size, size,size);
glRotated(-90,1.0f,0.0f,0.0f);
glRotated(-rz+5,0.0f,0.0f,1.0f);
glRotated(-ry*2/3-5,0.0f,1.0f,0.0f);
static float Previous;
float Current = GetTickCount( )/1000.0f;
MdlModel[a].AdvanceFrame(Current - Previous);
MdlModel[a].DrawModel();
Previous = Current;
if(Animation<1)
{Animation=0;
MdlModel[a].SetSequence(0);
}
if(Animation>0) Animation--;
glPopMatrix();
}
void mdlobj::fire(int a)//射击动作转换
{ MdlModel[0].SetSequence(a);
tagMDLSeqDescription *aa=(tagMDLSeqDescription *)((BYTE *)MdlModel[0].Header
+ MdlModel[0].Header->SequenceOffset)+a;//取每个动作的数
Animation=aa->NumFrames/5;
}
int mdlobj::InitGL(int a,char* na) // All Setup For OpenGL Goes Here
{ MdlModel[a].Init(na);
MdlModel[a].SetSequence(0);
return TRUE; // Initialization Went OK
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -