Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ParticlePoint Class Reference

#include <particle.h>

Public Member Functions

bool Draw (const Vector &delta, const double time, Vector p, Vector q)
 

Public Attributes

QVector loc
 
GFXColor col
 
float size
 

Detailed Description

Definition at line 8 of file particle.h.

Member Function Documentation

bool ParticlePoint::Draw ( const Vector delta,
const double  time,
Vector  p,
Vector  q 
)

Definition at line 17 of file particle.cpp.

References _Universe, GFXColor::a, Universe::AccessCamera(), col, Camera::GetPosition(), VegaConfig::getVariable(), GFXBegin(), GFXColorf(), GFXEnd(), GFXPOINT, GFXQUAD, GFXTexCoord2f(), GFXVertex3d(), GFXVertexf(), loc, XMLSupport::parse_bool(), XMLSupport::parse_float(), QVector, size, and vs_config.

18 {
19  static float pgrow = XMLSupport::parse_float( vs_config->getVariable( "graphics", "sparkegrowrate", "200.0" ) ); //200x size when disappearing
20  static float adj = XMLSupport::parse_float( vs_config->getVariable( "graphics", "sparklefade", "0.1" ) );
21  static float trans = XMLSupport::parse_float( vs_config->getVariable( "graphics", "sparklealpha", "2.5" ) ); //NOTE: It's the base transparency, before surface attenuation, so it needn't be within the [0-1] range.
22  static bool use_points = XMLSupport::parse_bool( vs_config->getVariable( "graphics", "point_sparkles", "false" ) );
23 
24  float size = this->size*(pgrow*(1-col.a)+col.a);
25  float maxsize = (this->size > size) ? this->size : size;
26  float minsize = (this->size <= size) ? this->size : size;
27  //Squared, surface-linked decay - looks nicer, more real for emmisive gasses
28  //NOTE: maxsize/minsize allows for inverted growth (shrinkage) while still fading correctly. Cheers!
29  GFXColorf( col*( col.a*trans*( minsize/( (maxsize > 0) ? maxsize : 1.f ) ) ) );
30 
31  {
32  QVector loc = this->loc-_Universe->AccessCamera()->GetPosition();
33  if (use_points) {
34  GFXVertexf( loc );
35  } else {
36  #if 0
37  q *= size;
38  p *= size;
39  GFXTexCoord2f( 0, 0 );
40  GFXVertex3d( loc.i+p.i+q.i, loc.j+p.j+q.j, loc.k+p.k+q.k );
41  GFXTexCoord2f( 0, 1 );
42  GFXVertex3d( loc.i+p.i-q.i, loc.j+p.j-q.j, loc.k+p.k-q.k );
43  GFXTexCoord2f( 1, 1 );
44  GFXVertex3d( loc.i-p.i-q.i, loc.j-p.j-q.j, loc.k-p.k-q.k );
45  GFXTexCoord2f( 1, 0 );
46  GFXVertex3d( loc.i-p.i+q.i, loc.j-p.j+q.j, loc.k-p.k+q.k );
47 #else
48  GFXTexCoord2f( 0, 0 );
49  GFXVertex3d( loc.i+size, loc.j+size, loc.k );
50  GFXTexCoord2f( 0, 1 );
51  GFXVertex3d( loc.i+size, loc.j-size, loc.k );
52  GFXTexCoord2f( 1, 1 );
53  GFXVertex3d( loc.i-size, loc.j-size, loc.k );
54  GFXTexCoord2f( 1, 0 );
55  GFXVertex3d( loc.i-size, loc.j+size, loc.k );
56 
57  GFXTexCoord2f( 0, 0 );
58  GFXVertex3d( loc.i, loc.j+size, loc.k+size );
59  GFXTexCoord2f( 0, 1 );
60  GFXVertex3d( loc.i, loc.j-size, loc.k+size );
61  GFXTexCoord2f( 1, 1 );
62  GFXVertex3d( loc.i, loc.j-size, loc.k-size );
63  GFXTexCoord2f( 1, 0 );
64  GFXVertex3d( loc.i, loc.j+size, loc.k-size );
65 
66  GFXTexCoord2f( 0, 0 );
67  GFXVertex3d( loc.i+size, loc.j, loc.k+size );
68  GFXTexCoord2f( 0, 1 );
69  GFXVertex3d( loc.i+size, loc.j, loc.k-size );
70  GFXTexCoord2f( 1, 1 );
71  GFXVertex3d( loc.i-size, loc.j, loc.k-size );
72  GFXTexCoord2f( 1, 0 );
73  GFXVertex3d( loc.i-size, loc.j, loc.k+size );
74 #endif
75 
76 #if 0
77  GFXEnd();
78  GFXBegin( GFXPOINT );
79  GFXVertexf( loc );
80  GFXEnd();
81  GFXBegin( GFXQUAD );
82 #endif
83  }
84  }
85 
86  loc += (vel*time).Cast();
87  col = ( col-GFXColor( adj*time, adj*time, adj*time, adj*time ) ).clamp();
88  return col.a != 0;
89 }

Member Data Documentation

GFXColor ParticlePoint::col

Definition at line 12 of file particle.h.

Referenced by UniverseUtil::addParticle(), DoParticles(), and Draw().

QVector ParticlePoint::loc

Definition at line 11 of file particle.h.

Referenced by UniverseUtil::addParticle(), DoParticles(), and Draw().

float ParticlePoint::size

Definition at line 13 of file particle.h.

Referenced by ParticleTrail::AddParticle(), and Draw().


The documentation for this class was generated from the following files: