OGRE: Ogre::LinearForceAffector Class Reference

| OGRE 14.5 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Ogre::LinearForceAffector Class Reference
Plugins » ParticleFX

This affector applies a force vector to all particles to modify their trajectory. More...

`#include <OgreLinearForceAffector.h>`

Inheritance diagram for Ogre::LinearForceAffector:
[legend]

## Classes
class | CmdForceApp
| Command object for force application (see ParamCommand). More...
class | CmdForceVector
| Command object for force vector (see ParamCommand). More...

## Public Types
enum | ForceApplication { FA_AVERAGE , FA_ADD }
| Choice of how to apply the force vector to particles. More...

## Public Member Functions
| LinearForceAffector (ParticleSystem *psys)
| Default constructor.
void | _affectParticles (ParticleSystem *pSystem, Real timeElapsed) override
| Method called to allow the affector to 'do it's stuff' on all active particles in the system.
ForceApplication | getForceApplication (void) const
| Retrieves how the force vector is applied to a particle.
Vector3 | getForceVector (void) const
| Gets the force vector to apply to the particles in a system.
void | setForceApplication (ForceApplication fa)
| Sets how the force vector is applied to a particle.
void | setForceVector (const Vector3 &force)
| Sets the force vector to apply to the particles in a system.
Public Member Functions inherited from Ogre::ParticleAffector
| ParticleAffector (ParticleSystem *parent)
virtual | ~ParticleAffector ()
| Virtual destructor essential.
virtual void | _initParticle (Particle *pParticle)
| Method called to allow the affector to initialize all newly created particles in the system.
const String & | getType (void) const
| Returns the name of the type of affector.
Public Member Functions inherited from Ogre::StringInterface
| StringInterface ()
virtual | ~StringInterface ()
| Virtual destructor, see Effective C++.
void | copyParametersTo (StringInterface *dest) const
| Method for copying this object's parameters to another object.
ParamDictionary * | getParamDictionary (void)
| Retrieves the parameter dictionary for this class.
const ParamDictionary * | getParamDictionary (void) const
String | getParameter (const String &name) const
| Generic parameter retrieval method.
const ParameterList & | getParameters (void) const
| Retrieves a list of parameters valid for this object.
bool | setParameter (const String &name, const String &value)
| Generic parameter setting method.
void | setParameterList (const NameValuePairList &paramList)
| Generic multiple parameter setting method.

## Static Public Attributes
static CmdForceApp | msForceAppCmd
static CmdForceVector | msForceVectorCmd
| Command objects.

## Additional Inherited Members
Static Public Member Functions inherited from Ogre::StringInterface
static void | cleanupDictionary ()
| Cleans up the static 'msDictionary' required to reset Ogre, otherwise the containers are left with invalid pointers, which will lead to a crash as soon as one of the ResourceManager implementers (e.g.

## Detailed Description

This affector applies a force vector to all particles to modify their trajectory.

Can be used for gravity, wind, or any other linear force.

This force can be applied in 2 ways: by taking the average of the particle's current momentum and the force vector, or by adding the force vector to the current particle's momentum.

  The former approach is self-stabilising i.e. once a particle's momentum is equal to the force vector, no further change is made to it's momentum. It also results in a non-linear acceleration of particles. The latter approach is simpler and applies a constant acceleration to particles. However, it is not self-stabilising and can lead to perpetually increasing particle velocities. You choose the approach by calling the setForceApplication method.

## Member Enumeration Documentation

## ◆ ForceApplication

enum Ogre::LinearForceAffector::ForceApplication

Choice of how to apply the force vector to particles.

Enumerator
FA_AVERAGE | Take the average of the force vector and the particle momentum.
FA_ADD | Add the force vector to the particle momentum.

## Constructor & Destructor Documentation

## ◆ LinearForceAffector()

Ogre::LinearForceAffector::LinearForceAffector | ( | ParticleSystem * | psys | ) |

Default constructor.

## Member Function Documentation

## ◆ _affectParticles()

void Ogre::LinearForceAffector::_affectParticles | ( | ParticleSystem * | pSystem,
|  | Real | timeElapsed )
| overridevirtual

Method called to allow the affector to 'do it's stuff' on all active particles in the system.

This is where the affector gets the chance to apply it's effects to the particles of a system. The affector is expected to apply it's effect to some or all of the particles in the system passed to it, depending on the affector's approach.

Parameters

  pSystem | Pointer to a ParticleSystem to affect.
  timeElapsed | The number of seconds which have elapsed since the last call.

Implements Ogre::ParticleAffector.

## ◆ setForceVector()

void Ogre::LinearForceAffector::setForceVector | ( | const Vector3 & | force | ) |

Sets the force vector to apply to the particles in a system.

## ◆ getForceVector()

Vector3 Ogre::LinearForceAffector::getForceVector | ( | void |  | ) | const

Gets the force vector to apply to the particles in a system.

## ◆ setForceApplication()

void Ogre::LinearForceAffector::setForceApplication | ( | ForceApplication | fa | ) |

Sets how the force vector is applied to a particle.

The default is FA_ADD.

Parameters

  fa | A member of the ForceApplication enum.

## ◆ getForceApplication()

ForceApplication Ogre::LinearForceAffector::getForceApplication | ( | void |  | ) | const

Retrieves how the force vector is applied to a particle.

Returns
  A member of the ForceApplication enum.

## Member Data Documentation

## ◆ msForceVectorCmd

CmdForceVector Ogre::LinearForceAffector::msForceVectorCmd
| static

Command objects.

## ◆ msForceAppCmd

CmdForceApp Ogre::LinearForceAffector::msForceAppCmd
| static

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

- OgreLinearForceAffector.h