www.pudn.com > 林海血原源代码.zip > Rocket.cpp
// Rocket.cpp: implementation of the CRocket class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Rocket.h"
#include "math.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRocket::CRocket()
{
m_life=0;
m_Speed=10.0f;
listPos=0;
m_bHit=false;
}
CRocket::~CRocket()
{
}
bool CRocket::InitRocket(VERTEX startPos,float rotx,float roty,NORMAL direction,unsigned int texid )
{
m_texid=texid;
m_CurPos=startPos;
m_oldPos=startPos;
m_rotX=rotx;
m_rotY=roty;
m_rotZ=0;
m_direction = direction;
m_life=400;
m_bHit=false;
for(int i=0;i-1;i--)
{
if(m_particle[i].life>0)
{
glPushMatrix();
glTranslatef(m_particle[i].pos.xpos, m_particle[i].pos.ypos, m_particle[i].pos.zpos);
glRotated( m_rotY,0,1,0);
glRotated(-m_rotX,1,0,0);
// glRotatef(*m_cHmap.m_pViewRotY, 0.0f,1.0f,0.0f);
// glRotatef(-*m_cHmap.m_pViewRotX, 1.0f,0.0f,0.0f);
glColor4d(0.5f,0.5f,0.5f,m_particle[i].life);
glBegin(GL_QUADS);
glTexCoord2d(0,0);
glVertex3f(-m_particle[i].size,-m_particle[i].size,0);
glTexCoord2d(1,0);
glVertex3f( m_particle[i].size,-m_particle[i].size,0);
glTexCoord2d(1,1);
glVertex3f( m_particle[i].size, m_particle[i].size,0);
glTexCoord2d(0,1);
glVertex3f(-m_particle[i].size, m_particle[i].size,0);
glEnd();
glPopMatrix();
}
}
for( i=P_MAXNUM;i>listPos;i--)
{
if(m_particle[i].life>0)
{
glPushMatrix();
glTranslatef(m_particle[i].pos.xpos, m_particle[i].pos.ypos, m_particle[i].pos.zpos);
glRotated( m_rotY,0,1,0);
glRotated(-m_rotX,1,0,0);
glColor4d(0.5f,0.5f,0.5f,m_particle[i].life);
glBegin(GL_QUADS);
glTexCoord2d(0,0);
glVertex3f(-m_particle[i].size,-m_particle[i].size,0);
glTexCoord2d(1,0);
glVertex3f( m_particle[i].size,-m_particle[i].size,0);
glTexCoord2d(1,1);
glVertex3f( m_particle[i].size, m_particle[i].size,0);
glTexCoord2d(0,1);
glVertex3f(-m_particle[i].size, m_particle[i].size,0);
glEnd();
glPopMatrix();
}
}
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
glEnable(GL_CULL_FACE);
glColor3f(1,1,1);
listPos++;
if(listPos>(P_MAXNUM-1))listPos=0;
}
void CRocket::Flamethrow()
{
for(int i=0;i0)
{
m_particle[i].life-=0.1f;
m_particle[i].size+=0.5f;
// m_particle[i].pos.ypos+=(1-m_particle[i].life)*1.0f;
}
}
m_particle[listPos].life = 1;
m_particle[listPos].size = 1.5f;
m_particle[listPos].pos = m_CurPos;
}