25#ifndef _SOURCE_EVENT_TFPARTICLEEVENT_H_
26#define _SOURCE_EVENT_TFPARTICLEEVENT_H_
31#include <unordered_map>
37 struct ParticleHandle;
45 template<
typename event_t>
using ParticleEventParticleSelectorT = ParticleHandle* (*)(
const event_t&);
51 using ParticleEventMethod = EventMethodT<ParticleEvent>;
53 using ParticleEventParticleSelector = ParticleEventParticleSelectorT<ParticleEvent>;
89 enum class ParticleEventParticleSelectorEnum :
unsigned int {
95 typedef std::unordered_map<ParticleEventParticleSelectorEnum, ParticleEventParticleSelector> ParticleEventParticleSelectorMapType;
96 static ParticleEventParticleSelectorMapType particleEventParticleSelectorMap {
102 typedef std::unordered_map<std::string, ParticleEventParticleSelectorEnum> ParticleEventParticleSelectorNameMapType;
103 static ParticleEventParticleSelectorNameMapType particleEventParticleSelectorNameMap {
104 {
"largest", ParticleEventParticleSelectorEnum::LARGEST},
105 {
"uniform", ParticleEventParticleSelectorEnum::UNIFORM},
106 {
"default", ParticleEventParticleSelectorEnum::DEFAULT}
141 ParticleEventMethod *invokeMethod,
142 ParticleEventMethod *predicateMethod,
143 ParticleEventParticleSelector *particleSelector=NULL
149 virtual HRESULT eval(
const FloatP_t &time);
151 HRESULT setParticleEventParticleSelector(ParticleEventParticleSelector *particleSelector);
152 HRESULT setParticleEventParticleSelector(ParticleEventParticleSelectorEnum selectorEnum);
153 HRESULT setParticleEventParticleSelector(std::string selectorName);
161 ParticleEventMethod *invokeMethod;
162 ParticleEventMethod *predicateMethod;
163 ParticleEventParticleSelector *particleSelector;
182 ParticleEventMethod *invokeMethod,
183 ParticleEventMethod *predicateMethod
ParticleHandle * particleSelectorLargest(const int16_t &typeId)
Selects largest particle by event target type.
ParticleEventParticleSelector * getParticleEventParticleSelector(ParticleEventParticleSelectorEnum selectorEnum)
Gets the particle selector on an event.
ParticleHandle * particleEventParticleSelectorUniform(const ParticleEvent &event)
Selects a particle according to a uniform random distribution by event target type.
ParticleHandle * particleSelectorUniform(const int16_t &typeId, const int32_t &nr_parts)
Selects a particle according to a uniform random distribution by event target type.
ParticleHandle * particleEventParticleSelectorLargest(const ParticleEvent &event)
Selects largest particle by event target type.
ParticleEvent * onParticleEvent(ParticleType *targetType, ParticleEventMethod *invokeMethod, ParticleEventMethod *predicateMethod)
Creates a particle event using prescribed invoke and predicate functions.
ParticleEventParticleSelector * getParticleEventParticleSelectorN(std::string setterName)
Gets the particle selector on an event.
Include Python header, disable linking to pythonX_d.lib on Windows in debug mode.
Definition tfAngleConfig.h:26
A handle to a particle.
Definition tfParticle.h:313
Structure containing information on each particle type.
Definition tfParticle.h:768
Definition tfEventList.h:59
Definition tfParticleEvent.h:126
ParticleHandle * targetParticle
Target particle of an event evaluation.
Definition tfParticleEvent.h:136
ParticleType * targetType
Target particle type of this event.
Definition tfParticleEvent.h:131
virtual HRESULT predicate()
int32_t HRESULT
Definition tf_port.h:255