*** empty log message ***

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@501 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lee Salzman
2006-11-06 18:03:17 +00:00
parent 28daf5e6fa
commit 961dca0f0d
+23 -12
View File
@@ -69,27 +69,36 @@ void render_particles(int time)
{ 1.0f, 1.0f, 1.0f, 20, 8, 1.2f }, // blue: fireball2
{ 1.0f, 1.0f, 1.0f, 20, 9, 1.2f }, // green: fireball3
{ 1.0f, 0.1f, 0.1f, 0, 7, 0.2f }, // red: demotrack
{ 1.0f, 1.0f, 1.0f, 2, 3, 0.06f }, //
// { 1.0f, 1.0f, 1.0f, 2, 3, 0.06f }, //
};
int numrender = 0;
parttype *lastpt = NULL;
for(particle *p, **pp = &parlist; p = *pp;)
{
if(p->type==9 && p->tex!=-1) parttypes[9].tex = p->tex; // hack, AH
// if(p->type==9 && p->tex!=-1) parttypes[9].tex = p->tex; // hack, AH
parttype *pt = &parttypes[p->type];
glBindTexture(GL_TEXTURE_2D, pt->tex);
glBegin(GL_QUADS);
if(pt!=lastpt)
{
if(!lastpt || pt->tex!=lastpt->tex)
{
if(lastpt) glEnd();
glBindTexture(GL_TEXTURE_2D, pt->tex);
glBegin(GL_QUADS);
};
if(!lastpt || pt->r!=lastpt->r || pt->g!=lastpt->g || pt->b!=lastpt->b)
glColor3f(pt->r, pt->g, pt->b);
lastpt = pt;
};
glColor3d(pt->r, pt->g, pt->b);
float sz = pt->sz*particlesize/100.0f;
// perf varray?
glTexCoord2f(0.0, 1.0); glVertex3d(p->o.x+(-right.x+up.x)*sz, p->o.z+(-right.y+up.y)*sz, p->o.y+(-right.z+up.z)*sz);
glTexCoord2f(1.0, 1.0); glVertex3d(p->o.x+( right.x+up.x)*sz, p->o.z+( right.y+up.y)*sz, p->o.y+( right.z+up.z)*sz);
glTexCoord2f(1.0, 0.0); glVertex3d(p->o.x+( right.x-up.x)*sz, p->o.z+( right.y-up.y)*sz, p->o.y+( right.z-up.z)*sz);
glTexCoord2f(0.0, 0.0); glVertex3d(p->o.x+(-right.x-up.x)*sz, p->o.z+(-right.y-up.y)*sz, p->o.y+(-right.z-up.z)*sz);
glEnd();
glTexCoord2i(0, 1); glVertex3f(p->o.x+(-right.x+up.x)*sz, p->o.z+(-right.y+up.y)*sz, p->o.y+(-right.z+up.z)*sz);
glTexCoord2i(1, 1); glVertex3f(p->o.x+( right.x+up.x)*sz, p->o.z+( right.y+up.y)*sz, p->o.y+( right.z+up.z)*sz);
glTexCoord2i(1, 0); glVertex3f(p->o.x+( right.x-up.x)*sz, p->o.z+( right.y-up.y)*sz, p->o.y+( right.z-up.z)*sz);
glTexCoord2i(0, 0); glVertex3f(p->o.x+(-right.x-up.x)*sz, p->o.z+(-right.y-up.y)*sz, p->o.y+(-right.z-up.z)*sz);
xtraverts += 4;
if(numrender++>maxparticles || (p->fade -= time)<0)
@@ -102,13 +111,15 @@ void render_particles(int time)
{
if(pt->gr) p->o.z -= ((lastmillis-p->millis)/3.0f)*curtime/(pt->gr*10000);
vec a = p->d;
vmul(a,time);
vdiv(a,20000.0f);
vmul(a, time);
vdiv(a, 20000.0f);
vadd(p->o, a);
pp = &p->next;
};
};
if(lastpt) glEnd();
glEnable(GL_FOG);
glDisable(GL_BLEND);
glDepthMask(GL_TRUE);