00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef HEADER_SUPERTUX_OBJECT_SNOW_PARTICLE_SYSTEM_HPP
00018 #define HEADER_SUPERTUX_OBJECT_SNOW_PARTICLE_SYSTEM_HPP
00019
00020 #include "object/particlesystem.hpp"
00021 #include "supertux/timer.hpp"
00022
00023 class SnowParticleSystem : public ParticleSystem
00024 {
00025 public:
00026 SnowParticleSystem();
00027 virtual ~SnowParticleSystem();
00028
00029 void parse(const Reader& lisp);
00030
00031 virtual void update(float elapsed_time);
00032
00033 std::string type() const
00034 { return "SnowParticleSystem"; }
00035
00036 private:
00037 class SnowParticle : public Particle
00038 {
00039 public:
00040 float speed;
00041 float wobble;
00042 float anchorx;
00043 float drift_speed;
00044
00045
00046 float spin_speed;
00047
00048
00049 unsigned int flake_size;
00050
00051 SnowParticle() :
00052 speed(),
00053 wobble(),
00054 anchorx(),
00055 drift_speed(),
00056 spin_speed(),
00057 flake_size()
00058 {}
00059 };
00060
00061
00062
00063
00064 enum State {
00065 ATTACKING,
00066 DECAYING,
00067 SUSTAINING,
00068 RELEASING,
00069 RESTING,
00070 MAX_STATE
00071 };
00072 State state;
00073
00074
00075
00076 Timer timer;
00077
00078
00079 float gust_onset,
00080
00081 gust_current_velocity;
00082
00083 SurfacePtr snowimages[3];
00084
00085 private:
00086 SnowParticleSystem(const SnowParticleSystem&);
00087 SnowParticleSystem& operator=(const SnowParticleSystem&);
00088 };
00089
00090 #endif
00091
00092