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
MissileEffect Class Reference

#include <missile_generic.h>

Public Member Functions

void ApplyDamage (Unit *)
 
 MissileEffect (const Vector &pos, float dam, float pdam, float radius, float radmult, void *owner)
 
float GetRadius () const
 
const VectorGetCenter () const
 

Detailed Description

Definition at line 5 of file missile_generic.h.

Constructor & Destructor Documentation

MissileEffect::MissileEffect ( const Vector pos,
float  dam,
float  pdam,
float  radius,
float  radmult,
void *  owner 
)
inline

Definition at line 15 of file missile_generic.h.

References UnitUtil::owner().

15  : pos( pos )
16  {
17  damage = dam;
18  phasedamage = pdam;
19  this->radius = radius;
20  radialmultiplier = radmult;
21  this->ownerDoNotDereference = owner;
22  }

Member Function Documentation

void MissileEffect::ApplyDamage ( Unit smaller)

Definition at line 31 of file missile_generic.cpp.

References Unit::ApplyDamage(), Unit::isUnit(), Magnitude(), MISSILEPTR, Unit::Position(), Unit::rSize(), and Vector.

32 {
33  float rad = (smaller->Position().Cast()-pos).Magnitude()-smaller->rSize();
34  if (rad < .001) rad = .001;
35  float orig = rad;
36  rad = rad*rad;
37  if (smaller->isUnit() != MISSILEPTR && rad < radius*radius) {
38  if ( rad < (radialmultiplier*radialmultiplier) ) {
39  rad =
40  ( radialmultiplier*radialmultiplier*radialmultiplier*radialmultiplier
41  /( (2*radialmultiplier*radialmultiplier)-(orig*orig) ) );
42  }
43  /*
44  * contrived formula to create paraboloid falloff rather than quadratic peaking at 2x damage at origin
45  * rad = radmul^4/(2radmul^2-orig^2)
46  */
47  rad = rad/(radialmultiplier*radialmultiplier); //where radialmultiplier is radius of point with 0 falloff
48 
49  Vector norm( pos-smaller->Position().Cast() );
50  norm.Normalize();
51  smaller->ApplyDamage( pos, norm, damage/rad, smaller, GFXColor( 1,
52  1,
53  1,
54  1 ), ownerDoNotDereference, phasedamage
55  > 0 ? phasedamage/rad : 0 );
56  }
57 }
const Vector& MissileEffect::GetCenter ( ) const
inline

Definition at line 27 of file missile_generic.h.

28  {
29  return pos;
30  }
float MissileEffect::GetRadius ( ) const
inline

Definition at line 23 of file missile_generic.h.

24  {
25  return radius;
26  }

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