OGRE  14.2
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...
 

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

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

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
pSystemPointer to a ParticleSystem to affect.
timeElapsedThe 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
faA 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: