From 9aad6b12355348e766e20386a4e0fa027936e5f9 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Tue, 7 Aug 2007 11:42:54 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1197 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- packages/misc/scorch.png | Bin 0 -> 8156 bytes source/src/protos.h | 2 ++ source/src/renderparticles.cpp | 52 ++++++++++++++++++++++----------- source/src/weapon.cpp | 1 + 4 files changed, 38 insertions(+), 17 deletions(-) create mode 100644 packages/misc/scorch.png diff --git a/packages/misc/scorch.png b/packages/misc/scorch.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5bdb929af5de4a0360798886c81196d8ab7d9c GIT binary patch literal 8156 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/127.5f, s->g/127.5f, s->b/127.5, max(0, min((p->millis+p->fade - lastmillis)/1000.0f, 0.7f))); vec dx(0, 0, 0), dy(0, 0, 0); loopk(3) if(p->d[k]) { dx[(k+1)%3] = -1; dy[(k+2)%3] = p->d[k]; break; } - glTexCoord2i(0, 1); glVertex3f(p->o.x+(-dx.x+dy.x)*pt.sz, p->o.y+(-dx.y+dy.y)*pt.sz, p->o.z+(-dx.z+dy.z)*pt.sz); - glTexCoord2i(1, 1); glVertex3f(p->o.x+( dx.x+dy.x)*pt.sz, p->o.y+( dx.y+dy.y)*pt.sz, p->o.z+( dx.z+dy.z)*pt.sz); - glTexCoord2i(1, 0); glVertex3f(p->o.x+( dx.x-dy.x)*pt.sz, p->o.y+( dx.y-dy.y)*pt.sz, p->o.z+( dx.z-dy.z)*pt.sz); - glTexCoord2i(0, 0); glVertex3f(p->o.x+(-dx.x-dy.x)*pt.sz, p->o.y+(-dx.y-dy.y)*pt.sz, p->o.z+(-dx.z-dy.z)*pt.sz); + int o = detrnd((size_t)p, 11); + static const int tc[4][2] = { {0, 1}, {1, 1}, {1, 0}, {0, 0} }; + glTexCoord2i(tc[o%4][0], tc[o%4][1]); glVertex3f(p->o.x+(-dx.x+dy.x)*pt.sz, p->o.y+(-dx.y+dy.y)*pt.sz, p->o.z+(-dx.z+dy.z)*pt.sz); + glTexCoord2i(tc[(o+1)%4][0], tc[(o+1)%4][1]); glVertex3f(p->o.x+( dx.x+dy.x)*pt.sz, p->o.y+( dx.y+dy.y)*pt.sz, p->o.z+( dx.z+dy.z)*pt.sz); + glTexCoord2i(tc[(o+2)%4][0], tc[(o+2)%4][1]); glVertex3f(p->o.x+( dx.x-dy.x)*pt.sz, p->o.y+( dx.y-dy.y)*pt.sz, p->o.z+( dx.z-dy.z)*pt.sz); + glTexCoord2i(tc[(o+3)%4][0], tc[(o+3)%4][1]); glVertex3f(p->o.x+(-dx.x-dy.x)*pt.sz, p->o.y+(-dx.y-dy.y)*pt.sz, p->o.z+(-dx.z-dy.z)*pt.sz); xtraverts += 4; break; } case PT_BLOOD: { - int n = detrnd((size_t)p, 4); + int n = detrnd((size_t)p, 4), o = detrnd((size_t)p, 11);; float tx = 0.5f*(n&1), ty = 0.5f*((n>>1)&1), tsz = 0.5f; - glTexCoord2f(tx, ty+tsz); glVertex3f(p->o.x+(-camright.x+camup.x)*sz, p->o.y+(-camright.y+camup.y)*sz, p->o.z+(-camright.z+camup.z)*sz); - glTexCoord2f(tx+tsz, ty+tsz); glVertex3f(p->o.x+( camright.x+camup.x)*sz, p->o.y+( camright.y+camup.y)*sz, p->o.z+( camright.z+camup.z)*sz); - glTexCoord2f(tx+tsz, ty); glVertex3f(p->o.x+( camright.x-camup.x)*sz, p->o.y+( camright.y-camup.y)*sz, p->o.z+( camright.z-camup.z)*sz); - glTexCoord2f(tx, ty); glVertex3f(p->o.x+(-camright.x-camup.x)*sz, p->o.y+(-camright.y-camup.y)*sz, p->o.z+(-camright.z-camup.z)*sz); + static const int tc[4][2] = { {0, 1}, {1, 1}, {1, 0}, {0, 0} }; + glTexCoord2f(tx+tsz*tc[o%4][0], ty+tsz*tc[o%4][1]); glVertex3f(p->o.x+(-camright.x+camup.x)*sz, p->o.y+(-camright.y+camup.y)*sz, p->o.z+(-camright.z+camup.z)*sz); + glTexCoord2f(tx+tsz*tc[(o+1)%4][0], ty+tsz*tc[(o+1)%4][1]); glVertex3f(p->o.x+( camright.x+camup.x)*sz, p->o.y+( camright.y+camup.y)*sz, p->o.z+( camright.z+camup.z)*sz); + glTexCoord2f(tx+tsz*tc[(o+2)%4][0], ty+tsz*tc[(o+2)%4][1]); glVertex3f(p->o.x+( camright.x-camup.x)*sz, p->o.y+( camright.y-camup.y)*sz, p->o.z+( camright.z-camup.z)*sz); + glTexCoord2f(tx+tsz*tc[(o+3)%4][0], ty+tsz*tc[(o+3)%4][1]); glVertex3f(p->o.x+(-camright.x-camup.x)*sz, p->o.y+(-camright.y-camup.y)*sz, p->o.z+(-camright.z-camup.z)*sz); xtraverts += 4; break; } @@ -395,14 +401,15 @@ void render_particles(int time) { float blend = max(0, min((p->millis+p->fade - lastmillis)/1000.0f, 1.0f)); glColor3f(blend*(1-pt.r), blend*(1-pt.g), blend*(1-pt.b)); - int n = detrnd((size_t)p, 4); + int n = detrnd((size_t)p, 4), o = detrnd((size_t)p, 11); float tx = 0.5f*(n&1), ty = 0.5f*((n>>1)&1), tsz = 0.5f; + static const int tc[4][2] = { {0, 1}, {1, 1}, {1, 0}, {0, 0} }; vec dx(0, 0, 0), dy(0, 0, 0); loopk(3) if(p->d[k]) { dx[(k+1)%3] = -1; dy[(k+2)%3] = p->d[k]; break; } - glTexCoord2f(tx, ty+tsz); glVertex3f(p->o.x+(-dx.x+dy.x)*pt.sz, p->o.y+(-dx.y+dy.y)*pt.sz, p->o.z+(-dx.z+dy.z)*pt.sz); - glTexCoord2f(tx+tsz, ty+tsz); glVertex3f(p->o.x+( dx.x+dy.x)*pt.sz, p->o.y+( dx.y+dy.y)*pt.sz, p->o.z+( dx.z+dy.z)*pt.sz); - glTexCoord2f(tx+tsz, ty); glVertex3f(p->o.x+( dx.x-dy.x)*pt.sz, p->o.y+( dx.y-dy.y)*pt.sz, p->o.z+( dx.z-dy.z)*pt.sz); - glTexCoord2f(tx, ty); glVertex3f(p->o.x+(-dx.x-dy.x)*pt.sz, p->o.y+(-dx.y-dy.y)*pt.sz, p->o.z+(-dx.z-dy.z)*pt.sz); + glTexCoord2f(tx+tsz*tc[o%4][0], ty+tsz*tc[o%4][1]); glVertex3f(p->o.x+(-dx.x+dy.x)*pt.sz, p->o.y+(-dx.y+dy.y)*pt.sz, p->o.z+(-dx.z+dy.z)*pt.sz); + glTexCoord2f(tx+tsz*tc[(o+1)%4][0], ty+tsz*tc[(o+1)%4][1]); glVertex3f(p->o.x+( dx.x+dy.x)*pt.sz, p->o.y+( dx.y+dy.y)*pt.sz, p->o.z+( dx.z+dy.z)*pt.sz); + glTexCoord2f(tx+tsz*tc[(o+2)%4][0], ty+tsz*tc[(o+2)%4][1]); glVertex3f(p->o.x+( dx.x-dy.x)*pt.sz, p->o.y+( dx.y-dy.y)*pt.sz, p->o.z+( dx.z-dy.z)*pt.sz); + glTexCoord2f(tx+tsz*tc[(o+3)%4][0], ty+tsz*tc[(o+3)%4][1]); glVertex3f(p->o.x+(-dx.x-dy.x)*pt.sz, p->o.y+(-dx.y-dy.y)*pt.sz, p->o.z+(-dx.z-dy.z)*pt.sz); xtraverts += 4; break; } @@ -516,6 +523,17 @@ bool addbullethole(vec &from, vec &to, float radius) return true; } +VARP(scorchttl, 0, 10000, 30000); + +bool addscorchmark(vec &o, float radius) +{ + if(!scorchttl) return false; + sqr *s = S((int)o.x, (int)o.y); + if(s->type!=SPACE || o.z-s->floor>radius) return false; + newparticle(vec(o.x, o.y, s->floor+0.005f), vec(0, 0, 1), scorchttl, 9); + return true; +} + void addshotline(dynent *pl, vec &from, vec &to) { if(pl == player1) return; diff --git a/source/src/weapon.cpp b/source/src/weapon.cpp index 34d92021..e71b8de5 100644 --- a/source/src/weapon.cpp +++ b/source/src/weapon.cpp @@ -284,6 +284,7 @@ void splash(projectile *p, vec &v, vec &vold, int notthisplayer, int qdam) { //playsound(S_RLHIT, &v); particle_fireball(5, v); + addscorchmark(v); dodynlight(vold, v, 0, 0, p->owner); if(!p->local) return; radialeffect(player1, v, -1, qdam, p->owner);