]> git.tdb.fi Git - libs/demoscene.git/commitdiff
Allow stages to define actions master
authorMikko Rasa <tdb@tdb.fi>
Sun, 23 Jun 2019 19:36:36 +0000 (22:36 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 23 Jun 2019 19:36:36 +0000 (22:36 +0300)
source/demo.cpp
source/sequencer.cpp
source/sequencer.h
source/stage.h

index c15d5135c62800c6151eb229301a7ef1235c0720..6579b8cb7b3b6a905e053266177f4b15e5c2a4c0 100644 (file)
@@ -33,7 +33,9 @@ Demo::~Demo()
 void Demo::add_stage(const std::string &name, Stage &stage)
 {
        things[name] = &stage;
 void Demo::add_stage(const std::string &name, Stage &stage)
 {
        things[name] = &stage;
-       stage.add_things(things, name+".");
+       string prefix = name+".";
+       stage.add_things(things, prefix);
+       stage.define_actions(sequencer, prefix);
 }
 
 void Demo::set_fixed_framerate(float fps)
 }
 
 void Demo::set_fixed_framerate(float fps)
index 25182b8ef6ee7f4e623b83cfc942f8fe17339e86..6a0ab2ef7f655d46109f8252ec4bfae1376908ba 100644 (file)
@@ -25,6 +25,11 @@ Sequencer::Sequencer(float bpm):
        register_action_type<Stage::SetCamera>("set_camera");
 }
 
        register_action_type<Stage::SetCamera>("set_camera");
 }
 
+void Sequencer::define_action(const string &name, Action &act)
+{
+       named_actions[name] = &act;
+}
+
 void Sequencer::set_beats_per_minute(float bpm)
 {
        secs_per_beat = Time::min/bpm;
 void Sequencer::set_beats_per_minute(float bpm)
 {
        secs_per_beat = Time::min/bpm;
index d01ee6865da58811745c592ee17d83b2cfde007e..d2a786987e8d58cd43a6d2b1b1bc83e2f7132884 100644 (file)
@@ -108,6 +108,7 @@ public:
 
        template<typename T>
        void register_action_type(const std::string &);
 
        template<typename T>
        void register_action_type(const std::string &);
+       void define_action(const std::string &, Action &);
 
        void set_beats_per_minute(float);
        float get_beats_per_minute() const { return Msp::Time::min/secs_per_beat; }
 
        void set_beats_per_minute(float);
        float get_beats_per_minute() const { return Msp::Time::min/secs_per_beat; }
index 1d20bdae6760f4e79b08f44e7fd47bd0a9ad2030..9026d03681b7dc0fb05078216e1c92a00227de48 100644 (file)
@@ -74,6 +74,7 @@ public:
        ~Stage();
 
        virtual void add_things(Demo::ThingMap &, const std::string &);
        ~Stage();
 
        virtual void add_things(Demo::ThingMap &, const std::string &);
+       virtual void define_actions(Sequencer &, const std::string &) { }
 
        void set_camera(const Msp::GL::Camera &);
        Msp::GL::Camera &get_camera() { return camera; }
 
        void set_camera(const Msp::GL::Camera &);
        Msp::GL::Camera &get_camera() { return camera; }