OGRE-Next  4.0.0unstable
Object-Oriented Graphics Rendering Engine
Ogre::LinearForceAffector2 Class Reference

This class defines a ParticleAffector which applies a linear force to particles in a system. More...

#include <OgreLinearForceAffector2.h>

+ Inheritance diagram for Ogre::LinearForceAffector2:

Public Types

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

Public Member Functions

 LinearForceAffector2 ()
 
void _cloneFrom (const ParticleAffector2 *original) override
 
ForceApplication getForceApplication () const
 Retrieves how the force vector is applied to a particle. More...
 
Vector3 getForceVector () const
 Gets the force vector to apply to the particles in a system. More...
 
String getType () const override
 Returns the name of the type of affector. More...
 
void run (ParticleCpuData cpuData, size_t numParticles, ArrayReal timeSinceLast) const override
 
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::ParticleAffector2
virtual void initEmittedParticles (ParticleCpuData, const EmittedParticle *, size_t) const
 Initializes particles Can be called by multiple threads. More...
 
virtual bool needsInitialization () const
 Returns true if initEmittedParticles() must be called on a particle that has been emitted. More...
 
virtual void oneTimeInit ()
 
virtual bool wantsRotation () const
 Returns true if ParticleSystemDef should default to something else other than ParticleRotationType::None. More...
 
- Public Member Functions inherited from Ogre::StringInterface
 StringInterface ()
 
virtual ~StringInterface ()
 Virtual destructor, see Effective C++. More...
 
virtual void copyParametersTo (StringInterface *dest) const
 Method for copying this object's parameters to another object. More...
 
ParamDictionarygetParamDictionary ()
 Retrieves the parameter dictionary for this class. More...
 
const ParamDictionarygetParamDictionary () const
 
virtual String getParameter (const String &name) const
 Generic parameter retrieval method. More...
 
const ParameterListgetParameters () const
 Retrieves a list of parameters valid for this object. More...
 
virtual bool setParameter (const String &name, const String &value)
 Generic parameter setting method. More...
 
virtual void setParameterList (const NameValuePairList &paramList)
 Generic multiple parameter setting method. 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 class defines a ParticleAffector which applies a linear force to particles in a system.

Remarks
This affector (see ParticleAffector) applies a linear force, such as gravity, to a particle system. 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

◆ LinearForceAffector2()

Ogre::LinearForceAffector2::LinearForceAffector2 ( )

Member Function Documentation

◆ _cloneFrom()

void Ogre::LinearForceAffector2::_cloneFrom ( const ParticleAffector2 original)
overridevirtual

◆ getForceApplication()

ForceApplication Ogre::LinearForceAffector2::getForceApplication ( ) const

Retrieves how the force vector is applied to a particle.

Returns
A member of the ForceApplication enum.

◆ getForceVector()

Vector3 Ogre::LinearForceAffector2::getForceVector ( ) const

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

◆ getType()

String Ogre::LinearForceAffector2::getType ( ) const
overridevirtual

Returns the name of the type of affector.

Remarks
This property is useful for determining the type of affector procedurally so another can be created.

Implements Ogre::ParticleAffector2.

◆ run()

void Ogre::LinearForceAffector2::run ( ParticleCpuData  cpuData,
size_t  numParticles,
ArrayReal  timeSinceLast 
) const
overridevirtual

◆ setForceApplication()

void Ogre::LinearForceAffector2::setForceApplication ( ForceApplication  fa)

Sets how the force vector is applied to a particle.

Remarks
The default is FA_ADD.
Parameters
faA member of the ForceApplication enum.

◆ setForceVector()

void Ogre::LinearForceAffector2::setForceVector ( const Vector3 force)

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


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