supertux
Classes | Public Member Functions | Protected Attributes | List of all members
ParticleSystem Class Reference

This is the base class for particle systems. More...

#include <particlesystem.hpp>

Inheritance diagram for ParticleSystem:
GameObject ExposedObject< ParticleSystem, scripting::ParticleSystem > ScriptInterface CloudParticleSystem GhostParticleSystem ParticleSystem_Interactive SnowParticleSystem RainParticleSystem

Classes

class  Particle
 

Public Member Functions

 ParticleSystem (const ReaderMapping &reader, float max_particle_size=60)
 
 ParticleSystem (float max_particle_size=60)
 
virtual void draw (DrawingContext &context) override
 The GameObject should draw itself onto the provided DrawingContext if this function is called. More...
 
virtual std::string get_class () const override
 
virtual std::string get_display_name () const override
 
virtual ObjectSettings get_settings () override
 
void set_enabled (bool enabled_)
 
bool get_enabled () const
 
int get_layer () const
 
- Public Member Functions inherited from GameObject
 GameObject (const std::string &name)
 
 GameObject (const ReaderMapping &reader)
 
virtual void finish_construction ()
 Called after all objects have been added to the Sector and the Sector is fully constructed. More...
 
UID get_uid () const
 
virtual void update (float dt_sec)=0
 This function is called once per frame and allows the object to update it's state. More...
 
void save (Writer &writer)
 This function saves the object. More...
 
virtual bool is_singleton () const
 If true only a single object of this type is allowed in a given GameObjectManager.
 
virtual bool has_variable_size () const
 Does this object have variable size (secret area trigger, wind, etc.)
 
virtual bool is_saveable () const
 Indicates if the object will be saved. More...
 
virtual bool has_settings () const
 Indicates if get_settings() is implemented. More...
 
virtual void after_editor_set ()
 
bool is_valid () const
 returns true if the object is not scheduled to be removed yet
 
void remove_me ()
 schedules this object to be removed at the end of the frame
 
void add_remove_listener (ObjectRemoveListener *listener)
 registers a remove listener which will be called if the object gets removed/destroyed
 
void del_remove_listener (ObjectRemoveListener *listener)
 unregisters a remove listener, so it will no longer be called if the object gets removed/destroyed
 
void set_name (const std::string &name)
 
const std::string & get_name () const
 
virtual const std::string get_icon_path () const
 
virtual void stop_looping_sounds ()
 stops all looping sounds
 
virtual void play_looping_sounds ()
 continues all looping sounds
 
template<typename T >
T * get_component ()
 
void add_component (std::unique_ptr< GameObjectComponent > component)
 
void remove_component (GameObjectComponent *component)
 
virtual void editor_delete ()
 The editor requested the deletion of the object.
 
virtual void editor_select ()
 The user clicked on the object in the editor and selected it.
 
virtual void editor_deselect ()
 The object got deselected.
 
virtual void editor_update ()
 Called each frame in the editor, used to keep linked objects together (e.g. More...
 
- Public Member Functions inherited from ExposedObject< ParticleSystem, scripting::ParticleSystem >
 ExposedObject (ParticleSystem *parent)
 Constructor. More...
 
virtual void expose (HSQUIRRELVM vm, SQInteger table_idx) override
 Exposes the parent GameObject to the script Interface. More...
 
virtual void unexpose (HSQUIRRELVM vm, SQInteger table_idx) override
 Un-exposes the parent GameObject to the script Interface. More...
 

Protected Attributes

float max_particle_size
 
int z_pos
 
std::vector< std::unique_ptr< Particle > > particles
 
float virtual_width
 
float virtual_height
 
bool enabled
 
- Protected Attributes inherited from GameObject
std::string m_name
 a name for the gameobject, this is mostly a hint for scripts and for debugging, don't rely on names being set or being unique
 

Detailed Description

This is the base class for particle systems.

It is responsible for storing a set of particles with each having an x- and y-coordinate the number of the layer where it should be drawn and a texture.

The coordinate system used here is a virtual one. It would be a bad idea to populate whole levels with particles. So we're using a virtual rectangle here that is tiled onto the level when drawing. This rect.has the size (virtual_width, virtual_height). We're using modulo on the particle coordinates, so when a particle leaves left, it'll reenter at the right side.

Classes that implement a particle system should subclass from this class, initialize particles in the constructor and move them in the simulate function.

Member Function Documentation

§ draw()

void ParticleSystem::draw ( DrawingContext context)
overridevirtual

The GameObject should draw itself onto the provided DrawingContext if this function is called.

Implements GameObject.

Reimplemented in ParticleSystem_Interactive.


The documentation for this class was generated from the following files: