X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsequencer.cpp;h=5aa0823897749227b0a51b08bb44454da752fccb;hb=462cb9fc40ae7fec26615c652e95991be89ea8ae;hp=3807e1c15a760777273cc65a0c7030287f8c7467;hpb=423a982cb00a9ec74fc154d729cbf88518adc6d8;p=libs%2Fdemoscene.git diff --git a/source/sequencer.cpp b/source/sequencer.cpp index 3807e1c..5aa0823 100644 --- a/source/sequencer.cpp +++ b/source/sequencer.cpp @@ -1,12 +1,15 @@ #include #include #include +#include "animate.h" #include "fadeoverlay.h" #include "sequencer.h" #include "stage.h" using namespace std; -using namespace Msp; + +namespace Msp { +namespace DemoScene { Sequencer::Sequencer(float bpm): started(false), @@ -15,8 +18,10 @@ Sequencer::Sequencer(float bpm): { set_beats_per_minute(bpm); + register_action_type("animate"); register_action_type("fade"); register_action_type("use_stage"); + register_action_type("set_camera"); } void Sequencer::set_beats_per_minute(float bpm) @@ -34,12 +39,12 @@ void Sequencer::add_action(Action &act, float sb, float eb) if(sb<0 || sb>eb) throw invalid_argument("Sequencer::add_action"); - Segment seq_act; - seq_act.action = &act; - seq_act.start_beat = sb; - seq_act.end_beat = eb; + Segment seg; + seg.action = &act; + seg.start_beat = sb; + seg.end_beat = eb; auto i = find_if(segments, [=](const Segment &s){ return s.start_beat>sb; }); - segments.insert(i, seq_act); + segments.insert(i, seg); } void Sequencer::start() @@ -156,7 +161,7 @@ void Sequencer::Loader::instant(float beat) void Sequencer::Loader::segment(float start, float end) { - SegmentLoader ldr(obj, start, end); + SegmentLoader ldr(obj, start, end, demo); load_sub_with(ldr); } @@ -166,7 +171,7 @@ Sequencer::ActionDefLoader::ActionDefLoader(Sequencer &s, Demo &d): demo(d) { for(const auto &t: obj.action_types) - add(t.first, t.second->get_loader_func()); + add(t.first, t.second->get_def_loader_func()); } void Sequencer::ActionDefLoader::finished() @@ -176,15 +181,21 @@ void Sequencer::ActionDefLoader::finished() } -Sequencer::SegmentLoader::SegmentLoader(Sequencer &s, float b, float e): +Sequencer::SegmentLoader::SegmentLoader(Sequencer &s, float b, float e, Demo &d): ObjectLoader(s), start_beat(b), - end_beat(e) + end_beat(e), + demo(d) { add("apply", &SegmentLoader::apply); + for(const auto &t: obj.action_types) + add(t.first, t.second->get_loader_func()); } void Sequencer::SegmentLoader::apply(const string &n) { obj.add_action(*get_item(obj.named_actions, n), start_beat, end_beat); } + +} // namespace DemoScene +} // namespace Msp