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

📄 hitmark.cpp

📁 是3D游戏一书中所讲的游戏引擎fly3D 包括fly3D引擎的源码及应用此引擎开发出来的游戏实例 有fly3D引擎的教程,易于step by step跟学
💻 CPP
字号:
#include "..\..\lib\Fly3D.h"
#include "weapon.h"

int hitmark::step(int dt)
{
	if (node==0)
		life=-1;
	else
	{
	life-=dt;
	if (mode)
		{
		pos.z+=vel.z*dt;
		return 1;
		}
	}
	return 0;
}

void hitmark::draw()
{
	if (texture==-1 || node==0)
		return;
	tc->use(texture);

	float transp;
	if (life<fadetime)
		if (life>=0)
			transp=(float)life/fadetime;
		else transp=0.0f; 
	else transp=1.0f;

	glDepthMask(GL_FALSE);

	if (flyengine->piclib[texture]->bytespixel!=4)
	{
		glBlendFunc(GL_ZERO,GL_ONE_MINUS_SRC_COLOR);
		glColor3f(transp,transp,transp);
	}
	else
	{
		glColor4f(node->color.x+dynlight.x,node->color.y+dynlight.y,node->color.z+dynlight.z,transp);
		dynlight.null();
	}

	static vector x,y;
	if (mode)
	{
		x=flyengine->cam->X*size;
		y=flyengine->cam->Y*size;
	}
	else 
	{
		x=X*size;
		y=Y*size;
	}

	glBegin(GL_QUADS);

	glTexCoord2f(1,0);
	glVertex3f(pos.x+x.x-y.x, pos.y+x.y-y.y, pos.z+x.z-y.z);

	glTexCoord2f(1,1);
	glVertex3f(pos.x+x.x+y.x, pos.y+x.y+y.y, pos.z+x.z+y.z);

	glTexCoord2f(0,1);
	glVertex3f(pos.x+y.x-x.x, pos.y+y.y-x.y, pos.z+y.z-x.z);

	glTexCoord2f(0,0);
	glVertex3f(pos.x-x.x-y.x, pos.y+-x.y-y.y, pos.z-x.z-y.z);

	glEnd();

	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
	glDepthMask(GL_TRUE);
}

bsp_object *hitmark::clone()
{
	hitmark *tmp=new hitmark;
	*tmp=*this;
	tmp->source=this;
	return tmp;
}

int hitmark::get_custom_param_desc(int i,param_desc *pd)
{
	if (pd!=0)
	switch(i)
	{
		case 0:
			pd->type='p';
			pd->data=&texture;
			strcpy(pd->name,"texture");
			break;
		case 1:
			pd->type='f';
			pd->data=&size;
			strcpy(pd->name,"size");
			break;
		case 2:
			pd->type='i';
			pd->data=&fadetime;
			strcpy(pd->name,"fadetime");
			break;
	}
	return 3;
}

int hitmark::message(vector& p,float rad,int msg,int param,void *data)
{
	if (msg==FLYOBJM_ILLUM)
	{
		float fac=(p-pos).length()/rad;
		if (fac<1.0f)
			dynlight+=*((vector *)data)*(1.0f-fac);
	}

	return 1;
}

⌨️ 快捷键说明

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