// // 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 // // ------------------------------------------------------------------------- // // Sparks // // static const char id[]="$Id$"; #include "sparks.h" Sparks::Sparks(int num, GLfloat alpha_dec, GLfloat alpha_min, int len, GLfloat delta) { m_num=max(num,1); m_alpha_dec=alpha_dec; m_alpha_min=alpha_min; m_len=max(len,1); m_delta=delta; } Sparks::~Sparks() { } void Sparks::add(GLfloat ox, GLfloat oy, GLfloat oz) { int f; Point p; p.x2=ox; p.y2=oy; p.z2=oz; p.life=m_life; for(f=0;f::iterator i; // Delete dead sparks // i=m_list.begin(); while ((i!=m_list.end())&&(i->alpha<=m_alpha_min)) { m_list.pop_front(); i=m_list.begin(); } // Update them // for(i=m_list.begin();i!=m_list.end();i++) { i->x1+=i->dx; i->y1+=i->dy; i->z1+=i->dz; i->x2+=i->dx; i->y2+=i->dy; i->z2+=i->dz; i->alpha-=m_alpha_dec; } } void Sparks::draw() { list::iterator i; // Draw them // glBegin(GL_LINES); for(i=m_list.begin();i!=m_list.end();i++) { glColor4f(1.0,1.0,0.0,i->alpha); glVertex3f(i->x1,i->y1,i->z1); glColor4f(0.5,0.0,0.0,i->alpha); glVertex3f(i->x2,i->y2,i->z2); } glEnd(); } // END OF FILE //