1 #ifndef MSP_DEMOSCENE_DEMO_H_
2 #define MSP_DEMOSCENE_DEMO_H_
6 #include <sigc++/signal.h>
7 #include <msp/al/sounddecoder.h>
8 #include <msp/al/source.h>
9 #include <msp/al/streamer.h>
10 #include <msp/datafile/collection.h>
11 #include <msp/gl/animationplayer.h>
12 #include <msp/gl/windowview.h>
14 #include "sequencer.h"
24 class AnimationAction: public Action
27 Msp::GL::AnimationPlayer &player;
30 AnimationAction(Msp::GL::AnimationPlayer &);
32 virtual void validate() const { }
34 virtual void tick(float, float);
38 typedef std::map<std::string, Msp::Variant> ThingMap;
40 sigc::signal<void> signal_finished;
44 Msp::DataFile::Collection &resources;
45 Msp::GL::WindowView view;
46 Msp::GL::AnimationPlayer anim_player;
47 AnimationAction anim_action;
48 Msp::AL::Source *music_source;
49 Msp::AL::Streamer *streamer;
50 Msp::IO::Seekable *music_io;
51 Msp::AL::SoundDecoder *music_decoder;
52 Msp::Time::TimeDelta frame_interval;
53 Msp::Time::TimeStamp last_tick;
54 Msp::Time::TimeStamp next_frame;
58 Demo(Msp::Graphics::Window &, Msp::Graphics::GLContext &, Msp::DataFile::Collection &);
62 Msp::DataFile::Collection &get_resources() const { return resources; }
63 Msp::GL::AnimationPlayer &get_animation_player() { return anim_player; }
66 void add_stage(const std::string &, Stage &);
69 T &get_thing(const std::string &);
71 void set_fixed_framerate(float);
72 const Msp::Time::TimeStamp &get_next_frame_time() const { return next_frame; }
74 void play_music(const std::string &);
76 void seek(const Msp::Time::TimeDelta &);
80 T &Demo::get_thing(const std::string &name)
82 return *get_item(things, name).value<T *>();
85 } // namespace DemoScene