28 #ifndef __ParticleEmitter_H__
29 #define __ParticleEmitter_H__
163 virtual void genEmissionDirection(
Vector3& destVector);
169 virtual void genEmissionVelocity(
Vector3& destVector);
172 virtual Real genEmissionTTL(
void);
175 virtual void genEmissionColour(
ColourValue& destColour);
178 virtual unsigned short genConstantEmissionCount(
Real timeElapsed);
188 void addBaseParameters(
void);
191 void initDurationRepeat(
void);
200 virtual void setPosition(
const Vector3& pos);
203 virtual const Vector3& getPosition(
void)
const;
214 virtual void setDirection(
const Vector3& direction);
217 virtual const Vector3& getDirection(
void)
const;
229 virtual void setAngle(
const Radian& angle);
232 virtual const Radian& getAngle(
void)
const;
241 virtual void setParticleVelocity(
Real speed);
253 virtual void setParticleVelocity(
Real min,
Real max);
255 virtual void setMinParticleVelocity(
Real min);
257 virtual void setMaxParticleVelocity(
Real max);
260 virtual Real getParticleVelocity(
void)
const;
263 virtual Real getMinParticleVelocity(
void)
const;
266 virtual Real getMaxParticleVelocity(
void)
const;
280 virtual void setEmissionRate(
Real particlesPerSecond);
283 virtual Real getEmissionRate(
void)
const;
295 virtual void setTimeToLive(
Real ttl);
309 virtual void setTimeToLive(
Real minTtl,
Real maxTtl);
312 virtual void setMinTimeToLive(
Real min);
314 virtual void setMaxTimeToLive(
Real max);
317 virtual Real getTimeToLive(
void)
const;
320 virtual Real getMinTimeToLive(
void)
const;
322 virtual Real getMaxTimeToLive(
void)
const;
343 virtual void setColourRangeStart(
const ColourValue& colour);
345 virtual void setColourRangeEnd(
const ColourValue& colour);
349 virtual const ColourValue& getColourRangeStart(
void)
const;
351 virtual const ColourValue& getColourRangeEnd(
void)
const;
365 virtual unsigned short _getEmissionCount(
Real timeElapsed) = 0;
393 virtual void setEnabled(
bool enabled);
396 virtual bool getEnabled(
void)
const;
405 virtual void setStartTime(
Real startTime);
407 virtual Real getStartTime(
void)
const;
420 virtual void setDuration(
Real duration);
423 virtual Real getDuration(
void)
const;
436 virtual void setDuration(
Real min,
Real max);
438 virtual void setMinDuration(
Real min);
440 virtual void setMaxDuration(
Real max);
442 virtual Real getMinDuration(
void)
const;
444 virtual Real getMaxDuration(
void)
const;
455 virtual void setRepeatDelay(
Real duration);
458 virtual Real getRepeatDelay(
void)
const;
471 virtual void setRepeatDelay(
Real min,
Real max);
473 virtual void setMinRepeatDelay(
Real min);
475 virtual void setMaxRepeatDelay(
Real max);
477 virtual Real getMinRepeatDelay(
void)
const;
479 virtual Real getMaxRepeatDelay(
void)
const;
482 const String &getName(
void)
const;
485 virtual void setName(
const String& newName);
488 const String &getEmittedEmitter(
void)
const;
491 virtual void setEmittedEmitter(
const String& emittedEmitter);
494 virtual bool isEmitted(
void)
const;
497 virtual void setEmitted(
bool emitted);
Command object for particle emitter - see ParamCommand.
virtual void _initParticle(Particle *pParticle)
Initialises a particle based on the emitter's approach and parameters.
Class defining particle system based special effects.
float Real
Software floating point type.
Real mDurationMin
Minimum length of time emitter will run for (0 = forever)
static EmitterCommands::CmdColourRangeEnd msColourRangeEndCmd
static EmitterCommands::CmdColourRangeStart msColourRangeStartCmd
Real mDurationRemain
Current duration remainder.
Real mDurationMax
Maximum length of time the emitter will run for (0 = forever)
Command object for particle emitter - see ParamCommand.
Real mMinSpeed
Min speed of particles.
Command object for particle emitter - see ParamCommand.
Class representing colour.
static EmitterCommands::CmdDuration msDurationCmd
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdTTL msTTLCmd
Real mMaxSpeed
Max speed of particles.
Command object for particle emitter - see ParamCommand.
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdColour msColourCmd
ColourValue mColourRangeEnd
Initial colour of particles (range end)
Command object for particle emitter - see ParamCommand.
Command object for ParticleEmitter - see ParamCommand.
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdMaxVelocity msMaxVelocityCmd
Command object for particle emitter - see ParamCommand.
ParticleSystem * mParent
Parent particle system.
static EmitterCommands::CmdMinRepeatDelay msMinRepeatDelayCmd
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdAngle msAngleCmd
static EmitterCommands::CmdRepeatDelay msRepeatDelayCmd
Radian mAngle
Angle around direction which particles may be emitted, internally radians but angleunits for interfac...
static EmitterCommands::CmdEmissionRate msEmissionRateCmd
static EmitterCommands::CmdMaxDuration msMaxDurationCmd
Command object for particle emitter - see ParamCommand.
String mEmittedEmitter
The name of the emitter to be emitted (optional)
Class defining the common interface which classes can use to present a reflection-style, self-defining parameter set to callers.
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdMinTTL msMinTTLCmd
Real mRepeatDelayRemain
Repeat delay left.
static EmitterCommands::CmdVelocity msVelocityCmd
String mType
Name of the type of emitter, MUST be initialised by subclasses.
Real mMaxTTL
Initial time-to-live of particles (max)
Class representing a single particle instance.
void resetDimensions(void)
Utility method to reset this particle.
static EmitterCommands::CmdMinVelocity msMinVelocityCmd
bool mEnabled
Whether this emitter is currently enabled (defaults to true)
static EmitterCommands::CmdEmittedEmitter msEmittedEmitterCmd
String mName
The name of the emitter. The name is optional unless it is used as an emitter that is emitted itself...
Command object for particle emitter - see ParamCommand.
Command object for particle emitter - see ParamCommand.
Command object for particle emitter - see ParamCommand.
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdDirection msDirectionCmd
ColourValue mColourRangeStart
Initial colour of particles (range start)
Command object for particle emitter - see ParamCommand.
Abstract class defining the interface to be implemented by particle emitters.
Standard 3-dimensional vector.
Command object for particle emitter - see ParamCommand.
Real mEmissionRate
Rate in particles per second at which this emitter wishes to emit particles.
static EmitterCommands::CmdMinDuration msMinDurationCmd
Vector3 mPosition
Position relative to the center of the ParticleSystem.
static EmitterCommands::CmdMaxRepeatDelay msMaxRepeatDelayCmd
Command object for particle emitter - see ParamCommand.
Wrapper class which indicates a given angle value is in Radians.
static EmitterCommands::CmdMaxTTL msMaxTTLCmd
Command object for particle emitter - see ParamCommand.
static EmitterCommands::CmdName msNameCmd
Vector3 mDirection
Base direction of the emitter, may not be used by some emitters.
Real mRepeatDelayMin
Time between each repeat.
Real mStartTime
Start time (in seconds from start of first call to ParticleSystem to update)
const String & getType(void) const
Returns the name of the type of emitter.
Real mMinTTL
Initial time-to-live of particles (min)
static EmitterCommands::CmdPosition msPositionCmd