27#include "ParticleSystem/Particles/CParticleSerializable.h"
87 class COMPONENT_API CEmitter :
public CParticleSerializable
203 return m_defaultTank;
209 return m_defaultFlow;
348 DECLARE_GETTYPENAME(CEmitter)
Definition CObjectSerializable.h:36
virtual u32 updateNumber(float deltaTime)
Calculates how many particles should be born this frame.
bool m_active
Active status.
Definition CEmitter.h:106
const wchar_t * getName()
Gets display name.
virtual u32 updateBornData(SBornData &data, float deltaTime)
Internal: core logic for sub-emitter birth calculation.
CZone * getZone()
Gets the current spawn zone.
Definition CEmitter.h:158
void setFlow(float flow)
Sets continuous birth rate (particles per second).
Definition CEmitter.h:213
int getTank()
Gets current tank value.
Definition CEmitter.h:183
void setEmitFullZone(bool b)
Sets volume spawn mode.
Definition CEmitter.h:289
EEmitter m_type
Type of the emitter.
Definition CEmitter.h:128
virtual CObjectSerializable * createSerializable()
Creates a serializable object for property editing or saving.
float m_resetIntervalMin
Min interval for auto-resetting the tank.
Definition CEmitter.h:120
float getForceMin()
Gets min force.
Definition CEmitter.h:262
void deleteBornData()
Removes a sub-emitter record.
void emitParticle(CParticle &particle, CZone *zone, CGroup *group)
Full emission logic: generates position and velocity.
int getLastTank()
Gets last set tank value.
Definition CEmitter.h:189
u32 updateBornData(u32 index, float deltaTime)
Internal: updates birth calculation for a specific sub-group particle index.
Definition CEmitter.h:316
void clearBornData()
Clears sub-emitter birth records.
Definition CEmitter.h:325
float m_delay
Configured delay.
Definition CEmitter.h:111
float getFlow()
Gets current flow rate.
Definition CEmitter.h:222
void setForce(float min, float max)
Sets initial velocity force range.
Definition CEmitter.h:247
EEmitter getType()
Gets emitter type.
Definition CEmitter.h:301
bool isActive()
Checks if emitter is active.
Definition CEmitter.h:234
float m_resetIntervalMax
Max interval for auto-resetting the tank.
Definition CEmitter.h:122
float m_waitDelay
Current waiting time for delay.
Definition CEmitter.h:113
bool isEmitFullZone()
Checks volume spawn mode.
Definition CEmitter.h:295
void setActive(bool b)
Enables or disables the emitter.
Definition CEmitter.h:228
void setResetTankInterval(float min, float max)
Sets interval for automatic tank resets.
Definition CEmitter.h:274
void stop()
Stops the emitter immediately.
Definition CEmitter.h:164
core::array< SBornData > m_bornData
Internal: birth data for sub-emitters.
Definition CEmitter.h:133
float getForceMax()
Gets max force.
Definition CEmitter.h:268
CZone * m_zone
The spawn zone assigned to this emitter.
Definition CEmitter.h:125
int getDefaultTank()
Gets default tank from serializable data.
Definition CEmitter.h:201
void setTankValue(int tank)
Updates the persistent tank value without immediate reset.
Definition CEmitter.h:195
void generateVelocity(CParticle &particle, CZone *zone, CGroup *group)
Generates initial velocity for a particle.
float m_forceMax
Maximum magnitude of initial velocity.
Definition CEmitter.h:103
u32 addBornData()
Adds a new sub-emitter record.
virtual bool haveDirection()
Returns true if this emitter has a primary direction.
Definition CEmitter.h:145
int m_tank
Current particles remaining in the tank.
Definition CEmitter.h:93
float m_lifeTime
Total time elapsed since start.
Definition CEmitter.h:115
virtual void loadSerializable(CObjectSerializable *object)
Loads properties from a serializable object.
bool m_emitFullZone
Whether to spawn particles randomly within the zone volume.
Definition CEmitter.h:108
void setTank(int tank)
Sets the tank capacity and current value.
Definition CEmitter.h:173
void setDelay(float timeSecond)
Sets start delay in seconds.
Definition CEmitter.h:240
virtual void setBornData(SBornData &data)
Initializes birth data for sub-emitters.
float m_flowLifeTime
Duration of the flow logic before it stops.
Definition CEmitter.h:99
virtual void generateVelocity(CParticle &particle, float speed, CZone *zone, CGroup *group)=0
Implementation-specific velocity generation.
float getDefaultFlow()
Gets default flow from serializable data.
Definition CEmitter.h:207
void swapBornData(int index1, int index2)
Swaps sub-emitter records (for array reordering).
CZone * setZone(CZone *z)
Sets the spawn zone.
Definition CEmitter.h:151
float m_reset
Current reset timer.
Definition CEmitter.h:118
float m_flow
Current birth rate (particles per second).
Definition CEmitter.h:95
float m_forceMin
Minimum magnitude of initial velocity.
Definition CEmitter.h:101
void resetTank()
Resets the tank and flow logic.
Represents a group of particles with shared settings, emitters, and a renderer.
Definition CGroup.h:132
Individual particle data structure.
Definition CParticle.h:65
Base class for zones where particles can be spawned.
Definition CZone.h:66
EEmitter
Available particle emitter types.
Definition CEmitter.h:43
Everything in the Skylicht Engine. You can start by looking at the topics.
Definition AudioDebugLog.h:29
Internal data for managing particle birth rates for sub-emitters.
Definition CEmitter.h:58
s32 Tank
Remaining particles to be spawned from the "tank".
Definition CEmitter.h:68
float LifeTime
Accumulated life time of the emitter logic.
Definition CEmitter.h:60
float Fraction
Fraction for sub-frame birth calculations.
Definition CEmitter.h:66
float WaitDelay
Initial delay before birth starts.
Definition CEmitter.h:64
float FlowLifeTime
Maximum duration for the flow logic.
Definition CEmitter.h:62