14 this->maxparticles =
max;
25 float maxsize = (this->size >
size) ? this->size : size;
26 float minsize = (this->size <=
size) ? this->size : size;
29 GFXColorf(
col*(
col.
a*trans*( minsize/( (maxsize > 0) ? maxsize : 1.f ) ) ) );
40 GFXVertex3d( loc.i+p.i+q.i, loc.j+p.j+q.j, loc.k+p.k+q.k );
42 GFXVertex3d( loc.i+p.i-q.i, loc.j+p.j-q.j, loc.k+p.k-q.k );
44 GFXVertex3d( loc.i-p.i-q.i, loc.j-p.j-q.j, loc.k-p.k-q.k );
46 GFXVertex3d( loc.i-p.i+q.i, loc.j-p.j+q.j, loc.k-p.k+q.k );
86 loc += (vel*time).Cast();
87 col = (
col-
GFXColor( adj*time, adj*time, adj*time, adj*time ) ).clamp();
102 vector< Vector >::iterator
v = particleVel.begin();
103 vector< ParticlePoint >::iterator p = particle.begin();
113 glEnable( GL_POINT_SMOOTH );
140 while ( p != particle.end() ) {
141 if ( !(*p).Draw( *v, mytime, P, Q ) ) {
142 vector< Vector >::iterator vlast = particleVel.end();
143 vector< ParticlePoint >::iterator plast = particle.end();
150 size_t index = p-particle.begin();
151 size_t indexv = v-particleVel.begin();
153 particleVel.pop_back();
154 p = particle.begin()+
index;
155 v = particleVel.begin()+indexv;
163 glDisable( GL_POINT_SMOOTH );
174 if (particle.size() > maxparticles) {
175 vector< Vector >::iterator vel = particleVel.begin();
176 vector< ParticlePoint >::iterator p = particle.begin();
177 size_t off = ( (size_t) rand() )%particle.size();
184 particle.push_back( P );
185 particle.back().size =
size;
186 particleVel.push_back( V );