1 #ifndef COMPOSIE_EFFECT_H 2 #define COMPOSIE_EFFECT_H 3 #pragma once 4 5 #include "globalincs/pstypes.h" 6 #include "particle/ParticleEffect.h" 7 #include "particle/ParticleManager.h" 8 #include "utils/RandomRange.h" 9 10 namespace particle { 11 namespace effects { 12 /** 13 * @ingroup particleEffects 14 */ 15 class CompositeEffect: public ParticleEffect { 16 private: 17 SCP_vector<ParticleEffectPtr> m_childEffects; 18 19 public: 20 explicit CompositeEffect(const SCP_string& name); 21 22 bool processSource(ParticleSource* source) override; 23 24 void parseValues(bool nocreate) override; 25 26 void pageIn() override; 27 getType()28 EffectType getType() const override { return EffectType::Composite; } 29 getEffects()30 const SCP_vector<ParticleEffectPtr>& getEffects() const { return m_childEffects; } 31 32 void addEffect(ParticleEffectPtr effect); 33 }; 34 } 35 } 36 37 #endif // COMPOSIE_EFFECT_H 38