OGRE  1.12.12 Object-Oriented Graphics Rendering Engine
Ogre::LinearForceAffector Class Reference

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

#include <OgreLinearForceAffector.h>

Inheritance diagram for Ogre::LinearForceAffector:

## 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. More...

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. More...

ForceApplication getForceApplication (void) const
Retrieves how the force vector is applied to a particle. More...

Vector3 getForceVector (void) const
Gets the force vector to apply to the particles in a system. More...

void setForceApplication (ForceApplication fa)
Sets how the force vector is applied to a particle. More...

void setForceVector (const Vector3 &force)
Sets the force vector to apply to the particles in a system. More...

Public Member Functions inherited from Ogre::ParticleAffector
ParticleAffector (ParticleSystem *parent)

virtual ~ParticleAffector ()
Virtual destructor essential. More...

virtual void _initParticle (Particle *pParticle)
Method called to allow the affector to initialize all newly created particles in the system. More...

const StringgetType (void) const
Returns the name of the type of affector. More...

Public Member Functions inherited from Ogre::StringInterface
StringInterface ()

virtual ~StringInterface ()
Virtual destructor, see Effective C++. More...

void copyParametersTo (StringInterface *dest) const
Method for copying this object's parameters to another object. More...

ParamDictionarygetParamDictionary (void)
Retrieves the parameter dictionary for this class. More...

const ParamDictionarygetParamDictionary (void) const

String getParameter (const String &name) const
Generic parameter retrieval method. More...

const ParameterListgetParameters (void) const
Retrieves a list of parameters valid for this object. More...

bool setParameter (const String &name, const String &value)
Generic parameter setting method. More...

void setParameterList (const NameValuePairList &paramList)
Generic multiple parameter setting method. More...

## Static Public Attributes

static CmdForceApp msForceAppCmd

static CmdForceVector msForceVectorCmd
Command objects. More...

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. More...

## 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.

Remarks
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.

## ◆ 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.

Add the force vector to the particle momentum.

## ◆ LinearForceAffector()

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

Default constructor.

## ◆ _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.

Remarks
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.

Remarks
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.

## ◆ 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: