SurgSim::Particles::Emitter Class Reference

Emitter emits particles into a ParticleSystem. More...

`#include <SurgSim/Particles/Emitter.h>`

Inheritance diagram for SurgSim::Particles::Emitter:

## Public Member Functions

| Emitter (const std::string &name)
| Constructor. More...
virtual | ~Emitter ()
| Destructor. More...
| SURGSIM_CLASSNAME (SurgSim::Particles::Emitter)
void | update (double dt) override
| Update the behavior. More...
int | getTargetManagerType () const override
| Specifies which manger will handle this behavior. More...
void | setTarget (const std::shared_ptr< SurgSim::Framework::Component > target)
| Set the target to emit to. More...
const std::shared_ptr< SurgSim::Framework::Component > | getTarget ()
| Get the target to emit to. More...
void | setShape (std::shared_ptr< SurgSim::Math::Shape > shape)
| Set the shape of this emitter. More...
std::shared_ptr< SurgSim::Math::Shape > | getShape () const
| Get the shape of this emitter. More...
void | setMode (int mode)
| Set the emit mode of this emitter. More...
int | getMode () const
| Get the emit mode of this emitter. More...
void | setRate (double rate)
| Set the emit rate of this emitter. More...
double | getRate () const
| Get the emit rate of this emitter. More...
void | setLifetimeRange (const std::pair< double, double > &range)
| Set the range of lifetimes of emitted particles. More...
std::pair< double, double > | getLifetimeRange () const
| Get the range of lifetimes of emitted particles. More...
void | setVelocityRange (const std::pair< SurgSim::Math::Vector3d, SurgSim::Math::Vector3d > &range)
| Set the range of velocities of the emitted particles. More...
const std::pair< SurgSim::Math::Vector3d, SurgSim::Math::Vector3d > & | getVelocityRange () const
| Get the range of velocities of the emitted particles. More...
virtual void | setLocalPose (const SurgSim::Math::RigidTransform3d &pose)
| Set the pose of the Emitter with respect to the Scene Element. More...
virtual SurgSim::Math::RigidTransform3d | getLocalPose () const
| Get the pose of the Emitter with respect to the Scene Element. More...
virtual SurgSim::Math::RigidTransform3d | getPose () const
| Get the pose of the Emitter in world coordinates. More...
Public Member Functions inherited from SurgSim::Framework::Behavior
| Behavior (const std::string &name)
virtual | ~Behavior ()
Public Member Functions inherited from SurgSim::Framework::Component
| Component (const std::string &name)
| Constructor. More...
virtual | ~Component ()
| Destructor. More...
std::string | getName () const
| Gets component name. More...
std::string | getFullName () const
| Gets a string containing the name of the Component and (if it has one) its SceneElement. More...
void | setName (const std::string &name)
| Sets the name of component. More...
boost::uuids::uuid | getUuid () const
| Gets the id of the component. More...
bool | isInitialized () const
bool | initialize (const std::weak_ptr< Runtime > &runtime)
| Initialize this component, this needs to be called before wakeUp() can be called. More...
bool | isAwake () const
bool | wakeUp ()
| Wakeup this component, this will be called when the component is inserted into the ComponentManager that is responsible for handling this component. More...
void | retire ()
| Retire this component, this will be called when the component is removed from the ComponentManager that is responsible for handling this component. More...
void | setScene (std::weak_ptr< Scene > scene)
| Sets the scene. More...
std::shared_ptr< Scene > | getScene ()
| Gets the scene. More...
void | setSceneElement (std::weak_ptr< SceneElement > sceneElement)
| Sets the scene element. More...
std::shared_ptr< SceneElement > | getSceneElement ()
| Gets the scene element. More...
std::shared_ptr< const SceneElement > | getSceneElement () const
| Gets the scene element, constant version. More...
std::shared_ptr< Runtime > | getRuntime () const
| Get the runtime which contains this component. More...
virtual std::string | getClassName () const
| The class name for this class, this being the base class it should return SurgSim::Framework::Component but this would make missing implemenentations of this hard to catch, therefore this calls SURGSIM_FAILURE. More...
std::shared_ptr< Component > | getSharedPtr ()
| Gets a shared pointer to this component. More...
virtual void | doRetire ()
| Interface to be implemented by derived classes Has a default implementation, does nothing. More...
bool | isActive () const
virtual void | setLocalActive (bool val)
| Set the component's active state. More...
bool | isLocalActive () const
Public Member Functions inherited from SurgSim::Framework::Accessible
| Accessible ()
| Default Constructor. More...
| ~Accessible ()
| Destructor. More...
template<class T >
T | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More...
boost::any | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found. More...
template<class T >
bool | getValue (const std::string &name, T *value) const
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More...
void | setValue (const std::string &name, const boost::any &value)
| Sets a value of a property that has setter. More...
bool | isReadable (const std::string &name) const
| Check whether a property is readable. More...
bool | isWriteable (const std::string &name) const
| Check whether a property is writable. More...
void | setGetter (const std::string &name, GetterType func)
| Sets a getter for a given property. More...
void | setSetter (const std::string &name, SetterType func)
| Sets a setter for a given property. More...
void | setAccessors (const std::string &name, GetterType getter, SetterType setter)
| Sets the accessors getter and setter in one function. More...
void | removeAccessors (const std::string &name)
| Removes all the accessors (getter and setter) for a given property. More...
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty)
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More...
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder)
| Sets the functions used to convert data from and to a YAML::Node. More...
void | setDecoder (const std::string &name, DecoderType decoder)
| Sets the functions used to convert data from a YAML::Node. More...
YAML::Node | encode () const
| Encode this Accessible to a YAML::Node. More...
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >())
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More...
template<>
boost::any | getValue (const std::string &name) const

## Private Member Functions

bool | doInitialize () override
| Interface to be implemented by derived classes. More...
bool | doWakeUp () override
| Interface to be implemented by derived classes. More...

## Private Attributes

RandomPointGenerator | m_pointGenerator
| PointGenerator for generating random points within or on the emitter shape. More...
int | m_mode
| The emit mode of this emitter. More...
double | m_rate
| The emit rate of this emitter. More...
std::pair< double, double > | m_lifetimeRange
| The range of lifetimes of emitted particles. More...
std::pair< SurgSim::Math::Vector3d, SurgSim::Math::Vector3d > | m_velocityRange
| The range of velocities of the emitted particles. More...
double | m_particlesNotAdded
| Number of particles not added during last update. More...
std::shared_ptr< SurgSim::Math::Shape > | m_shape
| Shape of emitter. More...
std::shared_ptr< SurgSim::Particles::Representation > | m_target
| Representation to emit to. More...
SurgSim::Math::RigidTransform3d | m_localPose
| Local Pose of the Representation with respect to the SceneElement. More...
std::shared_ptr< SurgSim::Framework::Logger > | m_logger
| Logger used by the Emitter. More...
std::mt19937 | m_generator
std::uniform_real_distribution< double > | m_zeroOneDistribution

## Additional Inherited Members

Public Types inherited from SurgSim::Framework::Accessible
typedef std::function< boost::any(void)> | GetterType
typedef std::function< void(boost::any)> | SetterType
typedef std::function< YAML::Node(void)> | EncoderType
typedef std::function< void(const YAML::Node *)> | DecoderType
Public Types inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
typedef ObjectFactory1< Component, std::string > | FactoryType
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryType & | getFactory ()
Protected Member Functions inherited from SurgSim::Framework::Component
virtual std::shared_ptr< PoseComponent > | getPoseComponent ()
| Get the PoseComponent for this component. More...
virtual std::shared_ptr< const PoseComponent > | getPoseComponent () const
| Get the PoseComponent for this component, constant access. More...

## Detailed Description

Emitter emits particles into a ParticleSystem.

## Constructor & Destructor Documentation

## Emitter()

SurgSim::Particles::Emitter::Emitter | ( | const std::string & | name | ) |

explicit

Constructor.

Parameters

  name | The Emitter's name

## ~Emitter()

SurgSim::Particles::Emitter::~Emitter | ( |  | ) |

virtual

Destructor.

## Member Function Documentation

## doInitialize()

bool SurgSim::Particles::Emitter::doInitialize | ( |  | ) |

override private virtual

Interface to be implemented by derived classes.

Returns
  True if component is initialized successfully; otherwise, false.

Implements SurgSim::Framework::Component.

## doWakeUp()

bool SurgSim::Particles::Emitter::doWakeUp | ( |  | ) |

override private virtual

Interface to be implemented by derived classes.

Returns
  True if component is woken up successfully; otherwise, false.

Implements SurgSim::Framework::Component.

## getLifetimeRange()

std::pair< double, double > SurgSim::Particles::Emitter::getLifetimeRange | ( |  | ) | const

Get the range of lifetimes of emitted particles.

Returns
  The shortest and longest lifetimes.

## getLocalPose()

SurgSim::Math::RigidTransform3d SurgSim::Particles::Emitter::getLocalPose | ( |  | ) | const

virtual

Get the pose of the Emitter with respect to the Scene Element.

Returns
  The pose of this Emitter

## getMode()

int SurgSim::Particles::Emitter::getMode | ( |  | ) | const

Get the emit mode of this emitter.

Returns
  Emit mode of this emitter.

## getPose()

SurgSim::Math::RigidTransform3d SurgSim::Particles::Emitter::getPose | ( |  | ) | const

virtual

Get the pose of the Emitter in world coordinates.

Returns
  The pose of this Emitter

## getRate()

double SurgSim::Particles::Emitter::getRate | ( |  | ) | const

Get the emit rate of this emitter.

Returns
  Emitting rate [particles/s].

## getShape()

std::shared_ptr< SurgSim::Math::Shape > SurgSim::Particles::Emitter::getShape | ( |  | ) | const

Get the shape of this emitter.

Returns
  Shape of this emitter.

## getTarget()

const std::shared_ptr< SurgSim::Framework::Component > SurgSim::Particles::Emitter::getTarget | ( |  | ) |

Get the target to emit to.

Returns
  The ParticleSystem to emit to.

## getTargetManagerType()

int SurgSim::Particles::Emitter::getTargetManagerType | ( |  | ) | const

override virtual

Specifies which manger will handle this behavior.

Reimplemented from SurgSim::Framework::Behavior.

## getVelocityRange()

const std::pair< SurgSim::Math::Vector3d, SurgSim::Math::Vector3d > & SurgSim::Particles::Emitter::getVelocityRange | ( |  | ) | const

Get the range of velocities of the emitted particles.

## setLifetimeRange()

void SurgSim::Particles::Emitter::setLifetimeRange | ( | const std::pair< double, double > & | range | ) |

Set the range of lifetimes of emitted particles.

Each emitted particle will have a randomly chosen lifetime in the supplied range.

Parameters

  range | The shortest and longest lifetimes to produce.

## setLocalPose()

void SurgSim::Particles::Emitter::setLocalPose | ( | const SurgSim::Math::RigidTransform3d & | pose | ) |

virtual

Set the pose of the Emitter with respect to the Scene Element.

Parameters

  pose | The pose to set the Emitter to

## setMode()

void SurgSim::Particles::Emitter::setMode | ( | int | mode | ) |

Set the emit mode of this emitter.

Parameters

  mode | The emit mode.

## setRate()

void SurgSim::Particles::Emitter::setRate | ( | double | rate | ) |

Set the emit rate of this emitter.

Parameters

  rate | The rate of emitting [particles/s].

## setShape()

void SurgSim::Particles::Emitter::setShape | ( | std::shared_ptr< SurgSim::Math::Shape > | shape | ) |

Set the shape of this emitter.

Parameters

  shape | Shape of this emitter.

## setTarget()

void SurgSim::Particles::Emitter::setTarget | ( | const std::shared_ptr< SurgSim::Framework::Component > | target | ) |

Set the target to emit to.

Parameters

  target | The ParticleSystem to emit to.

## setVelocityRange()

void SurgSim::Particles::Emitter::setVelocityRange | ( | const std::pair< SurgSim::Math::Vector3d, SurgSim::Math::Vector3d > & | range | ) |

Set the range of velocities of the emitted particles.

Each produced particle will have a randomly chosen velocity in the supplied range.

Parameters

  range | The minimum and maximum velocity.

## SURGSIM_CLASSNAME()

SurgSim::Particles::Emitter::SURGSIM_CLASSNAME | ( | SurgSim::Particles::Emitter |  | ) |

## update()

void SurgSim::Particles::Emitter::update | ( | double | dt | ) |

override virtual

Update the behavior.

Parameters

  dt | The length of time (seconds) between update calls.

Implements SurgSim::Framework::Behavior.

## Member Data Documentation

## m_generator

std::mt19937 SurgSim::Particles::Emitter::m_generator

private

Random number generator and distribution used to assign random lifetimes and velocities

## m_lifetimeRange

std::pair<double, double> SurgSim::Particles::Emitter::m_lifetimeRange

private

The range of lifetimes of emitted particles.

## m_localPose

SurgSim::Math::RigidTransform3d SurgSim::Particles::Emitter::m_localPose

private

Local Pose of the Representation with respect to the SceneElement.

## m_logger

std::shared_ptr<SurgSim::Framework::Logger> SurgSim::Particles::Emitter::m_logger

private

Logger used by the Emitter.

## m_mode

int SurgSim::Particles::Emitter::m_mode

private

The emit mode of this emitter.

## m_particlesNotAdded

double SurgSim::Particles::Emitter::m_particlesNotAdded

private

Number of particles not added during last update.

## m_pointGenerator

RandomPointGenerator SurgSim::Particles::Emitter::m_pointGenerator

private

PointGenerator for generating random points within or on the emitter shape.

## m_rate

double SurgSim::Particles::Emitter::m_rate

private

The emit rate of this emitter.

## m_shape

std::shared_ptr<SurgSim::Math::Shape> SurgSim::Particles::Emitter::m_shape

private

Shape of emitter.

## m_target

std::shared_ptr<SurgSim::Particles::Representation> SurgSim::Particles::Emitter::m_target

private

Representation to emit to.

## m_velocityRange

std::pair<SurgSim::Math::Vector3d, SurgSim::Math::Vector3d> SurgSim::Particles::Emitter::m_velocityRange

private

The range of velocities of the emitted particles.

## m_zeroOneDistribution

std::uniform_real_distribution<double> SurgSim::Particles::Emitter::m_zeroOneDistribution

private

Random number generator and distribution used to assign random lifetimes and velocities

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

- SurgSim/Particles/Emitter.h
- SurgSim/Particles/Emitter.cpp