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

📄 activeobj.cpp

📁 《OpenGL游戏编程》这本书的配套源码。
💻 CPP
字号:
//========================================================
/**
*  @file      ActiveObj.cpp
*
*  项目描述: 构造游戏引擎
*  文件描述:  游戏中的活动实体
*  适用平台: Windows98/2000/NT/XP
*  
*  作者:     WWBOSS
*  电子邮件:  wwboss123@gmail.com
*  创建日期: 2007-07-26	
*  修改日期: 2007-07-26
*
*/ 
//========================================================


#include "stdafx.h"
#include "ActiveObj.h"
#include "inifile.h"


void CActiveObj::SetObjectState(OBJ_STATE state)
{
	if(property->object_state != state)
	{
		property->old_state = property->object_state;
		property->object_state = state;
		property->ChangeCurrFrame();
	}
}


void CActiveObj::OnRender(void)
{
	glPushMatrix();
	property->vPosition=m_sPos;
	glTranslatef(property->vPosition.x , property->vPosition.y , property->vPosition.z);
	glRotatef(property->yrot,0.0f,1.0f,0.0f);
    
	if(property->shadow)
	{
		float m[16];
		float lp[4]={100.0f,100.0f,0.0f,0.0f};
		glPushMatrix();
		glLoadIdentity();
		glRotatef(-property->yrot,0.0f,1.0f,0.0f);
		glGetFloatv(GL_MODELVIEW_MATRIX,m);
		vMatMult(m,lp);
		glTranslatef(-property->vPosition.x,-property->vPosition.y,-property->vPosition.z);
		glPopMatrix();
		md2.CastShadow(lp,property->curr_frame);
	}

	if(property->m_bSelected)
	{
		glColor3f(1.f,0.f,0.f);
		glBegin(GL_LINE_LOOP);
			glVertex3f(-property->r1,1,-property->r2);
			glVertex3f(-property->r1,1, property->r2);
			glVertex3f( property->r1,1, property->r2);
			glVertex3f( property->r1,1,-property->r2);
		glEnd();
	}
	glColor4f(property->m_sColor.r,property->m_sColor.g,property->m_sColor.b,property->m_sColor.a);
	md2.RenderFrame(property->curr_frame,property->next_frame,property->t);
	glPopMatrix();	
	
	EndRender();
}



BOOL CActiveObj::Init(char *filename,char*texfilename,float scale,float h)
{
	if(!md2.Init(filename,texfilename,scale,h))
		return FALSE;

	return TRUE;
}


void CActiveObj::vMatMult(float M[], float v[])
{
    float res[4];										
	res[0]=M[ 0]*v[0]+M[ 4]*v[1]+M[ 8]*v[2]+M[12]*v[3];
	res[1]=M[ 1]*v[0]+M[ 5]*v[1]+M[ 9]*v[2]+M[13]*v[3];
	res[2]=M[ 2]*v[0]+M[ 6]*v[1]+M[10]*v[2]+M[14]*v[3];
	res[3]=M[ 3]*v[0]+M[ 7]*v[1]+M[11]*v[2]+M[15]*v[3];
	v[0]=res[0];									
	v[1]=res[1];
	v[2]=res[2];
	v[3]=res[3];
}

⌨️ 快捷键说明

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