/* initialise new fire particle */ static void setnewpart(firestruct * fs, part * p) { float a, vi[3], *c; p->age = 0; a = vrnd() * M_PI * 2.0; vinit(vi, sin(a) * fs->eject_r * vrnd(), 0.15, cos(a) * fs->eject_r * vrnd()); vinit(p->p[0], vi[0] + vrnd() * fs->ridtri, vi[1] + vrnd() * fs->ridtri, vi[2] + vrnd() * fs->ridtri); vinit(p->p[1], vi[0] + vrnd() * fs->ridtri, vi[1] + vrnd() * fs->ridtri, vi[2] + vrnd() * fs->ridtri); vinit(p->p[2], vi[0] + vrnd() * fs->ridtri, vi[1] + vrnd() * fs->ridtri, vi[2] + vrnd() * fs->ridtri); vinit(p->v, vi[0] * fs->eject_vl / (fs->eject_r / 2), vrnd() * fs->eject_vy + fs->eject_vy / 2, vi[2] * fs->eject_vl / (fs->eject_r / 2)); c = partcol1; vinit4(p->c[0], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0); vinit4(p->c[1], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0); vinit4(p->c[2], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0); }
static void setnewpart(part *p) { float a,v[3],*c; p->age=0; a=vrnd()*3.14159265359*2.0; vinit(v,sin(a)*eject_r*vrnd(),0.15,cos(a)*eject_r*vrnd()); vinit(p->p[0],v[0]+vrnd()*ridtri,v[1]+vrnd()*ridtri,v[2]+vrnd()*ridtri); vinit(p->p[1],v[0]+vrnd()*ridtri,v[1]+vrnd()*ridtri,v[2]+vrnd()*ridtri); vinit(p->p[2],v[0]+vrnd()*ridtri,v[1]+vrnd()*ridtri,v[2]+vrnd()*ridtri); vinit(p->v,v[0]*eject_vl/(eject_r/2),vrnd()*eject_vy+eject_vy/2,v[2]*eject_vl/(eject_r/2)); c=blu; vinit4(p->c[0],c[0]*((1.0-RIDCOL)+vrnd()*RIDCOL), c[1]*((1.0-RIDCOL)+vrnd()*RIDCOL), c[2]*((1.0-RIDCOL)+vrnd()*RIDCOL), 1.0); vinit4(p->c[1],c[0]*((1.0-RIDCOL)+vrnd()*RIDCOL), c[1]*((1.0-RIDCOL)+vrnd()*RIDCOL), c[2]*((1.0-RIDCOL)+vrnd()*RIDCOL), 1.0); vinit4(p->c[2],c[0]*((1.0-RIDCOL)+vrnd()*RIDCOL), c[1]*((1.0-RIDCOL)+vrnd()*RIDCOL), c[2]*((1.0-RIDCOL)+vrnd()*RIDCOL), 1.0); }