diff options
Diffstat (limited to 'src/particle/particlecontainer.h')
-rw-r--r-- | src/particle/particlecontainer.h | 104 |
1 files changed, 34 insertions, 70 deletions
diff --git a/src/particle/particlecontainer.h b/src/particle/particlecontainer.h index 81037ce3a..6128688b6 100644 --- a/src/particle/particlecontainer.h +++ b/src/particle/particlecontainer.h @@ -23,13 +23,8 @@ #ifndef PARTICLE_PARTICLECONTAINER_H #define PARTICLE_PARTICLECONTAINER_H -#include <list> -#include <vector> - #include "localconsts.h" -class Particle; - /** * Set of particle effects. May be stacked with other ParticleContainers. All * operations herein affect such stacked containers, unless the operations end @@ -37,71 +32,40 @@ class Particle; */ class ParticleContainer { -public: - /** - * Constructs a new particle container and assumes responsibility for - * its parent (for all operations defined herein, except when ending in `Locally') - * - * delParent means that the destructor should also free the parent. - */ - explicit ParticleContainer(ParticleContainer *const parent = nullptr, - const bool delParent = true); - - A_DELETE_COPY(ParticleContainer) - - virtual ~ParticleContainer(); - - /** - * Kills and removes all particle effects - */ - void clear(); - - /** - * Kills and removes all particle effects (only in this container) - */ - virtual void clearLocally() - { } - - /** - * Sets the positions of all elements - */ - virtual void moveTo(const float x, const float y); - -protected: - ParticleContainer *mNext; /**< Contained container, if any */ - bool mDelParent; /**< Delete mNext in destructor */ -}; - -/** - * Particle container with indexing facilities - */ -class ParticleVector final : public ParticleContainer -{ -public: - explicit ParticleVector(ParticleContainer *const parent = nullptr, - const bool delParent = true); - - A_DELETE_COPY(ParticleVector) - - ~ParticleVector(); - - /** - * Sets a particle at a specified index. Kills the previous particle - * there, if needed. - */ - void setLocally(const int index, Particle *const particle); - - /** - * Removes a particle at a specified index - */ - void delLocally(const int index); - - void clearLocally() override final; - - void moveTo(const float x, const float y) override final; - -protected: - std::vector<Particle *> mIndexedElements; + public: + /** + * Constructs a new particle container and assumes responsibility for + * its parent (for all operations defined herein, + * except when ending in `Locally') + * + * delParent means that the destructor should also free the parent. + */ + explicit ParticleContainer(ParticleContainer *const parent = nullptr, + const bool delParent = true); + + A_DELETE_COPY(ParticleContainer) + + virtual ~ParticleContainer(); + + /** + * Kills and removes all particle effects + */ + void clear(); + + /** + * Kills and removes all particle effects (only in this container) + */ + virtual void clearLocally() + { } + + /** + * Sets the positions of all elements + */ + virtual void moveTo(const float x, const float y); + + protected: + ParticleContainer *mNext; /**< Contained container, if any */ + bool mDelParent; /**< Delete mNext in destructor */ }; #endif // PARTICLE_PARTICLECONTAINER_H |