// // glgrav - OpenGL N-Body gravity simulator // // Copyright (C) 2003 Ian Cowburn (ianc@noddybox.demon.co.uk) // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // ------------------------------------------------------------------------- // // Particles // // static const char id[]="$Id$"; #include "particles.h" Particles::Particles(GLfloat alpha_dec, GLfloat alpha_min) { m_alpha_dec=alpha_dec; m_alpha_min=alpha_min; } Particles::~Particles() { } void Particles::add(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2, GLfloat r, GLfloat g, GLfloat b) { Point p; p.x1=x1; p.y1=y1; p.z1=z1; p.x2=x2; p.y2=y2; p.z2=z2; p.r=r; p.g=g; p.b=b; p.a=1.0; m_list.push_back(p); } void Particles::draw() { list::iterator i; glBegin(GL_LINES); for(i=m_list.begin();i!=m_list.end();i++) { i->a-=m_alpha_dec; glColor4f(i->r,i->g,i->b,i->a); glVertex3f(i->x1,i->y1,i->z1); glVertex3f(i->x2,i->y2,i->z2); } glEnd(); } void Particles::update() { list::iterator i; // Delete dead particles // i=m_list.begin(); while ((i!=m_list.end())&&(i->a<=m_alpha_min)) { m_list.pop_front(); i=m_list.begin(); } // Update them // for(i=m_list.begin();i!=m_list.end();i++) i->a-=m_alpha_dec; } // END OF FILE //